1 /*
2 MidiShare Project
3 Copyright (C) Grame 1999-2011
4
5 This Source Code Form is subject to the terms of the Mozilla Public
6 License, v. 2.0. If a copy of the MPL was not distributed with this
7 file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
9 Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10 research@grame.fr
11 */
12
13 #include "MidiShareLight.h"
14 #include "msMemory.h"
15 #include "msEvents.h"
16 #include "msSeq.h"
17
18
19 /*******************************************************************************
20 * MidiShare Light reduced API
21 *******************************************************************************/
22 #define kVersion 1.0
23 #define kEventsChunkSize 4000
24
25 //------------------------------------------------------------------------------
MidiLight(unsigned long memsize)26 MidiLight::MidiLight (unsigned long memsize) : fMemory (0)
27 {
28 fMemory = new MSMemory (memsize);
29 }
30
~MidiLight()31 MidiLight::~MidiLight ()
32 {
33 delete fMemory;
34 }
35
GetVersion(void)36 float MidiLight::GetVersion (void) { return kVersion; }
37
FreeSpace(void)38 unsigned long MidiLight::FreeSpace (void) { return fMemory->FreeSpace(); }
TotalSpace(void)39 unsigned long MidiLight::TotalSpace (void) { return fMemory->TotalSpace(); }
GrowSpace(long n)40 unsigned long MidiLight::GrowSpace (long n) { return fMemory->GrowSpace(n); }
41
42 //------------------------------------------------------------------------------
checkSpace(void)43 void MidiLight::checkSpace (void) { if (!fMemory->FreeSpace()) fMemory->GrowSpace (kEventsChunkSize); }
44
45 //------------------------------------------------------------------------------
NewCell(void)46 MidiEvPtr MidiLight::NewCell (void)
47 {
48 checkSpace();
49 return MSNewCellFunction( fMemory->FreeList());
50 }
51
FreeCell(MidiEvPtr e)52 void MidiLight::FreeCell (MidiEvPtr e) { MSFreeCellFunction (e, fMemory->FreeList()); }
53
54 //------------------------------------------------------------------------------
NewEv(short typeNum)55 MidiEvPtr MidiLight::NewEv (short typeNum)
56 {
57 checkSpace();
58 return MSNewEv(typeNum, fMemory->FreeList());
59 }
60
CopyEv(MidiEvPtr e)61 MidiEvPtr MidiLight::CopyEv (MidiEvPtr e)
62 {
63 checkSpace();
64 return MSCopyEv (e, fMemory->FreeList());
65 }
66
FreeEv(MidiEvPtr e)67 void MidiLight::FreeEv (MidiEvPtr e) { MSFreeEv (e, fMemory->FreeList()); }
68
69 //------------------------------------------------------------------------------
SetField(MidiEvPtr e,long f,long v)70 void MidiLight::SetField (MidiEvPtr e, long f, long v) { MSSetField(e, f, v); }
GetField(MidiEvPtr e,long f)71 long MidiLight::GetField (MidiEvPtr e, long f) { return MSGetField(e, f); }
AddField(MidiEvPtr e,long v)72 void MidiLight::AddField (MidiEvPtr e, long v)
73 {
74 checkSpace();
75 return MSAddField (e, v, fMemory->FreeList());
76 }
CountFields(MidiEvPtr e)77 long MidiLight::CountFields (MidiEvPtr e) { return MSCountFields(e); }
78
79 //------------------------------------------------------------------------------
NewSeq(void)80 MidiSeqPtr MidiLight::NewSeq (void)
81 {
82 checkSpace();
83 return MSNewSeq (fMemory->FreeList());
84 }
AddSeq(MidiSeqPtr s,MidiEvPtr e)85 void MidiLight::AddSeq (MidiSeqPtr s, MidiEvPtr e) { MSAddSeq (s, e); }
FreeSeq(MidiSeqPtr s)86 void MidiLight::FreeSeq (MidiSeqPtr s) { MSFreeSeq (s, fMemory->FreeList()); }
ClearSeq(MidiSeqPtr s)87 void MidiLight::ClearSeq (MidiSeqPtr s) { MSClearSeq (s, fMemory->FreeList()); }
ApplySeq(MidiSeqPtr s,ApplyProcPtr proc)88 void MidiLight::ApplySeq (MidiSeqPtr s, ApplyProcPtr proc) { MSApplySeq (s, proc); }
89
90