This program generates sound by using FM tone generator YMF825 via SPI.

Dependencies:   microbit

Committer:
hasebems
Date:
Fri Jan 05 22:58:49 2018 +0000
Revision:
0:c54d59d6fb78
???????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hasebems 0:c54d59d6fb78 1 #include "MicroBit.h"
hasebems 0:c54d59d6fb78 2
hasebems 0:c54d59d6fb78 3 extern "C" {
hasebems 0:c54d59d6fb78 4 #include "fmif.h"
hasebems 0:c54d59d6fb78 5 };
hasebems 0:c54d59d6fb78 6 #include "fmsd1.h"
hasebems 0:c54d59d6fb78 7
hasebems 0:c54d59d6fb78 8 //MicroBit uBit;
hasebems 0:c54d59d6fb78 9 MicroBitDisplay uBitDisplay;
hasebems 0:c54d59d6fb78 10 MicroBitMessageBus uBitMessageBus;
hasebems 0:c54d59d6fb78 11 MicroBitButton buttonA(MICROBIT_PIN_BUTTON_A, MICROBIT_ID_BUTTON_A);
hasebems 0:c54d59d6fb78 12 //MicroBitI2C i2c(I2C_SDA0, I2C_SCL0);
hasebems 0:c54d59d6fb78 13
hasebems 0:c54d59d6fb78 14 int tnum = 60;
hasebems 0:c54d59d6fb78 15
hasebems 0:c54d59d6fb78 16 const ManagedString tname[12] = {
hasebems 0:c54d59d6fb78 17 "C","c","D","d","E","F","f","G","g","A","a","B"
hasebems 0:c54d59d6fb78 18 };
hasebems 0:c54d59d6fb78 19
hasebems 0:c54d59d6fb78 20 void onButtonA(MicroBitEvent)
hasebems 0:c54d59d6fb78 21 {
hasebems 0:c54d59d6fb78 22 uBitDisplay.print(tname[tnum-60]);
hasebems 0:c54d59d6fb78 23 }
hasebems 0:c54d59d6fb78 24
hasebems 0:c54d59d6fb78 25 int main( void )
hasebems 0:c54d59d6fb78 26 {
hasebems 0:c54d59d6fb78 27 // uBit.init();
hasebems 0:c54d59d6fb78 28
hasebems 0:c54d59d6fb78 29 initSPI();
hasebems 0:c54d59d6fb78 30 initSD1();
hasebems 0:c54d59d6fb78 31 Fmdriver_init();
hasebems 0:c54d59d6fb78 32
hasebems 0:c54d59d6fb78 33 Fmdriver_sendMidi(0xc0);
hasebems 0:c54d59d6fb78 34 Fmdriver_sendMidi(0x04);
hasebems 0:c54d59d6fb78 35
hasebems 0:c54d59d6fb78 36 uBitMessageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
hasebems 0:c54d59d6fb78 37
hasebems 0:c54d59d6fb78 38 while(1){
hasebems 0:c54d59d6fb78 39 // if ( buttonA.isPressed() ){
hasebems 0:c54d59d6fb78 40 // Fmdriver_sendMidi(0x90);
hasebems 0:c54d59d6fb78 41 // Fmdriver_sendMidi(0x30);
hasebems 0:c54d59d6fb78 42 // Fmdriver_sendMidi(0x7f);
hasebems 0:c54d59d6fb78 43 // }
hasebems 0:c54d59d6fb78 44
hasebems 0:c54d59d6fb78 45 Fmdriver_sendMidi(0x90);
hasebems 0:c54d59d6fb78 46 Fmdriver_sendMidi(tnum);
hasebems 0:c54d59d6fb78 47 Fmdriver_sendMidi(0x7f);
hasebems 0:c54d59d6fb78 48 wait_ms(200);
hasebems 0:c54d59d6fb78 49 Fmdriver_sendMidi(0x90);
hasebems 0:c54d59d6fb78 50 Fmdriver_sendMidi(tnum);
hasebems 0:c54d59d6fb78 51 Fmdriver_sendMidi(0);
hasebems 0:c54d59d6fb78 52 wait_ms(200);
hasebems 0:c54d59d6fb78 53 tnum++;
hasebems 0:c54d59d6fb78 54 if ( tnum>72 ){ tnum=60;}
hasebems 0:c54d59d6fb78 55 }
hasebems 0:c54d59d6fb78 56
hasebems 0:c54d59d6fb78 57 return 0;
hasebems 0:c54d59d6fb78 58 }