W czym napisac?

Jan 03, 2004 18 Replies

Witam!



Musze stworzyc program, ktory bedzie wysylal na karte dzwiekowa 2 sygnaly audio: jeden niski ok. 400 Hz oraz wysoki ok. 900 Hz. Sygnaly te sa dalej potrzebne do sterowania, ale to juz nie jest takie istotne. Interesuje mnie glownie w miare prosty interfejs dla przyszlego uzytkownika tejze aplikacji. Nie ukrywam, ze nie jestem asem programowania, ale musze to zrobic :) W czym polecacie pisac? Otarlem sie o C, ale musialbym sporo sie doksztalcic, a czasu malo. Moze Delphi, a najlepiej Visual Basic. Problem polega na tym, ze musi to byc jezyk programowania, ktory ma funkcje generowania sygnalow audio na karte muzyczna (nie na speakera), z okresleniem czestotliwosci. Wiem, ze w C jest funkcja 'playsound', no ale to jest c, a z tego jak pisalem korzystac bede w ostatecznej ostatecznosci :)



Dziekuje z gory za wskazowki



Aquarius



Ile masz na to czasu, bo z tego co piszesz wynika ze bedzie to twoj pierwszy program. Jezeli to jednorazowe zadanie to moze zlec to komus kto zrobi to w 2 godziny i po sprawie. Chyba najprosciej nagrac sobie pliki z probkami dzwiekowymi i odtwarzac je za pomoca funkcji Windowsa. Program mozesz napisac w Deplphi albo C Buildrze i z jego poziomu wywolac te funkcje systemowe. Poszukaj tez na stronach z komponentami do Delphi/Buildera, na pewno sa jakies gotowe do odtwarzania probek czy generowania dzwiekow.

Sebasto

a po co aż program? Weź Cooledit i wygeneruj odpowiednie pliki.

Musi byc program, poniewaz sygnaly beda musialy odpowiednio dlugo trwac. Bedzie to przeliczane na obroty silnika krokowego. Np. czas impulsu 100 bedzie ozaczal, ze dany sygnal, przykladowo wysoki bedzie odtwarzany np. 10 sek. a to spowoduje obrot silinka w prawo o zadana ilosc krokow (przetwornik mam juz, dwustopniowy, ktory reaguje wlasnie na 2 sygnaly "wysoki" i "niski", co powoduje obrot w prawo/lewo)

U¿ytkownik "Jarek Andrzejewski" snipped-for-privacy@dawid.com.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@4ax.com...

Dziekuje za wskazowki, programik ok :)

Uzytkownik "Tomasz Sliwa" snipped-for-privacy@wp.pl napisal w wiadomosci news:bt6d6f$5ia$ snipped-for-privacy@atlantis.news.tpi.pl...

formatting link
w dziale Polskie programy program "generator" mojego autorstwa. Generuje przebied sinusoidalny, trojkatny, prostokat i szum na wyjsciu karty dzwiekowej. Pozdrawiam Tomek

formatting link

No to nagraj kilka okresów takiego sygna³u jako .wav a potem napisz tylko program który bêdzie to odtwarza³ przez jakiœ tam czas. To o wiele prostsze niæ pisanie cooledita od nowa ;)

Adam

a co za problem wygenerować pliki 10-sekundowe?

On Behalf Of Jarek Andrzejewski

Być może problem jest w systemie. Tak do końca w windzie to nie wiadomo kiedy sygnał zostanie wysłany i (w przypadku karty dźwiękowej) kiedy zostanie zakończony.

Do autora wątku. Obawiam się, że takie rozwiązanie nie sprawdzi się w praktyce.

pzdr Artur

ziel napisal(a):

No wlasnie... Kiedys probowalem przy pomocy MSVC wyslac _synchronicznie_ 8 kanalow na karte dzwiekowa i sie poddalem. Faktem jest, ze w windzianym programowaniu cienias jestem, ale nie znalazlem sladu informacji by cos takiego bylo mozliwe.

Tzn dokladniej prosze, o jakie kanaly chodzi ? Bo wiecie .. fonia w avi sie nie rozjezdza z obrazem :-)

J.

On Behalf Of J.F.

Nie bedę się spierał, bo nie pamiętam, czy dobrze pamiętam ;-), ale coś mi się kołacze, że na jednej płycie zdażało się rozjechać obraz z dzwiękiem. A może to chodziło o napisy? :-( Nieważne.

Mnie chodzi o obsługę portów, czyli czytając np. port LPT co

1 sek. tolerancja czasu zawsze jest ze względu na zadania o wyższym priorytecie. Podobnie jest przy wysyłaniu komend do karty dźwiękowej, może wyłączyć dźwięk natychmiast, a przy jakiejś robótce na HDD przez system może wyłaczyć nawet za kilka sekund.

pzdr Artur PS Piszę o wyłaczeniu z poziomu aplikacji, bo (zawsze?) można wpisać do bufora karty dźwiękowej sampla ograniczonego w czasie i wtedy wyłaczy się automatycznie ;-)

J.F. napisal(a):

Ja mowie _synchronicznie_, czyli wysylam 8 kanalow na karte dzwiekowa i wszystkie 8 wychodzi rownolegle co fo probki. Potrzebowalem cos takiego zrobic do testowania kodera MRX. W koncu to inaczej zrobilem.

Tutaj nie musi byc synchronicznie. Moze sie przeciez rozjechac jak nic o 100ms, nie?

Mowimy o normalnych 8 czy 16-bit samplach do DAC ?

Biorac pod uwage ze karta ma 2 kanaly, a winda sample dodaje .. faktycznie moze to byc trudne. Ale przeciez mozesz sam dodac ?

No chyba ze czegos nie rozumiem ...

No .. 50 byloby lepiej, 100 moze byc juz zauwazalna. Ale fakt - jak ci na probce zalezy, to inna rozmowa ..

J.

J.F. napisal(a):

Coooo? Moja ma przynajmniej 26. A nie, teraz nie mam drugiego sledzia wiec tylko 18.

Nie rozumiem o co chodzi z tym dodawaniem.

Tak swoja droga, na paru listach zadawalem to pytanie, ale bez efektu. Ciekaw jestem jak to jest zrealizowane w softach, ktore maja mozliwosc wywalania wielu kanalow na raz. Bo to przesuwanie moze byc, w pewnych warunkach, problemem.

A to pogratulowac karty. Naprawde ma 18 wyjsc ?

Od pewnego czasu winda potrafi wspoldzielic karte - tzn moze rownolegle dzialac wiele programow, kazdy wyprowadzajacy dane do karty. Oczywiscie winda to udaje i gdzies tam w srodku probki sa po prostu dodawane i dopiero wypychane do karty ..

J.

Moze za posrednictwem DirectX? Tam chyba jest cos do dzwieku.

J.F. napisal(a):

26, ale nie dodalem, ze to karta cyfrowa RME Hammerfall. 2 wyjscia ADAT po 8 kanalow kazdy na glownym sledziu i jedno wyjscie ADAT na dodatkowym sledziu. Do tego dochodzi wyjscie SPDIF. Byc moze jest jeszcze jeden SPDIF na drugim sledziu, ale nie chce mi sie sprawdzac. Wejsc jest tyle samo.

Aha, no tak, nie zalapalem, ze o to chodzi. Mozna by i tak, ale nei zauwazylem zadnej metody synchronizacji czasowej procesow. Tak czy siak sprawa jest nieaktualna.

jerry1111 napisal(a):

Chyba ogladalem to, ale to za wysokie progi dla mnie, wiec olalem sprawe i zrobilem prosciej i wolniej, ale skutecznie ;--).

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required