home *** CD-ROM | disk | FTP | other *** search
- /* gadgets.c */
- /* Copyright 1990 Thomas E. Janzen All Rights Reserved */
- /*
- ** FACILITY:
- **
- ** AlgoRhythms music improviser on Commodore (TM) Amiga (TM)
- ** compiled with Lattice (TM) C 5.05
- **
- ** ABSTRACT:
- **
- ** Algorhythms improvises music over the MIDI serial port.
- **
- ** AUTHORS: Thomas E. Janzen
- **
- ** CREATION DATE: 26-MAR-1990
- **
- ** MODIFICATION HISTORY:
- ** DATE NAME DESCRIPTION
- **--
- */
- #include <stdlib.h>
- #include <ctype.h>
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <intuition/intuition.h>
- #include <graphics/text.h>
- #include <proto/dos.h>
- #include <proto/graphics.h>
- #include <proto/exec.h>
- #include <proto/mathffp.h>
- #include <proto/intuition.h>
-
- #define STRINGSIZE 80
-
- /*WINDOW*/
- extern struct Window *w;
-
- /* GADGET */
- #define GADGETTEXTDOWN (12)
- #define CLEFT (10)
- #define CTOP (6)
- #define GADGETWIDTH (300)
- #define GADGETHEIGHT (24)
- #define LEFTEDGE (-1)
- #define TOPEDGE (-1)
- #define REQUESTERTEXTDOWN (34)
- #define REQUESTERWIDTH (350)
- #define REQUESTERHEIGHT (47)
- /*for last routine*/
- #define GADGETWIDE 230
- #define GADGETHIGH 10
- #define TOP 1
- #define LEFT 100
-
- extern struct GfxBase *GfxBase;
- extern struct IntuitionBase *IntuitionBase;
- extern struct DOSBase *DOSBase;
- extern struct MathBase *MathBase;
-
- char *MIDItoPitchName(int NoteNum, char *PitchName);
- int PitchNametoMIDI(char *PitchName);
-
- char *GetGadgetInput(
- char Previous[],
- char RemindString[],
- char PromptString[]) {
- register int classb;
- static char GadgetString[32];
- static struct IntuiText GadgetTxt=
- {1,2,JAM2,10,GADGETTEXTDOWN,NULL,NULL,NULL};
- static struct StringInfo
- StringStuff={NULL,NULL,0,STRINGSIZE,0,0,0,0,
- CLEFT,CTOP,NULL,0,NULL};
- SHORT GadgetPairs[]=
- {0,0,GADGETWIDTH,0,GADGETWIDTH,GADGETHEIGHT,0,
- GADGETHEIGHT,0,0};
- struct Border GadgetBorder=
- {LEFTEDGE,TOPEDGE,1,2,JAM1,5,NULL,NULL};
- static struct Gadget StringBox = {
- NULL,2,6,GADGETWIDTH,GADGETHEIGHT,
- GADGHCOMP,RELVERIFY|STRINGCENTER,
- STRGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,1,NULL};
-
- /*REQUESTER*/
- static UBYTE RequestString[32];
- static struct IntuiText RequestTxt={1,2,JAM2,10,REQUESTERTEXTDOWN,
- NULL,RequestString,NULL};
- static SHORT RequesterPairs[]={0,0,REQUESTERWIDTH-1,0,
- REQUESTERWIDTH-1,REQUESTERHEIGHT-1,0,REQUESTERHEIGHT-1,0,0};
- static struct Border RequesterBorder={0,0,1,0,JAM1,5,NULL,NULL};
-
- struct Requester AnswerRequest;
- struct IntuiMessage *message;
-
- BOOL Waiton=TRUE;
-
- InitRequester(&AnswerRequest);
- strcpy(RequestString,RemindString);
- strcpy(GadgetString,PromptString);
-
- AnswerRequest.OlderRequest=NULL;
- AnswerRequest.LeftEdge=10; /*position*/
- AnswerRequest.TopEdge=30;
- AnswerRequest.Width=REQUESTERWIDTH;
- AnswerRequest.Height=REQUESTERHEIGHT;
- AnswerRequest.RelLeft=0;
- AnswerRequest.RelTop=0;
- AnswerRequest.ReqGadget=&StringBox;
- AnswerRequest.ReqBorder=&RequesterBorder;
- AnswerRequest.ReqText=&RequestTxt;
- AnswerRequest.Flags=0;
- AnswerRequest.BackFill=3;
- AnswerRequest.ReqLayer=NULL;
- AnswerRequest.ImageBMap=NULL;
- AnswerRequest.RWindow = w;
-
- GadgetTxt.IText=GadgetString;
- GadgetBorder.XY=GadgetPairs;
- StringStuff.Buffer=Previous;
- StringStuff.UndoBuffer=Previous;
- StringBox.GadgetRender=(APTR)&GadgetBorder;
- StringBox.GadgetText=&GadgetTxt;
- StringBox.SpecialInfo=(APTR)&StringStuff;
- RequesterBorder.XY=RequesterPairs;
-
- Request(&AnswerRequest,w);
- OnGadget(&StringBox,w,&AnswerRequest);
- RefreshGadgets(&StringBox,w,&AnswerRequest);
-
- while (Waiton) {
- if(w->UserPort->mp_SigBit) {
- message=(struct IntuiMessage *)GetMsg(w->UserPort);
- if(message != NULL) {
- classb=message->Class;
- ReplyMsg((struct Message *)message);
- switch (classb) {
- case GADGETUP:
- EndRequest(&AnswerRequest,w);
- Waiton=FALSE;
- break;
- }
- }
- }
- }
- return Previous;
- }
-
- const char OKString[4]="OK";
- const struct IntuiText OKTxt={1,2,JAM2,14,1,NULL,OKString,NULL};
- const static SHORT OKPairs[]={0,0,41,0,41,12,0,12,0,0};
- struct Border OKBorder={-1,-1,1,0,JAM1,5,OKPairs,NULL};
- struct Gadget OKGadget = {
- NULL, /* next gadget */
- 250,30,41,12, /*left , top, wide, high*/
- GADGHCOMP,RELVERIFY|ENDGADGET,
- BOOLGADGET|REQGADGET,
- (APTR)&OKBorder,NULL,&OKTxt,0L,NULL,2,NULL};
-
- struct PropInfo SliderInfo={ /*Flags*/AUTOKNOB|FREEHORIZ,
- 0x8000 /*HorizPot %*/,0x8000 /*VertPot*/,
- /*HorizBody*/ 0x100 ,/* VertBody*/ 0x0,
- 0 /*CWidth*/,0 /*CHeight*/,0 /*HpotRes*/,0 /*VPotRes*/,
- 0 /*LeftBorder*/,0 /*TopBorder*/
- };
-
- const SHORT SliderPairs[]={0,0,GADGETWIDTH,0,GADGETWIDTH,GADGETHEIGHT,0,
- GADGETHEIGHT,0,0};
- const struct Border SliderBorder=
- {LEFTEDGE,TOPEDGE,1,2,JAM1,5,SliderPairs,NULL};
- struct Gadget SliderGadget = {
- &OKGadget,
- 23,20,GADGETWIDTH,8, /* left,top,wide,high*/
- GADGHCOMP,RELVERIFY|GADGIMMEDIATE,
- PROPGADGET|REQGADGET,
- (APTR)&SliderBorder,NULL,NULL,0L,
- (APTR)&SliderInfo,1,NULL};
-
- /*REQUESTER*/
- struct IntuiText RemindTxt={1,2,JAM2,5,30,NULL,NULL,NULL};
- const UBYTE TitleString[32]="Phase in Radians";
- const struct IntuiText TitleTxt={1,2,JAM2,
- 10 /*left */,1 /*top*/,NULL,TitleString,&RemindTxt};
- const char PhaseString[]="-pi -pi/2 0 pi/2 pi";
- struct IntuiText PhaseTxt={1,2,JAM2,25,11 /*text down*/,NULL,
- PhaseString,&TitleTxt};
- SHORT RequesterPairs[]={0,0,REQUESTERWIDTH-1,0,
- REQUESTERWIDTH-1,REQUESTERHEIGHT-1,0,REQUESTERHEIGHT-1,0,0};
- struct Border RequesterBorder={0,0,1,0,JAM1,5,NULL,NULL};
-
- double GetPhaseInput(double Previous, char TypeString[]) {
- struct IntuiMessage *message;
- double Answer;
- USHORT GadgetNum;
- struct Gadget *TempPtr;
- register int classb;
- struct Requester PhaseRequest;
- BOOL Waiton=TRUE;
- InitRequester(&PhaseRequest);
- PhaseRequest.OlderRequest=NULL;
- PhaseRequest.LeftEdge=10; /*position*/
- PhaseRequest.TopEdge=30;
- PhaseRequest.Width=REQUESTERWIDTH;
- PhaseRequest.Height=REQUESTERHEIGHT;
- PhaseRequest.RelLeft=0;
- PhaseRequest.RelTop=0;
- PhaseRequest.ReqGadget=&SliderGadget;
- PhaseRequest.ReqBorder=&RequesterBorder;
- PhaseRequest.ReqText=&PhaseTxt;
- PhaseRequest.Flags=0;
- PhaseRequest.BackFill=3;
- PhaseRequest.ReqLayer=NULL;
- PhaseRequest.ImageBMap=NULL;
- PhaseRequest.RWindow = w;
- RequesterBorder.XY=RequesterPairs;
- RemindTxt.IText=TypeString;
-
- if (fabs(Previous) > 3.141593) {
- Previous=(Previous/(fabs(Previous)))*(fabs(Previous)-3.141593);
- }
- SliderInfo.HorizPot=
- (short)(int)((double)10430*Previous+(double)0x8000);
-
- Request(&PhaseRequest,w);
- OnGadget(&SliderGadget,w,&PhaseRequest);
- RefreshGadgets(&SliderGadget,w,&PhaseRequest);
-
- while (Waiton) {
- if(w->UserPort->mp_SigBit) {
- message=(struct IntuiMessage *)GetMsg(w->UserPort);
- if(message != NULL) {
- classb=message->Class;
- TempPtr=(struct Gadget *)message->IAddress;
- ReplyMsg((struct Message *)message);
- if (classb == GADGETUP) {
- GadgetNum=TempPtr->GadgetID;
- }
- if (GadgetNum == 2) {
- switch (classb) {
- case GADGETUP:
- EndRequest(&PhaseRequest,w);
- Waiton=FALSE;
- Answer=
- ((95.9E-6)*(double)(SliderInfo.HorizPot))-3.141593;
- break;
- }
- }
- }
- }
- }
- return Answer;
- }
-
- int GetStringInput(char Previous[],
- char RemindString[],
- char PromptString[]) {
- int failure=0;
- USHORT GadgetNum;
- struct Gadget *TempPtr;
-
- char OKString[4]="OK";
- struct IntuiText OKTxt={1,2,JAM2,14,1,NULL,NULL,NULL};
- static SHORT OKPairs[]={0,0,41,0,41,12,0,12,0,0};
- struct Border OKBorder={-1,-1,1,0,JAM1,5,NULL,NULL};
- struct Gadget OKGadget = {
- NULL, /* next gadget */
- 250,32,41,12, /*left , top, wide, high*/
- GADGHCOMP,RELVERIFY|ENDGADGET,
- BOOLGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,1,NULL};
-
- char QuitString[8]="Quit";
- struct IntuiText QuitTxt={1,2,JAM2,4,1,NULL,NULL,NULL};
- struct Gadget QuitGadget = {
- NULL, /* next gadget */
- 190,32,41,12, /*left , top, wide, high*/
- GADGHCOMP,RELVERIFY|ENDGADGET,
- BOOLGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,2,NULL};
-
- register int classb;
- static char GadgetString[32];
- static struct IntuiText GadgetTxt=
- {1,2,JAM2,10,GADGETTEXTDOWN,NULL,NULL,NULL};
- static struct StringInfo
- StringStuff={NULL,NULL,0,STRINGSIZE,0,0,0,0,
- CLEFT,CTOP,NULL,0,NULL};
- static SHORT GadgetPairs[]=
- {0,0,GADGETWIDTH,0,GADGETWIDTH,GADGETHEIGHT,0,
- GADGETHEIGHT,0,0};
- static struct Border GadgetBorder=
- {LEFTEDGE,TOPEDGE,1,2,JAM1,5,NULL,NULL};
- static struct Gadget StringBox = {
- NULL,2,6,GADGETWIDTH,GADGETHEIGHT,
- GADGHCOMP,RELVERIFY|STRINGCENTER,
- STRGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,1,NULL};
-
- /*REQUESTER*/
- static UBYTE RequestString[32];
- static struct IntuiText RequestTxt={1,2,JAM2,10,REQUESTERTEXTDOWN,
- NULL,RequestString,NULL};
- static SHORT RequesterPairs[]={0,0,REQUESTERWIDTH-1,0,
- REQUESTERWIDTH-1,REQUESTERHEIGHT-1+25,0,REQUESTERHEIGHT-1+25,0,0};
- static struct Border RequesterBorder={0,0,1,0,JAM1,5,NULL,NULL};
-
- struct Requester AnswerRequest;
- struct IntuiMessage *message;
-
- BOOL Waiton=TRUE;
- InitRequester(&AnswerRequest);
- OKGadget.NextGadget=&QuitGadget;
- OKBorder.XY=OKPairs;
- OKGadget.GadgetRender=(APTR)&OKBorder;
- OKGadget.GadgetText=&OKTxt;
- QuitGadget.GadgetRender=(APTR)&OKBorder;
- QuitTxt.IText=QuitString;
- QuitGadget.GadgetText=&QuitTxt;
- OKTxt.IText=OKString;
- StringBox.NextGadget=&OKGadget;
-
- strcpy(RequestString,RemindString);
- strcpy(GadgetString,PromptString);
-
- AnswerRequest.OlderRequest=NULL;
- AnswerRequest.LeftEdge=10; /*position*/
- AnswerRequest.TopEdge=30;
- AnswerRequest.Width=REQUESTERWIDTH;
- AnswerRequest.Height=REQUESTERHEIGHT;
- AnswerRequest.RelLeft=0;
- AnswerRequest.RelTop=0;
- AnswerRequest.ReqGadget=&StringBox;
- AnswerRequest.ReqBorder=&RequesterBorder;
- AnswerRequest.ReqText=&RequestTxt;
- AnswerRequest.Flags=0;
- AnswerRequest.BackFill=3;
- AnswerRequest.ReqLayer=NULL;
- AnswerRequest.ImageBMap=NULL;
- AnswerRequest.RWindow = w;
-
- GadgetTxt.IText=GadgetString;
- GadgetBorder.XY=GadgetPairs;
- StringStuff.Buffer=Previous;
- StringStuff.UndoBuffer=Previous;
- StringBox.GadgetRender=(APTR)&GadgetBorder;
- StringBox.GadgetText=&GadgetTxt;
- StringBox.SpecialInfo=(APTR)&StringStuff;
- RequesterBorder.XY=RequesterPairs;
-
- Request(&AnswerRequest,w);
- OnGadget(&StringBox,w,&AnswerRequest);
- RefreshGadgets(&StringBox,w,&AnswerRequest);
-
- while (Waiton) {
- if(w->UserPort->mp_SigBit) {
- message=(struct IntuiMessage *)GetMsg(w->UserPort);
- if(message != NULL) {
- classb=message->Class;
- TempPtr=(struct Gadget *)message->IAddress;
- ReplyMsg((struct Message *)message);
- if(classb == GADGETUP) {
- GadgetNum=TempPtr->GadgetID;
- switch(GadgetNum) {
- case 0: /*got string*/
- failure=0;
- break;
- case 1: /*string OK*/
- failure=0;
- break;
- case 2: /*quit*/
- failure=1;
- break;
- }
- EndRequest(&AnswerRequest,w);
- Waiton=FALSE;
- break;
- }
- }
- }
- }
- return failure;
- }
-
- #include "AlgoRhythms.h"
-
- int GetChannelStuff(struct NoteEvent *Event, int Number) {
- /* TempWalking is int */
- /* ->Walking is int*/
- /* Gadget.Flags is USHORT*/
- int TempHigh,TempLow,TempChannel,TempWalking;
- char OKString[4]="OK"; /* L T txt next*/
- struct IntuiText OKTxt={1,2,JAM2,24,1,NULL,NULL,NULL};
- static SHORT OKPairs[]={0,0,61,0,61,12,0,12,0,0};
- /* XY */
- struct Border OKBorder={-1,-1,1,0,JAM1,5,NULL,NULL};
- struct Gadget OKGadget = {NULL, /* next gadget */
- 185,67,61,12, /*left , top, wide, high*/
- GADGHCOMP,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,1,NULL};
-
- char CancelString[8]="Cancel";
- struct IntuiText CancelTxt={1,2,JAM2,4,1,NULL,NULL,NULL};
- struct Gadget CancelGadget = {NULL, /* next gadget */
- 5,67,61,12, /*left , top, wide, high*/
- GADGHCOMP,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,2,NULL};
-
- static UBYTE HighString[16]="High Note";
- static struct IntuiText HighTxt={1,2,JAM2,1,-8,NULL,NULL,NULL};
- static char HighBuff[80];
- static struct StringInfo HighInfo={NULL,NULL,0,STRINGSIZE,0,0,0,0,
- LEFT,TOP,NULL,0,NULL};
- static USHORT HighPairs[10]={0,0,GADGETWIDE,0,
- GADGETWIDE,8,0,8,0,0};
- static struct Border HighBorder=
- {LEFTEDGE,TOPEDGE,1,2,JAM1,5,NULL,NULL};
- static struct Gadget HighGadg = {NULL,2,8,GADGETWIDE,GADGETHIGH,
- GADGHCOMP,RELVERIFY|STRINGCENTER,STRGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,3,NULL};
-
- static UBYTE LowString[16]="Low Note";
- static struct IntuiText LowTxt={1,2,JAM2,1,-8,NULL,NULL,NULL};
- static char LowBuff[80];
- static struct StringInfo LowInfo={NULL,NULL,0,STRINGSIZE,0,0,0,0,
- LEFT,TOP,NULL,0,NULL};
- static struct Gadget LowGadg = {NULL,2,24,GADGETWIDE,GADGETHIGH,
- GADGHCOMP,RELVERIFY|STRINGCENTER,STRGADGET|REQGADGET,
- NULL,NULL,NULL,0L,NULL,4,NULL};
-
- static UBYTE ChannelString[16]="Channel";
- static struct IntuiText ChannelTxt=
- {1,2,JAM2,1,-8,NULL,NULL,NULL};
- static char ChannelBuff[80];
- static struct StringInfo
- ChannelInfo={NULL,NULL,0,STRINGSIZE,0,0,0,0,
- LEFT,TOP,NULL,0,NULL};
- static struct Gadget ChannelGadg = {NULL,2,40,GADGETWIDE,GADGETHIGH,
- GADGHCOMP,RELVERIFY|STRINGCENTER,
- LONGINT|STRGADGET|REQGADGET,NULL,NULL,NULL,0L,NULL,5,NULL};
-
- static UBYTE WalkString[16]="Walk";
- static struct IntuiText WalkTxt=
- {1,2,JAM2,15,1,NULL,NULL,NULL};
- static struct Gadget WalkGadg = {NULL,95,67,61,12,
- GADGHCOMP,TOGGLESELECT|RELVERIFY,
- BOOLGADGET|REQGADGET,NULL,NULL,NULL,0L,NULL,6,NULL};
-
- /*REQUESTER*/
- static UBYTE RequestString[48];
- static struct IntuiText RequestTxt={1,2,JAM2,55,50,
- NULL,RequestString,NULL};
- static SHORT RequesterPairs[]={0,0,249,0,249,79,0,79,0,0};
- static struct Border RequesterBorder={0,0,1,0,JAM1,5,NULL,NULL};
-
- struct Requester AnswerRequest;
- struct IntuiMessage *message;
-
- register int classb;
- int failure=0;
- USHORT GadgetNum;
- struct Gadget *TempPtr;
-
- BOOL Waiton=TRUE;
- sprintf(RequestString,"%s %2d","Setup Channel",Number);
- TempHigh=Event->HighPitch;
- TempLow=Event->LowPitch;
- TempWalking=Event->Walking;
- TempChannel=Event->Channel;
-
- InitRequester(&AnswerRequest);
- /*NEW*/
- if(Event->Walking) {
- WalkGadg.Flags |= SELECTED;
- }
- else
- {
- WalkGadg.Flags &= ~(SELECTED);
- }
- OKGadget.NextGadget = NULL;
- CancelGadget.NextGadget=&OKGadget;
- HighGadg.NextGadget=&CancelGadget;
- LowGadg.NextGadget=&HighGadg;
- ChannelGadg.NextGadget=&LowGadg;
- WalkGadg.NextGadget=&ChannelGadg;
- /*NEW STRINGS*/
- OKTxt.IText=OKString;
- CancelTxt.IText=CancelString;
- HighTxt.IText=HighString;
- LowTxt.IText=LowString;
- ChannelTxt.IText=ChannelString;
- WalkTxt.IText=WalkString;
- /*NEW PAIRS*/
- OKBorder.XY=OKPairs;
- HighBorder.XY=HighPairs;
- /*NEW Borders*/
- OKGadget.GadgetRender = (APTR)&OKBorder;
- CancelGadget.GadgetRender = (APTR)&OKBorder;
- HighGadg.GadgetRender = (APTR)&HighBorder;
- LowGadg.GadgetRender = (APTR)&HighBorder;
- WalkGadg.GadgetRender = (APTR)&OKBorder;
- /*New txts*/
- OKGadget.GadgetText=&OKTxt;
- CancelGadget.GadgetText=&CancelTxt;
- HighGadg.GadgetText=&HighTxt;
- LowGadg.GadgetText=&LowTxt;
- ChannelGadg.GadgetText=&ChannelTxt;
- WalkGadg.GadgetText=&WalkTxt;
- /*NEW INFO*/
- HighGadg.SpecialInfo=(APTR)&HighInfo;
- LowGadg.SpecialInfo=(APTR)&LowInfo;
- ChannelGadg.SpecialInfo=(APTR)&ChannelInfo;
- /*New BUFFS*/
- HighInfo.Buffer=HighBuff;
- LowInfo.Buffer=LowBuff;
- ChannelInfo.Buffer=ChannelBuff;
-
- AnswerRequest.OlderRequest=NULL;
- AnswerRequest.LeftEdge=4; /*position*/
- AnswerRequest.TopEdge=3;
- AnswerRequest.Width=250;
- AnswerRequest.Height=80;
- AnswerRequest.RelLeft=0;
- AnswerRequest.RelTop=0;
- AnswerRequest.ReqGadget=&WalkGadg;
- AnswerRequest.ReqBorder=&RequesterBorder;
- AnswerRequest.ReqText=&RequestTxt;
- AnswerRequest.Flags=0;
- AnswerRequest.BackFill=3;
- AnswerRequest.ReqLayer=NULL;
- AnswerRequest.ImageBMap=NULL;
- AnswerRequest.RWindow = w;
- RequesterBorder.XY=RequesterPairs;
- sprintf(ChannelBuff,"%2d",Event->Channel);
- MIDItoPitchName(Event->HighPitch,HighBuff);
- MIDItoPitchName(Event->LowPitch,LowBuff);
-
- Request(&AnswerRequest,w);
- OnGadget(&WalkGadg,w,&AnswerRequest);
- RefreshGadgets(&WalkGadg,w,&AnswerRequest);
-
- while (Waiton) {
- if(w->UserPort->mp_SigBit) {
- message=(struct IntuiMessage *)GetMsg(w->UserPort);
- if(message != NULL) {
- classb=message->Class;
- TempPtr=(struct Gadget *)message->IAddress;
- ReplyMsg((struct Message *)message);
- if(classb == GADGETUP) {
- GadgetNum=TempPtr->GadgetID;
- switch(GadgetNum) {
- case 1: /*OK*/
- failure=0;
- if(TempHigh > 0) {
- Event->HighPitch=TempHigh;
- }
- if(TempLow > 0) {
- Event->LowPitch =TempLow;
- }
- Event->Channel=TempChannel;
- Event->Walking=TempWalking;
- Waiton=FALSE;
- break;
- case 2: /*Cancel*/
- failure=1;
- Waiton=FALSE;
- break;
- case 3: /*HighPitch*/
- failure=0;
- TempHigh=PitchNametoMIDI(HighBuff);
- break;
- case 4: /*LowPitch*/
- failure=0;
- TempLow=PitchNametoMIDI(LowBuff);
- break;
- case 5: /*Channel*/
- failure=0;
- TempChannel=atoi(ChannelBuff);
- break;
- case 6: /*Walking*/
- failure=0;
- TempWalking =
- ((WalkGadg.Flags & SELECTED) != 0);
- break;
- }
- }
- }
- }
- }
- EndRequest(&AnswerRequest,w);
- return failure;
- }
-
- char *MIDItoPitchName(int NoteNum, char *PitchName)
- {
- const char NoteNames[12][4]={"C","C#","D","D#","E","F","F#","G",
- "G#","A","A#","B"};
- sprintf(PitchName,"%s%1d",NoteNames[NoteNum % 12],(NoteNum/12)-1);
- return PitchName;
- }
-
- int PitchNametoMIDI(char *PitchName)
- {
- char TempString[4]={0,0,0,0};
- int PitchMIDI;
- const int SmallScale[7]={9,11,0,2,4,5,7};
-
- if((toupper(PitchName[0]) > 64) && (toupper(PitchName[0])<72))
- {
- PitchMIDI = SmallScale[toupper(PitchName[0])-65];
- }
- else { return 0; }
-
- if((strlen(PitchName) < 2) || (strlen(PitchName) >3)) return 0;
-
- if (strlen(PitchName) == 3)
- {
- switch (PitchName[1]) {
- case 'b':
- PitchMIDI = PitchMIDI-1;
- break;
- case 'B':
- PitchMIDI = PitchMIDI-1;
- break;
- case '#':
- PitchMIDI = PitchMIDI + 1;
- break;
- }
- }
- TempString[0]=PitchName[strlen(PitchName)-1];
- PitchMIDI=PitchMIDI+(12*(atoi(TempString)+1));
- return PitchMIDI;
- }
-