home *** CD-ROM | disk | FTP | other *** search
- #include "exec/types.h"
- #include "exec/exec.h"
- #include "intuition/intuition.h"
- #include "soundscape.h"
-
- /* First, the data for the icon in the Patch Panel */
-
- UWORD chorddata[] = {
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 6, 0,
- 1, 32768,
- 255, 57344,
- 1, 32768,
- 6, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 96,
- 0, 96,
- 3072, 96,
- 3072, 992,
- 3072, 992,
- 3072, 96,
- 3072, 96,
- 31744, 992,
- 31744, 992,
- 0, 96,
- 0, 96,
- 0, 992,
- 0, 992,
- 0, 0,
- 0, 0,
- 0, 0,
- };
-
- struct Image chordimage = { 0,0,32,16,2,chorddata,3,0,0 };
-
- /* This module has a port id. */
-
- unsigned short thisport;
-
- opencode(direction)
-
- /* Always happy to open. */
-
- unsigned char direction;
-
- {
- return(1);
- }
-
- closecode(direction)
-
- unsigned char direction;
-
- {
- return(1);
- }
-
- outcode(event)
-
- /* Strip the channel information from the status byte. If
- this is a NOTEON or NOTEOFF event, create two new events,
- copy the status and velocity into them, add constants to
- their note values, and ship off all three. Otherwise,
- free this event.
- */
-
- struct Note *event;
-
- {
- struct Note *secondevent;
- unsigned char status;
- enteraztec();
- status = event->status & 0xF0;
- if ((status == NOTEON) || (status == NOTEOFF)) {
- secondevent = (struct Note *) AllocNode(NOTE);
- if (secondevent) {
- secondevent->status = event->status;
- secondevent->velocity = event->velocity;
- secondevent->value = event->value + 4;
- Send(thisport,secondevent);
- }
- secondevent = (struct Note *) AllocNode(NOTE);
- if (secondevent) {
- secondevent->status = event->status;
- secondevent->velocity = event->velocity;
- secondevent->value = event->value + 7;
- Send(thisport,secondevent);
- }
- Send(thisport,event);
- }
- else FreeNode(event);
- leaveaztec();
- }
-
- long SoundScapeBase;
-
- main() {
- SoundScapeBase = OpenLibrary("soundscape.library",0);
- if (SoundScapeBase) {
- CloseLibrary(SoundScapeBase);
- thisport = AddMidiPort(opencode,closecode,0,outcode,&chordimage,
- &chordimage,-1,"chord maker");
- SetTaskPri(FindTask(0),-20);
- while (MidiPort(thisport)) Delay(100);
- }
- }
-
-