Skocz do zawartości
Ice Cube

Odtwarzanie muzyki z katalogu

Rekomendowane odpowiedzi

Hej

 

Chciabym odtwarzać dźwieki z katalogu "muza" dołączonego do gry ( będzie tam bardzo dużo dźwięków/głosów i nie mieszczą mi sie one jak pakuje je do gry w sound).

Ponizej przykładowy kod, który myślałem, że zadziała:

 

i=show_message_ext (" Graj ","kruk","muzyka2","muzyka3")

if i =1 {if file_exists(muza/kruk.wav) sound_play(muza/kruk.wav)}
if i=2 {if file_exists(muza/muzyka2.wav) sound_play(muza/muzyka2.wav)}
if i=3 {if file_exists(muza/muzyka3.wav) sound_play(muza/muzyka3.wav)}

show_message("koniec")
game_end()

 

macie jakieś pomysły ?

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

sound_play działa tylko na referencje zasobu a nie na plik :) Więc albo dodasz sobie pliki przez sound_add i potem je odtworzysz albo zrobisz odtwarzanie z dysku jakąś dllką :) 

  • Super (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
21 minut temu, adam014 napisał:

sound_play działa tylko na referencje zasobu a nie na plik :) Więc albo dodasz sobie pliki przez sound_add i potem je odtworzysz albo zrobisz odtwarzanie z dysku jakąś dllką :) 

 

 

i=show_message_ext (" Graj ","kruk","muzyka2","muzyka3")

if i =1 {m=sound_add(muzyka/kruk.wav,0,0) sound_play(m)}

 

unknown variable !

 

nie wiem jak to rozgryźć :(

-------------------------------

 

 

Masz dostęp do jakichś extensions odtwarzaczy plików muzycznych ?

ale na gm.8 :D 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Godzinę temu, adam014 napisał:

Ja używałem Castera od TeeGee. http://moacube.com/resources/caster-multi-platform-ogg-extension-for-gamemaker/

Jak ładujesz pliki z folderu z grą to używaj working_directory :)

 

if i =1 {m=sound_add(working_directory+"\kruk.wav",0,0) sound_play(m)}

 działa ! :)

--------

sprawdze jeszcze później tego castera

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie wiem jaka jest idea ładowania plików, ale ja bym je dodał przed załadowaniem gry w pierwszym roomie i potem się odwoływał do jakiejś zmiennej globalnej, bo w takim ifie to będzie za każdym razem wczytywany pliczek. Jak chcesz w locie to lepiej dllką, GM ładuje cały plik do pamięci i będziesz miał freeza zanim wczyta, a tak odtwarzanie będzie asynchroniczne ;) 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
10 minut temu, adam014 napisał:

Nie wiem jaka jest idea ładowania plików, ale ja bym je dodał przed załadowaniem gry w pierwszym roomie i potem się odwoływał do jakiejś zmiennej globalnej, bo w takim ifie to będzie za każdym razem wczytywany pliczek. Jak chcesz w locie to lepiej dllką, GM ładuje cały plik do pamięci i będziesz miał freeza zanim wczyta, a tak odtwarzanie będzie asynchroniczne ;) 

Stworzyłem małego rpg-a ,ala Gothic :P są w nim postacie , mają sporo do powiedzenia więc  będą przemawiać XD,

dlatego potrzeba ładowania plików. Pozostanie chyba if ze względu na ilość plików , a będą to w miare krótkie zdania :) 

  • Wow! (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie piszesz nic o usuwaniu po pobraniu dźwięków, więc zakładam, że tego nie robisz, więc załadowanie wszystkich plików w projekcie gry na start dałoby ten sam efekt. Co więcej, tak mi coś wygląda, że w ten sposób który tutaj pokazałeś, niektóre dźwięki załadujesz ponownie pod nowym ID i będą zamulać niepotrzebnie RAM :) pamiętaj o zwalnianiu zasobów.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
5 godzin temu, gnysek napisał:

Nie piszesz nic o usuwaniu po pobraniu dźwięków, więc zakładam, że tego nie robisz, więc załadowanie wszystkich plików w projekcie gry na start dałoby ten sam efekt. Co więcej, tak mi coś wygląda, że w ten sposób który tutaj pokazałeś, niektóre dźwięki załadujesz ponownie pod nowym ID i będą zamulać niepotrzebnie RAM :) pamiętaj o zwalnianiu zasobów.

jak to zwalniać ?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

sound_delete po odtworzeniu :)

  • Super (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Dnia 15.03.2021 o 16:49, gnysek napisał:

sound_delete po odtworzeniu :)

 

Pojawił sie pewien problem z sound_delete ,poniewaz nie odtwarza niektórych dżwieków.

przykladowy kod:

 

wiadomosc=choose(0,1,2,3,4,5,6,7,8,9)
if wiadomosc=0 { m=sound_add(working_directory+"\gra\1.wav",0,0) sound_play(m) show_message("1")
sound_stop(m) sound_delete(m)}
if wiadomosc=1 { m=sound_add(working_directory+"\gra\2.wav",0,0) sound_play(m)show_message("2")
sound_stop(m) sound_delete(m)}

itd..

 

czasem nie odtwarza w ogóle dzwięku 7 i 5, w podobnych kodach tez niektóre dzwieki nie są odtwarzane

a niektóre dłuższe pod koniec odtwarzania lekko sie przytną..

 

Gdy sound_delete zamieniłem na sound_discard problem jakby wstępnie zniknął

z czego bierze się ten błąd ?

 

czy sound_delete() potrzebuje jakiegos czasu by opróżnić pamięć?

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A co ma kasowanie do odtwarzania? Jak się nie odtwarzają, to może nie są prawdziwymi wav.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
24 minuty temu, gnysek napisał:

A co ma kasowanie do odtwarzania? Jak się nie odtwarzają, to może nie są prawdziwymi wav.

Właśnie w tym problem, ze dzwięki to prawdziwe wavy.

Odkąd zacząłem stosować odtwarzanie dzwięków z zastosowaniem sound_add(),które po odtworzeniu są gumowane sound_delete()

niektóre nie grają.. i to jest jakby losowo, gdy podopisuje coś w kodzie... 

Zastanawiałem się, czy komputer nie potrzebuje więcej czasu na wyczyszczenie dzwieku z ramu jakąs komendą typu (nic nie rób przez jeden takt)

ewentualnie czy moja karta muzyczna nie wyrabia..

  

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jest jakaś taka funkcja sound_is_playing albo podobna i sprawdź z jej pomocą czy się załączył.

Popatrz też na audio_create_stream to chyba obecnie lepsza funkcja. Jak siądę do PC spróbuję popatrzeć na problem, z telefonu ciężko.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×