Skip to topic | Skip to bottom
Linux.MusicScriptsr1.19 - 04 Oct 2008 - 04:24 - FrankBurkhardt [Zum Ende]

Start of topic | Direkt zum Menü

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]

Aktuelle Wiki-Seite: Linux > DebianProjekte > MusicScripts

[Zurück zum Start]