1 votes

Génération automatisée de fichiers sonores pour des notes de musique individuelles sur un Mac

J'ai une tâche spécifique à accomplir... J'essaie de savoir s'il existe un moyen de le faire. En gros, pour un projet sur lequel je travaille, je veux créer des fichiers sonores pour des notes de musique individuelles.

Ainsi, par exemple, un piano jouant un seul son "A" serait un fichier. Un piano jouant un son "B" serait un autre fichier.

Je voudrais faire cela pour un grand nombre d'instruments. Je sais que Mac OS intègre des instruments midi. J'ai pu créer le genre de fichiers que je recherche à la main dans Garage Band en jouant un instrument logiciel, en sauvegardant le fichier, puis en modifiant la hauteur.

Cela prend toutefois beaucoup de temps et je pense que le processus pourrait être automatisé. Peut-être que si je pouvais créer un fichier midi avec la ligne de commande et ensuite convertir ce fichier midi en fichier son, je pourrais le faire avec un Shell Shell ?

Quelqu'un a-t-il des recommandations à faire pour me mettre sur la bonne voie ?

1voto

Matt Points 11

La solution que j'ai utilisée implique abc2midi et Amadeus Pro, bien qu'il semble que j'aurais pu utiliser FluidSynth si j'avais voulu utiliser la ligne de commande complète. En gros, j'ai créé un fichier abc modèle qui ressemblait à ceci

X:1
M:4/4
K:C
%%MIDI program number
note z

puis j'ai remplacé "nombre" et "note" par un Shell Shell qui ressemblait à ceci

#/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

À ce stade, j'ai obtenu un dossier rempli de fichiers midi que je pouvais ensuite transformer en fichiers wav à l'aide d'un synthétiseur. Ici, je les ai traités par lots avec Amadeus Pro (qui est une application commerciale).

Je comprends qu'un synthétiseur en ligne de commande comme FluidSynth aurait également pu fonctionner, mais ce n'était qu'une (petite) étape de mon projet et j'essayais de faire cela de la manière la plus rapide possible, pas de faire la solution la plus élégante, donc je n'ai pas pris le temps de faire fonctionner cela et de l'ajouter à mon Shell Shell.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X