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:
#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