Refactoring to build on the new AVR core.
This commit is contained in:
parent
22218892c0
commit
3edb9c15ea
20
src/MIDI.cpp
20
src/MIDI.cpp
|
|
@ -9,7 +9,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "MIDI.h"
|
#include "MIDI.h"
|
||||||
#include "Serial.h"
|
#include "core.h"
|
||||||
|
#include "hardware_Serial.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,7 +22,7 @@ MIDI_Class MIDI;
|
||||||
MIDI_Class::MIDI_Class()
|
MIDI_Class::MIDI_Class()
|
||||||
{
|
{
|
||||||
|
|
||||||
#if USE_CALLBACKS
|
#if COMPILE_MIDI_IN && USE_CALLBACKS
|
||||||
|
|
||||||
// Initialise callbacks to NULL pointer
|
// Initialise callbacks to NULL pointer
|
||||||
mNoteOffCallback = NULL;
|
mNoteOffCallback = NULL;
|
||||||
|
|
@ -310,8 +311,7 @@ void MIDI_Class::sendPitchBend(double PitchValue,
|
||||||
byte Channel)
|
byte Channel)
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned int pitchval = (PitchValue+1.f)*8192;
|
int pitchval = PitchValue * MIDI_PITCHBEND_MAX;
|
||||||
if (pitchval > 16383) pitchval = 16383; // overflow protection
|
|
||||||
sendPitchBend(pitchval,Channel);
|
sendPitchBend(pitchval,Channel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -528,16 +528,16 @@ bool MIDI_Class::read(const byte inChannel)
|
||||||
// Private method: MIDI parser
|
// Private method: MIDI parser
|
||||||
bool MIDI_Class::parse(byte inChannel)
|
bool MIDI_Class::parse(byte inChannel)
|
||||||
{
|
{
|
||||||
|
const byte bytes_available = MIDI_SERIAL_PORT.available();
|
||||||
|
|
||||||
const int bytes_available = MIDI_SERIAL_PORT.available();
|
if (bytes_available == 0)
|
||||||
|
|
||||||
if (bytes_available <= 0) {
|
|
||||||
// No data available.
|
// No data available.
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
// If the buffer is full -> Don't Panic! Call the Vogons to destroy it.
|
// If the buffer is full -> Don't Panic! Call the Vogons to destroy it.
|
||||||
if (bytes_available == UART_BUFFER_SIZE) { Serial << "Overflow, call the Vogons!!" << endl;
|
if (bytes_available == UART::bufferSize)
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("MIDI Overflow");
|
||||||
MIDI_SERIAL_PORT.flush();
|
MIDI_SERIAL_PORT.flush();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -1184,5 +1184,3 @@ void MIDI_Class::thru_filter(byte inChannel)
|
||||||
|
|
||||||
|
|
||||||
#endif // Thru
|
#endif // Thru
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
19
src/MIDI.h
19
src/MIDI.h
|
|
@ -8,11 +8,10 @@
|
||||||
* license GPL Forty Seven Effects - 2011
|
* license GPL Forty Seven Effects - 2011
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef LIB_MIDI_H_
|
#ifndef _FSE_LIB_MIDI_H_
|
||||||
#define LIB_MIDI_H_
|
#define _FSE_LIB_MIDI_H_
|
||||||
|
|
||||||
#include "Types.h" // Include all the types we need.
|
|
||||||
|
|
||||||
|
#include "core_Types.h" // Include all the types we need.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
###############################################################
|
###############################################################
|
||||||
|
|
@ -58,7 +57,7 @@
|
||||||
#define MIDI_CHANNEL_OMNI 0
|
#define MIDI_CHANNEL_OMNI 0
|
||||||
#define MIDI_CHANNEL_OFF 17 // and over
|
#define MIDI_CHANNEL_OFF 17 // and over
|
||||||
|
|
||||||
#define MIDI_SYSEX_ARRAY_SIZE 255 // Maximum size is 65535 bytes.
|
#define MIDI_SYSEX_ARRAY_SIZE 128 // Maximum size is 65535 bytes.
|
||||||
|
|
||||||
#define MIDI_PITCHBEND_MIN -8192
|
#define MIDI_PITCHBEND_MIN -8192
|
||||||
#define MIDI_PITCHBEND_MAX 8191
|
#define MIDI_PITCHBEND_MAX 8191
|
||||||
|
|
@ -66,7 +65,8 @@
|
||||||
|
|
||||||
|
|
||||||
/*! Enumeration of MIDI types */
|
/*! Enumeration of MIDI types */
|
||||||
enum kMIDIType {
|
enum kMIDIType
|
||||||
|
{
|
||||||
NoteOff = 0x80, ///< Note Off
|
NoteOff = 0x80, ///< Note Off
|
||||||
NoteOn = 0x90, ///< Note On
|
NoteOn = 0x90, ///< Note On
|
||||||
AfterTouchPoly = 0xA0, ///< Polyphonic AfterTouch
|
AfterTouchPoly = 0xA0, ///< Polyphonic AfterTouch
|
||||||
|
|
@ -252,9 +252,9 @@ private:
|
||||||
byte mRunningStatus_RX;
|
byte mRunningStatus_RX;
|
||||||
byte mInputChannel;
|
byte mInputChannel;
|
||||||
|
|
||||||
byte mPendingMessage[MIDI_SYSEX_ARRAY_SIZE];
|
byte mPendingMessage[3]; // SysEx are dumped into mMessage directly.
|
||||||
unsigned int mPendingMessageExpectedLenght;
|
unsigned int mPendingMessageExpectedLenght;
|
||||||
unsigned int mPendingMessageIndex; // Extended to unsigned int for larger sysex payloads.
|
unsigned int mPendingMessageIndex; // Extended to unsigned int for larger SysEx payloads.
|
||||||
|
|
||||||
midimsg mMessage;
|
midimsg mMessage;
|
||||||
|
|
||||||
|
|
@ -347,4 +347,5 @@ private:
|
||||||
|
|
||||||
extern MIDI_Class MIDI;
|
extern MIDI_Class MIDI;
|
||||||
|
|
||||||
#endif // LIB_MIDI_H_
|
|
||||||
|
#endif // _FSE_LIB_MIDI_H_
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue