Was ist Waon

Was ist Waon

Ich habe eine Idee für ein Programm, das ich schreiben möchte, aber dafür ist eine Möglichkeit erforderlich, musikalisches Audio (in erster Näherung eine einzelne Gitarre) in Noten umzuwandeln (z. B. OCR/Spracherkennung für Musik).

Google fandIntelliScore, aber obwohl es mehr Leistung verspricht, als ich benötige (mehrere Instrumente), ist es proprietär und ich suche nach etwas, das kostenlos und GPL-kompatibel ist.

Gibt es kostenlose/GPL-Programme oder -Bibliotheken, die dies können?

Antwort1

Es gibtHinweis. Es kann Notizen erkennen und auf dem Bildschirm transkribieren. Es ist GPL, daher sollten Sie die Erkennungs-/Konvertierungsroutinen extrahieren und anpassen können.

Bildbeschreibung hier eingeben

Eine weitere Option istMusikschreiber-Kitwelche:

Ist ein Toolkit zum Transkribieren einer Musik-Audiodatei in eine gängige Musiknotation. Dies geschieht durch manuelles Annotieren eines Spektrogramms oder Ähnlichem und dessen Konvertierung in eine MIDI-Datei und in eine ABC-Musiknotationsdatei.

Das proprietäre Programm Transcribe! hat eineumfangreiche Listeanderer Musik-Transkriptionstools, darunter auch einige, die Open-Source sind. Sie können auch überprüfenQuelleForgefür andere Open-Source-Musiktranskriptionsprogramme.

Antwort2

Von Google empfohlen waon.

Ursprünglich aufhttp://waon.sourceforge.net/Ich habe es auf Xubuntu 18.04 kompilieren lassen, einschließlich GTK-basierter GUI.

Was ist Waon

WaoN ist ein Wave-to-Notes-Transkribierer, also das Gegenteil von „timidity“ von Tuukka Toivonen (und dessen Nachfolger „timidity++“). (...) Meine ursprüngliche Absicht ist es, die harmonische Stimmführung aus dem Klang meiner Lieblingspianisten zu übernehmen. (...)

Derzeit enthält WaoN drei Programme:

waon: transcriber (wav-to-mid converter)
pv: phase vocoder for time-streching and pitch-shifting
gwaon: GUI for waon and pv

WaoN wird unter der GNU General Public License veröffentlicht.

Wo finde ich den Quellcode?

CVS ist veraltet und Sourceforge wird eingestellt. Ich habe die CVS-basierte Historie in Git konvertiert und sie aufhttps://github.com/fidergo-stephane-gourichon/waon.

Irgendwelche Optionen?

Hier die Zusammenfassung der Optionen, die die ausführbare Datei bietet.

 ./waon --help

WaoN - a Wave-to-Notes transcriber, Version 0.10

Copyright (C) 1998-2007 Kengo Ichiki <[email protected]>
Web: http://waon.sourceforge.net/

WaoN is a Wave-to-Notes transcriber,
that is, a converter from sound file to midi file.

Usage: ./waon [option ...]

Options:
  -h --help print this help.
  -v, --version print version information.
OPTIONS FOR FILES
  -i --input    input wav file (default: stdin)
  -o --output   output mid file (default: 'output.mid')
    options -i and -o have argument '-' as stdin/stdout
  -p --patch    patch file (default: no patch)
FFT OPTIONS
  -n        sampling number from WAV in 1 step (default: 2048)
  -w --window   0 no window
        1 parzen window
        2 welch window
        3 hanning window (default)
        4 hamming window
        5 blackman window
        6 steeper 30-dB/octave rolloff window
READING WAV OPTIONS
  -s --shift    shift number from WAV in 1 step
        (default: 1/4 of the value in -n option)
PHASE-VOCODER OPTIONS
  -nophase  don't use phase diff to improve freq estimation.
        (default: use the correction)
NOTE SELECTION OPTIONS
  -c --cutoff   log10 of cut-off ratio to scale velocity of note
        (default: -5.0)
  -r --relative log10 of cut-off ratio relative to the average.
        (default: no relative cutoff
        = absolute cutoff with the value in -c option)
  -k --peak peak threshold for note-on, which ranges [0,127]
        (default: 128 = no peak-search = search only first on-event)
  -t --top  top note [midi #] (default: 103 = G7)
  -b --bottom   bottom note [midi #] (default: 28 = E1)
    Here middle C (261 Hz) = C4 = midi 60. Midi # ranges [0,127].
  -a --adjust   adjust-pitch param, which is suggested by WaoN after analysis.
        unit is half-note, that is, +1 is half-note up,
        and -0.5 is quater-note down. (default: 0)
DRUM-REMOVAL OPTIONS
  -psub-n   number of averaging bins in one side.
        that is, for n, (i-n,...,i,...,i+n) are averaged
        (default: 0)
  -psub-f   factor to the average, where the power is modified as
        p[i] = (sqrt(p[i]) - f * sqrt(ave[i]))^2
        (default: 0.0)
OCTAVE-REMOVAL OPTIONS
  -oct  factor to the octave removal, where the power is modified as
        p[i] = (sqrt(p[i]) - f * sqrt(oct[i]))^2
        (default: 0.0)

Antwort3

Ich kann Ihnen keine Softwarelösung anbieten, aber ich kann das zugrunde liegende Problem ansprechen: nämlich die Erkennung der „natürlichen“ Töne in einer beliebigen Quelle. Das fehlende Teil des Puzzles ist die effektive Nutzung des Phasenteils eines Spektrogramms, umNeuzuweisungdie Frequenzen im Spektrum an ihre natürlicheren Positionen (die „Momentanfrequenzen“ im Spektrum). Das Ergebnis ist eine stärkere Konzentration des Spektrums auf Chirp-Linien. Eine ähnliche Überlegung gilt auch für Skalogramme – die sich von Spektrogrammen dadurch unterscheiden, dass sie für die Frequenz eine logarithmische Skala und keine lineare Skala haben.

Das Loris-Paket ist ein mir bekanntes Paket, das eine Reihe von Routinen bereitstellt, darunter auch solche zur Schätzung von Momentanfrequenzen.

Da Sie Ihre eigene Software schreiben, können Sie versuchen, Methoden zur Neuzuweisung entweder für Spektrogramme oder Skalogramme direkt zu implementieren und diese als Zwischenschritt in Ihrer Analyse zu verwenden. Eine Möglichkeit könnte darin bestehen, mit den Formeln zu experimentieren, die ich im Beschreibungsteil dieses Demonstrationsvideos anbiete. Es gibt eine Methode namens „Synchrosqueezing“, die speziell auf wavelet-basierte Skalogramme abgestimmt ist und das skalografische Analogon zur Neuzuweisung durchführt.

Die Formeln, die ich aufliste, sind viel einfacher und führen eine ähnliche Analyse direkter durch und haben den zusätzlichen Vorteil, dass die einzelnen Komponenten im Skalogramm auch echte Tonkomponenten sind (da auch die Phase vorhanden ist), sodass der Gesamtton tatsächlich die Summe der Komponententöne wäre. Mit anderen Worten, die „inverse“ Transformation (vom Skalogramm zum Ton) ist nur eine einfache Addition.

https://www.youtube.com/watch?v=OugT7uGGtNg

verwandte Informationen