Changes to Music.h and keywords.txt

added support for the miniCFO platform to work with the audio
This commit is contained in:
Jakob Bak 2013-05-15 09:44:07 +02:00
parent 4e8ad1e132
commit 0b60af4044
2 changed files with 44 additions and 15 deletions

View File

@ -338,10 +338,15 @@ ISR(TIMER2_COMPA_vect) { // timer 2 is audio interrupt timer
void inline MMusic::synthInterrupt8bit() void inline MMusic::synthInterrupt8bit()
{ {
PORTD &= ~(1<<3); PORTD &= ~(1<<3);
// Frame sync low for SPI (making it low here so that we can measure lenght of interrupt with scope) // Frame sync low for SPI (making it low here so that we can measure lenght of interrupt with scope)
#ifdef CFO
PORTB &= ~(1<<2);
#else
PORTD &= ~(1<<6); PORTD &= ~(1<<6);
#endif
accumulator1 = accumulator1 + period1; accumulator1 = accumulator1 + period1;
index1 = accumulator1 >> 8; index1 = accumulator1 >> 8;
@ -436,8 +441,11 @@ void inline MMusic::synthInterrupt8bit()
while (!(SPSR & (1<<SPIF))); // Maybe this can be optimised while (!(SPSR & (1<<SPIF))); // Maybe this can be optimised
// Frame sync high // Frame sync high
#ifdef CFO
PORTB |= (1<<2);
#else
PORTD |= (1<<6); PORTD |= (1<<6);
#endif
} }
@ -453,7 +461,11 @@ void inline MMusic::synthInterrupt8bit()
void MMusic::synthInterrupt12bitSine() void MMusic::synthInterrupt12bitSine()
{ {
// Frame sync low for SPI (making it low here so that we can measure lenght of interrupt with scope) // Frame sync low for SPI (making it low here so that we can measure lenght of interrupt with scope)
#ifdef CFO
PORTB &= ~(1<<2);
#else
PORTD &= ~(1<<6); PORTD &= ~(1<<6);
#endif
accumulator1 = accumulator1 + period1; accumulator1 = accumulator1 + period1;
index1 = accumulator1 >> 4; index1 = accumulator1 >> 4;
@ -544,8 +556,11 @@ void MMusic::synthInterrupt12bitSine()
while (!(SPSR & (1<<SPIF))); // Maybe this can be optimised while (!(SPSR & (1<<SPIF))); // Maybe this can be optimised
// Frame sync high // Frame sync high
#ifdef CFO
PORTB |= (1<<2);
#else
PORTD |= (1<<6); PORTD |= (1<<6);
#endif
// Frame sync high // Frame sync high
PORTD |= (1<<3); PORTD |= (1<<3);
@ -585,14 +600,22 @@ void MMusic::init()
// sck + mosi + ss // sck + mosi + ss
DDRB |= (1 << DDB2) | (1 << DDB3) | (1 << DDB5); DDRB |= (1 << DDB2) | (1 << DDB3) | (1 << DDB5);
// dac_cs output // dac_cs output
#ifdef CFO
DDRB |= (1 << DDB2) | (1 << DDB3);
#else
DDRD |= (1 << DDD6) | (1 << DDB3); DDRD |= (1 << DDD6) | (1 << DDB3);
#endif
// set up SPI port // set up SPI port
SPCR = 0x50; SPCR = 0x50;
SPSR = 0x01; SPSR = 0x01;
// DAC frame sync HIGH, so that the SPI port doesn't start wirting straight away // DAC frame sync HIGH, so that the SPI port doesn't start wirting straight away
#ifdef CFO
PORTB |= (1<<2);
#else
PORTD |= (1<<6); PORTD |= (1<<6);
#endif
// waveform setup // waveform setup
//setSine(); //setSine();
@ -1089,8 +1112,13 @@ void MMidi::aftertouch(uint8_t channel, uint8_t note, uint8_t pressure) {
void MMidi::controller(uint8_t channel, uint8_t number, uint8_t value) { void MMidi::controller(uint8_t channel, uint8_t number, uint8_t value) {
//Serial.print(value); /* Serial.println();
Serial.print(channel);
Serial.print('-');
Serial.print(number);
Serial.print('-');
Serial.println(value);
*/
switch(number) { switch(number) {
case DETUNE: case DETUNE:
Music.setDetune(value/5120.0); Music.setDetune(value/5120.0);

View File

@ -17,10 +17,10 @@ Midi KEYWORD1
# Methods and Functions (KEYWORD2) # Methods and Functions (KEYWORD2)
####################################### #######################################
init KEYWORD2 init KEYWORD2
checkMidi KEYWORD2 checkMidi KEYWORD2
enableEnvelope KEYWORD2 enableEnvelope KEYWORD2
diableEnvelope KEYWORD2 disableEnvelope KEYWORD2
setEnvStage KEYWORD2 setEnvStage KEYWORD2
setDetune KEYWORD2 setDetune KEYWORD2
setDetune1 KEYWORD2 setDetune1 KEYWORD2
@ -37,16 +37,16 @@ setWaveform KEYWORD2
setWaveform1 KEYWORD2 setWaveform1 KEYWORD2
setWaveform2 KEYWORD2 setWaveform2 KEYWORD2
setWaveform3 KEYWORD2 setWaveform3 KEYWORD2
setGain KEYWORD2 setGain KEYWORD2
setGain1 KEYWORD2 setGain1 KEYWORD2
setGain2 KEYWORD2 setGain2 KEYWORD2
setGain3 KEYWORD2 setGain3 KEYWORD2
getGain KEYWORD2 getGain KEYWORD2
getGain1 KEYWORD2 getGain1 KEYWORD2
getGain2 KEYWORD2 getGain2 KEYWORD2
getGain3 KEYWORD2 getGain3 KEYWORD2
noteOn KEYWORD2 noteOn KEYWORD2
noteOff KEYWORD2 noteOff KEYWORD2
getNoteFrequency KEYWORD2 getNoteFrequency KEYWORD2
setAttack KEYWORD2 setAttack KEYWORD2
setDecay KEYWORD2 setDecay KEYWORD2
@ -54,11 +54,11 @@ setSustain KEYWORD2
setRelease KEYWORD2 setRelease KEYWORD2
update_position KEYWORD2 update_position KEYWORD2
update_mass_spring_damper KEYWORD2 update_mass_spring_damper KEYWORD2
torque KEYWORD2 torque KEYWORD2
direction KEYWORD2 direction KEYWORD2
stop KEYWORD2 stop KEYWORD2
start KEYWORD2 start KEYWORD2
restart KEYWORD2 restart KEYWORD2
####################################### #######################################
@ -67,4 +67,5 @@ restart KEYWORD2
NUM_OSCILLATORS LITERAL1 NUM_OSCILLATORS LITERAL1
BIT_DEPTH LITERAL1 BIT_DEPTH LITERAL1
MIDI LITERAL1 MIDI LITERAL1
MIDI_CHANNEL LITERAL1