Sound Synthesis Framework in C / C ++ / Objective-C?

7

Ich habe das Netz durchsucht, aber nichts interessantes gefunden. Vielleicht mache ich etwas falsch.

Ich suche nach einer Klangsynthese-API, die auf C, C ++ oder sogar Objective-C geschrieben ist und verschiedene Arten von Wellen synthetisieren kann. Effekte sind optional.

    
totocaster 10.08.2009, 10:50
quelle

6 Antworten

9

Hier ist eine vollständige Bibliothek / ein Toolkit für die FM (Frequenzmodulation) -Synthese:

link1 link2

Wenn Sie Zeit übrig haben ... eine einfache Klangsynthese von Grund auf neu zu erstellen, ist eigentlich ein lustiges Unterfangen. Wenn Sie einen kleinen Puffer aus 256 16-Bit-Samples erstellen, die entweder einen Sinus darstellen. ein Sägezahn, Block oder Puls, können Sie diese zu einem Live-Audio-Puffer (z. B. einem kleinen Puffer (sagen wir 16kb)), der ständig Schleifen. Indem Sie vor der Wiedergabeposition bleiben und den Puffer ständig mit neuen Werten füllen, können Sie den Soundoutput erstellen. Sie können die kleinen Puffer verwenden, um diese auf interessante Weise zu kombinieren (am einfachsten ist es, sie einfach zusammenzufügen (additive Synthese)).

Die Frequenz des Tons kann manipuliert werden, indem ein größerer oder kleinerer Abtastschritt durch die kleinen Puffer verwendet wird. Die Amplitude kann manipuliert werden, indem die Abtastwerte skaliert werden, bevor sie in den Ausgabepuffer eingefügt werden.

Viel Spaß beim Experimentieren!

Wenn Sie diesen Schritt genagelt haben, können Sie komplexere Effekte wie Filter (Tiefpass, Hochpass usw.) und Effekte (Hall, Echos usw.) hinzufügen

R

    
Toad 10.08.2009, 11:12
quelle
4

Haben Sie sich das Synthesis-Toolkit angesehen ( STK )? Es ist in C ++ (Ich glaube nicht, dass ObjC die richtige Sprache für die Audiosynthese ist, in der Tat Audiogeräte, Apples eigene Art, Audiomaterial zu tun, einschließlich Generatoren / Filter / Effekte ... ist in C ++).

STK läuft unter Mac OS X und iOS kein Problem (CoreAudio wird unterstützt), wird aber auch unter Linux und Windows (Direct Sound und ASIO) mit RtAudio laufen. Es ist wirklich gut gemacht und leicht, diese Jungs haben viel Zeit damit verbracht, darüber nachzudenken, und es wird definitiv einen großen Vorsprung geben. Es kann viele verschiedene Audio-Dateiformate + Midi (und hoffentlich OSC bald ...) verarbeiten.

Es gibt auch Create und CLAM, was riesig ist, dazu gehören GUI-Komponenten und viele andere Dinge, die Sie vielleicht haben oder nicht wollen. Wenn Sie nur an Klangsynthese interessiert sind, empfehle ich STK.

    
jbat100 03.10.2011 14:42
quelle
4

PortAudio ist auch eine großartige C-API, die wir letztes Semester in einem Audiokurs verwendet haben. Es bietet einen Audio-Rückruf ... was könnte man mehr brauchen !?

Ich habe noch nicht versucht, es in Objective-C mit irgendetwas zu verbinden, werde es aber melden, wenn ich es tue.

    
manderson 01.02.2012 20:18
quelle
2

Das Schreiben von Audiosynthesealgorithmen in C / obj-C ist meiner Meinung nach ziemlich schwierig. Ich würde empfehlen, Ihre Signalverarbeitungsalgorithmen mit PureData zu schreiben und dann zu verwenden ZenGarden oder libpd , um die pd-Patches in Ihrer App einzubetten und zu interpretieren.

    
Rafael Vega 29.08.2011 14:40
quelle
1

Eine andere C ++ - Bibliothek ist nsound:

Ссылка

Man kann jede Art von moduliertem Signal unter Verwendung der Generator-Klasse oder unter Verwendung der bereitgestellten Sine-Klasse erzeugen. Jeder Zeitschritt kann seine eigene momentane Frequenz- und Phasenverschiebung haben.

Sie können auch mit dem Python-Modul experimentieren, um Ihren Algorithmus schnell zu entwickeln, und dann in C ++ implementieren. Es kann hübsche Matplotlib-Plots von Python und sogar von C ++ erzeugen!

    
Nick 30.03.2012 18:10
quelle
-1

Haben Sie sich CSound angesehen? Es ist eine unglaublich flexible Audioproduktionsplattform und kann alles von der einfachen Wellenformerzeugung bis zur FM-Synthese und allen Arten von Filtern bewältigen. Es bietet auch MIDI-Unterstützung, und Sie können es erweitern, indem Sie benutzerdefinierte Opcodes schreiben. Es gibt eine vollständige C-API und mehrere C ++ APIs.

    
Meredith L. Patterson 10.08.2009 11:27
quelle