Seite 1 von 1

MP3 rückwärts abspielen

Verfasst: 23.03.2018 19:38
von Then
Hallo, gibt es eine Möglichkeit ein MP3 File rückwärts abzuspielen ? Ich weiß, es gibt Programme dafür, aber ich suche eine Möglichkeit, das zu programmieren.

Mit MCIsendString_(... oder so ? Hat das schonmal jemand gemacht ??

Re: MP3 rückwärts abspielen

Verfasst: 23.03.2018 20:17
von ccode_new
Hallo "Then"

ich kann nur das hier empfehlen.

http://sox.sourceforge.net/
http://sox.sourceforge.net/sox.html

Bsp: sox xxx.wav new_xx.wav reverse

Vielleicht bastele ich auch noch ein PB-Beispiel dazu.

Re: MP3 rückwärts abspielen

Verfasst: 23.03.2018 21:00
von Then
Danke, leider ist das nur für wav. :(

Re: MP3 rückwärts abspielen

Verfasst: 23.03.2018 21:36
von ccode_new
Nein es funktionieren auch mp3-Dateien, oder ogg, oder flac, ...

Hier ein Windows-Beispiel (new_update):

https://workupload.com/file/PBh6xbK

Viel Spaß beim Testen.

Re: MP3 rückwärts abspielen

Verfasst: 27.03.2018 18:14
von udg
Leider ist das auch wieder mitschleppen von dritt Programmen. Schade das so etwas nicht mit eigenen nativen Code geht.

hier wird PB ja als eine Art Batch missbraucht :D

Runprogram ....


:lurk:

Re: MP3 rückwärts abspielen

Verfasst: 27.03.2018 18:30
von ccode_new
Man könnte sicherlich auch mit etwas Basteln die libsox direkt mit den internen Funktionen nutzen.

bass_fx.dll wäre z.B. auch noch eine Alternative.

Ansonsten hast du schon recht.

Wenn man sehr viel Zeit und Gehirnschmalz investiert könnte man vielleicht auch Purebasic-Intern eine Lösung programmieren.

Mp3 - Dateien kann man sowieso nicht in Echtzeit reversen.
(Weder mit sox noch anders. Die Mp3-Struktur macht da Probleme.)

Aber wenn man hier vorher "Speichermagic" betreibt könnte man da sicherlich auch eine Lösung finden.

Re: MP3 rückwärts abspielen

Verfasst: 07.07.2018 21:51
von DarkSoul
Leider ist das auch wieder mitschleppen von dritt Programmen. Schade das so etwas nicht mit eigenen nativen Code geht.
Das hat einen Grund: Don't reinvent the square wheel! :)

Entweder du bastelst dir einen MP3-Dekoder (die MP3-Patente sind ja zum Glück ausgelaufen), was zeitaufwändig und fehleranfällig ist. Du musst dich intensiv mit dem Aufbau einer MP3-Datei befassen, musst mit fehlerhaften MP3-Daten umgehen können usw.
Oder du verwendest eine bereits vorhandene, gut gepflegte und getestete Lib dafür, die du nur einbinden musst und die Funktionen dann sofort verwenden kannst.

Mögliche Vorgehendweise:
1. MP3 in einen Buffer dekodieren
2. Samplereihenfolge umkehren (das geht wiederrum mit Peek() und Poke())
3. WAV-Header mit passenden Werten vorschnallen und das ganze wiedergeben (geht auch mit PB-eigenen Funktionen)

Oder besser noch, das ganze als Stream: Die letzten paar MP3-Frames dekodieren, umkehren und wiedergeben. Während die Wiedergabe läuft, die nächsten Frames dekodieren usw. Also sozusagen rückwärts durchseeken und dekoden.

Dann muss nicht erst das ganze Stück in RAM geladen werden und die Rechenzeit zwischen "Musikstück soll rückwärts gespielt werden" und Wiedergabe beginnt wird drastisch verkürzt.

Welchen Zweck soll das eigentlich haben, eine MP3 rückwärts abzuspielen? MP3 ist eine psychoakustische Kompression, die sich Unzulänglichkeiten vom Gehör zunutze macht. Darunter auch, dass man einen leisen Ton nach einem lauten Ton nur bedingt wahrnimmt, da er sozusagen "im Schatten" des lauten Tons steht. Da steht zu vermuten, dass der MP3-Encoder den leisen Ton teilweise oder gänzlich ausgefiltert hat, um die vorgegebene Bitrate einhalten zu können. Das funktioniert beim Rückwärtsabspielen dann nicht mehr richtig, weil dieser Effekt hörbar werden würde, wenn der leise Ton durch die Umkehrung zuerst kommt. :wink:

PS: Die PB-Funktionen kommen auch aus Libs. Mit dem einzigen Unterschied, dass sie schon fertig eingebunden sind. Eine zusätzliche Lib vom Dritthersteller erweitert quasi den Funktionsumfang von PB.

Re: MP3 rückwärts abspielen

Verfasst: 05.10.2018 17:16
von diceman
DarkSoul hat geschrieben:Welchen Zweck soll das eigentlich haben, eine MP3 rückwärts abzuspielen?
Vielleicht will er ein älteres Wesen oder einen Dämon beschwören ... /:->