Hi Leute,
ich wollte mal nachfragen, ob hier jemand weiß, ob und wo es für PureBasic Bibliotheken mit fortgeschrittenen mathematischen Funktionen gibt. Ich denke hierbei in erster Linie an so Sachen wie FastFourierTransformation.
Hintergrund zu der Geschichte ist folgender:
Mir schwebt so ein Projekt vor, bei dem man aus einer .wav-Datei (die man mit verschiedenen Tools z.B. aus einer .mp3-Datei erzeugen kann) zu jedem Zeitpunkt das Spektrum der enthaltenen Frequenzen extrahieren kann. Mit ein paar wenigen zusätzlichen Kunstgriffen müsste man doch damit eine MIDI-Datei erstellen können, die bei geeigneter Wahl der Instrumente ein annähernd ähnliches Klangerlebnis erzeugen dürfte....
Würd' mich froien, wenn Ihr ein paar sachdienliche Hinweise für mich hättet!!!
With friendly Greetinx
Jan
Mathematik-Bibliotheken für Purebasic???
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
Noch hat, glaube ich, keiner die FFT in PB umgesetzt.
Für die meisten Spielereien kannst Du aber auch die FFT von fmod nutzen.
Dazu gibt's Beispiele z.B. auf http://fmod.2mal2mal.de
Aber wie Nic schon sagte, mit der FFT wirst Du da nicht weit kommen, gezielt Instrumente 'herauszuhören' ist noch viiiel schwieriger, als Objekte in einem Bild zu finden, da sozusagen jeder Wert, den man auswerten möchte, aus Einflüssen von allen Instrumenten und deren spezifischen Eigenschaften entstanden ist. Bildlich wäre das vielleicht vergleichbar mit mehreren transparent übereinandergelegten Videos.
Aber es gibt noch ein ganz großes Problem:
Die FFT liefert nur relativ wenige Werte, die einem was bringen, z.B.
512 Werte linear über das Frequenzspektrum verteilt, wenn man in 1024 Samples-Blöcken die FFT errechnet, also etwa 43 pro Sekunde bei 44100 Hz Abtastrate. Das sind extrem wenig Daten, um daraus Muster zu erkennen. (Wäre ja ~ wie ein 20x25-Pixel-Bild) Möchte man aber die FFT im Frequenzbereich verfeinern, muss man dafür mehr Samplewerte in die Rechnung einbeziehen. Wenn man also z.B. 10000 Frequenzlautstärken erhalten möchte, kann man dies bei 44100 Hz nur für den Zeitraum von etwa 1/4 Sekunde tun, was natürlich die Informationen noch mehr
'verwischiwäscht', da sie nur die Mittelwerte der 4tel-Sekunde wiederspiegeln. Und selbst 10000 Frequenzlautstärken wären nicht viel, da sie linear verteilt sind, und damit in den tieferen Mitten und Tiefen die Auflösung immer schlechter wird.
Es ist somit wahrscheinlich sogar nahezu ausgeschlossen, mit der FFT etwas ähnliches anfangen zu wollen, solange die Abtastrate nicht wesentlich erhöht ist. Aber da derzeit das 'Comsumer'-Maximum bei 96kHz liegt, wird das schwer in die Praxis umzusetzen zu sein.
Aber ich will dir nicht den Weg verbauen, denn der ist ja oft allein schon das Ziel...
Ansonsten:
Eine 'simple' Tempo-erkennung ist schon eine recht nette Herausforderung, welche sich mit der FFT sogar relativ gut meistern läßt.
Für die meisten Spielereien kannst Du aber auch die FFT von fmod nutzen.
Dazu gibt's Beispiele z.B. auf http://fmod.2mal2mal.de
Aber wie Nic schon sagte, mit der FFT wirst Du da nicht weit kommen, gezielt Instrumente 'herauszuhören' ist noch viiiel schwieriger, als Objekte in einem Bild zu finden, da sozusagen jeder Wert, den man auswerten möchte, aus Einflüssen von allen Instrumenten und deren spezifischen Eigenschaften entstanden ist. Bildlich wäre das vielleicht vergleichbar mit mehreren transparent übereinandergelegten Videos.
Aber es gibt noch ein ganz großes Problem:
Die FFT liefert nur relativ wenige Werte, die einem was bringen, z.B.
512 Werte linear über das Frequenzspektrum verteilt, wenn man in 1024 Samples-Blöcken die FFT errechnet, also etwa 43 pro Sekunde bei 44100 Hz Abtastrate. Das sind extrem wenig Daten, um daraus Muster zu erkennen. (Wäre ja ~ wie ein 20x25-Pixel-Bild) Möchte man aber die FFT im Frequenzbereich verfeinern, muss man dafür mehr Samplewerte in die Rechnung einbeziehen. Wenn man also z.B. 10000 Frequenzlautstärken erhalten möchte, kann man dies bei 44100 Hz nur für den Zeitraum von etwa 1/4 Sekunde tun, was natürlich die Informationen noch mehr
'verwischiwäscht', da sie nur die Mittelwerte der 4tel-Sekunde wiederspiegeln. Und selbst 10000 Frequenzlautstärken wären nicht viel, da sie linear verteilt sind, und damit in den tieferen Mitten und Tiefen die Auflösung immer schlechter wird.
Es ist somit wahrscheinlich sogar nahezu ausgeschlossen, mit der FFT etwas ähnliches anfangen zu wollen, solange die Abtastrate nicht wesentlich erhöht ist. Aber da derzeit das 'Comsumer'-Maximum bei 96kHz liegt, wird das schwer in die Praxis umzusetzen zu sein.
Aber ich will dir nicht den Weg verbauen, denn der ist ja oft allein schon das Ziel...

Ansonsten:
Eine 'simple' Tempo-erkennung ist schon eine recht nette Herausforderung, welche sich mit der FFT sogar relativ gut meistern läßt.
!UD2