Nucleo F401REでFM音源を実装するやつ 外部DACとオペアンプを利用 現在はMCP4922とNJM2737
Dependencies: AOTTrigon I2CEEPROM MCP4922 AQM0802A mbed
Fork of NuMidi401 by
NuFM401
Nucleo F401用の自作ソフトウェアMIDI音源
概要
だいたいそんなもんです。
特徴
- ブレッドボードの上で組める程度には簡単な回路構成
- 外部のDACにMCP4922を採用
- 念のためのボルテージフォロアとしてNJM2737Dを採用
- バンク用EEPROMに24FC1025を採用
- シリアル経由でMIDIデータを受信することで操作
補足
シリアル <=> MIDI のドライバにはHairless-MIDISerialをオススメします。 仮想MIDIケーブルはとりあえずMIDI Yokeで。
Diff: FMOscillator/FMOscillator.cpp
- Revision:
- 14:06785925915e
- Parent:
- 13:e11380ceb460
- Child:
- 15:b03677948732
--- a/FMOscillator/FMOscillator.cpp Sat Jan 17 03:57:58 2015 +0000 +++ b/FMOscillator/FMOscillator.cpp Sat Jan 17 03:58:48 2015 +0000 @@ -15,31 +15,31 @@ unsigned char st = serial->getc(); switch(st >> 4) { case 0x8: - midiNoteOff(st & 0xf, midis.getc(), midis.getc()); + midiNoteOff(st & 0xf, serial->getc(), serial->getc()); break; case 0x9: - midiNoteOn(st & 0xf, midis.getc(), midis.getc()); + midiNoteOn(st & 0xf, serial->getc(), serial->getc()); break; case 0xa: - midiPolyphonicKeyPressure(st & 0xf, midis.getc(), midis.getc()); + midiPolyphonicKeyPressure(st & 0xf, serial->getc(), serial->getc()); break; case 0xb: char b2 = midis.getc(); if (b2 >= 120) { - midiChannelMode(st & 0xf, b2, midis.getc()); + midiChannelMode(st & 0xf, b2, serial->getc()); } else { - midiControlChange(st & 0xf, b2, midis.getc()); + midiControlChange(st & 0xf, b2, serial->getc()); } break; case 0xc: - midiProgramChange(st & 0xf, midis.getc()); + midiProgramChange(st & 0xf, serial->getc()); break; case 0xd: - midiChannelPressure(st & 0xf, midis.getc()); + midiChannelPressure(st & 0xf, serial->getc()); break; case 0xe: - char LSB = midis.getc(); - char MSB = midis.getc(); + char LSB = serial->getc(); + char MSB = serial->getc(); midiPitchBend(st & 0xf, ((LSB << 7) | (MSB << 7)) + 8192); break; case 0xf: