Autor Beitrag
fastsnake
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 19.06.09 10:35 
Hallo,

ich versuche verzweifelt mit Hilfe der NewAC Komponenten die Samplerate eines Waves zu konvertieren.
(Source Mono, 16 bit, 8 kHz zu etwas anderes z.B.: 2048 Hz oder 16 kHz)
Bei Start der Konvertierung (Funktion src_process) kommt aus der dll "libsamplerate.dll" der Fehler 6 -> "SRC ratio outside [1/12,12] range".
Das Beispiel (WaveFileConverter) aus den NewAC Komponenten bring den gleichen Fehler.
Wenn ich die docs der "libsamplerate" richtig verstehe, kann ich alles konvertieren im Bereich bis zu 1/256 bzw 256 fach der Ausgangssamplerate.

Kann jemand helfen oder was mach ich falsch?

Vielen Dank.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1340
Erhaltene Danke: 120

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 19.06.09 13:10 
Hi und :welcome: in der EE!

Wenn das Beispielprogramm den gleichen Fehler bringt ist es eher die Frage ob es nicht an der Datei liegt. Probier es mal mit einer anderen Datei. zb Stereo, 16Bit 44KHz zu 22KHz.
Nebenbei, meinst du das mit 2048 Hz wirklich so? Wenn ich mich nicht irre, hört man dann aber nicht mehr viel.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
fastsnake Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 19.06.09 13:45 
Danke erst mal,

ich hab es mit dem Windows "Tada" Sound probiert von 22kHz zu 44kHz, gleiches Problem.

Die Vermutung liegt nahe, das etwas mit der libsamplerate.dll nicht stimmt (stammt von der Seite wo auch die Komponenten her sind) oder die Übergabewerte nicht richtig sind.

Ich hab mich durch den Quelltext der NewAC Komponenten gewühlt und den Übergaberecord gefunden und noch ein packed rein gemacht, hilft leider aber auch nicht.
In den Quellen (kann es leider "noch" nicht übersetzen) der libsamplerate.dll ist der Record (SRC_DATA) auch so definiert.
Dort wo der Fehler aus der dll kommt wird einfach nur getestet ob der Wert src_ratio aus dem Record in einen Bereich liegt, selbst wenn ich den (richtigen) Wert von Hand im Delphi in den Record schreibe kommt der Fehler.

Die 2048 Hz stimmen schon so, es soll nur niederfrequent schwingen, Wave kann ja leider nur bis min 8kHz speichern darum das Resampeln.

Falls jemand eine aktuelle libsamplerate.dll hat wäre ich dankbar, ich werd aber mal versuchen, ob ich es auch alleine schaffe diese zu übersetzen.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1340
Erhaltene Danke: 120

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 19.06.09 13:58 
Wenn du die Quelltexte dazu hast, kannst du ja auch mal versuchen ohne die Dll auszukommen und es direkt einbinden.
Ansonsten könnten auch noch Mod-Tracker bzw. Player helfen. Die haben grundsätzlich einen Sampler integriert um bei Samples die Tonhöhe ändern zu können. Vieleicht lässt sich da was rauskopieren.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
fastsnake Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 19.06.09 14:38 
Den Quelltext der dll kann ich leider nicht in mein Delphi Programm einbinden, da dieser in C vorliegt. Ich werd mal die dll direkt aufrufen ohne die Komponente.
Das Übersetzen der dll macht auch schon Fortschritte, es fehlt nicht mehr so viel...