Tonbandfetzen is a collection of command-line tools that allow you to compose music based on audio fragments generated from plain text input. It contains:
mel
- generate sound fragments from plain textguitar
- read guitar tablaturestick
- concatenate audio datastack
- superimpose audio datastretch
- rescale audio datarepeat
- loop audio datatrim
- strip leading and trailing silencemono
- unzip audio channelsharmonics
- show spectra of wave samplesinspect
- show information on audio fileriff2aiff
- convert .wav(e) into .aif(f) filesaiff2riff
- convert .aif(f) into .wav(e) filestag
- add ID3v2 metadata to .wav(e) fileszplay
- generate and play sound fragments
Different task are spread across separate executables, which communicate via
files in the Waveform Audio File Format (.wav). Hence, the composition process
can be controlled using build-automation software, allowing for partial updates
and parallel execution (make -j
).
At the heart of this toolbox, the program mel
converts text into audio (try
here):
echo "T pyth M A2'8 W ,5 A2' A3' E4' A4' C#v5' E5' Gz5' A5'" | mel | aplay
The guitar
preprocessor converts tablature into suitable mel
input:
echo "|3 ,30
E4|--------------------0~~~~~~~~~~~|~~~~0~~~~~~~~~~~~~~~~~~~~~~~~~~~|
B3|----0~~~~~~~~~~~~~3~~~0~~~~~0~~~|~~3~~~0~~~~~0~~~~~~~~~~~~~~~~~~~|
G3|--2~~~0~~~~~0~~~~~~~~~~~~~2~~~0~|~~~~~~~~~~2~~~0~~~~~0~~~~~~~~~~~|
D3|----------2~~~0~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~2~~~0~~~~~0~~~|
A2|3~~~~~~~~~~~~~~~----------------|--------------------------2~~~0~|
E2|----------------3~~~~~~~~~~~~~~~|0~~~~~~~~~~~~~~~2~~~~~~~3~~~~~~~|
" | guitar | mel | repeat | aplay
The Functional Just System for just intonation invented by misotanni is partially supported.
To build all tools, you only need a recent Fortran compiler:
cd /path/to/Tonbandfetzen
make FC=gfortran FFLAGS=-O3
To make the tools and documentation accessible, consider adding the following lines to your .bashrc:
REPO=/path/to/Tonbandfetzen
export PATH=$REPO/bin:$PATH
export PERL5LIB=$REPO/perl/lib:$PERL5LIB
export MANPATH=$REPO/doc:$MANPATH
You might also want to link the Vim syntax file to the appropriate location:
ln -s /path/to/Tonbandfetzen/vim/mel.vim ~/.vim/syntax/mel.vim
To have Vim detect the corresponding file types, add this line to your .vimrc:
autocmd BufRead,BufNewFile *.mel,*.gtr setlocal filetype=mel
Please have a look at the examples, some of which require Python or eSpeak NG:
cd examples/freedom
make -j 2
aplay freedom.wav
Each program has its own manual page:
man mel
You can also listen to the examples and browse the manual pages here.
The name Tonbandfetzen originates from the song Explosion by Tocotronic from their 2007 album Kapitulation.