Gå til innhold

Problemer med OpenAL Frekvensgenerator


Anbefalte innlegg

Hei jeg holder på med en frekvensgenerator (til naboenes forferdelse), men den har en lei tendens til å lage støy ved overgangen fra en buffer til en annen. Jeg har ikke klart å finne feilen og greier ikke å legge det fra meg (til naboenes forferdelse).

 

Så hvis noen kan hjelpe meg å finne feilen så hadde jeg (og naboene) blitt veldig glade.

 

På forhånd takk for all hjelp.

FreqGen.zip

Lenke til kommentar
Videoannonse
Annonse

Nå r jeg nettopp kommet fra byen og har veldig problemer med å lese kode.. Men,... uansett, når man swapper fra et buffer til et annet er det viktig at amplitude verdier samsvarer. Eller, mersom genererer man 400hz, dvs

sin(2*PI*t/400)

så må neste buffer starte på samme verdi for "t" som den avslutta, eller får du sånne "smell" som naboene ikke liker. Hmm.., kanskje jeg skal se igjennom kode imorgen, så kanskje du får bedre svar.

Lenke til kommentar

hehe det står respekt av å starte å feilsøke på andre sin kode så seint som du gjort og spesielt etter en tur på byen ;).

 

Når det er sagt så trodde jeg at det ikke skulle skje i koden min så lenge man ikke skifter frekvens, men jeg kan jo ta feil :D.

 

Jeg har ikke tatt hensyn til hvilke vinkel bølgen er i så når jeg skifter frekvens så vil det nok bli noen rare lyder.

Lenke til kommentar

Hehe, ja idag ser jeg ting litt tydeligere. Problemet er at du bruker ett statisk buffer med størrelse 50000. Dvs. setter du denne til 44000, som er avspillingsfrekvensen din, så vil det funke. Grunnen er at openAL sikkert fortsetter og spiller av hele bufferet til posisjon 50000 også blir det blankt. Dette lager diskontinuitet mellom buffer swap 2 og 1.

Lenke til kommentar

Jeg skjønner ikke helt forklaringen din, men det fungerte.

Hvorfor blir det blankt?

 

Det jeg ser at programmet fungerer er at den har en stor buffer som er delt i to og menst den spiller av en så genereres den andre og dette skal lage en jevn sinus.

Jeg har testet etter posten din testet med ulike buffer og det fungerer fint så lenge jeg har en multiple av 4400.

Så har jeg skjønt det hvis jeg har en buffer som er multiple av avspillings frekvensen?

 

Takk for svar.

Lenke til kommentar

Vel, var bare noe jeg trodde, vet ikke helt om forklaring stemmer da jeg aldri har brukt OpenAL før. Men i gamle DOS-dager måtte vi på lavt nivå sette opp dma-transfers, og da måtte vi sette bufferene til et multiplum av avspillingsfrekvensen. Finnes nok en bedre og mer logisk forklaring til at det må bli sånn..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...