NukeBoards

Pomoc - Dźwięki w CF

Wilkeł - 10-08-2018, 22:08
: Temat postu: Dźwięki w CF
Sprawa jest w sumie prosta - kiedy w Clickteam Fusion robię zdarzenie: "Po wciśnięciu lewego przycisku myszy odtwarza się dźwięk 'sample' oraz głośność dźwięku 'sample' ustawia się na 1", to nie działa ono dokładnie tak, jak powinno. To znaczy przy pierwszym kliknięciu dźwięk się odtwarza z odpowiednią głośnością, ale jeżeli wciśnie się przycisk jeszcze raz, to już nie. W sensie dźwięk się odtwarza, ale z głośnością 100 (chyba 100). O ile taki pojedynczy przypadek dałoby się w miarę łatwo rozwiązać (np. dając counter, który odpowiednio zmieniałby kanały, na których odtwarzałby się dźwięk, a głośność zmieniałaby się dla całych kanałów), to w grze, nad którą pracuję, nie wygląda to już tak przyjemnie.

Dodam, że ustawianie pętli nic nie daje.

Tutaj może mfa, jeżeli ktoś nie wie, o co mi chodzi - w jednym pliku są dwie wersje, wystarczy aktywować i dezaktywować odpowiednie grupy zdarzeń.
http://www.mediafire.com/...%2599k.mfa/file

Szukałem chwilę tematu o tym, ale nie znalazłem. Proszę o pomoc :d
kamiledi15 - 10-08-2018, 22:52
:
Głośność się utrzymuje na 1, po prostu dźwięk się odtwarza cały czas i się nakłada na siebie, dlatego robi się głośniejszy. Nie zauważyłeś, że odtwarza się wielokrotnie w przeciągu ułamków sekund? Wystarczy dodać to co poniżej, żeby odtwarzał się raz, a nie bez przerwy. Głośność można łatwo sprawdzić, ustawiając, żeby licznik pokazywał aktualną głośność dźwięku.
Poza tym zdarzenie, które zrobiłeś, to nie jest, tak jak napisałeś: "Po wciśnięciu lewego przycisku myszy" - tylko "POWTARZAJ, gdy przycisk jest wciśnięty". Zmień lepiej to na to pierwsze, ale i tak musisz zostawić ten mój dopisek, bo jak się wciska LPM cały czas, to wtedy faktycznie z jakiegoś powodu głośność zaczyna skakać. Oczywiście wtedy dźwięk będzie grany tylko, gdy poprzedni się skończy. Dlatego jeśli chcesz, żeby dźwięk się odtwarzał po LPM jeszcze gdy poprzedni dźwięk trwa, no to lepiej byłoby zmienić głośność tego dźwięku na stałe w osobnym programie. Widocznie niestety gdy dźwięk się nakłada nawet raz, to program gubi zmianę głośności. Musi to być jakaś wada programu.
Ja w swojej grze mam głośność sampli przypisaną do paska głośności i nie zauważyłem czegoś takiego, ale to właśnie dlatego, że dźwięki nie nakładają się na siebie. Miałem za to problem z utrzymywaniem częstotliwości dźwięków - przy etapach dziejących się w zaprogramowanym slow motion dźwięki, które miały się odgrywać wolniej, czasami nie wiedzieć czemu odtwarzały się z normalną prędkością, a czasami dobrze. Co zrobiłem? Zmieniłem im częstotliwość na stałe w Audacity :P
jarlfenrir - 11-08-2018, 16:27
:
Być może kiedy odtwarzasz kilka razy ten sam dźwięk i ustawiasz mu głośność, to program nie wie, której instancji tego dźwięku ma zmienić głośność, więc bierze pierwszą z brzegu, a druga zostaje z domyślną.
Jeśli tak jest, to podejście z licznikami jest jedynym sposobem
kamiledi15 - 11-08-2018, 16:29
:
Tylko dziwne, że gdy się ustawi głośność na zdarzeniu always, to i tak jej nie trzyma. Wtedy chyba powinien wiedzieć, że ma zmienić wszystkim odtworzeniom?
Wilkeł - 11-08-2018, 20:28
:
Cytat:
Głośność się utrzymuje na 1, po prostu dźwięk się odtwarza cały czas i się nakłada na siebie, dlatego robi się głośniejszy.

Nie, to tak nie działa. Kiedy głośność ustawi się na 0, to sprawa wygląda analogicznie (głośność zmienia się na 100).

Cytat:
Wystarczy dodać to co poniżej, żeby odtwarzał się raz, a nie bez przerwy.

U mnie to niestety nie wypali, bo potrzebuję możliwości odtwarzania dwóch tych samych dźwięków naraz.

Cytat:
Poza tym zdarzenie, które zrobiłeś, to nie jest, tak jak napisałeś: Po wciśnięciu lewego przycisku myszy - tylko POWTARZAJ, gdy przycisk jest wciśnięty.

Tak, faktycznie, nie zrobiłem tak, jak napisałem, jednak sytuacja była analogiczna, gdyż tak czy siak potrzebowałem kilku takich samych dźwięków naraz.

Cytat:
jeśli chcesz, żeby dźwięk się odtwarzał po LPM jeszcze gdy poprzedni dźwięk trwa, no to lepiej byłoby zmienić głośność tego dźwięku na stałe w osobnym programie.

