A solução que usei envolveu o abc2midi e o Amadeus Pro, embora pareça que eu poderia ter usado o FluidSynth se eu quisesse usar a linha de comando completa. Basicamente, eu fiz um arquivo abc modelo que se parecia com isso
X:1
M:4/4
K:C
%%MIDI program number
note z
então eu substituí "number" e "note" por um shell script parecido com este
#/bin/sh
for i in {0..127}
do
for j in C ^C D ^D E F ^F G ^F A ^A B c ^c d ^d e f ^f g ^g a ^a b c\'
do
sed "s/number/$i/g" template | sed "s/note/$j/g" > $i$j.abc
done
done
for file in *.abc
do
abc2midi $file
done
Nesse ponto, isso basicamente me deu uma pasta cheia de arquivos midi que eu poderia usar um sintetizador para transformar em arquivos wav. Aqui, eu os processei em lote com o Amadeus Pro (que é um aplicativo comercial).
Eu entendo que um sintetizador de linha de comando como o FluidSynth também poderia ter funcionado, mas este foi apenas um (pequeno) passo no meu projeto e eu estava tentando fazer isso da maneira mais rápida possível, não fazer a solução mais elegante. Eu não aproveitei para fazer isso e adicioná-lo ao meu shell script.