PlaySound und 48000 Hz -> Zu langsam
Verfasst: 02.02.2018 14:59
Wir bringe ich PureBasic dazu, dass eine Audiodatei in der korrekten Geschwindigkeit abgespielt wird, dessen Samplerate nicht mit der der Soundkarteneinstellung unter Linux übereinstimmt?
Ich habe folgendes Code-Schnipsel:
Infos zur audio.wav:
- 16-bit signed integer
- PCM
- 48000 Hz
- Stereo
Meine Soundkarte ist systemweit (PulseAudio) auf 44100 Hz eingestellt (hat andere Gründe und es gibt sicher mehrere User, die diese Einstellung verändert haben).
Nun wird meine audio.wav in der Linux-Version meines Programmes zu langsam abgespielt (nämlich als 44100 Hz). Da fehlt das Resampling von 48000 Hz auf 44100 Hz, damit es passt. Stattdessen wird langgezogen.
In allen anderen Playern wird die Datei korrekt abgespielt und unter Windows habe ich das Problem auch nicht.
Was muss ich tun, damit die Geschwindigkeit stimmt? Ich vermute mal, es gibt nicht ohne Grund SetSoundFrequency().
Damit die Samplerate nachträglich auf 48000 Hz setzen, bewirkt gar nichts.
Ist hier mit "SoundFrequency" überhaupt die Sample-Rate gemeint (ich finde die Doku an dieser Stelle zu ungenau und Soundfrequenz ist auch nicht Sample-Rate)? Weil, wenn ich den Wert verringere, läuft es um einen gewissen (mir unbekannten) Faktor schneller statt langsamer und diese Einstellung ist nur in groben Stufen möglich.
GetSoundFrequency() liefert in meinem Fall -17536 (negativ
Sollte dann eigentlich rückwärts laufen
).
Ich habe folgendes Code-Schnipsel:
Code: Alles auswählen
initSound()
LoadSound(0, "audio.wav")
PlaySound(0)
Debug GetSoundFrequency(0)
Delay(5000)
- 16-bit signed integer
- PCM
- 48000 Hz
- Stereo
Meine Soundkarte ist systemweit (PulseAudio) auf 44100 Hz eingestellt (hat andere Gründe und es gibt sicher mehrere User, die diese Einstellung verändert haben).
Nun wird meine audio.wav in der Linux-Version meines Programmes zu langsam abgespielt (nämlich als 44100 Hz). Da fehlt das Resampling von 48000 Hz auf 44100 Hz, damit es passt. Stattdessen wird langgezogen.
In allen anderen Playern wird die Datei korrekt abgespielt und unter Windows habe ich das Problem auch nicht.
Was muss ich tun, damit die Geschwindigkeit stimmt? Ich vermute mal, es gibt nicht ohne Grund SetSoundFrequency().
Damit die Samplerate nachträglich auf 48000 Hz setzen, bewirkt gar nichts.
Ist hier mit "SoundFrequency" überhaupt die Sample-Rate gemeint (ich finde die Doku an dieser Stelle zu ungenau und Soundfrequenz ist auch nicht Sample-Rate)? Weil, wenn ich den Wert verringere, läuft es um einen gewissen (mir unbekannten) Faktor schneller statt langsamer und diese Einstellung ist nur in groben Stufen möglich.
GetSoundFrequency() liefert in meinem Fall -17536 (negativ

