Lyd i C, uden om Windows

Tags:    c++


Hej.....

Jeg skal kunne lave lyd gennem PC-speakeren, men det skal gå uden om windows...

Programmet skal laves i C.

Kan det lade sig gøre??

På forhånd tak!!
MVH Mikkel



9 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Uden om Windows, betyder vel at det skal køre på noget andet (DOS, Linux ....) eller at det skal køre i en consol under windows.

Uanset hvad vil du gerne skrive til pc speakeren direkte igennem hardwaren går jeg ud fra og til det skal du lige forstå lidt om hvad den egentligt kan (hvor lidt den kan) og hvordan du styrer den, og det tror jeg du kan her:

http://linuxgazette.net/issue69/mathew.html

Som du vil finde ud af, kan du kun spille en bit, så det kommer til at gå lidt ud over lyd kvaliteten, he he, men du må forsøge at gøre den så god som muligt på andre måder.

Nå ja, jeg gik ud fra at du ville spille nogle samples (wav filer eller hvad det nu er du har) tilbage gennem speakeren, men hvis du vil spille andet skal du finde ud af at transformere det til rå samples mens du afspiller det (dekoder din mp3 eller hvad det så ellers skulle være).

Hvis du vil det kan du spørge igen eller se på google for det format du vil spille, men uanset hvad skal du lige finde ud af at spille en rå sample først.



Uden om Windows, betyder vel at det skal køre på noget andet (DOS, Linux ....) eller at det skal køre i en consol under windows.

Uanset hvad vil du gerne skrive til pc speakeren direkte igennem hardwaren går jeg ud fra og til det skal du lige forstå lidt om hvad den egentligt kan (hvor lidt den kan) og hvordan du styrer den, og det tror jeg du kan her:

http://linuxgazette.net/issue69/mathew.html

Som du vil finde ud af, kan du kun spille en bit, så det kommer til at gå lidt ud over lyd kvaliteten, he he, men du må forsøge at gøre den så god som muligt på andre måder.

Nå ja, jeg gik ud fra at du ville spille nogle samples (wav filer eller hvad det nu er du har) tilbage gennem speakeren, men hvis du vil spille andet skal du finde ud af at transformere det til rå samples mens du afspiller det (dekoder din mp3 eller hvad det så ellers skulle være).

Hvis du vil det kan du spørge igen eller se på google for det format du vil spille, men uanset hvad skal du lige finde ud af at spille en rå sample først.




Jeg fik nok ikke forklaret mig ordentligt.
Jeg skal lave lyde helt nede på scratch, altså jeg skal programmere en PIC-processor som skal 'afspille' lyde direkte til en højtaler. Så jeg skal hverken bruge windows eller DOS. :D
Jeg havde forstillet mig noget med et array der indeholder eks. hex som så bliver afviklet og bliver sendt til højtaleren.
Det skulle vist kunne lade sig gøre... :D




Jeg fik nok ikke forklaret mig ordentligt.
Jeg skal lave lyde helt nede på scratch, altså jeg skal programmere en PIC-processor som skal 'afspille' lyde direkte til en højtaler. Så jeg skal hverken bruge windows eller DOS. :D
Jeg havde forstillet mig noget med et array der indeholder eks. hex som så bliver afviklet og bliver sendt til højtaleren.
Det skulle vist kunne lade sig gøre... :D


Hvis du hverken skal bruge windows eller DOS, hvordan vil du så afvikle dit program?
Går ud fra at du skal have et OS, eller er det mig der er dum?

Jeg ved ikke om det var dig der ikke fik forklaret dig godt nok eller det var mig der ikke fik linket stort nok, men her er lidt tekst fra den side du kommer ind på ved at følge det link jeg smed til dig:

PIC stands for programmable interrupt controller
The base clock frequency of the 8254 is 1193180Hz which is 1/4 the standard NTSC frequency, incidentally. The counters have the values of the divisors, which, roughly speaking, are used to divide the base frequency. Thus the output of channel 0 will be at a frequency of 1193180Hz if counter0=1, 596590Hz if counter0=2 and so on. Therefore counter0=0 => a frequency of approximately 18.2 Hz, which is precisely the frequency at which the PIC is made to interrupt the processor. In DOS, the PIC is programmed to call the Interrupt Service Routine (ISR), at vector 8.

