Frage

Ich muss a implementieren Wavetable-Synthesizer in einem ARM Cortex-M3-Kern.Ich suche nach Code oder Tools, die mir den Einstieg erleichtern.

Ich bin mir bewusst über diese AVR-Implementierung.Ich habe es vor einiger Zeit tatsächlich in ein PIC umgewandelt.Jetzt bin ich auf der Suche nach etwas Ähnlichem, das aber etwas besser klingt.

ANSI-C-Code wäre großartig.Alle Codefragmente (C oder C++), Beispiele, Tools oder einfach nur allgemeine Informationen wären sehr dankbar.

Danke.

War es hilfreich?

Lösung

Das Synthesis Toolkit (STK) ist ausgezeichnet, aber es ist nur C++:

http://ccrma.stanford.edu/software/stk/

Möglicherweise können Sie den Wavetable-Synthesizer-Code jedoch aus dem STK extrahieren.

Andere Tipps

Zwei Open-Source-Wavetable-Synthesizer sind FluidSynth Und Schüchternheit.

Jeder ARM-Synthesizer, die besten, kann in weniger als einem Tag in einen Wavescanner umgewandelt werden.Das Scannen der Welle aus Dateien oder deren mathematische Generierung ist im Audiobereich nahezu dasselbe. WT bietet riesige Wellenformbänke ohne Verarbeitungskosten, Sie benötigen die Wellen, der WT-Oszillatorcode selbst besteht aus 20 Zeilen.Ändern Sie also Ihren Wellenformknopf von 3 auf 100, um anzuzeigen, welche WAV-Datei Sie lesen. Verwenden Sie einen Rampen-/Zähler, um die WAV-Dateien (als Arrays) zu lesen.WT behoben.

Aufgrund meiner 7-jährigen Synth-Erfahrung würde ich empfehlen, 20 Zeilen der Oszillatorfunktion Ihres Lieblings-Synthesizers zu ändern, um ihn an das Lesen von Wave-Arrays anzupassen.Der WT verwendet nur 20 Logikzeilen, der Rest des Synthesizers ist wichtiger:LFOs, Filter, Eingangsparameter, Preset-Speicher ...Verwenden Sie stattdessen Ihren Lieblings-Synthesizer und suchen Sie sich eine WT-Wave-Bibliothek als WAV-Dateien und -Ordner aus und ersetzen Sie Ihre Lieblings-Synthesizer-Oszillatoren durch WT-Funktionen, es wird fast gleich klingen, nur mit geringeren Verarbeitungskosten.

Ein Synthesizer verwendet normalerweise Sin, Sqr, Saw, Antialiased OSC-Funktionen für die Welle ...

Ein Wavetable-Synthesizer verwendet an seiner Basis etwa 20 Codezeilen und 10/20/100ds Wellen, wobei jede Welle idealerweise in jeder Oktave abgetastet wird.Wenn Sie eine Wavetable-Soundbibliothek erhalten können, führt der Synthesizer lediglich Loops und Tonhöhenverschiebungen durch, und professionelle Synthesizer können auch über mehrere Oktaven verfügen, um die Oktaven zu mischen.

WTfunction =

  • Laden Sie WAV-Dateien in N Arrays
  • Wellenform ändern = Wellenform-Array aus der WAV-Liste auswählen
  • Lesen Sie das Wellenform-Array mit den gewünschten Hz

Wavescanner-Funktion =

  • Überblenden Sie zwischen zwei Wellen und weisen Sie Xfade dem LFO zu, d. h.Sinus und xfade.

Die Hüllkurve, der Filter, die Amplitude und alle anderen Funktionen sind in allen Synthesizern unabhängig von der Wellenerzeugungsfunktion.

Denken Sie daran, dass das leistungsstärkste psychoakustische Werkzeug für Synthesizer die Abweichung vom digitalen Ton der Noten ist. Man nennt es Unisono-Verstimmung. Der Klangcharakter von Synthesizern entsteht hauptsächlich durch Chorus und Unisono-Verstimmung.

WTs sind entweder einzelne Wellenperioden längerer Abschnitte in fortgeschritteneren Synthesizern.Die einzelnen Punkte lassen sich sehr einfach in Code schreiben.Die fortgeschrittenen WTs werden pro Oktave mit Wellen abgetastet, die N Perioden dauern, sogar 2-3 Sekunden, d. h.Klavier, und das bedeutet, dass sie die Klangqualität über die Oktaven hinweg ändern, sodass die komplexen WTs bei Aufnahmen mit mehreren Oktaven jede Oktave überblendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top