Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
igor Administrator foruma
Pridružen/-a: 20.09. 2009, 17:22 Prispevkov: 192
|
Objavljeno: 20 Jan 2010 17:22 Naslov sporočila: Naloga z zvokom |
|
|
A je že kdo delal?
Kako sploh generiramo zvok ? Če funkcija kao vrača double, mi pišemo na /dsp znotraj funkcije ? Ali vrne funkcija to, kar potem zapišemo na zvočno (double???)?
Na internetu je mali miljon primerov kako predvajat zvok, to mi vse dela, samo kako pa generiramo nekaj (verjetno nek binarni format al kaj) pa nič ni za najt... |
|
Nazaj na vrh |
|
|
igor Administrator foruma
Pridružen/-a: 20.09. 2009, 17:22 Prispevkov: 192
|
Objavljeno: 20 Jan 2010 18:31 Naslov sporočila: |
|
|
Ok, malo že kapiram. Pomagala je ta stran:
http://www.codeproject.com/KB/audio-video/CPIAudio.aspx
Zvok je sestavljen iz 44.100 podatkov, ki so predstavljeni s 16-bitnim številom (torej od -32.768 do +32.768).
To si jaz predstavljam kot recimo polje z 44.100 elementi, ki so 16bitno število. Število je predstavljeno binarno, valjda.
Ni mi jasno samo to navodilo v nalogi:
Citiram: |
Na napravo zapisujte preko vmesnega pomnilnika dolžine 44100 zlogov. Prepovedano je ločeno pošiljanje 16-bitnih besed na zvočno napravo ali vnaprejšnje generiranje celotnega signala. |
Po mojem mnenju bi vmesni pomnilnik moral biti dolg 16*44.100 zlogov, ker bi tako spravili vanj točno 1 sekundo zvoka, ali ne? |
|
Nazaj na vrh |
|
|
jani_k
Pridružen/-a: 21.01. 2010, 17:28 Prispevkov: 8
|
Objavljeno: 21 Jan 2010 17:39 Naslov sporočila: |
|
|
Ok jaz sem to nalogo komaj zacel delati, tako da mogoce razmisljam narobe.
Kar funkcija vraca ni pomembno, kolikor jaz razumem. Komot bi bla na primer void. Saj pisemo na napravo znotraj funkcije. Ne bi bilo prvic da so nam dali napacno signaturo funkcije.
Naprava se odpre in nastavi parametre tako kot na vajah. Dejansko lahko kar prekopiramo tisto kodo.
Kako generiramo zvok?
Z funkcijo write pisemo buffer na napravo.
Tezava nastane ker moramo pisati z write. Write pa sprejme buffer tipa char*. In tu pri meni nastane tezava. Char je kul ko na primer beremo iz datoteke in se vrednosti kar direkt zapisejo v nas buffer, znak po znak. Zadeva je sicer cloveku neberljiva, a dela.
Jaz ne razumem kako zdaj moje izracune krivulje(44.100 vrednosti, ki niso char) spravim v char*. Po mojem z write ne bo slo, ali pa jaz ne razumem zadeve. |
|
Nazaj na vrh |
|
|
igor Administrator foruma
Pridružen/-a: 20.09. 2009, 17:22 Prispevkov: 192
|
Objavljeno: 22 Jan 2010 13:38 Naslov sporočila: |
|
|
E vsaj nekaj, sem pisal mail asistentu Glaserju, naj spremeni roke za oddajo nalog in se nas je usmilil ter podaljšal rok do nedelje zvečer!
Vsaj majhna zmaga... |
|
Nazaj na vrh |
|
|
jani_k
Pridružen/-a: 21.01. 2010, 17:28 Prispevkov: 8
|
Objavljeno: 22 Jan 2010 15:41 Naslov sporočila: |
|
|
http://www.opensound.com/pguide/audio.html
Cisto na koncu strani je opisan nacin kako 16bitne podatke spravit v obliko, ki jo write() lahko sprejme. In celo dela. |
|
Nazaj na vrh |
|
|
|