[WIN32] Samples uitschrijven naar WAVE mapper

Pagina: 1
Acties:

  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Hey,

Ik probeer een Sega Genesis emulator te porten naar Windows (om precies te zijn Generator by James Ponder), en ik probeer het geluid aan de praat te krijgen.
De functies werken zo dat je eerst een init functie krijgt om alles te initialiseren, dan 50 keer per seconde (elke frame) krijg je een hoop samples, en na afloop krijg je een stop signaal als je alles weer netjes mag afsluiten. Ook heb je tussendoor een functie waarin je moet laten zien hoeveel samples er nog worden gebuffered.
Deze functies heb ik allemaal zo geimplementeerd als te zien is op http://hardijzer.demon.nl/~franswillem/gensoundp-win32.c . (meeste functies zijn volgens mij wel duidelijk, als er twijfel is geef je maar een gil ;))

Nu werkt dit goed, maar ongeveer halverwege het introfilmpje van ZeroWing blijft alles hangen, en bij debuggen ziet het ernaar uit dat hij blijft hangen in waveOutWrite.

Nu ben ik al niet zo'n held in sound-output, en kan ik me voorstellen dat ik grove denkfouten heb gemaakt. Daarom bij deze een oproep of iemand misschien een alternatieve methode kan verzinnen ?

Alvast bedankt,
TB

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Als je nu die functie even post, of op zijn minst het linkje naar die C-file fixt, dan zou dat waarschijnlijk helpen. ;) Liefst dat eerste trouwens, als alleen die ene functie relevant is.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
-NMe- schreef op maandag 23 januari 2006 @ 17:46:
Als je nu die functie even post, of op zijn minst het linkje naar die C-file fixt, dan zou dat waarschijnlijk helpen. ;) Liefst dat eerste trouwens, als alleen die ene functie relevant is.
Excuses! had weer es geupload naar ~/ ipv ~/public_html/ :P
Bestandje staat er nu, en bevat alleen de functies waar ik het net over had (en 1 functie die er bij hoort)

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 14-04 13:30
In de documentatie van waveOutProc() staat het volgende:

"Applications should not call any system-defined functions from inside a callback function, except for EnterCriticalSection, LeaveCriticalSection, midiOutLongMsg, midiOutShortMsg, OutputDebugString, PostMessage, PostThreadMessage, SetEvent, timeGetSystemTime, timeGetTime, timeKillEvent, and timeSetEvent. Calling other wave functions will cause deadlock."

In deze lijst staat waveOutUnprepareHeader() (welke je in de callback aanroept) niet bij, misschien dat dat het probleem is.

Misschien kan je als alternatief een thread gebruiken die het geluid afspeelt met callbacks als messages naar de thread?