diff --git a/Gemfile b/Gemfile
index e8207c05e..5e3848c73 100644
--- a/Gemfile
+++ b/Gemfile
@@ -9,4 +9,5 @@ group :jekyll_plugins do
gem "jekyll-polyglot"
end
gem "jekyll-minifier"
+gem "jekyll-paginate-v2"
# gem "rails"
diff --git a/Gemfile.lock b/Gemfile.lock
index 7e39ae7e4..93caa7852 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -38,6 +38,8 @@ GEM
jekyll (>= 3.5)
json-minify (~> 0.0.3)
uglifier (~> 4.1)
+ jekyll-paginate-v2 (3.0.0)
+ jekyll (>= 3.0, < 5.0)
jekyll-polyglot (1.3.3)
jekyll (>= 3.0)
jekyll-sass-converter (2.1.0)
@@ -79,6 +81,7 @@ PLATFORMS
DEPENDENCIES
jekyll
jekyll-minifier
+ jekyll-paginate-v2
jekyll-polyglot
BUNDLED WITH
diff --git a/_config.yml b/_config.yml
index 9eed52d94..95662eba3 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,4 +1,5 @@
plugins:
+ - jekyll-paginate-v2
- jekyll-polyglot
- jekyll-minifier
languages: ["en", "es", "de", "it", "fr"]
@@ -7,6 +8,7 @@ exclude_from_localization: ["assets", "images", "css", "README.md", "manifest.
parallel_localization: true
a_rootpage: "https://jamulus.io"
githubrepoeditbase: "https://github.com/jamulussoftware/jamulussoftware.github.io/edit/changes"
+kbnewpage: 'https://github.com/jamulussoftware/jamuluswebsite/new/changes/_posts/?value=---%0Alayout%3A%20post%0Atitle%3A%20%22Your%20Title%22%0Alang%3A%20%22en%22%0Aauthor%3A%20%22YourName%22%0Aheading%3A%20%22Heading%22%0A---%0AName%20This%20File%20and%20edit%20the%20parameters%20above%21&message=New%20post'
exclude: ["README.md", "Gemfile.lock", "Gemfile", "CONTRIBUTING.md"]
jekyll-minifier:
remove_intertag_spaces: true
@@ -14,3 +16,30 @@ jekyll-minifier:
remove_multi_spaces: true
compress_json: true
exclude: "sitemap.xml"
+excerpt_separator:
+permalink: /kb/:categories/:year/:month/:day/:title:output_ext
+pagination:
+ enabled: true
+ # Set to 'true' to enable pagination debugging. This can be enabled in the site config or only for individual pagination pages
+ debug: false
+ # The default document collection to paginate if nothing is specified ('posts' is default)
+ collection: 'posts'
+ # How many objects per paginated page, used to be `paginate` (default: 0, means all)
+ per_page: 4
+ # The permalink structure for the paginated pages (this can be any level deep)
+ permalink: '/:num/index.html'
+
+ title: ':title / :num'
+ # Limit how many pagenated pages to create (default: 0, means all)
+ limit: 0
+
+ # Optional, defines the field that the posts should be sorted on (omit to default to 'date')
+ sort_field: 'date'
+
+ # Optional, sorts the posts in reverse order (omit to default decending or sort_reverse: true)
+ sort_reverse: true
+ # Optional,omit or set both before and after to zero to disable.
+ # Controls how the pagination trail for the paginated pages look like.
+ trail:
+ before: 2
+ after: 3
diff --git a/_data/en/authors.yml b/_data/en/authors.yml
new file mode 100644
index 000000000..19da538f0
--- /dev/null
+++ b/_data/en/authors.yml
@@ -0,0 +1,10 @@
+corrados:
+ name: Volker Fischer
+ url: https://github.com/corrados
+niebert:
+ name: Engelbert Niehaus
+ url: https://github.com/niebert
+ann0see:
+ url: https://github.com/ann0see
+gilgongo:
+ url: https://github.com/gilgongo
diff --git a/_data/en/general.yml b/_data/en/general.yml
index 2f96a3de5..c53fba624 100644
--- a/_data/en/general.yml
+++ b/_data/en/general.yml
@@ -1,5 +1,5 @@
footer:
- copyright: Software by Volker Fischer and contributors
+ copyright: Software by Volker Fischer and contributors
alt:
github: "Jamulus GitHub Repo"
facebook: "Jamulus Facebook Group"
@@ -10,4 +10,15 @@ nav:
btnOpenNavigation: "Open navigation"
altJamulusIcon: "Jamulus Icon. Links to Wiki homepage"
wiki:
- titleAdd: "– Jamulus Wiki"
+ titleAdd: "– Jamulus Wiki"
+kb:
+ titleAdd: "– Jamulus Knowledge Base"
+ by: "by"
+ kbintro: "Community knowledge base Feel free to add your own article!"
+ mainpage: "KB overview"
+ newpage: "Add a new page via GitHub"
+ readmore: "Read more..."
+ navpages: "More pages"
+ discuss:
+ title: "Comments"
+ linktitle: "Discuss this content"
diff --git a/_data/en/navigation.yml b/_data/en/navigation.yml
index d3d25885c..8c875d423 100644
--- a/_data/en/navigation.yml
+++ b/_data/en/navigation.yml
@@ -24,6 +24,9 @@ nav:
url: /wiki/Command-Line-Options
- page: Tips & Tricks
url: /wiki/Tips-Tricks-More
+ - page: Community Knowledge Base
+ url: /kb/index.html
+ selectOnLayout: "post"
- page: Demos
url: /wiki/Demos
- page: Privacy Statement
diff --git a/_drafts/Jamulus-With-Zoom.md b/_drafts/Jamulus-With-Zoom.md
new file mode 100644
index 000000000..6da840cb6
--- /dev/null
+++ b/_drafts/Jamulus-With-Zoom.md
@@ -0,0 +1,14 @@
+---
+layout: post
+title: "Jamulus with Zoom"
+heading: "Using Jamulus with Zoom"
+lang: "en"
+---
+
+Jamulus doesn't support video streaming yet. This guide will show you how to get video using a video conferencing tool like Zoom.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
diff --git a/_includes/general/nav.html b/_includes/general/nav.html
index 199d87524..34119f252 100644
--- a/_includes/general/nav.html
+++ b/_includes/general/nav.html
@@ -6,7 +6,7 @@
{% for item in site.data.navigation.nav %}
{% if item.url %}
+ {% include footer.html %}
+
+
+
diff --git a/_layouts/wiki.html b/_layouts/wiki.html
index 942d5575d..58f06187c 100644
--- a/_layouts/wiki.html
+++ b/_layouts/wiki.html
@@ -6,7 +6,6 @@
{{ page.title }} {{ site.data.general.wiki.titleAdd }}
{% include headtags.html %}
-
diff --git a/_posts/2020-03-28-Example-Setup-Hardware.md b/_posts/2020-03-28-Example-Setup-Hardware.md
new file mode 100644
index 000000000..0b9a7f493
--- /dev/null
+++ b/_posts/2020-03-28-Example-Setup-Hardware.md
@@ -0,0 +1,36 @@
+---
+layout: post
+title: "Example setup audio hardware"
+heading: "Example setup UCA202 Windows"
+author: "corrados"
+lang: "en"
+---
+
+This is an example Windows client installation with a [Behringer U-CONTROL UCA202](https://www.amazon.com/Behringer-U-Phono-UFO202-Audiophile-Interface/dp/B002GHBYZ0){: target="_blank" rel="noopener noreferrer"} audio device.
+The following instructions might be similar with other audio devices.
+
+
+_**The exact method of connecting your instrument will of course vary depending on your hardware.**_
+
+## Windows: Audio interface connection - ASIO4All
+
+### 1. Plug the interface into a USB port on your computer
+
+In the future, always use the same USB port for the audio device.
+
+**Windows users**: If not already done: download and install the [free ASIO sound driver (ASIO4All)](https://www.asio4all.org){: target="_blank" rel="noopener noreferrer"}. Some people have also reported success using [this ASIO native driver](http://www.behringerdownload.de/_software/BEHRINGER_2902_X64_2.8.40.zip){: target="_blank" rel="noopener noreferrer"} __currently not available__, although it's not listed on Behringer's product pages as of April 2020.
+
+
+### 2. Start Jamulus
+
+Configure Jamulus to use the correct sound setup (see [this excellent guide](https://www.facebook.com/notes/jamulus-online-musicianssingers-jamming/idiots-guide-to-jamulus-app/510044532903831/) by [Simon Tomlinson](https://www.facebook.com/simon.james.tomlinson?eid=ARBQoY3KcZAtS3pGdLJuqvQTeRSOo4gHdQZT7nNzOt1oPMGgZ4_3GERe-rOyH5PxsSHVYYXjWwcqd71a) on Facebook).
+
+Make sure you have switched off the monitor button on your Behringer U-CONTROL UCA202 (otherwise you will hear both the original sound you are sending to the Jamulus server as well as the returning sound, and may get feedback).
+
+### 3. Plug in your instrument and headphones
+
+Connect your instrument to the input plugs of the Behringer U-CONTROL UCA202. Plug in your headphones into the Behringer U-CONTROL UCA202.
+
+### 4. Connect to a Jamulus server.
+
+You're done! Have fun!
diff --git a/_posts/2020-03-28-Server-Rpi.md b/_posts/2020-03-28-Server-Rpi.md
new file mode 100644
index 000000000..9d7523d4a
--- /dev/null
+++ b/_posts/2020-03-28-Server-Rpi.md
@@ -0,0 +1,56 @@
+---
+layout: post
+title: "Server Installation – Raspberry Pi"
+heading: "Install Jamulus Server on a Raspberry Pi"
+author: "fredsiva"
+lang: "en"
+---
+
+This guide shows you how to install Jamulus on a Raspberry Pi.
+
+
+## Server Installation - Raspberry Pi
+
+**_Please ensure you have read the [server overview](/wiki/Running-a-Server)_**
+
+_Jamulus has been tested on a Raspberry Pi 4 2Gb by Jamulus user [SIVA Frédéric](https://sourceforge.net/u/fredsiva/profile/)_
+
+1. Install Raspbian Buster (allow [VNC](https://www.raspberrypi.org/documentation/remote-access/vnc/) and [SSH](https://www.raspberrypi.org/documentation/remote-access/ssh/README.md) for comfort, but will ultimately run without VNC for higher speed)
+
+1. Edit [config.txt](https://www.raspberrypi.org/documentation/configuration/config-txt/) to enable boot without HDMI by adding `hdmi_force_hotplug=0`
+
+1. [Get the sources](/wiki/Installation-for-Linux#get-jamulus-sources), install the [dependent packages](/wiki/Installation-for-Linux#install-dependencies) according to the Linux client install guide **but do NOT install JACK package(s)** - you don't need them on a [headless server](/wiki/Server-Linux#running-a-headless-server). To run a client, install all listed dependencies.
+
+1. Compile the source code for a server as per [these instructions](/wiki/Server-Linux#compile-sources-create-a-user). Compile a client using the [default instructions](/wiki/Installation-for-Linux#compile-this-bad-boy).
+
+This will build Jamulus and put it in `/usr/local/bin/Jamulus`
+
+Connect Raspberry Pi with Ethernet cable to your router.
+
+If you are running a server, test by starting with the `--server` option, and watch GUI on VNC (or HDMI). When running as a client, you should see the GUI start.
+
+`Jamulus -s`
+
+If all is well, run in your chosen [server mode](Choosing-a-Server-Type) as follows (or use systemd unit script provided in the [Linux guide](Server-Linux#create-a-start-script)), for example a public server:
+
+`sudo chrt 99 ionice -c1 nice -n -20 Jamulus -s -n -e [yourCentralServer] -o "yourServerName;yourCity;[country ID]"&`
+
+**Please also see this [important note on Central Servers](/wiki/Central-Servers).**
+
+See also [Command Line Options](/wiki/Command-Line-Options) for other parameters you can set.
+***
+
+### To upgrade Jamulus
+
+Stop the server and simply repeat step 3 for obtaining the sources and installing above.
+
+If you want to install a specific release, you can do the following using git (where `[RELEASE]` is a release ID such as r3_5_8). See the [official tagged releases](https://github.com/corrados/jamulus/releases).
+
+First, `cd` inside the directory in which the Jamulus sources were unpacked/downloaded, then use the following commands:
+
+~~~
+git pull
+git checkout [RELEASE]
+~~~
+
+Then compile the sources as per a new install. Start Jamulus back up.
diff --git a/_posts/2020-09-20-Linux-Install-Script.md b/_posts/2020-09-20-Linux-Install-Script.md
new file mode 100644
index 000000000..b50278962
--- /dev/null
+++ b/_posts/2020-09-20-Linux-Install-Script.md
@@ -0,0 +1,144 @@
+---
+layout: post
+title: "Linux Bash Installation Script"
+heading: "Bash Installation Script"
+author: "niebert"
+lang: "en"
+---
+
+Thanks to [niebert](https://github.com/niebert), if you plan to install Jamulus on many Linux machines, you can try this script.
+
+
+The following example was tested on Linux Mint and combines all the commands to install Jamulus on Linux into one script (currently for Ubuntu/Linux Mint).
+
+## How it works
+
+To incorporate the different commands for different Linux distributions, variables define the distribution and the release for which the installation script should be performed. The following focuses on Ubuntu with release 18.04 as example. So the suggested script name for the release is e.g. `install4ubuntu18_4.sh`. The script commands are generic so that the installation could also be modified so that they work on other Linux distributions.
+
+### Installation dependent on Linux Distribution
+The following script calls different installation commands depending on the Linux distribution.
+The variable `DISTRO` defines which commands are executed. Set the variable depending on the Linux distribution you are using.
+* `DISTRO="Ubuntu"` for a Ubuntu or Linux Mint
+* `DISTRO="Debian"` for a Debian or Raspbian Linux
+* `DISTRO="Fedora"` for a Fedora Linux
+Furthermore if the installation is dependent of the release the variable `LINVERSION` is introduced but is currently not used. In the Ubuntu `if` statement there is an example how version depending installation calls can be performed.
+```bash
+if [ "$LINVERSION" = "18.4" ]
+then
+ echo "Perform Installation Specifics for $DISTRO Version $DISTRO"
+fi
+```
+The variable `LINVERSION` is currently not used in the following script but it is just a demo how to use the version specific installation commands.
+
+### Adaptation of the Installation Script
+If you want to create an installation script for Debian just copy the script `install4ubuntu18_4.sh` to `install4debian10_6.sh` and modify the distro variables to
+```bash
+#!/bin/sh
+# set DISTRO either to "Ubuntu", "Debian" or "Fedora"
+DISTRO="Debian"
+LINVERSION="10.6"
+```
+After that, test the installation on Debian and modify the commands so that the installation script works on Debian. You can share working scripts, if you like. **Edit by Jamulus-Website maintainers:** You should contact [niebert](https://github.com/niebert) if you want to share scripts.
+
+### The Installation Script
+Copy the following installation script into a file and save it to the filename `install4ubuntu18_4.sh`. After saving the file e.g. in your `Download` directory change to the directory and call the following script with `sh install4ubuntu18_4.sh`.
+```bash
+#!/bin/sh
+# set DISTRO either to "Ubuntu", "Debian" or "Fedora"
+DISTRO="Ubuntu"
+LINVERSION="18.04"
+
+# Get Jamulus Release Name with "curl" and "grep"
+R=`curl -s https://api.github.com/repos/corrados/jamulus/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")'`
+echo "Jamulus Installation Script for $DISTRO $LINVERSION"
+echo "Release: $R"
+INSTALLJAMULUS="no"
+while true; do
+ read -p "Do you wish to install Jamulus on $DISTRO $LINVERSION? (y/n) " yn
+ case $yn in
+ [Yy]* )
+ echo "Start Installation $DISTRO $LINVERSION"
+ echo "(1) Fetch Release $R from GitHub"
+ wget https://github.com/corrados/jamulus/archive/$R.tar.gz
+ echo "(2) Extract Source Code for Jamulus Release $R from GitHub"
+ tar -xvf $R.tar.gz
+ echo "(3) Delete ${R}.tar.gz from GitHub"
+ rm $R.tar.gz
+ echo "(4) Update Repository"
+ sudo apt-get update
+ INSTALLJAMULUS="yes"
+ break;;
+ [Nn]* )
+ echo "Cancelled Jamulus Installation on $DISTRO $LINVERSION"
+ exit;;
+ * ) echo "Please answer yes or no.";;
+ esac
+done
+
+# echo "Check Variable: $INSTALLJAMULUS"
+
+if [ "$INSTALLJAMULUS" = "yes" ]; then
+ echo "(5) Install Build Essentials for $DISTRO"
+
+ if [ "$DISTRO" = "Ubuntu" ]
+ then
+ echo "Installation for $DISTRO"
+ sudo apt-get install cmake qmake gcc g++
+ sudo apt-get install build-essential qt5-qmake qtdeclarative5-dev qt5-default qttools5-dev-tools libjack-jackd2-dev
+ sudo apt-get install qjackctl
+ if [ "$LINVERSION" = "18.4" ]
+ then
+ echo "Perform Installation Specifics for $DISTRO Version $DISTRO"
+ fi
+
+ elif [ "$DISTRO" = "Debian" ]
+ then
+ sudo apt-get install build-essential qtdeclarative5-dev qt5-default qttools5-dev-tools libjack-jackd2-dev
+ sudo apt-get install qjackctl
+ elif [ "$DISTRO" = "Fedora" ]
+ then
+ sudo dnf install qt5-qtdeclarative-devel jack-audio-connection-kit-dbus jack-audio-connection-kit-devel
+ sudo dnf install qjackctl
+ fi
+
+ echo "(6) Compile Jamulus $R"
+ echo "Change to Directory jamulus-$R"
+ cd "jamulus-$R"
+ # ls
+ qmake Jamulus.pro
+ make clean
+ make
+ sudo make install
+ echo "Compilation DONE"
+ cd ..
+ echo "(6) Delete the Source Files after Installation"
+ rm -R "jamulus-$R"
+
+else
+
+ echo "Installation cancelled"
+
+fi
+
+```
+
+
+## Possible Improvements of the Installation Script for Jamulus
+The script can ask in the very beginning for which Linux distribution the installation script should be called.
+This can be tested with the command `lsb_release`
+
+The `lsb_release` command returns the distribution specific information about a Linux distro.
+With a `grep` command with regular expression the variable `DISTRO` and `LINVERSION`.
+E.g. the Ubuntu based systems return with the command the following information.
+```bash
+$ lsb_release -a
+No LSB modules are available.
+Distributor ID: Ubuntu
+Description: Ubuntu 11.04
+Release: 11.04
+Codename: natty
+```
+
+The challenge is, that `lsb_release` command must be available on Linux system. On CentOS/Fedora based systems `lsb_release` command is only available, if the `lsb` core packages are installed. So the automated Linux version detected might no work.
+
+So reading the `DISTRO` and `LINVERION` with the `read` command might be the better distribution dependent improvement than an automated setting with `lsb_release`.
diff --git a/_posts/2020-10-19-Software-Synth.md b/_posts/2020-10-19-Software-Synth.md
new file mode 100644
index 000000000..21dab87fb
--- /dev/null
+++ b/_posts/2020-10-19-Software-Synth.md
@@ -0,0 +1,77 @@
+---
+layout: post
+title: "Software Synth in Jamulus"
+lang: "en"
+author: "niebert"
+heading: "Software Synth in Jamulus"
+---
+
+This article will show you how to use a software synth with Jamulus.
+
+
+
+## Linux
+
+We will look at the concept of playing a software synth on Linux but other operating systems should work similarly.
+Let's have a look at what we need:
+1. A software synth like [setBfree](https://github.com/pantherb/setBfree) **(Hammond Organ Synth)** which we'll use in this example. It emulates an organ and outputs its audio to JACK on Linux.
+2. A **MIDI Keyboard**. The MIDI keyboard is used to generate the key pressed events, which are transmitted through a USB-MIDI interface to your operating system. After that the synthesizer [setBfree](https://github.com/pantherb/setBfree) generates the corresponding sound for the pressed key. The MIDI keyboard could also be replaced by a digital wind midi controller, which does the same (although the tone is dependent on how the musician blows air into the digital wind controller).
+3. A **connector to Jamulus**. You may hear the audio output of the synth on your speakers but the audio output may not be used as input for Jamulus. That's why we need to connect the audio output of the synth to Jamulus (this can be done with QjackCtl on Linux).
+
+### General Information about ALSA, JACK and MIDI
+
+This part is specific to Linux. Let's have a look at a few concepts how Linux handles Audio and MIDI before actually looking at how to connect the synth.
+
+- **ALSA** This is the basic layer which connects to the hardware, i.e. the sound card and the midi controller for the keyboard.
+- **JACK** is built on top of ALSA and uses ALSA for the audio output. It provides an easy-to-use environment for music production on Linux.
+- The **synthesizer** like the [Hammond Organ emulator setBfree](https://github.com/pantherb/setBfree) connects to JACK and sends its audio there.
+- **Jamulus** connects to JACK too and can therefore receive and send audio to every application connected to JACK (including our synthesizer).
+
+### Requirements for using Software Synths in Jamulus on Linux
+
+If you use your MIDI keyboard, you might need ALSA2JACK MIDI (`a2jmidid`) from the `a2j` package to be able to connect it to JACK. We use the synth `setBfree` in this example, so I also need this software synth (of course, you can replace this by your favourite Linux synthesizer). Both packages `a2jmidid` and `setbfree` can be installed with your package manager e.g. on Debian/Ubuntu by using the `apt-get` commands:
+
+```shell
+sudo apt-get install a2jmidid
+sudo apt-get install setbfree
+```
+
+### Connecting ALSA, JACK and MIDI for a Synth for Jamulus
+
+Let's have a look at the workflow.
+
+1. Install Jamulus (you've probably already done that. If not, please have a look at the [installation page in the documentation](/wiki/Getting-Started)). If you followed those instructions, JACK and QjackCtl were already installed.
+2. **ALSA to JACK - MIDI** Next, we must create a connection from ALSA to JACK to route the MIDI input from the keyboard to setBfree. Let's have a look at how to do that:
+ - Open QjackCtl e.g. from the command line by typing `qjackctl` and start JACK by clicking on the play button
+ - Launch the ALSA2JACK MIDI connector with `a2jmidid -e`. While this connector runs, the `a2j` connection interface should be visible in `QjackCtl` in the JACK-MIDI tab.
+
+ 
+
+ - Now connect your USB MIDI device as an input to `MIDI through` in the ALSA-MIDI tab of QjackCtl. MIDI events from your keyboard will now reach JACK.
+
+ 
+
+ - Start your synth e.g. from the command line with (in my case) `setBfree`. You will now see the `setBfree` graphical user interface. It should look like this:
+
+ 
+
+ You can now check if the synth generates sound by clicking on the displayed organ keyboard and listening for sound through your speakers.
+ - In QjackCtl we can now connect `a2j` in JACK-MIDI as an input to the synth, which generates sound for each key pressed on the keyboard. Keep in mind that you can connect synths if they are started and visible to QjackCtl. So you can connect after starting the [Hammond Emulator setBfree](https://github.com/pantherb/setBfree), i.e. connect `a2j` to `setbfree` if you also see the Hammond Synth setBFree in QjackCtl.
+
+ 
+
+ - Let's test the software synth with our MIDI Keyboard! If you have speakers attached to your device you should hear the emulated Hammond sound for all the keys you press on your MIDI keyboard. If you just want to play the software synth with your keyboard, you're finished here. But if you want to connect the sound of the synth to Jamulus, the only remaining step is to connect the synths' audio to Jamulus.
+
+**Synth to Jamulus - Audio**: In the previous step we ensured that the MIDI signals from your keyboard got sent to to the MIDI input of JACK. Now we need to create an audio connection from JACK (i.e. the generated Hammond sound of the synth) to Jamulus. To do so, we connect the [Hammond Emulator setBfree](https://github.com/pantherb/setBfree) output to Jamulus. Therefore, start Jamulus so that you can see Jamulus in QjackCtl. Now connect the audio output of the [Hammond Emulator setBfree](https://github.com/pantherb/setBfree) to the audio input of Jamulus in JACK.
+
+)
+
+There is one last step. In your local connection setup, you might see that the setBfree synth output (left) is not only connected to the Jamulus input (right), but also to `system`. `System` would be your speakers or headphones, but what you want to listen to is just the output from Jamulus, not the direct sound from setBfree also at the same time (not exactly - they'd be separated by a small time lag). So now you must disconnect setBfree from "system". That way you will hear the audio coming from the Jamulus server (yours and that of whoever you are playing with) and will avoid an echo or flanger effect.
+
+Now you're done.
+
+`QjackCtl` can also be used for operations like plugging in instruments in mixer and the mixer into an amplifier and the amplifier again to the speakers.
+
+There are also other Open Source synths like QSynth or [ZynAddSubFX](https://sourceforge.net/projects/zynaddsubfx/) which can be installed on your Linux system.
+
+Have fun playing your synth within Jamulus!
diff --git a/_posts/2020-11-24-Multiple-Audio-Interfaces.md b/_posts/2020-11-24-Multiple-Audio-Interfaces.md
new file mode 100644
index 000000000..c5a972909
--- /dev/null
+++ b/_posts/2020-11-24-Multiple-Audio-Interfaces.md
@@ -0,0 +1,55 @@
+---
+layout: post
+title: "Using Multiple Audio Interfaces"
+heading: "Using multiple Audio interfaces"
+lang: "en"
+---
+
+It is possible to run Jamulus with multiple Audio Interfaces on all three operating systems. Useful when we need to output an instrument through external audio card for minimal latency and computer microphone for communication. Other use cases may apply.
+
+
+### Windows
+
+Under Windows, the best option to run multiple interfaces through Jamulus at the same time is by using a combination of JACK Audio Connection Kit with VoiceMeeter. It can be accomplished with just VoiceMeeter, but I've found that it introduces some undesirable latency and it wasn't supporting 64 frame buffer size correctly as it was producing some noises through my headphones.
+
+**Requirements:**
+* [JACK for Windows](https://jackaudio.org/downloads/);
+* [Voicemeeter](https://www.vb-audio.com/Voicemeeter/banana.htm) (any version will do).
+
+**Steps:**
+1. [Install and configure JACK on Windows](https://jackaudio.org/faq/jack_on_windows.html) - Make sure you select your best audio interface in the configuration steps, also add `-r 48000 -p ` to ensure JACK is outputting audio in the required sample rate for Jamulus (48.000Hz). If your frame buffer size is too low for your hardware, you'll need to change it to a higher value;
+2. Install and open Voicemeeter;
+3. Open configured Jack PortAudio shortcut, Jack Control and Jamulus software;
+4. On Voicemeeter, go to HARDWARE OUT and on A1 dropdown list, select JackRouter. On Hardware Input 1 select your computer microphone. You can make your computer microphone have the lowest latency possible by going into _Menu > System Settings/Options..._ and enabling _WDM Input Exclusive Mode_ (if you experience crackling noises while speaking, disable this) and changing the _Engine Mode_ to _Swift_;
+5. Make sure the Hardware Input where you selected your microphone is sending sound through A1 by enabling the corresponding button next to the fader;
+6. On Jamulus, under Settings, select JackRouter as your Soundcard Device;
+7. On Jack Control, if you click the _Connect_ button, you should now see three devices: portaudio (your external audio interface), voicemeeter and jamulus. If Jamulus doesn't appear, try connecting and disconnecting from any server to enable it;
+8. To test things out, on Jack Control, connect portaudio and voicemeeter output ports to jamulus input ports, then connect jamulus output ports to portaudio input ports (assuming you'll be using your external audio interface to listen, otherwise you can use voicemeeter to redirect the sound to another device, which I will not cover on this guide). Connect to a server on Jamulus and test it out by speaking into the microphone and playing your instrument. If everything went well you should hear yourself;
+9. To make JACK connections permanent, on Jack Control, open the _Patchbay_, add all inputs and outputs available (Add... > Select each Client > Click Add Plug until there's none left) and make the connections you wish to make permanent. This usually goes like connecting both _system_ and _voicemeeter_ outputs into _jamulus_ input, and _jamulus_ output into _system_ input. Once done, save the Patchbay definition and _Activate_ it. Now every time you start jamulus and connect to a server, the connections on JACK should automatically be done.
+
+**Bonus:**
+
+* The Microphone can be muted and it's volume adjusted on VoiceMeeter. Be sure to play with the _VOICE_ graph too (equalization), I find that my voice sounds better if I move it halfway into _Lo_;
+* If you're using VoiceMeeter Banana or Potato, you can apply Gate to your microphone (useful to cut undesirable noises when you're not speaking);
+* If you set your default playback device under Windows to one of VoiceMeeter's virtual inputs, you can route audio from your computer into JackRouter (and consequently, into Jamulus) by enabling the _A1_ button on the relevant input under _Virtual Inputs_. This is useful if you wish to play some audio through Jamulus (backing tracks, youtube, recordings, etc...)
+
+
+### MacOS X
+
+[Aggregate devices](https://support.apple.com/en-us/HT202000) lets you do this. Just make sure your Jamulus version is 3.5.3 or higher.
+
+
+### Linux
+
+On Linux, it is possible to route additional devices to Jack by using alsa_in.
+
+**Requirements:**
+
+* QJackCtl
+* alsa
+
+**Steps:**
+1. Follow [this tutorial](https://www.penguinproducer.com/Blog/2011/11/using-multiple-devices-with-jack/) to route the desired interface into Jack by using alsa_in.
+2. Jamulus should automatically route the JACK configured interface, adjustments can be made through the _Connect_ button.
+3. Connect the device configured on step 1 into jamulus input.
+4. Use Patchbay as described on Windows section to make connections permanent.
diff --git a/assets/css/fw.css b/assets/css/fw.css
index f0b4b7962..522641187 100644
--- a/assets/css/fw.css
+++ b/assets/css/fw.css
@@ -11,7 +11,9 @@ h1, h2, h3, h4, h5, h6 {
}
hr {
- border-color: #1181a4;
+ border: none;
+ height: 1px;
+ background-color: #1181a4;
}
a {
@@ -105,7 +107,7 @@ main li {
padding: 0;
}
-#langselect .selected, #gnav .selected {
+#langselect .selected, #gnav .selected, #paginator .selected {
font-weight: bold;
text-decoration: underline;
color: #2b7288;
@@ -136,6 +138,7 @@ header #navbtn {
#gnav nav ul li>a {
margin-left: 0.5em;
+ display: inline-block;
}
#gnav nav>ul>li>ul>li>ul>li>a {
@@ -148,7 +151,7 @@ nav {
padding: 10px 10px 10px 10px;
}
-#navaround, nav {
+#navaround, nav, .kblist article {
background-color: #eaf8fd;
}
@@ -177,6 +180,10 @@ nav {
list-style-type: none;
}
+#editsitecontent svg {
+ color: #1181a4;
+}
+
:target {
background-color: #ffceaf;
border-top: solid 2px #1181a4;
@@ -279,6 +286,16 @@ main>div {
margin: auto;
}
+#paginator {
+ padding: 0;
+ margin: 0;
+}
+
+#paginator li {
+ list-style-type: none;
+ display: inline-block;
+}
+
@media (min-width:940px) {
#langselect ul li {
margin: 0 0.3em 0 0;
@@ -319,7 +336,7 @@ main>div {
color: #3daed2;
}
- #langselect .selected {
+ #langselect .selected, #paginator .selected {
color: #1da3cc;
}
@@ -336,7 +353,7 @@ main>div {
color: #dbdbdb;
}
- #mnv, #navaround {
+ #mnv, #navaround, .kblist article {
background-color: #262a2b;
}
@@ -371,7 +388,7 @@ main>div {
}
hr {
- border-color: #dbdbdb;
+ background-color: #dbdbdb;
}
code {
diff --git a/assets/css/kb.css b/assets/css/kb.css
new file mode 100644
index 000000000..13302a048
--- /dev/null
+++ b/assets/css/kb.css
@@ -0,0 +1,27 @@
+.kb header h1 {
+ width: 100%;
+ color: #fff;
+ line-height: normal;
+}
+
+.kb header {
+ margin-bottom: auto;
+}
+
+.kb header a {
+ color: #fff;
+}
+
+#kbside {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+
+.kblist article {
+ padding: 2em;
+}
+
+.kblist main {
+ margin-top: 16px;
+}
diff --git a/assets/css/wiki.css b/assets/css/wiki.css
index 871d9dc23..625f5b76b 100644
--- a/assets/css/wiki.css
+++ b/assets/css/wiki.css
@@ -6,10 +6,6 @@
font-size: 2em;
}
-.wikisite #editsitecontent svg {
- color: #1181a4;
-}
-
.wikisite main h1 {
margin-top: 0;
line-height: 1.5em;
diff --git a/kb/index.md b/kb/index.md
new file mode 100644
index 000000000..e81a3aa77
--- /dev/null
+++ b/kb/index.md
@@ -0,0 +1,8 @@
+---
+layout: kblist
+lang: "en"
+title: "Overview"
+permalink: /kb/
+pagination:
+ enabled: true
+---