2016-03-21 7 views
1

Ich mache ein Spiel basierend auf einfache Song-Erstellung, und ich habe vor, eine Funktion, wo die Spieler können die Lieder hören, die sie mit dem erstellt haben Spiel. Der Rhythmus der Melodie wird mit einem Timer-System gesteuert, aber dies funktioniert nicht für die Preset-Track-Presets, die ich implementieren möchte, da jede MP3-Datei in den Backing-Tracks einen Takt statt einer Note darstellt.dynamisch ändern die Wiedergabegeschwindigkeit eines Sounds in as3 ohne Tonhöhe zu ändern

während es möglich wäre, mein Timer-System zum Abspielen der Backing-Tracks zu verwenden, würde dies mehrere Audiodateien erfordern, viel mehr Codierung und würde das Projekt weit hinter den Zeitplan schieben. Daher muss ich die Wiedergabegeschwindigkeiten der Dateien, die ich bereits habe, manipulieren. Ich habe zwei Beispiele gesehen, wie man das macht, hier: http://2008.kelvinluck.com/2008/11/first-steps-with-flash-10-audio-programming/ und hier: http://blog.andre-michelle.com/2009/pitch-mp3/

Das Problem mit diesen beiden ist, dass sie auch die Tonhöhe ändern. Das ist ein Problem für mich, da ich es sehr gerne hätte, wenn die Spieler die Tonhöhe und das Tempo ihrer Songs getrennt ändern könnten. Ich denke, dass der Code, den ich brauche, den obigen Beispielen ähnlich ist, aber ich habe Schwierigkeiten, diese zu verstehen, da ich nicht viel Erfahrung mit Bytearrays und so hatte. Ich würde gerne die Beispiele verstehen, die ich eingefügt habe, damit ich herausfinden kann, was ich tun muss, damit mein Spiel so funktioniert, wie es sollte, aber Hilfe jeglicher Art wird geschätzt. danke =)

+0

Ihr Projekt mit zu beginnen zum Scheitern verurteilt ist als Flash-Technologie das Schlimmste auf dem Markt für jeden ist Sound bezogene oder Sound Edition bezogene App aufgrund seiner sehr hohen Latenz in Sound-Wiedergabe. Die einzige Möglichkeit, die Wiedergabegeschwindigkeit zu ändern, besteht darin, die Rohdaten eines Sounds zu extrahieren und seine Geschwindigkeit innerhalb des SOUND_DATA-Ereignisses zu ändern. In diesem Fall kann die Latenz leicht über 1000 ms hinausgehen, während die klassische MP3-Wiedergabe von 50 ms bis 500 ms reichen kann. Das erforderliche Höchstmaß für den Industriestandard liegt bei 30 ms, die Flash-Technologie kann diese Zahl nicht erreichen. – BotMaster

+0

bitte ich muss dies für eine Aufgabe zu tun bekommen + es ist nur ein Prototyp, so muss es nicht Industriestandard sein – remi

Antwort

0

Sie könnten auch versuchen:

http://iq12.com/old_blog/2009/08/25/real-time-pitch-shifting/

Test: Online demo

Ihre Online-Demo hat keinen Track für mich geladen (gelöschte MP3?), Also habe ich eine neu kompilierte SWF-Datei zum Testen auf meinen Server gestellt. Es lädt , wenn Sie Ergebnisse mit Originalton vergleichen möchten.

Es zielt darauf ab, Audio-Länge (Zeitskala) zu erhalten, während Anpassung Tonhöhe (tiefer, wenn langsam oder höher, wenn schneller). Sie könnten dies mit Kelvin Luck Second Steps... kombinieren. Dadurch haben Sie Beispielcodes für Geschwindigkeit und Tonhöhe.

Es wird von einigen C# Code aus diesem Ccode an (mit Konzept Erklärung) portiert inspiriert wurde gefunden:
http://blogs.zynaptiq.com/bernsee/pitch-shifting-using-the-ft/

Verwandte Themen