Annotation of src/sosm.h, revision 1.1

1.1     ! root        1: /****************************************************************************
        !             2: 
        !             3:    File              : sosm.h
        !             4: 
        !             5:    Programmer(s)     : Don Fowler, Nick Skrepetos
        !             6:    Date              :
        !             7: 
        !             8:    Purpose           : Include Files For Zortech C++ Compiler
        !             9: 
        !            10:    Last Updated      :
        !            11: 
        !            12: ****************************************************************************
        !            13:                Copyright(c) 1993,1994 Human Machine Interfaces 
        !            14:                             All Rights Reserved
        !            15: ****************************************************************************/
        !            16: 
        !            17: #ifndef  _SOS_MIDI_DEFINED   
        !            18: #define  _SOS_MIDI_DEFINED   
        !            19: 
        !            20: #include "sosdefs.h"
        !            21: #include "sos.h"
        !            22: 
        !            23: #pragma pack(4)
        !            24: 
        !            25: #define  _SOS_MIDI_ERR          -1
        !            26: 
        !            27: // number of drivers allowed to be open at one time
        !            28: #define  _SOS_MIDI_MAX_DRIVERS  5
        !            29: 
        !            30: // maximum number of allowed channels
        !            31: #define  _SOS_MIDI_MAX_CHANNELS    0x10
        !            32: 
        !            33: // structure definition for the capabilities
        !            34: typedef struct
        !            35: {
        !            36:    BYTE     szDeviceName[ 32 ];  // device name
        !            37:    WORD     wDeviceVersion;      // device version
        !            38:    WORD     wFlags;              // miscellaneous flags   
        !            39:    WORD     wProcessData;        // process data before sending to driver
        !            40:    short far *   lpPortList;          // list of usable ports
        !            41:    short far *   lpIRQList;           // list of usable irq channels
        !            42:    WORD     wDeviceID;           // ID for the device
        !            43:    
        !            44: } _SOS_MIDI_CAPABILITIES; 
        !            45: 
        !            46: #define  LPSOSMIDIDEVICECAPS  _SOS_MIDI_CAPABILITIES far *
        !            47: 
        !            48: // call indexes for the loadable drivers
        !            49: enum
        !            50: { 
        !            51:    _DRV_MIDI_GET_CAPS,
        !            52:    _DRV_MIDI_GET_CALL_TABLE,
        !            53:    _DRV_MIDI_SPECIAL1
        !            54: };
        !            55: 
        !            56: // file header for the driver
        !            57: typedef struct
        !            58: {
        !            59:    // name ID
        !            60:    BYTE  szName[ 32 ];
        !            61: 
        !            62:    // number of drivers in the file
        !            63:    WORD  wDrivers;
        !            64: 
        !            65:    // offset of first driver
        !            66:    WORD  lOffset;
        !            67: 
        !            68:    // size of the file
        !            69:    WORD  lFileSize;
        !            70: 
        !            71: } _MIDIFILEHEADER;
        !            72: 
        !            73: // driver header structure
        !            74: typedef struct
        !            75: {
        !            76:    // name ID
        !            77:    BYTE  szName[ 32 ];
        !            78: 
        !            79:    // offset of next driver
        !            80:    WORD  lNextDriver;
        !            81: 
        !            82:    // size of current driver
        !            83:    WORD  wSize;
        !            84: 
        !            85:    // id for the current device
        !            86:    WORD  wDeviceID;
        !            87: 
        !            88:    // id for the extender type
        !            89:    WORD  wExtenderType;
        !            90: 
        !            91: } _MIDIDRIVERHEADER;
        !            92: 
        !            93: // device hardware information
        !            94: typedef struct
        !            95: {
        !            96:    // port to be used
        !            97:    WORD  wPort;
        !            98: 
        !            99:    // IRQ for the board
        !           100:    WORD  wIRQ;
        !           101: 
        !           102:    // extra parameter
        !           103:    WORD  wParam;
        !           104: 
        !           105: } _SOS_MIDI_HARDWARE;
        !           106: 
        !           107: // structure for initializing a digital driver 
        !           108: typedef struct
        !           109: {
        !           110:    // ID for the digital driver
        !           111:    WORD  wDriverID;
        !           112: 
        !           113:    // timer rate to use
        !           114:    WORD  wTimerRate;
        !           115: 
        !           116:    // timer callback rate to use
        !           117:    WORD  wTimerCallbackRate;
        !           118: 
        !           119:    // max voices for the driver to use
        !           120:    WORD  wMaxVoices;
        !           121: 
        !           122:    // velocity sensing flag
        !           123:    WORD  wVelocitySensing;
        !           124: 
        !           125:    // init driver info
        !           126:    _SOS_INIT_DRIVER far * sDIGIDriverInfo;
        !           127: 
        !           128:    // hardware information
        !           129:    _SOS_HARDWARE far *  sDIGIHardwareInfo;    
        !           130: 
        !           131: } _SOS_MIDI_DIGI_INIT_DRIVER;
        !           132: 
        !           133: // structure for initializing a driver
        !           134: typedef struct
        !           135: {  
        !           136:    // type of driver to use if using a digital driver
        !           137:    WORD        wDIGIDriverID;
        !           138: 
        !           139:    // pointer to driver memory
        !           140:    VOID far * lpDriverMemory;
        !           141:    VOID far * lpDriverMemoryCS;
        !           142: 
        !           143:    // pointer to digital driver initialization information
        !           144:    _SOS_MIDI_DIGI_INIT_DRIVER far * sDIGIInitInfo;
        !           145: 
        !           146:    // miscellaneous WORD parameter for driver
        !           147:    WORD  wParam;
        !           148: 
        !           149:    // miscellaneous DWORD parameter for driver
        !           150:    DWORD dwParam;
        !           151: 
        !           152: } _SOS_MIDI_INIT_DRIVER;
        !           153: 
        !           154: // structure for starting a song
        !           155: typedef struct
        !           156: {  
        !           157:    // pointer to song memory 
        !           158:    BYTE _huge * lpSongData;
        !           159: 
        !           160:    // pointer to callback function for pertinent song information
        !           161:    VOID ( far * lpSongCallback )( WORD );
        !           162: 
        !           163: } _SOS_MIDI_INIT_SONG;
        !           164: 
        !           165: // define to indicate that track mapping can be used
        !           166: // from the midi file for the song
        !           167: #define  _MIDI_MAP_TRACK   0xff
        !           168:   
        !           169: // MIDI channel to device mapping structure
        !           170: typedef struct
        !           171: {
        !           172:    // track to device mapping information
        !           173:    WORD wTrackDevice[ 32 ];
        !           174:      
        !           175: } _SOS_MIDI_TRACK_DEVICE;
        !           176: 
        !           177: // MIDI channel to device mapping structure
        !           178: typedef struct
        !           179: {
        !           180:    // track to device mapping information
        !           181:    WORD wTrackDevice[ 32 ][ 5 ];
        !           182:      
        !           183: } _SOS_MIDI_TRACK_DEVICE1;
        !           184: 
        !           185: // NEW
        !           186: // header for the NDMF format MIDI file 
        !           187: typedef struct
        !           188: {
        !           189:    // ID for the file
        !           190:    BYTE  szFileID[ 32 ];
        !           191: 
        !           192:    WORD dwBranchOffset;
        !           193:    WORD temp1;
        !           194:    WORD temp2;
        !           195:    WORD temp3;
        !           196: 
        !           197: //   // name of the instrument file to use with the song   
        !           198: //   BYTE  szInstrumentFile[ 16 ];
        !           199: 
        !           200:    // number of tracks in the song
        !           201:    WORD  wNDMFTracks;
        !           202: 
        !           203:    // ticks/quarter note song is used at
        !           204:    WORD  wTicksQuarterNote;
        !           205: 
        !           206:    // tempo
        !           207:    WORD  wTempo;
        !           208: 
        !           209:    // time for song to play at current tempo
        !           210:    WORD  wTimeToPlay;
        !           211: 
        !           212:    // channel mapping priority information
        !           213:    WORD  wChannelPriority[ _SOS_MIDI_MAX_CHANNELS ];
        !           214: 
        !           215:    // channel mapping information
        !           216:    _SOS_MIDI_TRACK_DEVICE1 sTrackMap;
        !           217: 
        !           218:    // array of flags for which controllers to restore on a loop/branch
        !           219:    BYTE  bCtrlRestore[ 128 ];
        !           220: 
        !           221:    // pointer to callback function for song to call with 
        !           222:    // pertinent information
        !           223:    VOID ( far * lpSongCallback )( WORD ); 
        !           224: 
        !           225: } _NDMF_FILE_HEADER;
        !           226: // END
        !           227: 
        !           228: // header for the tracks in the NDMF format MIDI file
        !           229: typedef struct
        !           230: {
        !           231:    // track number
        !           232:    WORD  wTrackNumber;
        !           233: 
        !           234:    // length of the track
        !           235:    WORD  wTrackLength;
        !           236: 
        !           237:    // channel used on the track
        !           238:    WORD  wChannel;
        !           239: 
        !           240: } _NDMF_TRACK_HEADER;
        !           241: 
        !           242: // MIDI event structure
        !           243: typedef struct
        !           244: {
        !           245:    // dummy name to access midi data from
        !           246:    BYTE  bMidiData[ 256 ];
        !           247: 
        !           248: } _NDMF_MIDI_EVENT;
        !           249: 
        !           250: // maximum number of songs that can be played at any time
        !           251: #define  _SOS_MIDI_MAX_SONGS     8
        !           252: 
        !           253: // maximum number of tracks that can be used
        !           254: #define  _SOS_MIDI_MAX_TRACKS    32
        !           255: 
        !           256: // number of driver functions
        !           257: #define  _SOS_MIDI_DRV_FUNCTIONS 12
        !           258: 
        !           259: // enumeration for all of the drv functions
        !           260: enum
        !           261: {
        !           262:    _MIDI_DRV_SEND_DATA,
        !           263:    _MIDI_DRV_INIT,
        !           264:    _MIDI_DRV_UNINIT,
        !           265:    _MIDI_DRV_RESET,
        !           266:    _MIDI_DRV_SET_INST_DATA
        !           267: };
        !           268: 
        !           269: // defines for the loadable driver ids
        !           270: #define  _MIDI_SOUND_MASTER_II      0xa000
        !           271: #define  _MIDI_MPU_401              0xa001
        !           272: #define  _MIDI_FM                   0xa002
        !           273: #define  _MIDI_OPL2                 0xa002
        !           274: #define  _MIDI_CALLBACK             0xa003
        !           275: #define  _MIDI_MT_32                0xa004
        !           276: #define  _MIDI_DIGI                 0xa005  
        !           277: #define  _MIDI_INTERNAL_SPEAKER     0xa006
        !           278: #define  _MIDI_WAVE_TABLE_SYNTH     0xa007  
        !           279: #define  _MIDI_AWE32                0xa008  
        !           280: #define  _MIDI_OPL3                 0xa009  
        !           281: #define  _MIDI_GUS                  0xa00a  
        !           282: 
        !           283: // structure for the hmi instrument file header
        !           284: typedef struct
        !           285: {
        !           286:    // file id type
        !           287:    BYTE  szFileID[ 32 ];
        !           288: 
        !           289:    // file version
        !           290:    WORD  wFileVersion;
        !           291: 
        !           292:    // size of the file
        !           293:    WORD dwFileSize;
        !           294: 
        !           295: } _HMI_INS_FILE_HEADER;
        !           296: 
        !           297: 
        !           298: // define for identifying a drum instrument  
        !           299: #define  _SOS_MIDI_DRUM_INS   ( short )0x8000
        !           300: 
        !           301: // maximum number of timer events that can be registered 
        !           302: #define  _TIMER_MAX_EVENTS    0x10  
        !           303: 
        !           304: // structure for digital driver queue element
        !           305: typedef struct _tagQueueElement
        !           306: {
        !           307:    // handle for the sample
        !           308:    WORD  wSampleHandle;
        !           309: 
        !           310:    // id for the sample
        !           311:    WORD  wSampleID;
        !           312: 
        !           313:    // velocity for the sample
        !           314:    WORD  wVelocity;
        !           315: 
        !           316:    // channel for the sample
        !           317:    WORD  wChannel;
        !           318: 
        !           319: } _DIGI_QUEUE_ELEMENT;
        !           320: 
        !           321: // maximum number of instruments that can be set in the 
        !           322: // digital driver
        !           323: #define  _MAX_INS    128
        !           324: 
        !           325: // define for the maximum number of times a channel can be stolen
        !           326: #define  _SOS_MIDI_MAX_LEVELS    0x04
        !           327: 
        !           328: // structure for MIDI information to be stored on the local stack
        !           329: // when a channel is stolen
        !           330: typedef struct
        !           331: {
        !           332:    // used element
        !           333:    BYTE  bUsed;
        !           334: 
        !           335:    // last pitch bend information sent
        !           336:    BYTE  bPitchBend;
        !           337: 
        !           338:    // channel volume
        !           339:    BYTE  bChannelVolume;
        !           340: 
        !           341:    // instrument information
        !           342:    BYTE  bInstrument;
        !           343: 
        !           344:    // sustain pedal
        !           345:    BYTE  bSustain;
        !           346: 
        !           347: } _SOS_MIDI_CHANNEL_DATA;
        !           348:  
        !           349: // flags for the debugging system
        !           350: #define  _SOS_DEBUG_NORMAL       0x0000
        !           351: #define  _SOS_DEBUG_NO_TIMER     0x0001
        !           352: 
        !           353: // ID for 32 bit MIDI file
        !           354: #define  _SOS_MIDI_FILE_ID       "HMIMIDIP"  
        !           355: 
        !           356: // structure for branch location controller
        !           357: typedef struct
        !           358: {
        !           359:    // offset from start of track data
        !           360:    WORD     dwOffset;
        !           361: 
        !           362:    // branch ID number
        !           363:    BYTE     bBranchID;
        !           364: 
        !           365:    // current instrument
        !           366:    BYTE     bInstrument;
        !           367: 
        !           368:    // current loop count for temporary storage
        !           369:    // so that a track can be looped without 
        !           370:    // needing any data from the program
        !           371:    BYTE     bLoopCount;
        !           372: 
        !           373:    // number of controller messages stored
        !           374:    BYTE     bCtrlChangeCount;
        !           375: 
        !           376:    // offset of control change information from start of file
        !           377:    WORD     lpCtrlChangeData;   
        !           378:    WORD     lpCtrlChangeDataTemp;
        !           379:    
        !           380:    // reserved fields
        !           381:    WORD     wReserved1;
        !           382:    WORD     wReserved2;
        !           383: 
        !           384: } _SOS_BRANCH_POINT;
        !           385: 
        !           386: #define  _SOS_MIDI_FADE_IN          0x01  
        !           387: #define  _SOS_MIDI_FADE_OUT         0x02  
        !           388: #define  _SOS_MIDI_FADE_OUT_STOP    0x04  
        !           389: 
        !           390: // structure for digital drums to use to store midi information
        !           391: typedef struct
        !           392: {
        !           393:    // current volume
        !           394:    WORD  wVolume;
        !           395: 
        !           396:    // current pan position
        !           397:    WORD  wPanPosition;
        !           398: 
        !           399:    // reserved
        !           400:    DWORD dwReserved;
        !           401:    
        !           402: } _SOS_MIDI_DIGI_CHANNEL;
        !           403: 
        !           404: // instrument file header structure
        !           405: typedef struct
        !           406: {
        !           407:    // file ID
        !           408:    BYTE  szID[ 32 ];
        !           409: 
        !           410:    // file version
        !           411:    WORD  wVersion;
        !           412: 
        !           413:    // instruments in file
        !           414:    WORD  wInstruments;
        !           415: 
        !           416:    // list of pointers to start sample structures
        !           417:    _SOS_START_SAMPLE far * lpStartSample[ _MAX_INS ];
        !           418: 
        !           419:    DWORD temp1;
        !           420:    DWORD temp2;
        !           421: 
        !           422: } _WAVE_FILE_HEADER;
        !           423: 
        !           424: #pragma pack()
        !           425: 
        !           426: // define for the busy error returned from send data
        !           427: #define  _ERR_DRIVER_BUSY  0xf000
        !           428: 
        !           429: // NEW
        !           430: // defines for the looping branch controllers
        !           431: #define  _SOS_SET_FLAG   103
        !           432: #define  _SOS_RESET_FLAG 104
        !           433: #define  _SOS_BRANCH1   108
        !           434: #define  _SOS_BRANCH2   109
        !           435: #define  _SOS_BRANCH3   110
        !           436: #define  _SOS_BRANCH4   111
        !           437: #define  _SOS_BRANCH5   112
        !           438: #define  _SOS_BRANCH6   113
        !           439: #define  _SOS_BRANCH7   114
        !           440: #define  _SOS_BRANCH8   115
        !           441: #define  _SOS_BRANCH9   116
        !           442: #define  _SOS_BRANCH10  117
        !           443: #define  _SOS_BRANCH11  118
        !           444: #define  _SOS_BRANCH12  119
        !           445: #define  _SOS_BRANCH13  120
        !           446: #define  _SOS_BRANCH14  121
        !           447: 
        !           448: // define for the program change controller flag
        !           449: #define  _SOS_PROGRAM_CHANGE_FLAG   108
        !           450: 
        !           451: // END
        !           452: #include "sosmdata.h"
        !           453: #include "sosmfnct.h"
        !           454: 
        !           455: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.