Niestety u mnie głośność ma być zależna od kilku czynników, które zmieniają się w trakcie gry, więc to nie zadziała :/

Cytat:
Widocznie niestety gdy dźwięk się nakłada nawet raz, to program gubi zmianę głośności. Musi to być jakaś wada programu.

Mam wrażenie, że nie przeczytałeś swojego komentarza po napisaniu go, bo teraz doszedłeś do czego innego, niż na początku xd

Cytat:
Być może kiedy odtwarzasz kilka razy ten sam dźwięk i ustawiasz mu głośność, to program nie wie, której instancji tego dźwięku ma zmienić głośność, więc bierze pierwszą z brzegu, a druga zostaje z domyślną.

Tak jak napisał kamiledi - w przypadku warunku "Always" dzieje się to samo, więc sytuacja jest raczej trochę inna.

Czyli nadal w sumie nie wiadomo, jak to zrobić, poza oczywiście tą metodą z counterem :/
kamiledi15 - 11-08-2018, 20:35
:
Cytat:
Mam wrażenie, że nie przeczytałeś swojego komentarza po napisaniu go, bo teraz doszedłeś do czego innego, niż na początku xd

To dlatego, że gdy ustawi się licznik na pokazywanie głośności, to kłamie - twierdzi, że głośność wynosi cały czas 1, choć słychać, że jest inaczej. Gdy dźwięk nakłada się wielokrotnie, to można w to uwierzyć, ale gdy nakłada się tylko raz, to wtedy już wyraźnie to słychać. Widocznie licznik bierze głośność tylko z pierwszego odtworzenia, a drugie ignoruje.
Możesz jeszcze wypróbować rozszerzenia dźwięku. Po szybkim googlaniu wynalazłem rozszerzenia o nazwach Onu i Miniature Audiere. Może któryś pomoże?
Możesz też nagrać kilka wersji tego samego dźwięku, żeby się losował. Brzmi to dużo lepiej, niż powtarzanie ciągle tego samego dźwięku, ale jak wolisz.
Na próbę zrobiłem takie coś - gdy głośność sampla jest większa od 1 - zatrzymaj go. Nie działa, gra dalej. Czyli program nie zdaje sobie sprawy, że odtwarza plik głośniej, niż powinien. Przydałoby się to zgłosić do Clickteamu.
Minty - 12-08-2018, 07:58
:
Tak wygląda audio u mnie:


Wycięłam to i tamto dla czytelności, w skrócie - pierwsze zdarzenie to wybuch. Akcje:
1. Wybierany jest losowy sampel wybuchu, i kanał z licznika. 32 kanały są wybierane cyklicznie operacją mod (przeskakiwanie z 33 do 1 w osobnym zdarzeniu zepsuje trochę dźwięk na jedną ramkę). Kanały są numerowane od 1 do 32, więc robię +1. Widzę, że to twoje rozwiązanie.
2-4. Ustawiam głośność zależną od odległości, stereo od kąta, częstotliwość zależnie od Bullet Time itp.
5. Licznik + 1, więc następny dźwięk będzie na innym kanale.

Dwa kolejne zdarzenia to płynna zmiana częstotliwości na wszystkich kanałach naraz.

To nie jest zasadniczo zopytmalizowane, ale główną ideą jest ten "licznik" kanałów. To praktycznie najlepsze rozwiązanie. Trochę mozolne, ale w ostateczności masz ctrl+c,v.
jarlfenrir - 12-08-2018, 09:55
:
"Always" nadal może interpretować jako zawsze zmień głośność pierwszemu samplowi o tej nazwie -> tzn. jak odtwarza się kilka naraz, to ciągle zmienia głośność tylko temu zagranameu najwcześniej lub temu na kanale o najniższym numerku.
kamiledi15 - 12-08-2018, 10:12
:
Pewnie tak, ale uznałbym to za bug - Zawsze to Zawsze, powinno zmienić głośność na wszystkich kanałach. Dobrze, że da się to obejść.
jarlfenrir - 12-08-2018, 11:55
:
Może nie na wszystkich, a przynajmniej na tym, na którym odtwarzany jest sampel wspomniany w tym samym zdarzeniu. I tak, też myślę, że to bug.
Wilkeł - 12-08-2018, 23:37
:
Ogólnie to znalazłem kolejny błąd w Clickteam Fusion - jeżeli zrobimy zdarzenie na konkretnym obiekcie (np. kliknięcie na obiekt myszką) najpierw wywołujące pętlę, która w innym zdarzeniu odtwarza dźwięk, a potem zmianę obiektu (np. jego zniszczenie), to zdarzenie zadziała na wszystkie obiekty, zamiast na jeden. Błąd nie występuje, gdy dźwięk odtwarza się bez użycia pętli lub gdy skutki są zamienione miejscami (tzn. gdy najpierw obiekt zmienia swój stan, a dopiero później włącza się pętla odtwarzająca dźwięk). Plik .mfa, znów dodałem kilka różnych grup zdarzeń dla ułatwienia, tutaj.
edit: ogólnie to dzięki, Sne, za lepszą wersję sposobu z mojego posta ^^
jarlfenrir - 13-08-2018, 20:15
:
Dobrze wiedzieć. Ciekawe ile moich problemów w ostatnim czasie wynikało z tego błędu, bo bardzo często używam pętli.