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で。
FMOscillator/MIDIChannel.h@17:2e577c6000cf, 2015-01-27 (annotated)
- Committer:
- kb10uy
- Date:
- Tue Jan 27 12:56:33 2015 +0000
- Revision:
- 17:2e577c6000cf
- Child:
- 19:f0dcf591c5dd
MIDIChannel????ControlChange?????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kb10uy | 17:2e577c6000cf | 1 | #pragma once |
kb10uy | 17:2e577c6000cf | 2 | #include "mbed.h" |
kb10uy | 17:2e577c6000cf | 3 | #include "FMOperator.h" |
kb10uy | 17:2e577c6000cf | 4 | #include "MIDIChannel.h" |
kb10uy | 17:2e577c6000cf | 5 | |
kb10uy | 17:2e577c6000cf | 6 | class MIDIChannel |
kb10uy | 17:2e577c6000cf | 7 | { |
kb10uy | 17:2e577c6000cf | 8 | public: |
kb10uy | 17:2e577c6000cf | 9 | MIDIChannel(); |
kb10uy | 17:2e577c6000cf | 10 | |
kb10uy | 17:2e577c6000cf | 11 | inline void setModulationMSB(char msb) { |
kb10uy | 17:2e577c6000cf | 12 | modulation = msb; |
kb10uy | 17:2e577c6000cf | 13 | } |
kb10uy | 17:2e577c6000cf | 14 | inline void setModulationLSB(char lsb) { |
kb10uy | 17:2e577c6000cf | 15 | //modulation = lsb | (modulation & 0x3f80); |
kb10uy | 17:2e577c6000cf | 16 | } |
kb10uy | 17:2e577c6000cf | 17 | inline void setPortamentoTime(char val) { |
kb10uy | 17:2e577c6000cf | 18 | portamentoTime = val; |
kb10uy | 17:2e577c6000cf | 19 | } |
kb10uy | 17:2e577c6000cf | 20 | inline void setPortamentoSwitch(bool val) { |
kb10uy | 17:2e577c6000cf | 21 | portamento = val; |
kb10uy | 17:2e577c6000cf | 22 | } |
kb10uy | 17:2e577c6000cf | 23 | inline void setVolume(char val) { |
kb10uy | 17:2e577c6000cf | 24 | volume = val; |
kb10uy | 17:2e577c6000cf | 25 | } |
kb10uy | 17:2e577c6000cf | 26 | inline void setExpression(char val) { |
kb10uy | 17:2e577c6000cf | 27 | expression = val; |
kb10uy | 17:2e577c6000cf | 28 | } |
kb10uy | 17:2e577c6000cf | 29 | inline void setPanpot(char val) { |
kb10uy | 17:2e577c6000cf | 30 | panpot = val; |
kb10uy | 17:2e577c6000cf | 31 | } |
kb10uy | 17:2e577c6000cf | 32 | inline void startHold1() { |
kb10uy | 17:2e577c6000cf | 33 | hold1 = true; |
kb10uy | 17:2e577c6000cf | 34 | } |
kb10uy | 17:2e577c6000cf | 35 | inline void endHold1() { |
kb10uy | 17:2e577c6000cf | 36 | hold1 = false; |
kb10uy | 17:2e577c6000cf | 37 | } |
kb10uy | 17:2e577c6000cf | 38 | inline void setDataEntryMSB(char msb) { |
kb10uy | 17:2e577c6000cf | 39 | dataEntryMSB = msb; |
kb10uy | 17:2e577c6000cf | 40 | } |
kb10uy | 17:2e577c6000cf | 41 | inline void setDataEntryLSB(char lsb){ |
kb10uy | 17:2e577c6000cf | 42 | dataEntryLSB = lsb; |
kb10uy | 17:2e577c6000cf | 43 | } |
kb10uy | 17:2e577c6000cf | 44 | inline void setNRPNMSB(char msb){ |
kb10uy | 17:2e577c6000cf | 45 | nrpnMSB = msb; |
kb10uy | 17:2e577c6000cf | 46 | } |
kb10uy | 17:2e577c6000cf | 47 | inline void setNRPNLSB(char lsb){ |
kb10uy | 17:2e577c6000cf | 48 | nrpnLSB = lsb; |
kb10uy | 17:2e577c6000cf | 49 | } |
kb10uy | 17:2e577c6000cf | 50 | inline void setRPNMSB(char msb){ |
kb10uy | 17:2e577c6000cf | 51 | rpnMSB = msb; |
kb10uy | 17:2e577c6000cf | 52 | } |
kb10uy | 17:2e577c6000cf | 53 | inline void setRPNLSB(char lsb){ |
kb10uy | 17:2e577c6000cf | 54 | rpnLSB = lsb; |
kb10uy | 17:2e577c6000cf | 55 | } |
kb10uy | 17:2e577c6000cf | 56 | |
kb10uy | 17:2e577c6000cf | 57 | void allSoundOff(); |
kb10uy | 17:2e577c6000cf | 58 | void allNoteOff(); |
kb10uy | 17:2e577c6000cf | 59 | |
kb10uy | 17:2e577c6000cf | 60 | |
kb10uy | 17:2e577c6000cf | 61 | private: |
kb10uy | 17:2e577c6000cf | 62 | char dataEntryMSB; |
kb10uy | 17:2e577c6000cf | 63 | char dataEntryLSB; |
kb10uy | 17:2e577c6000cf | 64 | char nrpnMSB; |
kb10uy | 17:2e577c6000cf | 65 | char nrpnLSB; |
kb10uy | 17:2e577c6000cf | 66 | char rpnMSB; |
kb10uy | 17:2e577c6000cf | 67 | char rpnLSB; |
kb10uy | 17:2e577c6000cf | 68 | char modulation; |
kb10uy | 17:2e577c6000cf | 69 | char portamentoTime; |
kb10uy | 17:2e577c6000cf | 70 | bool portamento; |
kb10uy | 17:2e577c6000cf | 71 | char volume; |
kb10uy | 17:2e577c6000cf | 72 | char panpot; |
kb10uy | 17:2e577c6000cf | 73 | char expression; |
kb10uy | 17:2e577c6000cf | 74 | bool hold1; |
kb10uy | 17:2e577c6000cf | 75 | |
kb10uy | 17:2e577c6000cf | 76 | }; |
kb10uy | 17:2e577c6000cf | 77 | |
kb10uy | 17:2e577c6000cf | 78 | |
kb10uy | 17:2e577c6000cf | 79 | |
kb10uy | 17:2e577c6000cf | 80 | |
kb10uy | 17:2e577c6000cf | 81 |