EmbeddedRelated.com
Forums

hobby project - 16 bit digital audio mixer using m68k

Started by Alexander Miller May 17, 2004
Hello all,

As a hobbyist project I am planning on constructing a digital audio
mixer using a M68000 processor, along with some 16 bit serial A/D
(MAX195) and D/A (MAX542) converters from Maxim.  I will probably use
a M68681 as a UART; also, I would like to use an analog fader (pot)
fed into an 8 bit parallel ADC as the level control for each input
channel.  Adding a mute toggle to each input would take practically no
extra work so I'm planning on doing this as well.

For the initial phase I am setting my goals as follows:
    - 16 bit resolution (external)
    - 48 kHz sampling rate (per channel)
    - 2 input channels (mono)
    - 1 output channel (mono)

The idea is to take two mono, line-level, analog input signals, sample
them at 48 kHz or so (at 16 bits), "process" them, send a 16 bit
digital output and convert it to a mono, line-level, analog output. 
Right now my "processing" will simply be something like:  out = (
a*in1 + b*in2 ) / 2
where a & b are coefficients obtained from the position of the faders.
 I have no experience with DSP yet (junior level computer engineering
student), but a good amount of experience with microcontroller systems
and an excellent book on the 68000 (Microprocessor Systems Design, by
Alan Clements), as well as a whole
bunch of 68k family processors and support chips.

This is not supposed to be a commercially viable project (obiviously,
I hope), but it would be nice to have a piece of homebrew digital
equipment I could use as a DJ (I'd add phono amp's to use it with
turntables).  Thank you for reading this far, I know I ramble, but I
would appreciate any advice on the feasibility of this project, ways
to make it easier or better (without radical changes to the
architecture), and especially the limits I will eventually encounter
if I attempt to add more channels (stereo?) or "DSP" features such as
equalization (this is probably not feasible on a 68000, but I can't
easily tell).

-Thanks in advance for all helpful replies! =^)
Alexander Miller

(this was cross-posted to comp.arch.hobbyist but it appears that new
posts aren't appearing there, at least through groups.google.com)
On 16 May 2004 22:06:01 -0700, abmiller@vt.edu (Alexander Miller)
wrote:


>As a hobbyist project I am planning on constructing a digital audio >mixer using a M68000 processor,
Find out the clock frequency for the original 68K processor. Find out how many clock cycles are required by average instructions. Now you can calculate the average number of instructions are available each second. Divide this figure with 48000 (your sample rate) and you know how many instructions are available to process each sample. I don't remember, if the original 68K already had a fast multiplier, but since you are going to need at least two multiplications for each cycle, check out how many clock cycles are required by the multiplications.
>along with some 16 bit serial A/D >(MAX195) and D/A (MAX542) converters from Maxim.
Typically serial converters may require multiple machine instructions to handle each sample, thus reducing the number of instructions available for the actually processing of the audio sample. You may be able to build a simple main loop, which reads the ADCs, performs some simple operations on the two audio samples and write the result to a DAC. If the loop repetition rate is 48 kHz or something much less is hard to tell, without doing the actual calculations.
>I will probably use a M68681 as a UART;
And when did you intend to find the time to service this ?
>also, I would like to use an analog fader (pot) >fed into an 8 bit parallel ADC as the level control for each input >channel.
This still consumes the available cycles for each audio sample. If you are using some kind of SAR ADC, it might be a good idea to read only one bit during each 48 kHz cycle, thus, the 8 bit SAR sample rate would be 6 kHz or less, but it would not cause too much variation in the main loop cycle times. I would suggest using some more modern processor requiring less external hardware and with more computing power, so that you have a decent number of machine instructions available to process each sample. Paul
In article <e2d1b45c.0405162106.dfd8fbb@posting.google.com>,
Alexander Miller <abmiller@vt.edu> wrote:
-Hello all,
-
-As a hobbyist project I am planning on constructing a digital audio
-mixer using a M68000 processor, along with some 16 bit serial A/D
-(MAX195) and D/A (MAX542) converters from Maxim.  I will probably use
-a M68681 as a UART; also, I would like to use an analog fader (pot)
-fed into an 8 bit parallel ADC as the level control for each input
-channel.  Adding a mute toggle to each input would take practically no
-extra work so I'm planning on doing this as well.
-
-For the initial phase I am setting my goals as follows:
-    - 16 bit resolution (external)
-    - 48 kHz sampling rate (per channel)
-    - 2 input channels (mono)
-    - 1 output channel (mono)
-
-The idea is to take two mono, line-level, analog input signals, sample
-them at 48 kHz or so (at 16 bits), "process" them, send a 16 bit
-digital output and convert it to a mono, line-level, analog output. 
-Right now my "processing" will simply be something like:  out = (
-a*in1 + b*in2 ) / 2
-where a & b are coefficients obtained from the position of the faders.
- I have no experience with DSP yet (junior level computer engineering
-student), but a good amount of experience with microcontroller systems
-and an excellent book on the 68000 (Microprocessor Systems Design, by
-Alan Clements), as well as a whole
-bunch of 68k family processors and support chips.
-
-This is not supposed to be a commercially viable project (obiviously,
-I hope), but it would be nice to have a piece of homebrew digital
-equipment I could use as a DJ (I'd add phono amp's to use it with
-turntables).  Thank you for reading this far, I know I ramble, but I
-would appreciate any advice on the feasibility of this project, ways
-to make it easier or better (without radical changes to the
-architecture), and especially the limits I will eventually encounter
-if I attempt to add more channels (stereo?) or "DSP" features such as
-equalization (this is probably not feasible on a 68000, but I can't
-easily tell).

Well, at first glance it seems like your hardware will create a tough climb
for your goal. But the problem is that I'm not really sure what your goal is:

1) Learning 68K stuff.
2) Homebrewing.
3) Building a usuable mixer.

