This program generates sound by using FM tone generator YMF825 via SPI.
main.cpp@0:c54d59d6fb78, 2018-01-05 (annotated)
- Committer:
- hasebems
- Date:
- Fri Jan 05 22:58:49 2018 +0000
- Revision:
- 0:c54d59d6fb78
???????????????
Who changed what in which revision?
User | Revision | Line number | New 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 | } |