Master Class top

to MAIN MENU

Back to Section Menu

The Firmware
Claus Riethmueller
spacer
Firmware? Firm where?

First of all I'll explain the normal usage of the word 'Firmware'. Modern signal processors (DSP's) can be described (theoretically) as a small 'computer' or processor with an input and an output device. Some signal goes into it, is transformed (or not ...), and goes out of it again ... This 'transformation' is made by a small piece of software (a type of Operating System) which is called 'Firmware'. You will find firmware-data in a lot of electronic equipment such as in any SCSI-devices, telephone-controlling systems and even modern washing-machines. And oh wonder: also on modern soundcards J.

The French Dream

The EWS64 has a Digital Signal Processor (=DSP) developed by a French company called Dream (http://www.dream.fr). Terratec calls this chip in his manual 'synth'... The complete name is Dream SAM9407 (I will call it 'Dream' from now on). There is also another DSP on the EWS, the Cirrus Logic Crystal (called 'Codec') but this is not really interesting for us now.
Back to the Dream chip: This DSP is a single chip that uses one single interrupt of the PC-ISA-BUS and it uses a MPU-compatible (MPU is a older Roland standard for a midi port in a PC) port-address to establish communications with the software. Internally the Dream is able to address up to 64 MB of RAM (it needs at least 1 MB to work).

You can connect different digital in- and output devices to it such as a MIDI ports and it has 2 stereo digital in- and outputs. On the EWS one of the MIDI-Port, the Codec and (partially switchable) the 18 bit Philips DA/AD-converters are in default connected to the Dream.

What we have until now: a chip build into a system that allows to get Codec signals, digital and analog audio signals and MIDI signals in and out of the chip and the chip is able to read and write from an two the memory (on the SIMM Module of the EWS). Not more.

The default Firmware

Now comes the part of the Firmware: the Firmware is a piece of software that processes the input and output of these signals. How this is done is all developed by one (or a lot ...) programmers at the Dream company and by Terratec.

If companies like Terratec (or Hoontech and Guillemot) decide to use the Dream chip on their soundcards they are getting a default Firmware with it's source code and some development tools. Maybe they are even getting a useable documentation... J.

The default Firmware of the Dream chip implements all the main functions: MIDI (Wavetable + FM synthesis), MOD, WAVE, AUDIO-IN, CHORUS, REVERB, 4CH, PITCH-SHIFTER, FILTER, SURROUND etc.

Modifications

Terratec made some (not too much ...) modifications to the firmware. For example they invented the compressor for the clip on/off function, they increased the amount of max. wave channels from 8 to 32, they are using 16 of the 32 internal Dream MIDI channel for additional things like the MicroWave PC extension etc. One of the more important things: they increased the max. size of looped samples from 256kb to 512kb. They are even planning to break the 512kb limitation (by getting rid of the FM-algorithm it seems). Most important change: they changed the complete MIDI-Controller structure. While in the original Dream Firmware nearly everything is controlled by NRPN's (Non-Registered Program Numbers), they changed the structure so that it matches the structure of other Terratec soundcards (Maestro for example). This seems to be the reason why there are up to today still some problems with real-time editing of parameters.

Not where you think...

The Firmware itself is stored in the RAM of the soundcard. Not in the EEPROM as a lot of people think. The EEPROM on the EWS64 only holds the PnP configuration data (IRQ's, ports, etc.). This means that the Firmware needs to be loaded into the RAM at every startup of the system. It's saved on the Harddisk in the File EWS64_OS.BIN - make your you always have the latest version of it on your system and no copy of an old one
in C:\EWS64 or in the Windows-dirs.

Now, how does the Firmware perform it's task? The only connection from the PC to the EWS is the MPU-Port address (default is 330h). Over it the PC is able to read and write Data from and to the Dream chip. Some parameters are going directly through to the MIDI ports and some are accessing the Memory. Every Data that is used by the Dream chip (playing Wave-files, samples from Mod files, samples from soundbanks) must be stored in the RAM to be played. If you are playing a wav file the data goes through the driver to the MPU-port and is stored in the Dream RAM. Then it is played through the Dream Chip. You can notice this by playing small wav files while looking at the memory-amount display in
Setmanager.

The driver is the interface between the application and the MPU-port (=Firmware in this case). All data from the driver needs to be sent to the port and answers from the soundcard are read from the port by the driver (same backwards ...). It's a bit strange that Terratec has implemented no way to access the MPU-port directly. This is able on
other Dream based cards and there are some (not much) functions who would need that and only can be accessed by DOS(!) applications now ...
I wonder why they did not implement such a function (or is it just not documented?) since when they are releasing other Firmware files (such as the Vocoder Firmware) they need to update the whole driver to be able to make a front-end application (if it won't be a DOS application).

Future

In the future it will probably be possible to load and unload the Firmware while the system is running (not only on reboot). This will allow you to switch between different fx algorithms without rebooting.

The only thing I am (and others, too!) are missing now, is: a Firmware developers documentation with diagnose and development tools (come on Dream!).

This was long and some times a bit technical... But I hope that it made some things about the mystical 'Firmware' more clear J.

© 1998-1999, Computer ConText, Amsterdam, The Netherlands, except for contributions made by others.

Latest update on page: 08-02-99

at="%d-%m-%y" startspan -->08-02-99