Effectively this means that the value of counter0 will determine the frequency of the timer ISR (Vector 8 in DOS) is called. Changing counter 0 changes the rate at which the timer ISR is called. Therefore if the same person wrote both the code for the ISR, and that for programming counter 0 of the 8254 timer chip, then he could get his ISR called at a predetermined rate as required.

Så selv om det handler om at lave en pc-speaker driver til Linux, kommer det ind på hvad man skal gøre for at kode til en PIC ... hvilke adresser den har (porte) og oven i købet lidt omkring lyd og hvordan man kommer rundt om den begrændsning der er med en 1 Bit DAC ... ved at samle samples i bursts osv.

Hvis det ikke har relevans til det du vil ... lave kode selv der bruger pc speakeren (PIC programmering) så må du kalde mig Mads fremover :)



For at lige slå fast hva jeg snakker om så er her et datablad for den PIC-processor (Microcontroller) jeg skal bruge. Det er PIC16F874A.

http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf

Jeg tror nemlig at jeg igen har forklaret mig dårligt, da jeg i det første indlæg skrev at jeg ville bruge PC-speakeren. for jeg skal jo faktisk ikke bruge en PC, og slet ikke en PC-speaker.
Jeg skal bruge et print hvorpå der er min PIC-processor og hvorpå højtaleren/speakeren sidder.

Jeg tror faktisk ikke helt vi snakker om det samme. For den PIC jeg snakker om står for: "Programmable Integrate Circuit" og ikke: "Programmable Interrupt Controller". :)

Jeg skal bare vide hvad for nogle signaler jeg skal sende for at lave lyd, og hvordan man skriver det i koden osv.

Venligst Mikkel



Ok.

Lyder som en skole opgave ...

Du har spec på det du skal kode til, hvad mangler du så?

At nogen laver koden for dig eller hvad?



Undskyld ... jeg var lidt hurtig der.

Du har ren PIC på et print.

Du skal lave det kort så du kan sende lyd til det.

Hvordan skal det forbindes til din computer?

Du skal lave et program til den PIC du har på kortet, og skrive koden ud på den.
Programmet skal kunne modtage data fra din PC og sende dem ud igennem speakeren der er forbundet til dit print.

Du vil vide hvordan du skriver programmet der skel køre på din PIC? Eller vil du vide hvordan du skriver det ind i din PIC?
Eller vil du vide noget andet?

Hvad er du færdig med og hvad har du tilbage?



Undskyld ... jeg var lidt hurtig der.

Du har ren PIC på et print.

Du skal lave det kort så du kan sende lyd til det.

Hvordan skal det forbindes til din computer?

Du skal lave et program til den PIC du har på kortet, og skrive koden ud på den.
Programmet skal kunne modtage data fra din PC og sende dem ud igennem speakeren der er forbundet til dit print.

Du vil vide hvordan du skriver programmet der skel køre på din PIC? Eller vil du vide hvordan du skriver det ind i din PIC?
Eller vil du vide noget andet?

Hvad er du færdig med og hvad har du tilbage?



Printet skal du ikke bekymre dig om :)

Det jeg skal lave er en 'lydgenerator' som der har 3 forskellige toner man kan vælge imellem. Programmet skal ændre frekvensen ud fra et indkommende signal. Det er vist det eneste. Jeg skal bare bruge noget kode som jeg kan arbejde videre på. :)
Printet skal ikke være forbundet til computeren. Programmet bliver brændt over på chippen, hvorefter chippen bliver lagt i printet...



Hvordan er højtaleren forbundet med PIC'en ?
Er der en DA konverter eller er det bare en port der kan sættes høj/lav?
Kan PIC'en regne med sin/cos?



Kan PIC'en regne med sin/cos?

Ellers kan man vel lave et par tabeller.



t