Subaru Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 Witam Googluję już parę minut i nie mogę znaleźć konkretów na taki problem: Chciałbym napisać prosty programik w C/C++, który co określony czas by zagrał jakiś dźwięk lub melodyjkę (np. na zasadzie podawania wysokości dźwięku/nuty niekoniecznie z pliku). Odmierzanie czasu to pół biedy, ale sprawa dźwięku jest mi zupełnie niejasna. Znalazłem jedynie informacje, że tego typu rzeczy prawdopodobnie nie są zapewnione przez standard języka. Programuję oczywiście pod komenderą Fedory i GCC/G++ Z góry dziękuję za pomoc i pozdrawiam Subaru Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
DjSpider Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 Zupełnie się na tym nie znam, ale wiem, że jest coś takiego jak SoundFont. FluidSynth z tego korzysta. Jak już mówiłem nie znam się na tym, ale chyba tak sam C++ nie wytworzy dźwięku, czy nawet odtworzy. A tak po rusku to by to można zrobić z użyciem mplayera:D Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 Albo piszesz własny syntezator (dźwięk bazowy to sinusoida), lub korzystasz z MIDI to spięcia z wyżej wymienionymi soundfontami, jednak to już nie jest samodzielny program. Poszukaj trochę o Digital Signal Processing i generalnie jak jest tworzony dźwięk cyfrowy. Dla podstawy, zainstaluj sobie syntezator Yoshimi i w jego opcjach znajdziesz funkcję tworzenia dźwięku od zera (czyli masz tylko sinusoidę z mnóstwem opcji do obróbki jej), może Ci się przydać do zrozumienia tego. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Wrzesień 27, 2011 Autor Zgłoszenie Share Napisano Wrzesień 27, 2011 Wychodzi z tego jednak ta zła wersja zdarzeń... (...)lub korzystasz z MIDI to spięcia z wyżej wymienionymi soundfontami, jednak to już nie jest samodzielny program. Spróbujmy więc tą opcję, bowiem tak całkiem swój dźwięk być nie musi, to ma być w formie "alarmu", toteż jeśli nawet z terminala będzie musiało się coś extra odpalić i zamknąć, to nie jest to przeszkoda dla mnie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 GStreamer http://developer.gnome.org/gnome-devel-demos/unstable/guitar-tuner.c.html.en Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
DjSpider Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 Skoro ma tylko dźwięk odpalić to najlepiej niech używa mplayera, to nawet nie wyświetli terminala. Ale musi mieć podane jaki dźwięk odtworzyć. Ale to w przypadku, jeśli to ma być (_na prawdę_ → naprawdę) ORT tylko prosty alarm. Ale to już będzie forma skryptu moim zdaniem. Z GStreamerem byłoby bardziej profesjonalnie, ale więcej roboty. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 Jak wolisz się pobawić ciut więcej, to wal ffmpeg, a jak na szybko to pwnie GStreamer lub Phonon (tutaj w ogóle luz, 2 linijki i już Ci odtwarza, ale też do raczej pod Qt) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Wrzesień 27, 2011 Autor Zgłoszenie Share Napisano Wrzesień 27, 2011 Podsumujmy thof - poradnik wyglada bardzo ciekawie, zajme sie nim od zaraz DjSpider - czy bedzie to cos w tym kierunku? mplayer sciezka-do-plikumorsik - lubie sie bawic do momentu, w którym za nic nie wiem co dalej hehe spróbuje póki co ten poradnik, zobaczymy co z tego wyjdzieZainstaluje tez develki do ffmpeg, GStreamer i phonon tak na wszelki wypadek EDIT #1No i zainstalowane, czas na poradnik EDIT #2Ciekawa ta Anjuta, taki Dev-Cpp EDIT #3 do postu ponizejDzieki bardzo, zainstalowalem develke do Canberra, jutro ciag dalszy przygód bedzie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Wrzesień 27, 2011 Zgłoszenie Share Napisano Wrzesień 27, 2011 Phonon to tak nakładka na Gstreamera, więc lepiej pisać bezpośrednio pod Gstreamerem. Do powiadomień (np. wspomiany alarm) można użyć biblioteki http://developer.gnome.org/platform-overview/stable/canberra'>http://developer.gnome.org/platform-overview/stable/canberra Jak chcesz pisać pod Gtk to przerób też inne przykłady stąd http://developer.gnome.org/ a poniżej jest pełna dokumentacja, czyli wszystko w jednym miejscu co jest bardzo wygodne, bo nie musisz skakać po różnych, często niepełnych lub nieaktualnych dokumentacjach. Można też korzystać z oficjalnego programu devhelp (pewnie już masz zainstalowany). Jeśli natomiast chcesz pisać w Qt (ew. KDE) to odpowiednik http://api.kde.org/ Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Wrzesień 28, 2011 Autor Zgłoszenie Share Napisano Wrzesień 28, 2011 Hmm z chęcią przeglądnę Połapałem się mniej więcej w tym kodzie Guitar Tunner, znalazłem tabelkę częstotliwości dźwięków, więc jeśli wszystko dobrze pójdzie to będzie ładny alarmik wygrywający nutkę z Super Mario Bros World 1-1 Dziękuję bardzo wszystkim za pomoc, jak tylko skończę to zamieszczę tutaj programik Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Wrzesień 29, 2011 Zgłoszenie Share Napisano Wrzesień 29, 2011 Tabelke z czestotliwosciami? Heh... latwiej Ci bedzie wygenerowac po prostu ta tabelke (sam tak kiedys zrobilem). 440Hz to jest A razkreslne, a reszte dzwieków wyliczysz sobie wg wzoru stad: https://secure.wikim...9k_%28muzyka%29 (Zobacz zmiana o pólton i lepiej wygeneruj sobie wszystkie póltony, nie tylko cale. Bedzie Ci latwiej potem cos innego napisac). Generalnie wiesz jak jest. Lecisz forem i uzupelniasz arraya dodajac kolejne wartosci wg tego co podalem powyzej (-; Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Październik 13, 2011 Autor Zgłoszenie Share Napisano Październik 13, 2011 Gdyby wszystko było takie proste...popisałem trochę kod i nie jest mu do śmiechu #include <unistd.h> #include <stdio.h> //#include <glib/glib.h> //ciekawe czy potrzebne mu w koncu bedzie czy nie #include <gst/gst.h> #define MNOTE_C4 261.63 #define MNOTE_D4 293.66 #define MNOTE_E4 329.63 #define MNOTE_F4 349.23 #define MNOTE_G4 392.00 #define MNOTE_A4 440.00 #define MNOTE_H4 493.88 #define MNOTE_C5 523.25 int x; main (int argc, char *argv[]) { gst_init (&argc, &argv); printf("Wybierz opcje \n"); printf("1. DMW DS (17,5 min) 2. DMW D/D (30 min) 3. Exit"); scanf("%d", x); switch(x) { case 1 : sleep(1050); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 2 : sleep(1800); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 3 : sleep(10); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; default : printf("Zla opcja"); break; } } W konsoli widzę same nieśmieszne rzeczy /tmp/cc0W0fJK.o: In function `main': dmwtimer.c:(.text+0x8d): undefined reference to `play_sound' dmwtimer.c:(.text+0x9f): undefined reference to `play_sound' dmwtimer.c:(.text+0xb1): undefined reference to `play_sound' dmwtimer.c:(.text+0xd2): undefined reference to `play_sound' dmwtimer.c:(.text+0xe4): undefined reference to `play_sound' /tmp/cc0W0fJK.o:dmwtimer.c:(.text+0xf6): more undefined references to `play_sound' follow collect2: ld returned 1 exit status make: *** [all] Błąd 1 Nie wiem czemu mu nie pasuje to Wszystko spiąłem przez makefile, bowiem normalną metodą nie znajdywał gst.h Makefile na obecną chwilę wygląda ni mniej ni więcej tak CC=gcc LIBS = -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lxml2 CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gstreamer-0.10 -I/usr/include/libxml2 all: $(CC) $(LIBS) $(CFLAGS) dmwtimer.c Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Październik 13, 2011 Zgłoszenie Share Napisano Październik 13, 2011 Zamiast się tak męczyć stwórz sobie projekt w Anjucie i dodaj bibliotekę "Project -> Add Library..." Bibliotek GStreamera jest wiele, ale w tym wypadku pewnie wystarczy podstawowa. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Październik 13, 2011 Zgłoszenie Share Napisano Październik 13, 2011 Jeszcze się tak po swojemu doczepię. Ładniej Ci będzie zrobić sobie tablicę z dźwiękami którą wygenerujesz przy starcie. Częstotliwości dźwięków w pętli wyliczasz wg. wzoru z wikipedii. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Październik 16, 2011 Autor Zgłoszenie Share Napisano Październik 16, 2011 thof - spróbuję więc tak zrobić, kombinowałem z gedit'a mając cichą nadzieję, że obejdzie się bez tych wszystkich IDE i całej graficznej okładki. Może uda się projektem "Standardowy" miast GTK+ . No i gdzie mam ją dodać tak konkretnie, bowiem próbuję różne miejsca i potem wywala komunikaty, które podam poniżej. morsik - Faktycznie, zasugerowałem się niepotrzebnie rozpiską z Guitar Tuner i przepisałem na dźwięki. Można to faktycznie wyliczać tak jak proponujesz. Komunikaty takie: /home/Subaru/dmw-alarm/src/src/Makefile.am:5: gstreamer-0.10_CFLAGS: non-POSIX variable name /home/Subaru/dmw-alarm/src/src/Makefile.am:23: gstreamer-0.10_LIBS: non-POSIX variable name make[1]: Opuszczenie katalogu `/home/Subaru/dmw-alarm' /home/Subaru/dmw-alarm/src/Makefile.am:5: bad characters in variable name `dmw_alarmdocSHZakończono niepowodzeniem Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
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ę