diff --git a/docs/BuildingPiPedalFromSource.md b/docs/BuildingPiPedalFromSource.md index f6d64bb..2c17acf 100644 --- a/docs/BuildingPiPedalFromSource.md +++ b/docs/BuildingPiPedalFromSource.md @@ -16,4 +16,4 @@ As a last resort, you be able to configure VSCode and/or CMake to cross-compile -------- -[<< Which LV2 Plugins Does PiPedal Support?](WhichLv2PluginsAreSupported.md) | [Up](Documentation.md) | [Build Prerequisites >>](BuildPrerequisites.md) +[<< Frequently Asked Questions](FAQ.md) | [Up](Documentation.md) | [Build Prerequisites >>](BuildPrerequisites.md) diff --git a/docs/Documentation.md b/docs/Documentation.md index 7703e50..3b15b4d 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -24,6 +24,10 @@ +#### [Frequently Asked Questions](FAQ.md) + + + #### [Building PiPedal from Source](BuildingPiPedalFromSource.md) #### [Build Prerequisites](BuildPrerequisites.md) #### [The Build Systems](TheBuildSystem.md) diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000..f2ee606 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,190 @@ +--- +page_icon: img/Setup.jpg +icon_width: 320px +icon_float: left +--- + +## Frequently Asked Questions + +Before using PiPedal, you will need to configure settings for the audio device that PiPedal will use. + +{% include pageIconL.html %} + +You will also want to configure PiPedal to provide a Wi-Fi auto-hotspot so that you can connect to using your using your Android phone or tablet. It's fine to use your home Wi-Fi network to connect to PiPedal when you're at home; but don't forget that when you take PiPedal out to a gig, you will need to ensure that PiPedal's Wi-Fi auto-hotspot is enabled before you do. + +PiPedal uses LV2 audio plugins. There are literally thousands of freely available high-quality LV2 plugins that are suitable for use as guitar effects. + +By default, PiPedal comes with a few plugins from the ToobAmp plugin collection. You will probably want to install more. + +See [_Using LV2 Plugins_](UsingLv2Plugins.md) for more details, and for some concrete recommendations of LV2 Plugin collections that you might want to use +with PiPedal. + +### Installing the PiPedal Remote Android app + +If you are using an Android phone or table to connect to PiPedal, you should download and install the [PiPedal Android Client](https://play.google.com/store/apps/details?id=com.twoplay.pipedal) + +The Android PiPedal client provides three feature: + +1. It automatically locates running instances of PiPedal on the local Wi-Fi network using dns/Bonjour discovery. So you don't need to keep track of which IP address to connect with. + +2. It provides a web view of PiPedal user interface with none of the clutter associated with a web browser. No browser address bars; no additional window clutter from the browser. Just a view of the PiPedal UI. So you get to use every precious pixel of your display to control PiPedal. + +3. It happens to interoperate nicely with PiPedal's auto-hotspot feature, allowing one-click connection to PiPedal even when you're away from home and don't have access to a Wi-Fi router. + +In theory, you could do all of this using Chrome, running on your phone. And, in fact, you can. But it's a fiddly procedure. The Android PiPedal Client takes care of all of those details, and allows you to connect to PiPedal from your phone or tablet with just one click to launch the app. + +The PiPedal client will connect to the PiPedal server running on your Raspberry Pi automatically if they are both connected to the same Wi-Fi router. When you are away from home, you should configure PiPedal to automatically bring up a Wi-Fi hotspot when the Raspberry Pi is not able to connect to your home network. + +When you do, you can easily connect to PiPedal via the Android app. + +- You show up at a local venue to perform. + +- You power up your Raspberry pi. The PiPedal server boots up, and decides that it is not able to connect to your home network, so it starts up a Wi-Fi hotspot. + +- Your phone or tablet doesn't have a Wi-Fi connection, because you're not at home. But when it sees the PiPedal hotspot it will automatically connect. + +- You launch the PiPedal client on your Android device. It searches the network associated with the current active Wi-Fi connection (the PiPedal hotspot, in this instance), and finds a PiPedal server announcing itself via mDNS/Bonjour. And having located the pipedal server, it automatically opens up a Web View and connects to the PiPedal web user interface. + +None of this is particularly clever. But it does make things simple. + +## First Connection + +You can complete the initial configuration procedure using any of the following methods: + +1. _Log on to the Raspberry Pi device_. Launch a web browser, and connect to http:://127.0.0.1/ + +2. _Connect your Raspberry Pi to a Wi-Fi or Ethernet network, and connect from your laptop or desktop._ Connect to http://raspberrypi/ (substitute the host name of your Raspberry Pi if you have changed it from the default). + +3. _From your Android device._ Install PiPedal Remote on your Android device. Connect your Raspberry Pi to your home router using a Wi-Fi or Ethernet connection. Launch PiPedal Remote on your Android device. + +4. _From a LINUX command prompt._ As a last resort, you can configure the Wi-Fi hotspot using the `pipedalconfig` program. Type `pipedalconfig --help` at a command prompt on your Raspberry Pi. + +If you already have another web server on port 80, see [*How to Change the Web Server Port*](ChangingTheWebServerPort.md). + +When you connect to PiPedal for the first time, you will be presented with an Onboarding dialog, which allows you to complete the setup of things that need to be configured before you use PiPedal. From the Onboarding dialog, you can select and configure the audio device, and (optionally) configure Pipedal's Wi-Fi auto hotspot. + +### Configuring Audio + +Once connected, select the Settings menu item on the Hamburger menu at the top left corner of the display. Click on Audio Device Settings to select and configure the audio device you want to use. + +You may also need to choose which audio input and output channels you will use for guitar signals, once you have selected and configured +an audio device. Many external USB audio devices that have two inputs provide the guitar signal on the right channel only, so you will set the audio input channels to "Right Only". If your USB audio adapter has more than two input or output channels, you will be offered a list of channels to choose from. + +#### Selecting Audio Buffer Sizes + +You may have to experiment to find the buffer size, and buffer count that works best for your. The actual round-trip latency and frequency of audio overruns and underruns depends the the operating system system version, the audio hardware being used, and upon CPU use of the audio patches you are using. Selecting larger buffer sizes or larger buffer counts increase the amount of computing power available for your audio effects, and will reduce the number of dropouts caused by audio overruns/underruns (xruns); smaller buffer sizes and buffer counts improve the overall round-trip latency but will increase the likelihood of xruns. + +Please note that the Raspberry Pi OS is not completely robust with respect to realtime scheduling. Significant display activity, SD-CARD activity or heavy CPU use by programs other than PiPedal may cause audio xruns. For best results, run PiPedal without a display attached, and with no other programs running. Connecting remotely to the PiPedal web interface should not cause problems. + +PiPedal provides the pipedal_latency_test utility to measure actual round-trip audio latency. You must temporarily disable pipedal (`sudo systemctl stop pipedal`), and connect the left audio output of your audio device to the left audio input of your audio device with a guitar cable to use this test. + +The following table shows measured round-trip audio latencies for a MOTU M2 external USB adapter running on Raspberry Pi OS. You can use these figures as a rough guideline; but actual round-trip audio latency will depend on the audio device you are using. + +
| Buffers | |||
| Size | 2 | 3 | 4 |
| 16 | Fails | 185/3.9ms | 201/4.2ms |
| 24 | 192/4.0ms | 213/4.4ms | 236/4.9ms |
| 32 | 219/4.6ms | 236/4.9ms | 272/5.7ms |
| 48 | 253/5.3ms | 299/6.2ms | 348/7.2ms |
| 64 | 280/5.8ms | 346/7.2ms | 411/8.6ms |
| 128 | 442/9.2ms | 571/11.9ms | 699/14.6ms |