68 lines
1.8 KiB
C++
68 lines
1.8 KiB
C++
/**
|
|
* @file streams-midi-vs1053.ino
|
|
* @author Phil Schatzmann
|
|
* @brief Demo that shows how to send streaming midi commands to the vs1053
|
|
* This example using my https://github.com/pschatzmann/arduino-midi.git library
|
|
* @version 0.1
|
|
* @date 2022-08-23
|
|
*
|
|
* @copyright Copyright (c) 2022
|
|
*
|
|
*/
|
|
|
|
#include "AudioTools.h"
|
|
#include "AudioTools/AudioLibs/VS1053Stream.h"
|
|
#include "Midi.h"
|
|
|
|
|
|
VS1053Stream vs1053; // final output
|
|
MidiStreamOut midi_out(vs1053);
|
|
uint8_t note = 65; // 0 to 128
|
|
uint8_t amplitude = 128; // 0 to 128
|
|
uint8_t instrument = 0;
|
|
|
|
void selectInstrument(uint8_t instrument, uint8_t bank=0x00){
|
|
// Continuous controller 0, bank select: 0 gives you the default bank depending on the channel
|
|
// 0x78 (percussion) for Channel 10, i.e. channel = 9 , 0x79 (melodic) for other channels
|
|
//vs1053.sendMidiMessage(0xB0| channel, 0, 0x00); //0x00 default bank
|
|
midi_out.controlChange(BANK_SELECT, bank);
|
|
|
|
// Patch change, select instrument
|
|
midi_out.programChange(instrument);
|
|
}
|
|
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);
|
|
|
|
// setup vs1053
|
|
auto cfg = vs1053.defaultConfig();
|
|
cfg.is_midi = true; // vs1053 is accepting streaming midi data
|
|
// Use your custom pins or define in AudioCodnfig.h
|
|
//cfg.cs_pin = VS1053_CS;
|
|
//cfg.dcs_pin = VS1053_DCS;
|
|
//cfg.dreq_pin = VS1053_DREQ;
|
|
//cfg.reset_pin = VS1053_RESET;
|
|
vs1053.begin(cfg);
|
|
vs1053.setVolume(1.0);
|
|
|
|
}
|
|
|
|
void loop() {
|
|
Serial.println();
|
|
Serial.print("playing ");
|
|
Serial.println(++note);
|
|
|
|
midi_out.noteOn(note, amplitude );
|
|
delay(900);
|
|
midi_out.noteOff(note, 20 );
|
|
delay(200);
|
|
if (note>=90) {
|
|
note = 64;
|
|
Serial.println();
|
|
Serial.print("selecting Instrument ");
|
|
Serial.println(++instrument);
|
|
selectInstrument(instrument);
|
|
}
|
|
} |