GrimCvlt #11 Beitrag melden Geschrieben 2. Januar 2013 Geehrte Tech-ASBler, für ein sehr wichtiges Projekt entwickle ich gerade einen Flash Musik Player der selbstgeschriebene Lieder wiedergibt. Der Player besitzt verschiedene Spuren die die Instrumente wiedergeben(Vocals, Gitarre, etc). D.h. wenn ich jetzt die Vocals-Spur anwähle soll nur diese starten. Wenn ich dazu dann noch die Gitarren-Spur aktiviere höre ich also nur Vocals+Gitarre. Das mach ich solange bis ich z.B. das ganze Lied, also alle Spuren, höre. Gleichzeitig soll aber auch die Möglichkeit gegeben sein, dass man eine Spur wieder "abdreht". Soviel mal zu den Rahmenbedingungen. Meine theoretische Lösung wäre das ganze mit Hilfe der Lautstärkenkontrolle(Soundtransform) über die Soundchannel zu regeln. D.h ich starte eine Spur und alle anderen Spuren laufen einstweilen im Hintergrund ohne Ton mit. Wenn ich dann auf eine andere Spur klicke wird die Lautstärke einfach von 0 auf 1 gestellt. Funktioniert natürlich auch umgekehrt. Meine bisherige praktische Programmierlösung beschränkt sich auf zwei Spuren, die mit Hilfe von Toggles abspielbar sind. Problem hier ist dass wenn eine Spur läuft, die zweite erst von Beginn startet und nicht schon mitläuft und einfach nur laut geschalten wird. Ich weiß dass das an den Toggles liegt weil die durcheinander kommen. Weiß aber auch andererseits nicht wie ich das anders lösen kann. Leider bin ich ein ziemlicher Programmier-Noob und mir fallen keine anderen Lösungen ein bzw. vl. gibts Funktionen dich nicht kenne. Ich hoffe jemand kann mir helfen. Wäre wirklich sehr wichtig! Hier noch mein bisheriger Code package { import flash.net.URLRequest; import flash.display.*; import flash.media.Sound; import flash.events.MouseEvent import flash.media.*; import flash.media.SoundMixer; import fl.controls.*; public class sound extends MovieClip{ public function sound() { var fullTrack:Sound = new Sound(); var fullTrackChannel:SoundChannel = new SoundChannel(); var fullTrackTransform = new SoundTransform(); fullTrackChannel.soundTransform = fullTrackTransform; fullTrack.load(new URLRequest("songsample.mp3")); var vocals:Sound = new Sound(); var vocalsChannel:SoundChannel = new SoundChannel(); var vocalsTransform = new SoundTransform(); vocalsChannel.soundTransform = vocalsTransform; vocals.load(new URLRequest("DantesInferno2011.mp3")); var guitar:Sound = new Sound(); var guitarChannel:SoundChannel = new SoundChannel(); var guitarTransform = new SoundTransform(); guitarChannel.soundTransform = guitarTransform; guitar.load(new URLRequest("main1_1.mp3")); var bass:Sound = new Sound(); var bassChannel:SoundChannel = new SoundChannel(); var bassTransform = new SoundTransform(); bassChannel.soundTransform = guitarTransform; bass.load(new URLRequest("main1_2.mp3")); var drums:Sound = new Sound(); var drumsChannel:SoundChannel = new SoundChannel(); var drumsTransform = new SoundTransform(); drumsChannel.soundTransform = guitarTransform; drums.load(new URLRequest("Tonspur.mp3")); full_mc.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent) { full_mc.toggle = true; if(full_mc.toggle == true) { //alle Spuren spielen } }) voc_mc.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent) { voc_mc.toggle = true; if(voc_mc.toggle == true) { vocalsChannel = vocals.play(); guitarTransform.volume = 0; guitarChannel = guitar.play(0,0,guitarTransform); } if( (voc_mc.toggle == true) && (git_mc.toggle == true)) { guitarTransform.volume = 1; } }) git_mc.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent) { git_mc.toggle = true; if(git_mc.toggle == true) { guitarChannel = guitar.play(); vocalsTransform.volume = 0; vocalsChannel = vocals.play(0,0,vocalsTransform); } if( (voc_mc.toggle == true) && (git_mc.toggle == true)) { vocalsTransform.volume = 1; } }) stop_mc.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent) { fullTrackChannel.stop(); vocalsChannel.stop(); guitarChannel.stop(); }) } } } 0 Zitieren Diesen Beitrag teilen Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.