Sorry if this is fairly widely known, I couldn't find all the info together in one place - basically I've got this working by connecting the DAC (a 10bit MCP4811 in my case) via the same pins used for the Arduino-based Bleep Drum:
(the pin numbers are for the ATMega328 rather than the Arduino pins but they're easily translatable via the charts at
http://forum.arduino.cc/index.php/topic,146315.0.html )
The 4801 series DACs have SHDN on pin 6 rather than REFA but seem to work OK if you leave it disconnected, plus handily you can then run the Bleep Drum sketch on the same setup.
Then in MozziGuts.cpp you need to include the SPI library at the start (mine seems to need the full path probably due to me not understanding .h files properly)
#include "C:\Documents and Settings\DGreen\My Documents\arduino-1.0.3\libraries\SPI\SPI.h">
...and in ISR(TIMER1_OVF_vect, ISR_BLOCK), just after output_buffer_tail++; comment out the Mozzi audio output...
// AUDIO_CHANNEL_1_OUTPUT_REGISTER = output_buffer[(unsigned char)output_buffer_tail & (unsigned char)(BUFFER_NUM_CELLS-1)]; // 1us, 2.5us with longs
...and paste in the following (you can theoretically leave the previous line in and take output from either PWM pin 9 or the DAC, though I think there's a performance hit for doing so)
uint16_t dac_out = ( 0b0111000000000000 | ( (output_buffer[(unsigned char)output_buffer_tail & (unsigned char)(BUFFER_NUM_CELLS-1)])<<1 ));
PORTB &= 0b11111011; //faster digitalWrite(10,LOW);
SPI.transfer(dac_out>>8);
SPI.transfer(dac_out & 255);
PORTB |= 0b00000100; // faster digitalWrite(10,HIGH);
(the <<1 in the first line is like a software volume control depending how many bits you have available; <<2 or <<3 probably double the volume each time)
...then finally add these two SPI controls to startMozzi(int control_rate_hz)
void startMozzi(int control_rate_hz)
{
SPI.begin();
SPI.setBitOrder(MSBFIRST);
(I also have to #include "SPI.h" at the start of my main Mozzi sketches but there are probably ways around that - I started out incorporating the SPI.transfers into my updateAudio() functions where they kind of worked but are prone to timing irregularities that the excellent buffering in MozziGuts.cpp avoids)