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で。

FMOscillator/FMOscillator.h

Committer:
kb10uy
Date:
2015-01-26
Revision:
16:5cfa8b491882
Parent:
13:e11380ceb460
Child:
17:2e577c6000cf

File content as of revision 16:5cfa8b491882:

#pragma once
#include "mbed.h"
#include "AQM0802A.h"
#include "AOTTrigon.h"
#include "FMOperator.h"
#include "MIDIUtil.h"
#include <new>

class FMOscillator
{
public:
    FMOscillator();
    FMOscillator(int opc, Timer *tim, Serial *ser, AOTTrigon *tri, I2C *i2clcd);
    ~FMOscillator();
private:
    Timer *master;
    Serial *serial;
    AOTTrigon *trigon;
    AQM0802A *lcd;
    FMOperator **operators;
    int opcount;
    
    void getMIDIMessage();
    void midiReceived();
    void getMIDISystemCommonMessage(char t2);
    void midiSystemRealtimeMessage(char mes);
    void midiNoteOn(char ch, char note, char vel);
    void midiNoteOff(char ch, char note, char vel);
    void midiPolyphonicKeyPressure(char ch, char note, char vel);
    void midiControlChange(char ch, char ctrl, char data);
    void midiChannelMode(char ch, char ctrl, char data);
    void midiProgramChange(char ch, char prg);
    void midiChannelPressure(char ch, char pres);
    void midiPitchBend(char ch, short pb);
    void midiSystemExclusiveMessage();
};