KozakPL Opublikowano 12 Czerwca 2009 Udostępnij Opublikowano 12 Czerwca 2009 Siemka :D Robię taki mały pseudo syntezator mowy i mam 1 pytanko.Zaczynam pisać kod na czytanie i nie wiem jak to zrobić.Zrobiłem zmienną: GML text='' I ustawie że jak ciśniesz a to GML text+='a' Do tego momentu ok...ale dalej...Jak napisać że ma czytać literki?Czy jeśli napisze: GML if text='a' then """odtwórz literke a""" to będzie dobrze?Mi się wydaje że nie ale innego pomysłu nie mam ;/ Będę wdzięczny za pomoc Kozak :D EDIT: Źle napisałem...nie dokładnie...co jeśli text='lol' a nie sama literka?odtworzy po kolei? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 Lepiej operować na keyboard_string. Ta zmienna zapisuje Ci wszystkie wciśnięte litery i cyfry. Syntezatory mowy to dość ciężka sprawa. Jeżeli chcesz odczytywać literkę po literce użyj funkcji string_char_at( string, pozycja ), która zwróci Ci literę na danej pozycji. Po prostu przejedź pętlą for cały string i odczytuj pojedyncze litery. To będzie wyglądać jakoś tak: GML for( i = 0; i < string_length( keyboard_string ); i += 1 ) { litera = string_char_at( keyboard_string, i ); } I po każdym przypisaniu odpowiedniej litery do zmiennej litera możesz z nią robić co chcesz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 hmmm....czyli coś takiego? GML //create for( i = 0; i < string_length( keyboard_string ); i += 1 ) { litera = string_char_at( keyboard_string, i ); } //step if i='a' then ...dźwięk a... //tak?</span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 GML czyta = false text = ''; pos = 1; sound = noone; can_read = true; if ( czyta = false ) //zbieranie tekstu { text = keyboard_sttring if ( keyboard_check_pressed( vk_enter )) czyta = true } else { //czytanie if ( can_read = true ) { char = string_char_at( text, pos ) //zczytuje literkę w pozycji (pos). switch( char ) // przypisanie dzwięku do zmiennej sound, w zależności od czytanej literki { case 'a': sound = litera_a; break case 'b': sound = litera_b; break case 'c': sound = litera_c; break } sound_play( sound ) //odtwarzanie dzwięku can_read = false; pos += 1; } if ( sound_isplaying( sound )) can_redy = true; //jeśli skończy odtarzać literkę, pozwól mu czytać drugą } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 create GML czyta = false text = ''; pos = 1; sound = noone; can_read = true; step GML if ( czyta = false ) { text = keyboard_string if ( keyboard_check_pressed( vk_enter )) czyta = true } else { if ( can_read = true ) { char = string_char_at( text, pos ) switch( char ) { case 'a': sound = sound_play(sWczytajDzwiek('a.wav')); break case 'b': sound = sound_play(sWczytajDzwiek('b.wav')); break case 'c': sound = sound_play(sWczytajDzwiek('c.wav')); break case 'd': sound = sound_play(sWczytajDzwiek('d.wav')); break case 'e': sound = sound_play(sWczytajDzwiek('e.wav')); break case 'f': sound = sound_play(sWczytajDzwiek('f.wav')); break case 'g': sound = sound_play(sWczytajDzwiek('g.wav')); break case 'h': sound = sound_play(sWczytajDzwiek('h.wav')); break case 'i': sound = sound_play(sWczytajDzwiek('i.wav')); break case 'j': sound = sound_play(sWczytajDzwiek('j.wav')); break case 'k': sound = sound_play(sWczytajDzwiek('k.wav')); break case 'l': sound = sound_play(sWczytajDzwiek('l.wav')); break case 'm': sound = sound_play(sWczytajDzwiek('m.wav')); break case 'n': sound = sound_play(sWczytajDzwiek('n.wav')); break case 'o': sound = sound_play(sWczytajDzwiek('o.wav')); break case 'p': sound = sound_play(sWczytajDzwiek('p.wav')); break case 'r': sound = sound_play(sWczytajDzwiek('r.wav')); break case 's': sound = sound_play(sWczytajDzwiek('s.wav')); break case 't': sound = sound_play(sWczytajDzwiek('t.wav')); break case 'u': sound = sound_play(sWczytajDzwiek('u.wav')); break case 'w': sound = sound_play(sWczytajDzwiek('w.wav')); break case 'y': sound = sound_play(sWczytajDzwiek('y.wav')); break case 'z': sound = sound_play(sWczytajDzwiek('z.wav')); break } sound_play( sound ) can_read = false; pos += 1; } if ( sound_isplaying( sound )) can_redy = true; } I nie działa zbytnio ;] Czasem czyta złe litery(a dźwięki są dobre) no i jak już raz nacisnę enter to niby czyta...ok...ale nie da się 2 raz Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adrianpl Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 :sp_ike: :sp_ike: :sp_ike: to ci wyjdzie bedzie czytał tak np. S Y N T E Z A T O R jedynie S.T.A.L.K.E.R dobrze przeczyta :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 stary.. Ty przy tym switchu nie masz odtwarzać dzwieku tylko go wybrać... przypisanie jest po to aby później sprawdzić czy nie jest już odtwarzany.. Create: GML czyta = false can_read = true; text = ''; char = ''; pos = 1; sound = noone; Step: GML if ( czyta = false ) //zbieranie tekstu { text = keyboard_sttring if ( keyboard_check_pressed( vk_enter )) czyta = true } else { //czytanie if ( can_read = true ) { char = string_char_at( text, pos ) //zczytuje literkę w pozycji (pos). switch( char ) // przypisanie dzwięku do zmiennej sound, w zależności od czytanej literki { case 'a': sound = sWczytajDzwiek('a.wav'); break case 'b': sound = sWczytajDzwiek('b.wav'); break case 'c': sound = sWczytajDzwiek('c.wav'); break } sound_play( sound ) //odtwarzanie dzwięku can_read = false; pos += 1; } if ( sound_isplaying( sound )) can_redy = true; //jeśli skończy odtarzać literkę, pozwól mu czytać kolejną if ( pos == string_length( text )) // zakonczy czytanie i wyczyści keyboard_stringa { czyta = false; keyboard_string = ''; } } Draw: GML if ( czyta = true ) stan = "TAK" else stan = "NIE"; draw_text( 0, 0, "Piszesz: " + keyboard_string + "#Czyta: " + stan + "#Czytana literka: " + char ); PS. @Nobody: Pętla jest złym rozwiązaniem, też nad nią myślałem, ale Jak chcesz na niej otworzyć dzwięk skoro wszystko wykona się w jednym stepie? PS2. Poprawiłem trochę kod ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 ja kiedys robilem takie cos ale nie mialem dzwiekow ;s to strasznie latwe. mozna zrobic tez takie cos: execute_string('sound_play('+litera+');'); i kazdemu dzwiekowi dac nazwe itery Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 a po co? zbawi Cię parę linijek kodu więcej? execute_string jest wolasty.. poza tym po raz setny powtarzam nie masz przypisywać do zmiennej sound_play tylko samą nazwę pliku!! właśnie widać jak "ja kiedys robilem takie cos".. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 Jest 1 błąd: ERROR in action number 1 of Draw Event for object oCzytajText: Error in code at line 2: draw_text( 0, 0, "Piszesz: " + keyboard_string + "#Czyta: " + stan + "#Czytana literka: " + char ); at position 94: Unknown variable char Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 do create dopisz: char = '' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 Ehh...no tak :D Ale teraz jest mini problem...wpisuje coś i ciskam czytaj tyle że czyta 1 literkę i ciągle jest czytanie na TAK.Tak jak by ciągle pierwszą literkę czytało :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 pokitrało mi się :/ zamiast false wpisałem true, temu nie kończy czytać.. Poprawiłem kod wyżej. Zapodaj jakiś plik z dźwiękami i tym kodem. Jestem ciekaw jak wyszło :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 Lepiej zrób podział na głoski (prze, przy, pra, prze, że ża, ży żu, my, ma, mu, mo itd.) - przy dobrze wyciętych będzie to chociaż odrobinkę przypominało mowę, a nie literowanie - z tym, że tego będzie dość dużo :P Nie czytałem całego tematu, ale ja bym zrobił listę plików do czytania. Albo od razu silnik takich list odtwarzania :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 nadal to samo :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 spróbuj to: if ( pos == string_length( text )) zamienić na:if ( pos == string_length( text ) - 1 ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 nadal ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 zapodaj przykład z dźwiękami bo tak to do rana będziemy strzelać.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 Łapaj: https://gmclan.org/up5646_4_MoveR.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 zwrotny: https://gmclan.org/up1558_12_Syntezator_Ivona.html ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 13 Czerwca 2009 Autor Udostępnij Opublikowano 13 Czerwca 2009 dzex :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Czerwca 2009 Udostępnij Opublikowano 13 Czerwca 2009 dasz sam radę zrobić 'SZ' i 'CZ'? 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ę