Euphoria Sound System?
- Posted by Nick Metcalfe <metcalfn at ALPHALINK.COM.AU> Oct 13, 1999
- 635 views
I am in the process of writing a new 16-bit wave + midi Euphoria sound library for dos, and have struck some problems. I'm thinking of calling it "Euphoria Sound System", or ESS for short. I plan for it to be a major improvement on previous Euphoria sound libraries, with simultaneous operation of one or two 8 or 16-bit sound cards, interrupt driven midi and multi-format sequencer, direct-to-disk recording/playback, real-time wave mixer and effects, and probably editable OPL2/3 instrument banks as well. I am actually not very far into it, and it is an ambitious project at best. -- Firstly, I wish to recruit a bugtester or two. If you have a true 16 bit Sound Blaster (DSP version >= 4.00, SB16 / AWE32 or compatibles?), _and_ a midi plug adapter for the SB's gameport, you could help me greatly by verifying my code is silly and not my sound card. Just have to connect midi in to midi out, run my buggy program, listen to the hum for a bit and tell me what pops out under "Errors:". Please contact me if you can help, the code's a bit big for posting on the list. Basically, I'm currently trying to get both 16-bit sound and the MPU-401 midi interface to work simultaneously on the newer SB's. The good news is it works. The bad news is not properly. When the DSP is producing sound and the MPU is set and ready, somehow single 0 value bytes are occasionally and randomly sent _out_ the MPU midi port. These can be captured by the looback to be studied, but reveal very little except how well they're going to corrupt any real outgoing midi messages. If the program can be run by somebody without producing these glitches, I will buy me a new sound card. These glitches will happen even when the routine that actually has the job of sending data out the MPU is completely removed. Either side works independently just fine. 8 or 16 bit waves with the MPU turned off, fine. Midi loopback with no waves playing, fine. Together, Glitches! I have massaged the code many times to no avail, and I finally think the problem could be hardware. This seems unlikely too, though. I have a SB16 PnP DSP Ver 4.13 and it doesn't appear to play up any other time... confusing. -- Secondly, I would like to access INT #21 for dos file operations and wish to do so from within an assembly routine, not using the dos_interrupt() function. Are there any special procedures that must be undertaken with regards to the Causeway extender to do this? It is to be accessed from an interrupt service routine. Also on the same topic, how do I initialize a segmented pointer to a low-memory buffer [ds:si] for what I assume is 16-bit code when all I have is the linear 32-bit address of the buffer and I want to sort of keep my data segment? I'm not sure how to use the lea instruction in this context. Also all in assembly for the same direct-to-disk recording or playback ISR... Anyway, I'm stumped. Please, help me out if you can. -- Nick Metcalfe <metcalfn at alphalink.com.au> http://www.alphalink.com.au/~metcalfn