diff --git a/2023/incoming/trimming-audio-files-with-audio-nama.pod b/2023/articles/2023-12-18.pod similarity index 90% rename from 2023/incoming/trimming-audio-files-with-audio-nama.pod rename to 2023/articles/2023-12-18.pod index 94206f781..3daebc1de 100644 --- a/2023/incoming/trimming-audio-files-with-audio-nama.pod +++ b/2023/articles/2023-12-18.pod @@ -2,7 +2,6 @@ Author: Joel Roth Title: Trimming audio files with Audio::Nama Topic: Audio::Nama - =for :html
Warped audio waveforms
@@ -15,36 +14,36 @@ various info breaks during a radio play. In other words, we want to extract relevant parts of an audio file, and stitch them together into a new file. We'll see how this happens through an audio network language we'll use perl to -generate. +generate. =head2 Our hammer -We'll be accomplishing this with Audio::Nama, a multitrack +We'll be accomplishing this with L, a multitrack recording mixing and audio-processing application written in perl, and L, a general-purpose audio engine. We also need git, which Nama uses to manage project state, provide for branching, undo, etc. C is the executable program script and also man page, so "man nama" for the docs, or use nama's internal -help. +help. Nama configures Ecasound for recording, mixing and a variety of tasks via a audio network definition called a I with syntax we will use Nama to generate. +setup> with syntax we will use Nama to generate. Aside from housekeeping duties, Nama's main task is to regenerate the chain setup (and re-configure the engine) -whenever the graph changes due to user input, such +whenever the graph changes due to user input, such as deactivating a track or changing an output--a bit -like how a spreadsheet recalculates as necessary. +like how a spreadsheet recalculates as necessary. -The first run of C creates a C<$HOME/nama> directory for -project files and a configuration file C<$HOME/.namarc>. +The first run of C creates a C<$HOME/nama> directory for +project files and a configuration file C<$HOME/.namarc>. Nama assumes a linux environment: that you'll be recording -or listening from the default ALSA soundcard device, +or listening from the default ALSA soundcard device, usually your computer's built-in soundcard. You can -change this setting in C. +change this setting in C. =for :html
section divider
@@ -56,7 +55,7 @@ We'll create a new project called 'christmas'. C<$ nama -c christmas> We get a startup banner, then an empty track listing: - + No. Name Requested Status Source Destination Vol Pan =============================================================================== 1 Main MON Main bus CH 1/2 100 50 @@ -64,7 +63,7 @@ We get a startup banner, then an empty track listing: nama christmas Mixdown > -In the prompt, 'christmas' is the project, 'Mixdown', the current track. +In the prompt, 'christmas' is the project, 'Mixdown', the current track. We create a separate track to accommodate our audio file, then import the file. @@ -81,14 +80,14 @@ then import the file. 2 Mixdown OFF track Main -- -- -- 3 carol PLAY carol_1.wav Main bus 100 50 -We can now press SPACE to start/stop playback. +We can now press SPACE to start/stop playback. In the track listing above we see that track 'carol' with source C is set to PLAY. The output of 'carol' feeds the 'Main' track via the 'Main' bus. The 'Main' track serves as the master fader with output to the sound card. Like 'carol', all new tracks start as members of the 'Main' -bus. +bus. =for :html
section divider
@@ -102,14 +101,14 @@ keep. We do that by listening to the track and using the C command (bound to the F1 key) to mark clip -starts and ends. +starts and ends. After some trial and error, we have the correct marks. In this example: four five-minute sections of content separated by 40-second breaks. nama christmas carol > list-marks - + 0 40.0 clip-start-0020 1 340.0 clip-end-0021 2 380.0 clip-start-0022 @@ -134,7 +133,7 @@ We can now assemble our clips. Note that the source for track 3 has changed from C to C. - + Having listened to the output and resolved any hiccups (there were none!) we are ready to render it to an audio file. @@ -168,9 +167,9 @@ The mixdown step also generates ogg and mp3 encodings with oggenc and lame, respectively, if desired. These files appear in the project directory: -C<~/nama/christmas/christmas_1.mp3> -C<~/nama/christmas/christmas_1.ogg> -C<~/nama/christmas/christmas_1.wav> is a symlink to C<~/nama/christmas/.wav/Mixdown_1.wav> +C<~/nama/christmas/christmas_1.mp3> +C<~/nama/christmas/christmas_1.ogg> +C<~/nama/christmas/christmas_1.wav> is a symlink to C<~/nama/christmas/.wav/Mixdown_1.wav> =for :html
section divider
@@ -183,7 +182,7 @@ An Ecasound chain setup is made of signal-processing I--edges in the processing graph--and I, which are nodes capable of summing their inputs. -A chain represents a stream with one input and one output. +A chain represents a stream with one input and one output. Here is a setup of one chain, omitting general options related to buffer sizes, etc. @@ -206,9 +205,9 @@ loop device. A loop device is a buffer stage that can sum the signal from one or more chains. It supplies the sum to another chain (or possibly multiple chains.) A loop device with its sources and an output chain can represent a mixer -or bus. +or bus. -Significantly for our task, a chain can represent an I