Seite 2 von 2
Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 13.07.2010 22:31
von Lebostein
Tud mir leid, aber ich suche nach einer einfachen und allgemeinen Lösung. Und wie gesagt, ich brauch für andere Events, die durch die Musik ausgelöst werden sollen, undbedingt eine Funktion wie GetPosition(Sound), die PB im Moment nicht bieten kann.

Ansonsten schließe ich mich deiner Meinung an, möglichst viel mit den Bordmitteln zu erledigen. Ich kann es ja auch nicht leiden, wenn die Leute hier wie wild mit der Windows-API arbeiten und der plattformübergreifende Gedanke von PB flöten geht.
PS: Da fällt mir ein, ich wollte mal eine Sektion für das Forum hier vorschlagen, in der nur echter und plattformübergreifender PB-Code veröffentlicht werden darf.
Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 13.07.2010 22:42
von bobobo
najaaaa .. die getpositionfunktion kannst du aus "meinem" code ableiten. da läuft ein
selbsthäkel-timer mit elapsedmilliseconds() , daraus kannst du an sich die position
ermitteln
Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 13.07.2010 22:46
von Lebostein
Och menno

Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 13.07.2010 22:52
von bobobo
wenn's geht dann geht's eben, aber vermutlich hakt's an was anderem
nochmal Leckerli
Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 14.07.2010 13:25
von bobobo
es lässt mir keine ruhe

hier nochmal "deine"Lösung, korrigiert um eine funktionierende VolumeSteuerung
(sobald channels ins Spiel kommen müssen die auch mit angegeben werden)
Code: Alles auswählen
#Spur_Name = 10
#Spur_Laut = 50
Structure spur
file.s
sound.l
laut.l
channel.l
EndStructure
Global NewList spur.spur()
Procedure CreateSpur(file.s, laut.l)
AddElement(spur())
spur()\file = file
spur()\laut = laut
EndProcedure
CreateSpur("HDL_basslauf.ogg", 100)
CreateSpur("HDL_floete.ogg", 0)
CreateSpur("HDL_schlagwerk.ogg", 0)
CreateSpur("HDL_gitarre1.ogg", 0)
CreateSpur("HDL_gitarre2.ogg", 0)
CreateSpur("HDL_orgel.ogg", 0)
CreateSpur("HDL_lebostein.ogg", 0)
; ------------------------------------------------
InitSound()
UseOGGSoundDecoder()
ForEach spur()
spur()\sound = LoadSound(#PB_Any, spur()\file)
Next
ForEach spur()
spur()\channel=PlaySound(spur()\sound, #PB_Sound_Loop | #PB_Sound_MultiChannel)
SoundVolume(spur()\sound, spur()\laut,spur()\channel)
Next
; ------------------------------------------------
OpenWindow(0, 0, 0, 600, 250, "iMuse", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
ForEach spur()
index = ListIndex(spur())
TextGadget(#Spur_Name + index, 50, 20 + index * 25, 300, 18, "Spur " + Str(index + 1) + ": " + spur()\file)
TrackBarGadget(#Spur_Laut + index, 300, 20 + index * 25, 150, 18, 0, 100): SetGadgetState(#Spur_Laut + index, spur()\laut)
Next
; ------------------------------------------------
Repeat
Event = WaitWindowEvent(20)
ForEach spur()
index = ListIndex(spur())
If Event = #PB_Event_Gadget And EventGadget() = #Spur_Laut + index
Debug #Spur_Laut + index
Debug GetGadgetState(#Spur_Laut + index)
spur()\laut = GetGadgetState(#Spur_Laut + index)
SoundVolume(spur()\sound, spur()\laut,spur()\channel)
EndIf
Next
Until Event = #PB_Event_CloseWindow
lebostein.ogg
Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 14.07.2010 18:08
von Lebostein
Und wie könnte man einen Befehl wie SetSoundPosition() mit PB realisieren? Scheint mir, selbst mit eigenen Timern, nicht möglich zu sein...

Re: FMOD Ex - Mehrere Musikdateien gleichzeitig/synchron spi
Verfasst: 14.07.2010 20:17
von bobobo
wenn ich dich oben richtig verstanden habe, brauchst du das gar nicht. du musst die
entsprechende tonspur zur geeigneten zeit doch nur einblenden, oder vertu ich mich da?