Let's do some math:
16 tracks * 44 ksample/s *2 channels *16 bit = 22.528 Mbps
This is the minimum speed you need for the SPI interface, if you want to transmit all the data through a single serial port. Can be done, with an adequate clock, but you need a fast SD card (see here for the speed).
Then there is the microcontroller: you have to add 16 tracks and output them through a DAC, so you have 44*2 ksamples for each track, or
$$ 44 \cdot 10^{3} \cdot 2 \cdot 16 = 1408 \cdot 10^{3} $$
16-bit sums for every sample (probably with some scaling to avoid overflow) result in about 1.4 M operations/sec, that can be handled by a good 32-bit microcontroller. Probably a Cortex-M3, or better M4 (but M3 is probably better documented) can work for you.
I've just seen this which can be clocked up to 204 MHz, has 4 SPI interfaces, up to 40 MB/s, and has also a floating point unit that can help in the accumulation process (but may be too slow). You may also use the dual core structure to handle separately the processing and the output.
But for the DAC I think that you should go for an external converter, specifically designed for audio (which means 16 bit probably).
Update
It's not so clear how are you going to manage the 16 different tracks on the SD:
- what about pre-loading tracks on the internal memory of the MCU?
Check the I2S interface, which is a 4-wire serial protocol especially designed for audio applications.
Important question:
You said that you want also to record tracks and save them to the SD card: do you want to do that at the same time? You need the controller to encode the audio in WAV and store it, and the writing bandwith of the SD card is lower.
The looping feature WILL need some buffering memory (may also use the internal memory) because looping requires real time operation, and the SD card will introduce too much latency. You may need an external RAM, and you may also think about storing some data there to reduce delays.
The core clock of the CPU isn't received directly from the motherboard. That clock is usually much slower (often by a factor of 10 or more) than the internal frequency of the CPU. Instead, the clock signal from the motherboard is used as the reference frequency for a higher frequency phase locked loop controlled oscillator inside the CPU. The generated clock runs at some multiple of the reference clock, and that multiple can be changed by setting certain registers in the CPU. The actual generation of the clock is done purely in hardware.
To reduce power even further, the CPU also signals to the voltage regulator supplying its core voltage to run at a lower set point. At lower frequencies the CPU can run at a lower voltage without malfunctioning, and because power consumption is proportional to the square of the voltage, even a small reduction in voltage can save a large amount of power.
The voltage and frequency scaling is done by hardware, but the decision to run in a low power mode is made by software (the OS). How the OS determines the optimal mode to run in is a separate, messier, problem, but it likely comes down to mostly what %time has the system been idle lately. Mostly idle, lower the frequency. Mostly busy, raise the frequency. Once the OS decides the frequency to run at, it's just a matter of setting a register.
Reference: "Enhanced Intel SpeedStep Technology for the Intel Pentium M Processor"
Best Answer
I don't know anything about the
AT91SAM3X8E
specifically, but I'll guess an answer based on my knowledge of ICs.Theoretically, there's no reason why you wouldn't be able to dynamically change the master clock frequency in a digital circuit. What you have to be careful of is that during the switching you cannot have any two successive rising edges that violate the maximum frequency of the device. If you imagine switching from one waveform to another when the 'switched from' clock is falling and the 'switched to' clock is rising, then you could get a clock period for one cycle which could be much less than the period of either clock. This would blow the timing on several of the paths and leave your micro in an illegal state.
If you have some way to guarantee that you can properly synchronize the transition between the clocks without creating such a pulse, I can't think of any problem with it.