This commit is contained in:
2024-08-07 09:16:27 -04:00
parent fdfadd5c7e
commit 5f971cf684
5200 changed files with 731717 additions and 0 deletions

77
music/Notes.cpp Normal file
View File

@@ -0,0 +1,77 @@
#include <music/notes.hpp>
#include <midiseq/midiout.hpp>
#include <midiseq/note.hpp>
#include <midiseq/pureevnt.hpp>
#include <common/qsort.hpp>
bool Notes::remove(const Note &note)
{
int count=0;
for(int index=0;index<size();index++)
{
if(note==operator[](index))
{
Block<Note>::remove(index);
index=-1;
count++;
continue;
}
}
return count?true:false;
}
void Notes::sort(void)
{
QuickSort<Note> sorter;
sorter.sortItems(*this);
}
void Notes::off(MIDIOutputDevice &device)const
{
for(int index=0;index<size();index++)
{
((Block<Note>&)*this).operator[](index).noteOff(device);
}
}
bool Notes::play(MIDIOutputDevice &device,int interNoteDelay,bool noteOffAfterPlay)const
{
if(!device.hasDevice())return false;
for(int index=0;index<size();index++)
{
((Block<Note>&)*this).operator[](index).noteOn(device);
::Sleep(interNoteDelay);
if(noteOffAfterPlay)((Block<Note>&)*this).operator[](index).noteOff(device);
}
return true;
}
bool Notes::playBack(MIDIOutputDevice &device,bool noteOffAfterPlay)const
{
if(!device.hasDevice())return false;
for(int index=size()-1;index>=0;index--)
{
((Block<Note>&)*this).operator[](index).noteOn(device);
::Sleep(getDelay()/1);
if(noteOffAfterPlay)((Block<Note>&)*this).operator[](index).noteOff(device);
}
return true;
}
String Notes::toString(void)const
{
String str;
for(int index=0;index<size();index++)
{
str+=((Notes&)*this).operator[](index).toStringWithOctave();
if(index<size()-1)str+=",";
}
return str;
}
// virtuals
int Notes::getDelay()const
{
return DefaultDelay;
}