Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
•Instrument Editor/Instrument Editor.h
/* |
* file: Instrument Editor.h |
* |
* started 12 January 1992 16:45 |
* david van brink |
* |
* A starting point for BigEasy programs |
* |
*/ |
#ifndef _InstrumentEditor_ |
#define _InstrumentEditor_ |
/*-------------------------- |
Inclusions |
--------------------------*/ |
#include <Files.h> |
#include <Windows.h> |
#include <Lists.h> |
#include "BigEasyControls.h" |
#include <QuickTimeComponents.h> |
//#include "NoteAllocatorComponent.h" |
#include "IE KeyboardDiagram.h" |
/*-------------------------- |
Structures |
--------------------------*/ |
#define kDocMargin 9 |
#define kHeaderHeight 17 |
#define kSliderWidth 150 |
#define kInstrumentListWidth 127 |
#define kInstrumentListCellHeight 13 |
#define kTextAllowance 12 |
#define kStatLineCount 4 |
#define kStatHeight (kTextAllowance * kStatLineCount + 6) |
#define kStatTop (kHeaderHeight+kDocMargin) |
#define kStatBottom (kStatTop+kStatHeight) |
#define kStatLeft kDocMargin |
#define kStatRight (kStatLeft+kInstrumentListWidth) |
#define kKeyboardTop (kStatBottom+kDocMargin) |
#define kKeyboardBottom (kKeyboardTop+0x1F) |
#define kKeyboardLeft kDocMargin |
#define kKeyboardOctaveCount (kInstrumentListWidth/63) |
#define kKeyboardRight (kKeyboardLeft+kKeyboardOctaveCount*63+1) |
#define kInstrumentListTop (kKeyboardBottom+kDocMargin) |
#define kInstrumentListLeft (kStatLeft) |
#define kInstrumentListRight (kStatRight) |
#define kSliderzoneLeft (2*kDocMargin+kInstrumentListWidth) |
#define kMaxInstruments 256 |
enum |
{ |
mNew = 100, |
mOpen, |
mCPULoad, |
mFirstDocOnly, |
mClose, |
mSave, |
mSaveAs, |
mGetInstrument, |
mSetInstrument, |
mNameInstrument, |
mRandomizeKnobs, |
mGlobalKnobs, /* also used as tag for which to display of 3 */ |
mInstrumentKnobs, |
mControllers, |
mPitchbendDoc, |
mMicrotoneDoc, |
mTestDoc, |
mLastDocOnly |
}; |
typedef struct |
{ |
OSType synthType; |
Str31 synthName; |
} SynthMenuEntry; |
typedef struct |
{ |
short synthCount; |
SynthMenuEntry entry[1]; |
} SynthList, **SynthListHandle; |
#define kDocVersion 1 |
typedef struct |
{ |
OSType synthType; |
Str31 synthName; |
} TPartialSaveRecord; |
typedef struct |
{ |
Boolean used; |
Boolean everSaved; |
Boolean changed; |
Boolean littleChanged; /* Save available, but no "Save Discard?" on close */ |
FSSpec docSpec; |
TPartialSaveRecord sr; |
WindowPtr w; |
/*----*/ |
NoteAllocator na; |
EasyControlList ecl; |
EasyControl *ec; |
short whichList; /* which knobs? from above enum */ |
short knobCount; |
Str255 instrumentName; |
MusicComponent ci; |
long part; |
NoteChannel nc; |
SynthesizerDescription sd; |
// long firstModifiableInstrument; |
long globalKnobCount; |
KnobDescription **gkdList; |
long instrumentKnobCount; |
KnobDescription **ikdList; |
long controllerCount; |
ToneDescription td; |
long stashInstrument; |
long recallInstrument; |
Rect virtualSliderBounds; /* 0,0 -> x,y, the virtual workspace */ |
Rect visibleSliderBounds; /* x1,y1 -> x2,y2, the present visible part */ |
ControlHandle horizontalScroller; |
ControlHandle verticalScroller; |
long lastH, lastV; /* matches the scroller controls, it is |
* the virtual coordinate of the topLeft of |
* the visible bounds. |
*/ |
ListHandle listH; |
Rect statBounds; |
short instrumentCount; |
InstrumentDataHandle instrument[kMaxInstruments]; |
unsigned char keyVel[128]; /* array for keyboard diagram drawing */ |
Boolean controllersDirty; |
KeyboardDiagram kd; |
} TDoc; |
typedef struct |
{ |
long docVersion; /* quick check that we can really open the file */ |
Rect windowRect; |
TPartialSaveRecord sr; |
} TSaveRecord; |
/*-------------------------- |
Variables |
--------------------------*/ |
#ifdef globals |
#define VAR |
#else |
#define VAR extern |
#endif |
#define kFirstDocWindow 1 |
#define kDocMax 5 |
VAR TDoc gDoc[kDocMax]; |
VAR short gDocCount; |
VAR SynthListHandle gSynthListH; |
#undef VAR |
/*-------------------------- |
Prototypes |
--------------------------*/ |
void NewDocFromSaveRecord(short docNumber,TSaveRecord *sr,SynthMenuEntry *sme); |
void DrawDoc(short n); |
void ClickDoc(short n,Point p,short mods); |
void ResizeDoc(short n, Point *oldSize, Point *newSize, short modifiers); |
void FlashResult(ComponentResult result); |
void SetupSliderClipDoc(TDoc *d); |
void DoneSliderClipDoc(TDoc *d); |
void DrawStats(TDoc *d); |
void UpdateSliderKnobs(TDoc *d); |
void MakeControlsFromKnobList(TDoc *d,Rect *outRect); |
void FixUpMenus(TDoc *d); |
void FixForSize(TDoc *d); |
SynthListHandle GetSynthesizerList(void); |
void DoGlobalKnobs(short n, short menuItem, short menuRef); |
void DoInstrumentKnobs(short n, short menuItem, short menuRef); |
void DoControllers(short n, short menuItem, short menuRef); |
void PitchBendDoc(short n, short menuItem, short menuRef); |
void MicrotoneDoc(short n, short menuItem, short menuRef); |
void NotesOnDoc(short n, short menuItem, short menuRef); |
void NotesOffDoc(short n, short menuItem, short menuRef); |
void SetInstrumentDoc(short n, short menuItem, short menuRef); |
void SetInstrumentForDoc(TDoc *d,InstrumentDataHandle iH); |
void NewScrollDoc(TDoc *d,Boolean doScroll,RgnHandle updateRgn); |
#endif _InstrumentEditor_ |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-03-19