Cruel_boy Opublikowano 7 Listopada 2016 Udostępnij Opublikowano 7 Listopada 2016 loopuje muzyke loop pointem uzywajac funkcji związanych z pozycją dźwięku (ponieważ dalej nie ma na to osobnej funkcji w gm) create: GML musicvar = audio_play_sound(music,9999,0); looppoint=3,090; step: GML musicpos = audio_sound_get_track_position(musicvar); if musicpos >= audio_sound_length(musicvar) { audio_sound_set_track_position(musicvar,looppoint); } muzyka nie loopuje się (loopuje sie gdy wszystkie księżyce, planety i gwiazdy ułożą się w jednej linii), chyba że przy warunku if odejme z dwie klatki od audio_sound_length, wtedy jest większa szansa na to że warunek zajdzie, jednak loop najczęściej wskoczy za wcześnie w takim razie - jak w ten kod wplecić delta_time dla zwiększonej dokładności? (albo może jakoś inaczej to zrobić żeby muzyka loopowała się z jak najmniejszą dziurą) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 7 Listopada 2016 Udostępnij Opublikowano 7 Listopada 2016 Pewnie chodzi o coś innego bo odpowiedź moja jest zbyt oczyswista ale: GML audio_play_sound(index, priority, loop); Przecież ostatnia zmienna odpowiada za loop a Ty ustawiłeś tam na stałe 0 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 7 Listopada 2016 Autor Udostępnij Opublikowano 7 Listopada 2016 Pewnie chodzi o coś innego bo odpowiedź moja jest zbyt oczyswista ale: GML audio_play_sound(index, priority, loop); Przecież ostatnia zmienna odpowiada za loop a Ty ustawiłeś tam na stałe 0 ta zmienna odpowiada za loop od samego początku. gdybym ustawił na 1, muzyka zamiast całkowicie sie zatrzymywać, po prostu rozpoczęła by sie znowu od początku a nie od wyznaczonego przeze mnie loop pointa. edit: wymarzoną funkcją byłoby coś w stylu: GML audio_sound_set_loop_point(index,looppoint) i jej odpowiednik get. działałaby ze zmienną loops i byłoby cacy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 7 Listopada 2016 Udostępnij Opublikowano 7 Listopada 2016 A w jakich okolicznościach to jest używane? Postać się zbliża do źródła muzyki czy coś w tym stylu? Nie dałoby rady wstawić tą 1 przy loop i robić stop-start music? Przykład z manuala GML if !global.SFX { audio_stop_sound(snd_Waterfall); } else { audio_play_sound_at(snd_Waterfall, x, y, 0, 100, 300, 1, true, 1); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 7 Listopada 2016 Autor Udostępnij Opublikowano 7 Listopada 2016 A w jakich okolicznościach to jest używane? Postać się zbliża do źródła muzyki czy coś w tym stylu? Nie dałoby rady wstawić tą 1 przy loop i robić stop-start music? Przykład z manuala GML if !global.SFX { audio_stop_sound(snd_Waterfall); } else { audio_play_sound_at(snd_Waterfall, x, y, 0, 100, 300, 1, true, 1); } hm, chyba sie nie rozumiemy. nie chodzi mi o zadna postac, rowniez nie chodzi mi o odtwarzanie dzwieku w jakiejs pozycji. muzyka jest w osobnym obiekcie kontrolerze, ktory po prostu ma wlaczyc muzyke przy starcie w roomie. po prostu background music. jedyne co chce osiągnąć to aby nie było żadnej luki w loopie lub żeby w ogóle loop zaszedł jeśli chce aby muzyka loopowała się NIE od początku, ale od danego momentu. kod w pierwszym poście działałby gdyby nie sprawdzał co klatke warunku if lecz co mikrosekunde. edit: wczoraj zrobilem maly programik obrazujacy problem i rowniez solucja z ktorej nie jestem do konca zadowolny: https://dl.dropboxusercontent.com/u/2648819...msoundissue.exe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 7 Listopada 2016 Udostępnij Opublikowano 7 Listopada 2016 Jako workaround możesz podzielić plik na 2. Najpierw odtwarzasz ten do którego już nie chcesz wracać i potem włączasz ten który już normalnie w całości się loopuje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 7 Listopada 2016 Autor Udostępnij Opublikowano 7 Listopada 2016 Jako workaround możesz podzielić plik na 2. Najpierw odtwarzasz ten do którego już nie chcesz wracać i potem włączasz ten który już normalnie w całości się loopuje obecnie uzywam tej metody, jest ona nieco lepsza od przedstawionej wcześniej, jednak wymaga tych dwóch plików i dalej opiera się na sprawdzaniu czy powinno przejść do drugiego pliku co klatke a nie częściej, co skutkuje w słyszalnej przerwie między pierwszym a drugim plikiem. nie wspominając ze gra nie zawsze ma idealnie stałe fps Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 7 Listopada 2016 Udostępnij Opublikowano 7 Listopada 2016 Nie wskakuje w odpowiednim momencie bo czas stepu nie pokrywa sie z dokladna milisekunda w ktorej dany kawalek powinien sie zaczac badz skonczyc. Najlepiej zebys wycial loopowane audio do bufera i zrobil audio_queue do ktorego dodajesz zawartosc tego bufera. Niestety nie ma funkcji, albo takowe gdzieś zgubiłem, które pozwoliłyby to zrobić wewnąrz GM'a, wiec jedynym wyjsciem jest trzymanie pliku dzwiekowego jako included file w formacie .wav. Jak bedzie mi sie chcialo dam w edicie lub nastepnej odpowiedzi kod, ale nie obiecuje bo juz mi sie nie chce :v Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cruel_boy Opublikowano 7 Listopada 2016 Autor Udostępnij Opublikowano 7 Listopada 2016 Nie wskakuje w odpowiednim momencie bo czas stepu nie pokrywa sie z dokladna milisekunda w ktorej dany kawalek powinien sie zaczac badz skonczyc. Najlepiej zebys wycial loopowane audio do bufera i zrobil audio_queue do ktorego dodajesz zawartosc tego bufera. Niestety nie ma funkcji, albo takowe gdzieś zgubiłem, które pozwoliłyby to zrobić wewnąrz GM'a, wiec jedynym wyjsciem jest trzymanie pliku dzwiekowego jako included file w formacie .wav. Jak bedzie mi sie chcialo dam w edicie lub nastepnej odpowiedzi kod, ale nie obiecuje bo juz mi sie nie chce :v nie mialem styczności z bufferami i po przeczytaniu w dokumentacji na czym polegają pewnie nadziałbym sobie dużo memory leaków albo innych kłopotów. patrząc na to wszystko denerwuje mnie ze nie ma na to jakiejs prostej funkcji... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się