Töne/Klänge mit FreePascal/Lazarus

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Theozh
Beiträge: 99
Registriert: So 1. Jul 2012, 10:56

Töne/Klänge mit FreePascal/Lazarus

Beitrag von Theozh »

Hallo,
auf der Suche nach der Möglichkeit, mit FreePascal/Lazarus Töne/Klänge auszugeben, bin ich nicht wirklich fündig geworden.
Einen Beep oder einen Ton mit einer bestimmten Frequenz ausgeben, sollte ja kein Problem sein... z.B. Beep oder Sound(440);

Das Vorhaben: mit mehreren Schiebereglern wollte ich mehrere Töne in entsprechenden Frequenzen und individuellen Lautstärken ausgeben lassen. Dies allerdings nicht in eine WAV/MP3 etc. Datei, sondern interaktiv über den Lautsprecher bzw. die Soundkarte.

Wie sieht's mit mehreren Tönen aus, d.h mit Zwei-, Drei-, Vier- Fünf-Klängen?
Ein Sinus wäre schon mal gut, andere Signalformen wären auch nicht schlecht...

http://wiki.freepascal.org/Multimedia_Programming hilft nur bedingt...
Welches von den Bibliotheken meinen Zweck überhaupt bzw. am besten geeignet? Hat da jemand Erfahrungen damit gemacht und kann Empfehlungen geben?
Welche Library bietet sich in Windows (oder idealerweise natürlich plattformübergreifend) dafür an?
Danke für einen Tipp oder Link.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mse »

Für MSEgui gibt es Komponenten für die digitale Signalverarbeitung:
msesig.png
Die nicht visuellen Komponenten lassen sich möglicherweise auch für Lazarus verwenden. Die Tonausgabe geschieht über die PulseAudio Bibliothek. Zur Erzeugung von Mehrklängen bietet sich z.B. tsigfft an.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mschnell »

Unglaublich, was Du alles hast !!!! :D

Ich hätte gerne einen virtuellen "FM-Sythesiter (funktional a la Yamaha DX7 (Hardware aus den 80gern) bzw. Native Instruments "FM8" (Software für PC: professionell aber nicht ganz billig).

Wie der FM8 sollte es ein "VST-Plugin" für Windows (also eine dll) sein und entsprechenden der VST-Spezifikationen an den Midi- und den Audio-Bus angekoppelt werden.

Es gibt Freeware Angebote, die aber keine genügend kleine Latenz zum Life-Spielen haben.

Was meinst Du,
-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mse »

Für FM- respektive PM-Synthese kann das Ausgangssignal der Generatoren auf die "frequfact" respektive "phase" Eingänge rückgekoppelt werden.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mschnell »

mse hat geschrieben:Für FM- respektive PM-Synthese kann das Ausgangssignal der Generatoren auf die "frequfact" respektive "phase" Eingänge rückgekoppelt werden.
Irre !!
Das muss ich mal ausprobieren.

Hast Du ein Beispiel, wie man ein VST-Plugin macht ? Ich weiß, dass es diverse VST-Plugins gibt, die mit Delphi programmiert wurden. Vermutlich ist FPC da kein Hindernis.

Für DX7-kompatible Funktionalität braucht man:

- sechs Sinus-Oszilatoren, die einen FM-Eingang haben. Wichtig: der Algorithmus muss so ausgelegt sein, dass sie bei entsprechend starker Modulation auch störungsfrei stehenbleiben und rückwärts laufen können (negative Frequenz).

- bis zu 42 Multiplikatoren für die Ausgangs-Signale, die zu verschiedenen Zielen führen.

- sechs Hüllkurven-Generatoren (einigermaßen komplex, die hautsächlich an die Multiplikatoren gehen) (42 wären besser)

- diverse Addierer

Das besagte freeware Produkt krankt dem Entwickler zufolge daran, dass der verwendet VST-Synthesizer Baukasten eine sehr wenig performante Funktionalität für die Hüllkurven-Ggeneratoren aufweist (ich verstehe gar nicht wo da das Problem liegen soll).

Gruß,
-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mse »

mschnell hat geschrieben: Hast Du ein Beispiel, wie man ein VST-Plugin macht ?
Nein.
- sechs Sinus-Oszilatoren, die einen FM-Eingang haben. Wichtig: der Algorithmus muss so ausgelegt sein, dass sie bei entsprechend starker Modulation auch störungsfrei stehenbleiben und rückwärts laufen können (negative Frequenz).
Das geht, die Frequenz wird als Phasenschritt pro sampling Intervall interpretiert, negative Phasenschritte sind vorgesehen.
- bis zu 42 Multiplikatoren für die Ausgangs-Signale, die zu verschiedenen Zielen führen.
Ausgänge lassen sich auf beliebige und beliebig viele Eingänge verteilen. Alle Eingänge haben "gain", "offset", "min" und "max" Eigenschaften.
- sechs Hüllkurven-Generatoren (einigermaßen komplex, die hautsächlich an die Multiplikatoren gehen) (42 wären besser)
Dafür gibt es tsigenvelope mit attack, decay und release Sektionen, welche jeweils eine beliebige Anzahl von Stützpunkten aufweisen können. In der decay Phase kann eine loop gesetzt werden. Zum graphischen Setzen der Stützpunkte gibt es tenvelopeedit.
- diverse Addierer
"tsigadd".
Das besagte freeware Produkt krankt dem Entwickler zufolge daran, dass der verwendet VST-Synthesizer Baukasten eine sehr wenig performante Funktionalität für die Hüllkurven-Ggeneratoren aufweist (ich verstehe gar nicht wo da das Problem liegen soll).
Ich schon. ;-)
Störungsarme Hüllkurvengenerierung braucht happig Rechenleistung.

Martin

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mschnell »

mse hat geschrieben: Ich schon. ;-)
Störungsarme Hüllkurvengenerierung braucht happig Rechenleistung.
AHA.
Würde ich gerne Probieren.

Ich bräuchte aber (um es life mit einem Keyboard spielen zu können) eine Version als VST Plugin.

Any pointers ?

-Michael
Zuletzt geändert von mschnell am Mo 16. Sep 2013, 22:47, insgesamt 2-mal geändert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Töne/Klänge mit FreePascal/Lazarus

Beitrag von mse »

Eine Midi Schnittstelle gibt es. Bitte öffne ein neues Thema hier:
http://www.lazarusforum.de/viewforum.php?f=53

Antworten