111 lines
1.9 KiB
C++
111 lines
1.9 KiB
C++
#include "dl_midi.h"
|
|
|
|
#if DL_PLATFORM != DL_PLATFORM_ANDROID
|
|
#include "io/dl_log.h"
|
|
|
|
#include <RtMidi.h>
|
|
|
|
namespace dl
|
|
{
|
|
Midi* g_midi;
|
|
|
|
class MidiImp
|
|
{
|
|
public:
|
|
RtMidiIn* _in;
|
|
RtMidiOut* _out;
|
|
|
|
MidiImp() :
|
|
_in{ nullptr },
|
|
_out{ nullptr }
|
|
{
|
|
//try {
|
|
// _out = new RtMidiOut;
|
|
// std::vector<unsigned char> message;
|
|
//
|
|
// // Check available ports.
|
|
// unsigned int nPorts = _out->getPortCount();
|
|
// if (nPorts == 0) {
|
|
// std::cout << "No ports available!\n";
|
|
// goto cleanup;
|
|
// }
|
|
|
|
// // Open first available port.
|
|
// _out->openPort(0);
|
|
|
|
// // Send out a series of MIDI messages.
|
|
|
|
// // Program change: 192, 5
|
|
// message.push_back(192);
|
|
// message.push_back(5);
|
|
// _out->sendMessage(&message);
|
|
|
|
// // Control Change: 176, 7, 100 (volume)
|
|
// message[0] = 176;
|
|
// message[1] = 7;
|
|
// message.push_back(100);
|
|
// _out->sendMessage(&message);
|
|
|
|
// // Note On: 144, 64, 90
|
|
//
|
|
|
|
// /*while (true)
|
|
// {
|
|
// message[0] = 144;
|
|
// message[1] = 64;
|
|
// message[2] = 91;
|
|
// _out->sendMessage(&message);
|
|
// std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
|
// message[0] = 128;
|
|
// message[1] = 70;
|
|
// message[2] = 40;
|
|
// _out->sendMessage(&message);
|
|
// std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
|
// }*/
|
|
//
|
|
// //Sleep(500); // Platform-dependent ... see example in tests directory.
|
|
|
|
// // Note Off: 128, 64, 40
|
|
//
|
|
|
|
// // Clean up
|
|
//cleanup:
|
|
// //delete _out;
|
|
// int x = 3;
|
|
//}
|
|
//catch (RtMidiError& error) {
|
|
// log_err("{}", error.getMessage());
|
|
//}
|
|
}
|
|
~MidiImp()
|
|
{
|
|
delete _in;
|
|
delete _out;
|
|
}
|
|
};
|
|
|
|
Midi::Midi()
|
|
{
|
|
_imp = new MidiImp;
|
|
}
|
|
|
|
Midi::~Midi()
|
|
{
|
|
delete _imp;
|
|
}
|
|
|
|
void Midi::Play(BufferView buf)
|
|
{
|
|
_imp->_out->sendMessage((unsigned char*)buf.data(), buf.size());
|
|
}
|
|
|
|
void Midi::PlayC()
|
|
{
|
|
/*unsigned char
|
|
_imp->_out->sendMessage(,);*/
|
|
}
|
|
|
|
}
|
|
#else
|
|
|
|
#endif |