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:
- 23:deb76bdf6f03
- Parent:
- 21:e3014c1bdf9c
diff -r 500b4f2953fa -r deb76bdf6f03 FMOscillator/FMOscillator.cpp --- a/FMOscillator/FMOscillator.cpp Sat Jan 31 10:17:22 2015 +0000 +++ b/FMOscillator/FMOscillator.cpp Sat Jan 31 10:44:08 2015 +0000 @@ -7,62 +7,32 @@ } -FMOscillator::FMOscillator(int opc, Timer *tim, Serial *ser, AOTTrigon *tri, I2C *i2clcd) +FMOscillator::FMOscillator(Timer *tim, Serial *ser, AOTTrigon *tri, I2C *i2clcd) { master = tim; serial = ser; trigon = tri; - opcount = opc; lcd = new AQM0802A(*i2clcd); - - operators = new FMOperator*[opcount]; - for(int i = 0; i < opcount; i++) { - operators[i] = new FMOperator(master, trigon); - } channels = new MIDIChannel*[16]; for(int i = 0; i < 16; i++) { - channels[i] = new MIDIChannel(lcd); + channels[i] = new MIDIChannel(lcd, master, trigon); } serial->baud(256000); serial->format(); serial->attach(this, &FMOscillator::midiReceived); master->start(); - - lcd->cls(); - lcd->printf("Welcome\n to "); - wait_ms(1000); - + lcd->cls(); lcd->printf("NuFM401\nFMDriver"); - wait_ms(1000); - - lcd->cls(); - lcd->printf("FMOpe\n%dbytes",sizeof(FMOperator)*opcount); - wait_ms(1000); - - lcd->cls(); - lcd->printf("FMOsc\n%dbytes",sizeof(FMOscillator)); - wait_ms(1000); - - lcd->cls(); - lcd->printf("MIDICh\n%dbytes",sizeof(MIDIChannel)*16); - wait_ms(1000); - - lcd->cls(); - lcd->printf("NuFM401\nSTAND BY"); } FMOscillator::~FMOscillator() { - for(int i = 0; i < opcount; i++) { - delete operators[i]; - } for(int i = 0; i < 16; i++) { delete channels[i]; } - delete[] operators; delete[] channels; delete lcd; }