From d7d47cba9a794efe23d4ac53f108628ca221935f Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 9 Nov 2016 20:46:31 +0100 Subject: [PATCH] Write more about audio. --- audio.rst | 96 ++++++++++++++++++++++++++++++++- images/audio-view-selector.png | Bin 0 -> 1896 bytes images/input-mapping.png | Bin 0 -> 21045 bytes images/level-meters.png | Bin 0 -> 2329 bytes 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 images/audio-view-selector.png create mode 100644 images/input-mapping.png create mode 100644 images/level-meters.png diff --git a/audio.rst b/audio.rst index e1b8d19..65fe9af 100644 --- a/audio.rst +++ b/audio.rst @@ -45,6 +45,8 @@ can do. (In fact, simple mode constructs a multichannel setup behind-the-scenes and then runs the multichannel audio code.) +.. _audio-meters: + Audio meters ------------ @@ -171,12 +173,104 @@ that got through the other compressors—a classic example is a speaker suddenly coughing, or a very loud bass drum. This prevents both clipping and blowing out the speakers' ears. -(TODO: write more) +At this point, the audio signal is *almost* where we'd like it +to be, but the overall sound level might not be quite right. +All the previous compressors have been working in the objective +domain, but as explained in the :ref:`previous section `, +this does not necessarily correspond to the desired overall +audio loudness. (Their default levels have been calibrated so +that they end up around 0 LU for typical speech content, +but they could easily miss by a few LU in many cases.) + +Thus, there's a final **makeup gain** at the end to compensate +for these issues. When the “Auto” checkbox is ticked, which is +by default, it will very slowly (filter constant of 30 seconds) +adjust itself so that the overall level goes toward 0 LU, +ie., the reference level. It is so slow because the R128 calculations +inherently must go over a certain amount of time (what we want +to change with this gain is the *overall* sound level, +not the *immediate* one). In periods where the makeup gain is +far off, such as when the stream is all silent, it doesn't update +at all. As with the other knobs, you can uncheck the “Auto” +checkbox and tune this yourself if you want to. Multichannel mode ----------------- +**Multichannel mode** expands on simple audio mode by allowing you +to have multiple *buses* of audio. (In a sense, it could more accurately +be called “multibus mode” instead, but the name would be too confusing.) +A bus in Nageru is a pair of channels (left/right), sourced from +a video capture or ALSA card. The channel mapping is flexible; my USB +sound card has 18 channels, for instance, and you can use that to make +several buses. Each bus has a name (for instance, something like +“Blue microphone” or “Speaker PC”), which is just for convenience; +Nageru doesn't care what you write here, but the labels are useful +for the operator. + +Input mappings +'''''''''''''' + +.. image:: images/input-mapping.png + +The input mapping dialog should be pretty much self-explanatory; +you can use the + button to add a new bus, and the - button to remove +the currently selected one (you select by clicking on it). The up and +down buttons rearrange the order by moving the currently selected bus +up or down, if possible. + +Because mappings can be tedious to setup, you wouldn't want to set up +a complicated one every time you started Nageru. Therefore, mappings +can be saved and loaded from disk; the stored file is a +`protocol buffer `_ +in textual format. You can also load one at start with the +“--input-mapping” parameter, which also implies multichannel mode +(--multichannel). + +Nageru strives to keep the mapping consistent even +in the face of a changed environment—for instance, if you unplug and +replug a USB sound card, Nageru will attempt to keep your buses mapped to +that card still mapped. (While the card unplugged, the main display will show +the relevant buses as “(disconnected)”.) Similarly, if an ALSA device +is taken by another program on startup and cannot be accessed by Nageru, +it will mark it as “(busy)” and try again in the background. However, +there are edge cases where Nageru simply cannot do the right thing, +for instance if you unplug two identical cards and plug them back +in the reverse order; USB cards don't carry any kind of serial number +or other forms of unique identification. + + +The audio views +''''''''''''''' + +.. image:: images/audio-view-selector.png + +Once multichannel mode is active, a little selector shows up to the right, +just below the level meters. The arrows (or equivalently, the PgUp/PgDown +keys on the keyboard) allow you to select between two views: + + * In the **compact audio view** (which is the default), each bus is + represented only by its label, its peak meter (see below) and its + fader. This takes up little screen estate, and allows the video channels + to be visible. This is the typical view you'd use once you've set up + everything and are actually doing live video editing; the controls + from the full audio view are still in effect, but you cannot see or + interact with them. + + * The **full audio view** contains a lot more controls, but leaves no + room for the video channels. These are useful when you are doing initial + setup of your mix, or if you want to go back and tune something. + The full audio view will be described in detail in the following section; + the interpretation of the corresponding controls in the compact audio view + is the same. + +.. image:: images/audio-bus-controls.png + +There's one set each of these controls for every bus. + +(TODO: write more) + MIDI control ------------ diff --git a/images/audio-view-selector.png b/images/audio-view-selector.png new file mode 100644 index 0000000000000000000000000000000000000000..328608b1a2a843d81710318d9cdfc3176f9afedf GIT binary patch literal 1896 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 G