Sound Volume lässt sich nicht reduzieren

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sound Volume lässt sich nicht reduzieren

    Hallöchen zusammen,

    inzwischen gab's wohl ca. 1000 ähnliche Probleme, aber nach gut 1 Stunden Forensuche hab' ich nun doch noch keine Lösung zu meinem Problem gefunden und frage deswegen jetzt mal so:

    Ich möchte in meinem Spiel zwei verschiedene Hintergrundmusiken abspielen - abhängig davon, in welchem Raum ich gerade bin. Damit aber die Musik nicht jedes Mal neu anfängt (weil es durchaus möglich ist, dass man oft zwischen den Räumen hin- und herwechselt), möchte immer dass zwar beide immer durchgespielt werden, aber eine eben bei 100% Lautstärke, die Andere bei 0%. Das Ganze entscheidet sich dann in einem persistenten Objekt:

    Create:

    Quellcode

    1. sound_loop(s_a);
    2. sound_loop(s_c);
    3. sound_volume(s_a, 1);
    4. sound_volume(s_c, 0);


    Step:

    Quellcode

    1. if(room==rm_1_c || room==rm_2_c){
    2. sound_fade(s_a, 0, 1500);
    3. sound_fade(s_c, 1, 1500);
    4. }else{
    5. sound_fade(s_a, 1, 1500);
    6. sound_fade(s_c, 0, 1500);
    7. }
    8. //auch schon einfach mit sound_volume probiert, hat aber auch nix gebracht


    Allerdings wird keiner der Lautstärken jemals auf 0 gesetzt. Weder nach Initialisierung noch nach einem Raumwechsel in oder aus den Räumen, bei denen dieser Wechsel von statten gehen sollte, so dass immer beide Musiken (also gleichzeitig) bei voller Lautstärke zu hören sind.
    Ich verwende .wav-Dateien und die Sounds sind beide als "Normal Sound" angegeben, also keine Background-Sounds o.Ä., trotzdem der Fehler.

    Kann mir jd. erklären, warum?


    Grüße und Dank im Vorab,

    Karrzun
    ./.
  • ich würde es so machen:
    create:

    GML-Quellcode

    1. vol=1 //lautstärke einstellen


    step:

    GML-Quellcode

    1. vol=1 //lautstärke einstellen
    2. if room=rm_1_c //wenn room gleich rm_1_c ist
    3. sound=s_a //variable sound auf den Sound s_a setzen
    4. if room=rm_2_c
    5. sound=s_c
    6. if !sound_isplaying(sound) //wenn der Sound NICHT abgespielt wird
    7. sound_play(sound) //spiele ihn ab
    8. sound_volume(sound,vol) //Lautstärke über der variable vol regulieren
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Das führt leider auch nicht ganz zum gewünschten Ergebnis. ;) Es gibt nach wie vor 2 Probleme:

    a) So wird zwar zu Beginn des Spiels nur ein Lied gespielt, sobald ich allerdings in einen Raum wechsle, wo das andere Lied gespielt werden soll, werden wieder beide abgespielt, weil das 1. Lied ja nicht gestoppt wird. Das an sich wäre ja kein all zu großes Problem, wenn da nicht meine eigentliche Intention wäre, beschrieben in b). ;)
    b) Selbst wenn ich das eine Lied stoppen lasse, wenn ich den Raum wechsle, habe ich dann wieder das Problem, dass jedes Mal, wenn ich den Raum neu betrete, das Lied von Neuem anfängt, was ich ja eigtl verhindern wollte. Ich wollte ja ursprünglich, dass das Lied mit Lautstärke 0 im Hintergrund weiterläuft und beim Raumwechsel wieder lautergedreht wird, damit man nicht immer nur den Anfang hört.

    Gibt Dein Code es her, dass man ihn so modifiziert? Ich habe gerade schon wieder ien wenig rumprobiert, habe aber keine Möglichkeit gefunden.

    Auf jeden Fall schon mal danke für den Versuch. ^^


    PS: Ich nutze GM 8.1 Lite, falls von Interesse.
    ./.
  • eigentlich schon nur das der andere nicht gestoppt wird fällt mir gerade ein
    dann mach anstatt:

    GML-Quellcode

    1. if !sound_isplaying(sound) //wenn der Sound NICHT abgespielt wird
    2. sound_play(sound)

    das:

    GML-Quellcode

    1. if !sound_isplaying(sound) //wenn der Sound NICHT abgespielt wird
    2. {
    3. sound_stop(all)
    4. sound_play(sound)
    5. }


    ich glaube das müsste so gehen
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Naja, wie im Eröffnungspost bereits erwähnt...

    Karrzun schrieb:

    Ich möchte in meinem Spiel zwei verschiedene Hintergrundmusiken abspielen - abhängig davon, in welchem Raum ich gerade bin. Damit aber die Musik nicht jedes Mal neu anfängt (weil es durchaus möglich ist, dass man oft zwischen den Räumen hin- und herwechselt), möchte immer dass zwar beide immer durchgespielt werden, aber eine eben bei 100% Lautstärke, die Andere bei 0%.


    ...möchte ich, dass die Musik nicht immer neu staret, damit man nicht immer nur den Anfang zu hören bekommt, sondern durchläuft und immer nur das Volume geändert wird. Ich hatte lediglich das Problem, dass ich bei keinem der beiden Melodien das Volume auf 0 setzen konnte, sondern dass beide immer mit 100% abgespielt worden sind.
    ./.
  • EDIT:
    Spoiler anzeigen
    Karrzun, will ja dass, die Lieder ständig spielen und nur die Lautstärke variiert wenn er sich in einem der beiden Räume befindet.

    hab mit zu lange Zeit gelassen mit der Antwort^^


    Schau dir mal diese DLL an.

    Meistens bieten einem externe DLL die du dann im GMProjekt als Ressourc einbinden kannst (Scripts auch rüberkopieren) mehr Kontrolle über gewisse bereiche :)

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Aku_Ryou schrieb:


    Schau dir mal diese DLL an.

    Laut Profilinfo benutzt er aber die Lite-Version. DLLs werden da leider nicht unterstützt.

    Mit den eingebauten Funktionen geht das in GM 8.1 meines Wissens nach nicht umzusetzen,
    schon allein deswegen, weil man nicht zwei Background-Sounds gleichzeitig abspielen kann.
    Wenn du .wav-Dateien verwendest und als normalen Sound hinzufügst, dürfte es gehen, hat nur den immensen Nachteil,
    dass die Sounddateien dann riesig sind.