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/MIDIChannel.h
- Revision:
- 17:2e577c6000cf
- Child:
- 19:f0dcf591c5dd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FMOscillator/MIDIChannel.h Tue Jan 27 12:56:33 2015 +0000 @@ -0,0 +1,81 @@ +#pragma once +#include "mbed.h" +#include "FMOperator.h" +#include "MIDIChannel.h" + +class MIDIChannel +{ +public: + MIDIChannel(); + + inline void setModulationMSB(char msb) { + modulation = msb; + } + inline void setModulationLSB(char lsb) { + //modulation = lsb | (modulation & 0x3f80); + } + inline void setPortamentoTime(char val) { + portamentoTime = val; + } + inline void setPortamentoSwitch(bool val) { + portamento = val; + } + inline void setVolume(char val) { + volume = val; + } + inline void setExpression(char val) { + expression = val; + } + inline void setPanpot(char val) { + panpot = val; + } + inline void startHold1() { + hold1 = true; + } + inline void endHold1() { + hold1 = false; + } + inline void setDataEntryMSB(char msb) { + dataEntryMSB = msb; + } + inline void setDataEntryLSB(char lsb){ + dataEntryLSB = lsb; + } + inline void setNRPNMSB(char msb){ + nrpnMSB = msb; + } + inline void setNRPNLSB(char lsb){ + nrpnLSB = lsb; + } + inline void setRPNMSB(char msb){ + rpnMSB = msb; + } + inline void setRPNLSB(char lsb){ + rpnLSB = lsb; + } + + void allSoundOff(); + void allNoteOff(); + + +private: + char dataEntryMSB; + char dataEntryLSB; + char nrpnMSB; + char nrpnLSB; + char rpnMSB; + char rpnLSB; + char modulation; + char portamentoTime; + bool portamento; + char volume; + char panpot; + char expression; + bool hold1; + +}; + + + + +