If it's 1) Then by all means proceed. However if the main goal is either 2) or
3) then you should look at new hardware that integrates all (or most) of the 
functionality you're talking about. A perfect example is Microchips new dsPIC
hardware which has all the periperals you need along with a 30 MIPS DSP core.
Microchip is in fact sponsoring a design contest where you can get a
development board for $140. Here's the link:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2031

TI and AMD also have chips that are much more suitable for the project. In
fact if I were to stay in Motorola space then the 56002 DSP (or its current
equivalent) would be a better choice.

This is a DSP project. Attacking it without DSP hardware is like getting into
the ring with one hand tied behind your back.

-
--Thanks in advance for all helpful replies! =^)
-Alexander Miller
-
-(this was cross-posted to comp.arch.hobbyist but it appears that new
-posts aren't appearing there, at least through groups.google.com)

That newsgroup is moderated. Your post will show up soon enough.

BAJ
On 16 May 2004 22:06:01 -0700, abmiller@vt.edu (Alexander Miller)
wrote:

>Hello all, > >As a hobbyist project I am planning on constructing a digital audio >mixer using a M68000 processor, along with some 16 bit serial A/D >(MAX195) and D/A (MAX542) converters from Maxim. I will probably use >a M68681 as a UART; also, I would like to use an analog fader (pot) >fed into an 8 bit parallel ADC as the level control for each input >channel. Adding a mute toggle to each input would take practically no >extra work so I'm planning on doing this as well. > >For the initial phase I am setting my goals as follows: > - 16 bit resolution (external) > - 48 kHz sampling rate (per channel) > - 2 input channels (mono) > - 1 output channel (mono)
snip Totally off topic, well sort of try the alesis al3101 dsp, designed for audio, very cheap and digital i/o onboard The AL3101 is a fast signal processor optimised for signal filtering, equalisation and dynamics processing. Large word size provides easy, accurate algorithm creation for audio and other high dynamic range applications. It operates stand-alone with a serial PROM or in conjunction with a host microprocessor. An internal PLL eliminates the need for external high frequency clocks. data on http://www.profusionplc.com/product-frame.htm check out "wavefront" semiconductors martin Three things are certain: Death, taxes and lost data. Guess which has occurred.