Nucleo F401REでFM音源を実装するやつ 外部DACとオペアンプを利用 現在はMCP4922とNJM2737

Dependencies:   AOTTrigon I2CEEPROM MCP4922 AQM0802A mbed

Fork of NuMidi401 by Yuu Kobayashi

NuFM401

Nucleo F401用の自作ソフトウェアMIDI音源

概要

だいたいそんなもんです。

特徴

  • ブレッドボードの上で組める程度には簡単な回路構成
  • 外部のDACにMCP4922を採用
  • 念のためのボルテージフォロアとしてNJM2737Dを採用
  • バンク用EEPROMに24FC1025を採用
  • シリアル経由でMIDIデータを受信することで操作

補足

シリアル <=> MIDI のドライバにはHairless-MIDISerialをオススメします。 仮想MIDIケーブルはとりあえずMIDI Yokeで。

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;
+
+};
+
+
+
+
+