12-polyphonic "chiptune" MIDI synthesizer for LPC1768 (Standalone version)
Dependencies: ClockControl PowerControl mbed
Revision 5:7bc917d03bd6, committed 2014-12-09
- Comitter:
- kayekss
- Date:
- Tue Dec 09 16:13:06 2014 +0000
- Parent:
- 4:b2423ad4b248
- Child:
- 6:cda45a5e723e
- Commit message:
- Supports "Reset all controllers" messages
Changed in this revision
--- a/events.cpp Tue Dec 09 15:04:13 2014 +0000 +++ b/events.cpp Tue Dec 09 16:13:06 2014 +0000 @@ -280,7 +280,30 @@ } } +void resetAllControllers(char messageBytes[3]) { + uint8_t channel = messageBytes[0] & 0x0f; + + for (uint8_t i = 0; i < 16; i++) { + ch.setVolume(channel, 100); + ch.setExpression(channel, 127); + ch.setPitchBend(channel, 0); + } + + if (dumpMode == DUMP_INST || dumpMode == DUMP_INST_DETAIL) { + console.printf("%-12s", "Reset all ct"); + dumpInstrumentList(); + } +} + void sendSystemReset() { + // Reset channel controller/programs + for (uint8_t i = 0; i < 16; i++) { + ch.setVolume(i, 100); + ch.setExpression(i, 127); + ch.setPitchBend(i, 0); + ch.setWave(i, Wavetable::waveDefList[0]); + } + // Initialize all notes for (uint16_t i = 0; i < NUM_INSTRUMENT; i++) { noteSent[i].noteOnMs = 0; noteSent[i].channel = 0; @@ -292,7 +315,7 @@ console.printf("%-12s", "System reset"); dumpInstrumentList(); } - for (uint8_t i = 0; i < NUM_INSTRUMENT; i++) { + for (uint16_t i = 0; i < NUM_INSTRUMENT; i++) { gemCore.noteOff(i); gemCore.volume(i, 100); gemCore.expression(i, 127);
--- a/events.h Tue Dec 09 15:04:13 2014 +0000 +++ b/events.h Tue Dec 09 16:13:06 2014 +0000 @@ -8,6 +8,7 @@ void sendPitchBend(char messageBytes[3]); void sendSystemReset(); void allNoteOff(char messageBytes[3]); +void resetAllControllers(char messageBytes[3]); void dumpInstrumentList(); #endif
--- a/parser.cpp Tue Dec 09 15:04:13 2014 +0000 +++ b/parser.cpp Tue Dec 09 16:13:06 2014 +0000 @@ -95,6 +95,9 @@ case 0x7b: // All note off allNoteOff(messageBytes); break; + case 0x79: // Reset all controllers + resetAllControllers(messageBytes); + break; default: sendControlChange(messageBytes); break;