diff --git a/src/midi/noteList.cpp b/src/midi/noteList.cpp
deleted file mode 100644
index 7f1afe3..0000000
--- a/src/midi/noteList.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*!
- * \file synth-core_NoteList.h
- * \author Francois Best
- * \date 24/05/2013
- * \license GPL v3.0 - Copyright Forty Seven Effects 2013
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#include "noteList.h"
diff --git a/src/midi/noteList.h b/src/midi/noteList.h
deleted file mode 100644
index 18ef829..0000000
--- a/src/midi/noteList.h
+++ /dev/null
@@ -1,391 +0,0 @@
-/*!
- * \file noteList.h
- * \author Francois Best
- * \date 24/05/2013
- * \brief Linked list of notes, for Low, Last & High playing modes.
- * \license GPL v3.0 - Copyright Forty Seven Effects 2013
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include
-
-typedef uint8_t byte;
-
-// -----------------------------------------------------------------------------
-
-struct MidiNote
-{
- inline MidiNote();
- inline MidiNote(byte inPitch, byte inVelocity);
- inline MidiNote(const MidiNote& inOther);
- inline MidiNote& operator= (const MidiNote& inOther);
-
- byte pitch;
- byte velocity;
-};
-
-// -----------------------------------------------------------------------------
-
-template
-class MidiNoteList
-{
-private:
- struct Cell
- {
- inline Cell();
- inline Cell(const Cell& inOther);
- inline Cell& operator= (const Cell& inOther);
-
- MidiNote note;
- bool active;
- Cell* next;
- Cell* prev;
- };
-
-public:
- inline MidiNoteList();
- inline ~MidiNoteList();
-
-public:
- inline void add(const MidiNote& inNote);
- inline void remove(byte inPitch);
-
-public:
- inline bool get(byte inIndex, byte& outPitch) const;
- inline bool getLast(byte& outPitch) const;
- inline bool getHigh(byte& outPitch) const;
- inline bool getLow(byte& outPitch) const;
-
-public:
- inline bool empty() const;
- inline byte size() const;
-
-private:
- inline Cell* getFirstEmptyCell();
- inline void print() const;
-
-private:
- Cell mArray[Size];
- Cell* mHead;
- Cell* mTail;
- byte mSize;
-};
-
-// ########################################################################## //
-// Inline implementation
-
-inline MidiNote::MidiNote()
- : pitch(0)
- , velocity(0)
-{
-}
-
-inline MidiNote::MidiNote(byte inPitch, byte inVelocity)
- : pitch(inPitch)
- , velocity(inVelocity)
-{
-}
-
-inline MidiNote::MidiNote(const MidiNote& inOther)
- : pitch(inOther.pitch)
- , velocity(inOther.velocity)
-{
-}
-
-inline MidiNote& MidiNote::operator= (const MidiNote& inOther)
-{
- pitch = inOther.pitch;
- velocity = inOther.velocity;
- return *this;
-}
-
-// ########################################################################## //
-
-template
-inline MidiNoteList::Cell::Cell()
- : note()
- , active(false)
- , next(0)
- , prev(0)
-{
-}
-
-template
-inline MidiNoteList::Cell::Cell(const Cell& inOther)
- : note(inOther.note)
- , active(inOther.active)
- , next(inOther.next)
- , prev(inOther.prev)
-{
-}
-
-template
-inline typename MidiNoteList::Cell& MidiNoteList::Cell::operator= (const Cell& inOther)
-{
- note = inOther.note;
- active = inOther.active;
- next = inOther.next;
- prev = inOther.prev;
- return *this;
-}
-
-// ########################################################################## //
-
-template
-inline MidiNoteList::MidiNoteList()
-{
-}
-
-template
-inline MidiNoteList::~MidiNoteList()
-{
-}
-
-// -----------------------------------------------------------------------------
-
-/*! \brief Add a note, sorting it by time.
- Call this when receiving a NoteOn event. This will add the new note as the tail
- of the list.
- */
-template
-inline void MidiNoteList::add(const MidiNote& inNote)
-{
- if (mHead == 0)
- {
- mArray[0].note = inNote;
- mArray[0].active = true;
- mArray[0].next = 0;
- mArray[0].prev = 0;
- mHead = mArray;
- mTail = mArray;
- }
- else
- {
- // Find the first inactive cell, and use it as tail.
- Cell* const oldTail = mTail;
- Cell* const newTail = getFirstEmptyCell();
-
- newTail->active = true;
- newTail->note = inNote;
-
- oldTail->next = newTail;
- newTail->prev = oldTail;
- newTail->next = 0;
- mTail = newTail;
- }
- mSize++;
- print();
-}
-
-/*! \brief Remove a note
- Call this when receiving a NoteOff event.
- */
-template
-inline void MidiNoteList::remove(byte inPitch)
-{
- if (mTail != 0)
- {
- for (Cell* it = mTail; it != 0; it = it->prev)
- {
- if (it->note.pitch == inPitch)
- {
- Cell* const prev = it->prev;
- Cell* const next = it->next;
-
- it->active = false;
- it->next = 0;
- it->prev = 0;
-
- // Reconnect both ends
- if (it == mHead)
- {
- //AVR_ASSERT(prev == 0);
- mHead = next;
- }
- else
- {
- //AVR_ASSERT(prev != 0);
- prev->next = next;
- }
-
- if (it == mTail)
- {
- //AVR_ASSERT(next == 0);
- mTail = prev;
- }
- else
- {
- //AVR_ASSERT(next != 0);
- next->prev = prev;
- }
-
- mSize--;
- break;
- }
- }
- }
- print();
-}
-
-// -----------------------------------------------------------------------------
-
-/*! \brief Get a note at an arbitrary position
- This can be interesting for duo/multi/polyphony operations.
- */
-template
-inline bool MidiNoteList::get(byte inIndex, byte& outPitch) const
-{
- if (mTail)
- {
- const Cell* it = mTail;
- for (byte i = 0; i < inIndex; ++i)
- {
- if (it->prev)
- {
- it = it->prev;
- }
- }
-
- print();
- //AVR_LOG("Index " << inIndex << ": " << it->note.pitch);
-
- outPitch = it->note.pitch;
- return true;
- }
- return false;
-}
-
-/*! \brief Get the last active note played
- This implements the Mono Last playing mode.
- */
-template
-inline bool MidiNoteList::getLast(byte& outPitch) const
-{
- if (!mTail)
- {
- return false;
- }
-
- outPitch = mTail->note.pitch;
- return true;
-}
-
-/*! \brief Get the highest pitched active note
- This implements the Mono High playing mode.
- */
-template
-inline bool MidiNoteList::getHigh(byte& outPitch) const
-{
- if (!mTail)
- {
- return false;
- }
-
- outPitch = 0;
- const Cell* it = mTail;
- for (byte i = 0; i < mSize; ++i)
- {
- if (it->note.pitch > outPitch)
- {
- outPitch = it->note.pitch;
- }
-
- if (it->prev)
- {
- it = it->prev;
- }
- }
- return true;
-}
-
-/*! \brief Get the lowest pitched active note
- This implements the Mono Low playing mode.
- */
-template
-inline bool MidiNoteList::getLow(byte& outPitch) const
-{
- if (!mTail)
- {
- return false;
- }
-
- outPitch = 0xff;
- const Cell* it = mTail;
- for (byte i = 0; i < mSize; ++i)
- {
- if (it->note.pitch < outPitch)
- {
- outPitch = it->note.pitch;
- }
-
- if (it->prev)
- {
- it = it->prev;
- }
- }
- return true;
-}
-
-// -----------------------------------------------------------------------------
-
-template
-inline bool MidiNoteList::empty() const
-{
- return mSize == 0;
-}
-
-/*! \brief Get the number of active notes.
- */
-template
-inline byte MidiNoteList::size() const
-{
- return mSize;
-}
-
-// -----------------------------------------------------------------------------
-// Private implementations, for internal use only.
-
-template
-inline typename MidiNoteList::Cell* MidiNoteList::getFirstEmptyCell()
-{
- for (byte i = 0; i < Size; ++i)
- {
- if (mArray[i].active == false)
- {
- return mArray + i;
- }
- }
- return 0;
-}
-
-template
-inline void MidiNoteList::print() const
-{
-//#ifndef NDEBUG
-// AVR_DBG("Note List: [ ");
-// if (mHead)
-// {
-// for (const Cell* it = mHead; it != 0; it = it->next)
-// {
-// AVR_DBG(it->note.pitch);
-// if (it->next)
-// AVR_DBG(" -> ");
-// }
-// }
-// AVR_LOG(" ]");
-//#endif
-}
diff --git a/src/midi/pitches.h b/src/midi/pitches.h
deleted file mode 100644
index 0cb1542..0000000
--- a/src/midi/pitches.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*************************************************
- * Public Constants
- *************************************************/
-#include
-
-#define NOTE_B0 31
-#define NOTE_C1 33
-#define NOTE_CS1 35
-#define NOTE_D1 37
-#define NOTE_DS1 39
-#define NOTE_E1 41
-#define NOTE_F1 44
-#define NOTE_FS1 46
-#define NOTE_G1 49
-#define NOTE_GS1 52
-#define NOTE_A1 55
-#define NOTE_AS1 58
-#define NOTE_B1 62
-#define NOTE_C2 65
-#define NOTE_CS2 69
-#define NOTE_D2 73
-#define NOTE_DS2 78
-#define NOTE_E2 82
-#define NOTE_F2 87
-#define NOTE_FS2 93
-#define NOTE_G2 98
-#define NOTE_GS2 104
-#define NOTE_A2 110
-#define NOTE_AS2 117
-#define NOTE_B2 123
-#define NOTE_C3 131
-#define NOTE_CS3 139
-#define NOTE_D3 147
-#define NOTE_DS3 156
-#define NOTE_E3 165
-#define NOTE_F3 175
-#define NOTE_FS3 185
-#define NOTE_G3 196
-#define NOTE_GS3 208
-#define NOTE_A3 220
-#define NOTE_AS3 233
-#define NOTE_B3 247
-#define NOTE_C4 262
-#define NOTE_CS4 277
-#define NOTE_D4 294
-#define NOTE_DS4 311
-#define NOTE_E4 330
-#define NOTE_F4 349
-#define NOTE_FS4 370
-#define NOTE_G4 392
-#define NOTE_GS4 415
-#define NOTE_A4 440
-#define NOTE_AS4 466
-#define NOTE_B4 494
-#define NOTE_C5 523
-#define NOTE_CS5 554
-#define NOTE_D5 587
-#define NOTE_DS5 622
-#define NOTE_E5 659
-#define NOTE_F5 698
-#define NOTE_FS5 740
-#define NOTE_G5 784
-#define NOTE_GS5 831
-#define NOTE_A5 880
-#define NOTE_AS5 932
-#define NOTE_B5 988
-#define NOTE_C6 1047
-#define NOTE_CS6 1109
-#define NOTE_D6 1175
-#define NOTE_DS6 1245
-#define NOTE_E6 1319
-#define NOTE_F6 1397
-#define NOTE_FS6 1480
-#define NOTE_G6 1568
-#define NOTE_GS6 1661
-#define NOTE_A6 1760
-#define NOTE_AS6 1865
-#define NOTE_B6 1976
-#define NOTE_C7 2093
-#define NOTE_CS7 2217
-#define NOTE_D7 2349
-#define NOTE_DS7 2489
-#define NOTE_E7 2637
-#define NOTE_F7 2794
-#define NOTE_FS7 2960
-#define NOTE_G7 3136
-#define NOTE_GS7 3322
-#define NOTE_A7 3520
-#define NOTE_AS7 3729
-#define NOTE_B7 3951
-#define NOTE_C8 4186
-#define NOTE_CS8 4435
-#define NOTE_D8 4699
-#define NOTE_DS8 4978
-#define NOTE_E8 5274
-#define NOTE_F8 5588
-#define NOTE_FS8 5920
-#define NOTE_G8 6272
-#define NOTE_GS8 6645
-#define NOTE_A8 7040
-#define NOTE_AS8 7459
-#define NOTE_B8 7902
-
-static const uint16_t sNotePitches[] = {
- NOTE_B0, NOTE_C1, NOTE_CS1, NOTE_D1, NOTE_DS1, NOTE_E1, NOTE_F1, NOTE_FS1,
- NOTE_G1, NOTE_GS1, NOTE_A1, NOTE_AS1, NOTE_B1, NOTE_C2, NOTE_CS2, NOTE_D2,
- NOTE_DS2, NOTE_E2, NOTE_F2, NOTE_FS2, NOTE_G2, NOTE_GS2, NOTE_A2, NOTE_AS2,
- NOTE_B2, NOTE_C3, NOTE_CS3, NOTE_D3, NOTE_DS3, NOTE_E3, NOTE_F3, NOTE_FS3,
- NOTE_G3, NOTE_GS3, NOTE_A3, NOTE_AS3, NOTE_B3, NOTE_C4, NOTE_CS4, NOTE_D4,
- NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4,
- NOTE_B4, NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5,
- NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5, NOTE_C6, NOTE_CS6, NOTE_D6,
- NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6, NOTE_GS6, NOTE_A6, NOTE_AS6,
- NOTE_B6, NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7,
- NOTE_G7, NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7, NOTE_C8, NOTE_CS8, NOTE_D8,
- NOTE_DS8, NOTE_E8, NOTE_F8, NOTE_FS8, NOTE_G8, NOTE_GS8, NOTE_A8, NOTE_AS8,
- NOTE_B8
-};