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. :wink: 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 :wink:

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... :cry:

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?