Re: Cinematronics sound board behavior...

From: Zonn <zonn_at_zonn.com>
Date: Wed Jun 23 1999 - 15:26:21 EDT

On Wed, 23 Jun 1999 11:23:53 -0700 (PDT), you wrote:

>> >FWIW, I'd be willing to donate Retrocade's Cinematronics sound engine for
>> >the cause. It already does the mixing/balancing built in, in addition to
>> >having the trigger interfaces already defined. Let me know who spearheads
>> >this project.
>> This is a cool offer! Neil has worked out many of the problems of
>> using samples to emulate analog sound boards.
>> The source won't be usable on the Scenix, but the logic flow will.
>
>Why not? Is it not C?

I believe you can get "C" for the Scenix, but Scenix "C" is going to
work a bit differently than anything that runs on a PC.

Yeah, the syntax might be the same, but the way you must write the
code is much different.

Scenix:
  No Data Stack. (Passing variables to a subroutine is tricky for the
  compiler and steals some of your RAM variable space.)

  Very limited RAM memory (don't even think of an array in RAM!,
  like a pre-buffer for mixing!)

  Limited ROM space. Simply using "C" will steal a bit of this.

  Obviously no sound card, no DMA, no Soundblaster controls, etc.

It would probably be best to write the Scenix stuff in assembly, using
it as a peripheral. It's interrupts could probably emulate the shift
register with the speed needed to look like a real hardware shift
register. Remember the CCPU runs at 5mhz with many of it's
instructions being executed in 1 cycle. You need to be very fast to
catch the shift strobe of a shift register, which I believe will only
last for two 5mhz cycles!

Another IRQ task could supply the data to the DAC as needed, with a
foreground task doing the mixing/level shifting, keeping a very small
(4 to 8 byte) buffer full for the DAC.

My biggest concern is that the different soundboards interface quite
different from each other. There will have to be a different routine
written for nearly each card, I'm wondering if the Scenix has enough
code space for this.

Another idea may be to have an external processor (with a lot of code
space and the ability to run "Real C" code) as the overall controller.
Reading information from the Scenix (acting as the I/O interface to
the CCPU), doing the waveform playing logic, the mixing, etc. and
sending the results back to the scenix which could buffer and play the
sounds out the DAC. An 8051, Z-80 clone, etc.

But however it's done, I'm willing to work out all the interface logic
for all the sound boards.

-Zonn
Received on Wed Jun 23 14:25:39 1999

This archive was generated by hypermail 2.1.8 : Fri Aug 01 2003 - 00:31:43 EDT