struct LOC_BeamFind {
  TrackRecord *ThisTrack;
  uchar BeamPnt;
  NoteRecord *NotePnt;
  boolean Beaming;
} ;

struct LOC_InitFileDebug {
  uchar FilesSel;
} ;

struct LOC_Note2String {
  NoteRecord ThisNote;
} ;

struct LOC_BeamNote2String {
  BeamRecord ThisBeam;
} ;

struct LOC_PartCreateMeasure {
  NoteRecord *N;
  long curtr, EventCnt;
  boolean BeamsOccured;
} ;

static void NewErrorExit(void);
boolean CheckChordNotes(NoteRecord Note1,NoteRecord Note2);

long NoteLength(NoteRecord ThisNote);

void ResetChordArray(ChordRecord *ThisStack);

void ResetBeamArray(BeamRecord *ThisArray);

void ResetAccKeys(void);

void SortChord(TrackRecord *ThisTrack,ChordRecord *ThisChord);

void ChordFind(TrackRecord *ThisTrack);

long FindSlurrIndex(void);

long IsSlurred(NoteRecord *N,TrackRecord *ThisTrack);

void FindSlurrNote(TrackRecord *ThisTrack,long CurMeasure);

void ChopRest(NoteRecord **N,TrackRecord *ThisTrack,long ThisMsre);

void FindNoteTypes(TrackRecord *ThisTrack,long ThisMsre);

long NoteInChord(NoteRecord *N,TrackRecord ThisTrack);

Void StartBeam(struct LOC_BeamFind *LINK);

Void EndBeam(struct LOC_BeamFind *LINK);

Void CancelBeam(struct LOC_BeamFind *LINK);

Void QuitBeam(struct LOC_BeamFind *LINK);

Void Add2Beam(struct LOC_BeamFind *LINK);

Void CreateUpChainBeam(struct LOC_BeamFind *LINK);

Void CreateDnChainBeam(struct LOC_BeamFind *LINK);

Void BeamFind(TrackRecord *ThisTrack_);

void InitFilePosns(long N);

boolean AllTracksRead(long N);

void SplitExtension(char *ThisFile,char *path,char *ext);

Void ReadFileName(FileNameType *ThisFile,char *path,struct LOC_InitFileDebug *LINK);

void InitFileDebug(int P_argc,char *P_argv[]);

void Initialize(int P_argc,Char *P_argv[]);

void CleanUpSlurrArrays(void);
 
void CleanUpTracks(void);
 
char *RestString(Char *Result,NoteTypes ValType,ClefType Clef);

uchar Index(uchar value);

Char *ValueString(Char *Result,uchar value,ControlInfo Control,AccKeyType * AKey,boolean ChangeAKey);

Char HangOrBang(struct LOC_Note2String *LINK);

Char *Note2String(Char *Result,NoteRecord ThisNote_,ClefType Clef,AccKeyType *AKey);

Char *ChordNote2String(Char *Result,NoteRecord ThisNote,ClefType Clef,AccKeyType *AKey);

Char HOrB(struct LOC_BeamNote2String *LINK);

Char BNo(struct LOC_BeamNote2String *LINK);

Char *BeamNote2String(Char *Result,NoteRecord ThisNote,BeamRecord ThisBeam_,ClefType Clef,AccKeyType *AKey);

Char *InitBeam(Char *Result,BeamRecord ThisBeam,boolean ForceZero,AccKeyType *AKey);

Char *PartialBeam(Char *Result,BeamRecord ThisBeam);

Char *TerminateBeam(Char *Result,BeamRecord ThisBeam);

Char *ChainBeam(Char *Result,BeamRecord ThisBeam,BeamRecord NextBeam);

Char *InitSlurr(Char *Result,SlurrRecord ThisSlurr,AccKeyType *AKey);

Char *TerminateSlurr(Char *Result,SlurrRecord *ThisSlurr);

Void FindMeasureParts(unsigned int ThisMeasure);

Char *Seperator(Char *Result,struct LOC_PartCreateMeasure *LINK);

Char *GetNoteStr(Char *Result,TrackRecord *ThisTrack,struct LOC_PartCreateMeasure *LINK);

Void PartCreateMeasure(void);

Void CheckControls(long ThisMsre);

static Void InstallNewErrorExit(void);

