7 Stimmen

Konvertiere SoundFont in .wav-Dateien für jede Note

Gibt es eine einfache Möglichkeit, eine Soundfont-Datei in .wav-Dateien (oder einem beliebigen gängigen Musikformat) umzuwandeln, jeweils für jede Note?

Angenommen, ich hätte eine Soundfont-Datei a.sfz; ich würde gerne eine Liste von Dateien A0.wav, A#0.wav, B0.wav, C1.wav, C#1.wav, usw. davon haben.

Insbesondere möchte ich eine .wav-Datei für jede Note haben, was meiner Meinung nach nicht etwas ist, das die Soundfont-Datei von alleine hat (es scheint, dass sie nur Sample ein paar Noten auseinander enthält - ich nehme an, die Software soll die Tonhöhe der Samples, die in den Soundfonts enthalten sind, ändern, um die Klänge der verbleibenden Noten zu erhalten, aber ich möchte die .wav-Dateien für alle Noten direkt erzeugen, so dass ich die Tonhöhe der Samples auf keine Weise ändern muss).

Falls es eine Software gibt, die das macht, perfekt, bitte geben Sie mir einen Link, aber ich habe keine gefunden (alle, die ich gefunden habe, erzeugen nur .wav-Dateien ein paar Noten auseinander). Wenn nicht, wie würde ich das programmgesteuert machen?

3voto

EnzoR Punkte 2801

Unter Linux können Sie SWAMI (http://www.swamiproject.org/) verwenden, um die Soundfont-Datei (im SF2-Format) zu verwalten.

2voto

sil Punkte 1569

Auf Ubuntu kann sf2extract im Paket gigtools alle Samples aus einer SF2-Datei als WAVs extrahieren.

0voto

e7mac Punkte 553

Sie können ein Programm schreiben, um dies zu tun. Verwenden Sie die RtAudio-Bibliothek und Fluidsynth, um alle Tonhöhen, die Sie spielen möchten, programmatisch zu generieren. Wenn diese Tonhöhen generiert sind, schreiben Sie sie als Wave-Dateien aus. Dieses Programm könnte dann für jede Klangdatei wiederverwendet werden. Sie können die Bibliotheken finden, indem Sie Google verwenden.

0voto

RockbadgerX Punkte 1

Importieren Sie Ihre sf-Datei in Audacity als Import>Raw-Daten.

Dann können Sie sie als Audiodatei wie wav oder mp3 exportieren

Ich habe einige neue Audio-Patches erhalten, die sf2 waren und meine Kompositionssoftware sie nicht erkannt hat. Habe im Internet gesucht und nichts gefunden. Also habe ich diese Audacity-Sache gemacht und es hat funktioniert. Speziell zu Ihrer Frage: Meine Datei war eine Trompete, die eine Tonleiter spielte. Ich habe alle Noten außer der ersten gelöscht und diesen einzelnen Ton exportiert. Ich habe den Export (wav) in meinen Soundbank-Ordner kopiert und konnte so mit einer kleinen Datei in verschiedenen Tonhöhen komponieren. Und jetzt... etwa 30 andere Instrumente, auf die ich das anwenden kann!

0voto

Martin Ždila Punkte 2734

Ich habe ein einfaches Tool dafür geschrieben. Node.js muss installiert sein.

Anweisungen für Linux (an andere Betriebssysteme anpassen):

  1. Neues Node.js-Modul erstellen:

    mkdir midigen && cd midigen && npm init -y && npm i --save midi-writer-js
  2. index.js mit folgendem Inhalt erstellen:

    const fs = require('fs');
    const MidiWriter = require('midi-writer-js');
    
    for (let octave = 0; octave <= 8; octave++) {
      for (const note of ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#',  'G', 'G#', 'A', 'A#', 'B']) {
        const track = new MidiWriter.Track();
        track.addEvent(new MidiWriter.ProgramChangeEvent({ instrument: 10 }));
        track.addEvent(new MidiWriter.NoteEvent({ pitch: [`${note}${octave}`], duration: '8', velocity: 100 }));
        fs.writeFileSync(`${note}${octave}.mid`, new MidiWriter.Writer(track).buildFile());
      }
    }
  3. Oktavbereich, Instrumententyp (zum Abgleich mit Ihrem SoundFont), Dauer und Lautstärke (Velocity) können frei geändert werden

  4. node . ausführen

  5. SoundFont installieren

  6. Generierte MIDI-Dateien in WAV-Dateien umwandeln:

    for f in *.mid; do timidity $f -Ow -o ${f%.mid}.wav; done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X