Music-Scripts - Skripte für Music- und Sound-Bearbeitung
music-scripts ist ein Debian-Paket, das einige Skripte zur Manipulation von
.mid und
.wav -Files enthält. Es ist zur Vorbereitung und Auswertung von Musik-bezogenen Experimenten am
Max Planck Institut für Kognitions- und Neurowissenschaften gedacht. Das Paket und sein Inhalt darf im Rahmen der
GPL2 genutzt/weitergegeben und verändert werden, jedoch bitte ich darum, Änderungswünsche oder auch Änderungen selbst immer an mich zu schicken, damit ich sie in die offizielle Version einfliessen lassen kann.
Hinweise:
- Alle Skripte besitzen eine Online Hilfe (Option
--help ), die meist auch Beispielaufrufe umfasst.
- Wer Sonderwünsche/Verbesserungsvorschläge (Nörgeleien ausgenommen ;-) ) hat - immer her damit. Meine eMail-Adresse findet man unter FrankBurkhardt.
Inhaltsverzeichnis:
wavcue -- WAV-Markierungs-Extrahierung
Dieses Skript schreibt die Position von
cue -Markierungen aus wav-Files in einem bestimmten Format herraus. Das Format ist zu 100% identisch mit dem alten
wavcue -Programm aus dem MPI/CNS.
inscue -- WAV-Markierungen einbauen
inscue benutzt ein File, in dem Format, wie
wavcue es schreibt und baut nach diesen Vorgaben CUE-Sheets in ein oder mehrere WAV-Files ein.
mid2notes -- Midi-zu-Text-Konverter
Damit wandelt man die in einem
.mid -File gespeicherten Noten in Text um. Das sieht dann z.B. so aus:
user@host> mid2notes test.mid
5.18854166666667 0.130208333333333 73 0 60
5.61770833333333 0.507291666666667 73 0 70
6.15416666666667 0.158333333333333 74 0 57
6.28541666666667 0.314583333333333 73 0 70
Jede Zeile besteht dabei aus 5 durch Leerzeichen getrennten Werten:
- Der Startzeitpunkt (onset) der Note in Sekunden relativ zum Start des =.mid=-Files
- Die Tondauer in Sekunden
- Die Tonhöhe als Midi-Code ( C -2 ist die 0). Es ist möglich, an dieser Stelle Klartext (also C-2 anstelle von 0) ausgeben zu lassen. Dazu muss die Option
-f text-pitch verwendet werden.
- Die Patch-Nummer (=Instrumentennummer) der Note (0 bedeutet Piano)
- Die Anschlagstärke des Tones.
Diese Zeilen kann man dann entweder direkt weiterverarbeiten, man kann sie jedoch auch z.B. manipulieren und anschliessend mit
notes2mid wieder in ein
.mid -File verwandeln.
Hinweis:
- Es ist möglich, die Stille (also die Zeit bis zur ersten gespielten Note) wegzurechnen (Option
--nogap ). Die erste ausgegebene Note startet dann immer bei 0s.
notes2mid - Text-zu-Midi-Konverter
Dieses Programm wandelt ein Musikstück, das in Textform vorliegt, in ein
.mid -File um. Als Format werden dabei Textzeilen verwendet, wie sie
mid2notes produziert. Da jede Note einen absoluten Startzeitpunkt hat, brauchen die Zeilen nicht sortiert zu sein.
Hier ein Beispiel:
user@host> mid2notes song.mid > song.txt
user@host> notes2mid song.txt -o song2.mid
Nach diesen Kommandos sollten die
.mid -Files
song.mid und
song2.mid exakt gleich klingen.
Hinweis:
- Wie auch bei
mid2notes ist es möglich, die Stille (also die Zeit bis zur ersten gespielten Note) wegzurechnen (Option --nogap ). Die erste Note des .mid -Files startet dann bei 0s.
mid2wav - Midi-zu-WAV-Konverter (Midi-Renderer)
Dieses Skript wandelt ein
.mid -File in ein
.wav -File um. Dafür wird der Software-Synthesizer
Timidity++ benutzt.
Das geht dann z.B. so:
user@host > mid2wav meinedatei.mid
oder auch so:
user@host > cd /many/thousend/songs
user@host > for f in *.mid; do mid2wav "$i";done
Hinweise:
- Es ist möglich, den Anfang jeder Note im
.wav -File mit einer cue -Markierung zu versehen (Option -n)
- Das Format der cue -Markierungen läßt sich mit der Option
-f beeinflussen .
- Für die cue -Markierungen kann eine gewisse Mindestlautstärke der eingeschlossenen Noten ( Velocity ) definiert werden. Leisere Noten erhalten dann keine eigene cue -Markierung. Dafür ist die Option
-l zuständig.
- Es ist möglich, eine benutzerspezifische Konfigurationsdatei für timidity anzugeben (
--config ). Damit kann man z.B. einen anderen Soundfont (Patchset) wählen - z.B. so:
user@host > mid2wav --config /etc/timidity/freepats.cfg
Mit dieser Zeile wählt man das Paket freepats als quelle für Patches aus. Das ist sinnvoll, wenn nicht hochqualitativer Piano-Sound, sondern andere Sound gewünscht sind.
middump - Alles über Midi-Files
Dieses Skript zeigt alle Events (z.B.
Start einer Note oder auch
Setze Tempo ) eines
.mid - Files an. Das Format ist leicht mit Perl oder auch Shellskripten weiterzuverarbeiten.
Hinweise:
- Die Option
--absolute veranlasst middump die absoluten Zeiten (in Midi-Zeitrechnung) anstelle von Delta-Werten auszugeben.
wavinfo - Format-Informationen über WAV-Files
wavinfo zeigt Informationen wie Samplerate, Länge in Sekunden oder Anzahl der Bits pro Sample über
.wav -Files an.
wav2erts - ERTS-taugliche .voc -Files erzeugen
Dieses Programm macht nichts weiter, als
sox aufzurufen, um aus
.wav -Dateien
.voc -Dateien zu machen. Dabei werden jedoch zahlreiche Tücken korrekt umschifft - das
.voc -File sollte anschliessend perfekt unter
ERTS laufen.
wavcuesplit - Schnelles zerlegen von .wav -Files
Dieses Programm kann
.wav -Dateien anhand von in ihnen enthaltenen
cue -Markierungen in kleinere Dateien zerlegen.
Beispiel:
user@host > ==wavcuesplit
Wofür: Wer früher endlos mit Cooledit an grossen
.wav -Files sass und diese zerschnitten hat, kann mit diesem Programm Zeit sparen.
Prinzip: In einem Soundverarbeitungsprogramm (z.B.
rezound ) setzt man
cue -Markierungen jeweils am Anfang und am Ende eines Stueckes, dass man herrausschneiden will. Dabei bestimmt der Name der jeweils ersten Markierung den Namen der jeweiligen
.wav -Datei. Die grosse
.wav -Datei wird mit den Markierungen abgespeichert und anschliessend mit
wavsplit bearbeitet, wodurch viele kleine
.wav -Files entstehen.
Hinweise:
- Es ist möglich für vorn und hinten an alle herrausgeschnittenen Teilstücke ein stückchen Stille anzuhängen. Mit den Parametern
-b und -a läßt sich dabei jeweils für vorn und hinten die genaue Länge in ms angeben.
- Wenn man ungeeignete oder auch keine Namen für die cue -Markierungen vergeben hat, kann man
wavcuesplit mit der Option --numerical=PREFIX= anweisen, die erstellten Dateien selbst zu benennen. Die Dateienamen haben dabei die Form PREFIX[Nummer].wav , wobei die Nummer mit 1 beginnt und hochgezählt wird. Beispiele:
Es werden WAV-Dateien angelegt, deren Name mit test anfangen:
user@host > wavcuesplit --numerical test big_wav.wav
Hier werden WAV-Dateien angelegt, die einfach [Nummer].Wav (von 1 beginnend) benannt werden:
user@host > wavcuesplit --numerical "" big_wav.wav
insfreq - Einfügen von Sinus-Tönen an cue -Markierungen
(Spezialanfertigung für Burkhard Maess)
Mit diesem Skript können Töne mit definierter Frequenz in eine
.wav -Datei eingebaut werden. Die Töne werden auf einem seperaten Kanal untergebracht. Ausgangsmaterial sind eine
.wav -Datei, die
cue -Markierungen enthält sowie ein spezielles Datenfile, in dem definiert wird, an welche
cue -Markierung welche Tonhöhe eingebaut werden soll.
Beispiel:
user@host> wavinfo channels test.wav
1
user@host> wavcue test.wav
0.000000 0.000000 test none test.wav
8.007279 0.000000 foo none test.wav
14.142698 0.000000 bar none test.wav
user@host> cat freq.txt
foo - 1000
bar - 4000
user@host> insfreq --length 10p --level 50 test.wav < freq.txt
I: Initializing signal playground... (779257 samples)
I: writing 2 notes...
I: merging tracks...
user@host> wavinfo channels test.wav
2
Hinweise:
- Die Länge der jeweiligen Töne Läßt sich mit dem Parameter
--length steuern. Gültige Angaben sind dabei entweder die Anzahl von Millisekunden (z.B. 10ms ) oder die Anzahl der Perioden (z.B. 10p ), die der Ton hörbar sein soll.
mid2mid - Manipulation von .mid-Files
(Funktionalitaet gewünscht von Yun Nan)
Mit diesem Skript können bestimmte Eigenschaften von
.mid -Dateien geändert werden. Folgendes ist möglich:
- Für auditorische Experimente nutzlose Midi-Events können entfernt werden. Dazu zählen:
- Lyric-Events
- Text-Events
- Tempowechsel nach der letzten Note
- Midi-File-Typen können ineinander überführt werden.
mid2mid kann dabei sämmtliche Midi-Formate lesen (also Typ 0, 1 und 2) und ist in der Lage Typ 0 und 1 auszugeben, wobei Typ 0 der Standard ist.
Hinweis:
- Typ 2 Midi-Files lassen sich nicht einfach bearbeiten - sie werden immer gleichzeitig entweder in Typ 0 oder Typ 1 konvertiert.
- Mit
--select [Tracknummer] kann bei einem Typ 2 Midi-File der Track gewählt werden, der für das Ausgabefile benutzt werden soll. Standard ist Track 0.
cueclean - Entfernen von cue-Markern
(Skript gewünscht von Korinna Eckstein)
Um eine WAV-Datei von allen enthaltenen cue-Markern zu säubern, kann man folgendes machen:
user@host > cueclean wav_mit_cues.wav wav_ohne_cues.wav
Will man grosse Mengen von Dateien Umwandeln, bietet sich eine solche Konstruktion an:
user@host > for i in cued_wavs/*.wav;do cueclean "$i" cueless_wavs;done
Diese Befehlszeile verarbeitet alle
.wav -Dateien im Verzeichnis
cued_wavs und legt sie unter gleichem Dateinamen im verzeichnis
cueless_wavs ab.
Einschränkungen:
- Das Script liesst die
.wav -Dateien komplett in den Arbeitsspeicher, kommt also nur dann klar, wenn die .wav -Dateien in den Speicher passen.
[Zurück zum Start]