home *** CD-ROM | disk | FTP | other *** search
/ RISCWORLD 7 / RISCWORLD_VOL7.iso / Software / Issue4 / IYONIX / MANICMINER / SOURCE.ZIP / manicminer-1.6.3 / sndlibs / midas / h / midasdll < prev   
Encoding:
Text File  |  2000-12-01  |  14.5 KB  |  532 lines

  1. /*      midasdll.h
  2.  *
  3.  * MIDAS DLL programming interface
  4.  *
  5.  * $Id: midasdll.h,v 1.32 1997/08/15 16:48:25 pekangas Exp $
  6.  *
  7.  * Copyright 1996,1997 Housemarque Inc.
  8.  *
  9.  * This file is part of MIDAS Digital Audio System, and may only be
  10.  * used, modified and distributed under the terms of the MIDAS
  11.  * Digital Audio System license, "license.txt". By continuing to use,
  12.  * modify or distribute this file you indicate that you have
  13.  * read the license and understand and accept it fully.
  14. */
  15.  
  16.  
  17. #ifndef __midasdll_h
  18. #define __midasdll_h
  19.  
  20.  
  21. /* This is a kluge, but necessary as Watcom C sucks: */
  22. #ifdef EXPORT_IN_MIDASDLL_H
  23.  
  24. #ifdef __WC32__
  25. #define _FUNC(x) x __export __stdcall
  26. #define MIDAS_CALL __cdecl
  27. #else
  28. #define _FUNC(x) __declspec(dllexport) x __stdcall
  29. #define MIDAS_CALL __cdecl
  30. #endif
  31.  
  32. #else
  33. #if defined(__linux__) || defined(__UNIX__) || defined(__DJGPP__)
  34. #define _FUNC(x) x
  35. #define MIDAS_CALL
  36. #else
  37. #ifdef __DOS__
  38. #define _FUNC(x) x cdecl
  39. #define MIDAS_CALL __cdecl
  40. #else
  41. #define _FUNC(x) x __stdcall
  42. #define MIDAS_CALL __cdecl
  43. #endif
  44. #endif
  45. #endif
  46.  
  47.  
  48. #if defined(__WATCOMC__) && defined(__cplusplus)
  49. /* Disable to annoying Watcom C++ warnings - I have no idea how to get around
  50.    these without breaking Visual C compatibility: */
  51. #pragma warning 604 9
  52. #pragma warning 594 9
  53. #endif
  54.  
  55.  
  56. /* We'll need to define DWORD, BOOL, TRUE and FALSE if someone hasn't
  57.    done that before. For now, we'll just assume that if no-one has defined
  58.    TRUE we need to define everything. There definitions are compatible with
  59.    windows.h. If something else in your system defines these differently,
  60.    things should still work OK as long as FALSE is 0, TRUE is nonzero and
  61.    DWORD is 32-bit. Take care that you don't compare BOOLs like "bool == TRUE"
  62.    in that case though, just use "bool".
  63.  
  64.    THIS IS UGLY AND MAY NEED FIXING!
  65.    ---------------------------------
  66. */
  67.  
  68. #ifndef TRUE
  69. #define TRUE 1
  70. #define FALSE 0
  71. typedef int BOOL;
  72. typedef unsigned long DWORD;
  73. #endif /* ifndef TRUE */
  74.  
  75.  
  76.  
  77. enum MIDASoptions
  78. {
  79.   MIDAS_OPTION_NONE = 0,
  80.   MIDAS_OPTION_MIXRATE,
  81.   MIDAS_OPTION_OUTPUTMODE,
  82.   MIDAS_OPTION_MIXBUFLEN,
  83.   MIDAS_OPTION_MIXBUFBLOCKS,
  84.   MIDAS_OPTION_DSOUND_MODE,
  85.   MIDAS_OPTION_DSOUND_HWND,
  86.   MIDAS_OPTION_DSOUND_OBJECT,
  87.   MIDAS_OPTION_DSOUND_BUFLEN,
  88.   MIDAS_OPTION_16BIT_ULAW_AUTOCONVERT,
  89.   MIDAS_OPTION_FILTER_MODE,
  90.   MIDAS_OPTION_MIXING_MODE,
  91.   MIDAS_OPTION_DEFAULT_STEREO_SEPARATION,
  92.   MIDAS_OPTION_FORCE_NO_SOUND
  93. };
  94.  
  95.  
  96. enum MIDASmodes
  97. {
  98.   MIDAS_MODE_NONE = 0,
  99.   MIDAS_MODE_MONO = 1,
  100.   MIDAS_MODE_STEREO = 2,
  101.   MIDAS_MODE_8BIT = 4,
  102.   MIDAS_MODE_16BIT = 8,
  103.   MIDAS_MODE_8BIT_MONO = MIDAS_MODE_8BIT | MIDAS_MODE_MONO,
  104.   MIDAS_MODE_8BIT_STEREO = MIDAS_MODE_8BIT | MIDAS_MODE_STEREO,
  105.   MIDAS_MODE_16BIT_MONO = MIDAS_MODE_16BIT | MIDAS_MODE_MONO,
  106.   MIDAS_MODE_16BIT_STEREO = MIDAS_MODE_16BIT | MIDAS_MODE_STEREO
  107. };
  108.  
  109.  
  110.  
  111. enum MIDASsampleTypes
  112. {
  113.   MIDAS_SAMPLE_NONE = 0,
  114.   MIDAS_SAMPLE_8BIT_MONO = 1,
  115.   MIDAS_SAMPLE_16BIT_MONO = 2,
  116.   MIDAS_SAMPLE_8BIT_STEREO = 3,
  117.   MIDAS_SAMPLE_16BIT_STEREO = 4,
  118.   MIDAS_SAMPLE_ADPCM_MONO = 5,
  119.   MIDAS_SAMPLE_ADPCM_STEREO = 6,
  120.   MIDAS_SAMPLE_ULAW_MONO = 7,
  121.   MIDAS_SAMPLE_ULAW_STEREO = 8
  122. };
  123.  
  124.  
  125.  
  126. enum MIDASloop
  127. {
  128.   MIDAS_LOOP_NO = 0,
  129.   MIDAS_LOOP_YES
  130. };
  131.  
  132.  
  133. enum MIDASpanning
  134. {
  135.   MIDAS_PAN_LEFT = -64,
  136.   MIDAS_PAN_MIDDLE = 0,
  137.   MIDAS_PAN_RIGHT = 64,
  138.   MIDAS_PAN_SURROUND = 0x80
  139. };
  140.  
  141.  
  142. enum MIDASchannels
  143. {
  144.   MIDAS_CHANNEL_AUTO = 0xFFFF,
  145.   MIDAS_ILLEGAL_CHANNEL = 0xFFFF
  146. };
  147.  
  148.  
  149. enum MIDASdsoundModes
  150. {
  151.   MIDAS_DSOUND_DISABLED = 0,
  152.   MIDAS_DSOUND_STREAM,
  153.   MIDAS_DSOUND_PRIMARY,
  154.   MIDAS_DSOUND_FORCE_STREAM
  155. };
  156.  
  157.  
  158. enum MIDASpositions
  159. {
  160.   MIDAS_POSITION_DEFAULT = 0xFFFFFFFF
  161. };
  162.  
  163.  
  164.  
  165. enum MIDASfilterModes
  166. {
  167.   MIDAS_FILTER_NONE = 0,
  168.   MIDAS_FILTER_LESS = 1,
  169.   MIDAS_FILTER_MORE = 2,
  170.   MIDAS_FILTER_AUTO = 3
  171. };
  172.  
  173.  
  174. enum MIDASechoFilterTypes
  175. {
  176.   MIDAS_ECHO_FILTER_NONE = 0,
  177.   MIDAS_ECHO_FILTER_LOWPASS = 1,
  178.   MIDAS_ECHO_FILTER_HIGHPASS = 2
  179. };
  180.  
  181.  
  182. enum MIDASmixingModes
  183. {
  184.   MIDAS_MIX_NORMAL_QUALITY = 0,
  185.   MIDAS_MIX_HIGH_QUALITY = 1
  186. };
  187.  
  188.  
  189. enum MIDASsamplePlayStatus
  190. {
  191.   MIDAS_SAMPLE_STOPPED = 0,
  192.   MIDAS_SAMPLE_PLAYING = 1
  193. };
  194.  
  195.  
  196. enum MIDASpostProcPosition
  197. {
  198.   MIDAS_POST_PROC_FIRST = 0,
  199.   MIDAS_POST_PROC_LAST
  200. };
  201.  
  202.  
  203.  
  204. typedef struct
  205. {
  206.   char songName[32];
  207.   unsigned songLength;
  208.   unsigned numPatterns;
  209.   unsigned numInstruments;
  210.   unsigned numChannels;
  211. }
  212. MIDASmoduleInfo;
  213.  
  214.  
  215.  
  216. typedef struct
  217. {
  218.   char instName[32];
  219. }
  220. MIDASinstrumentInfo;
  221.  
  222.  
  223.  
  224. typedef struct
  225. {
  226.   unsigned position;
  227.   unsigned pattern;
  228.   unsigned row;
  229.   int syncInfo;
  230.   unsigned songLoopCount;
  231. }
  232. MIDASplayStatus;
  233.  
  234.  
  235. typedef struct
  236. {
  237.   unsigned delay;        /* milliseconds, 16.16 fixed point */
  238.   int gain;            /* gain, 16.16 fixed point */
  239.   int reverseChannels;        /* reverse channels? */
  240.   unsigned filterType;        /* filter type, MIDASechoFilterTypes */
  241. }
  242. MIDASecho;
  243.  
  244.  
  245. typedef struct
  246. {
  247.   int feedback;            /* feedback, 16.16 fixed point */
  248.   int gain;            /* total gain, 16.16 fixed point */
  249.   unsigned numEchoes;        /* number of echoes */
  250.   MIDASecho *echoes;        /* the echoes */
  251. }
  252. MIDASechoSet;
  253.  
  254.  
  255. typedef void (MIDAS_CALL * MIDASpostProcFunction) (void *data,
  256.                            unsigned numSamples,
  257.                            void *user);
  258.  
  259. typedef struct _MIDASpostProcessor
  260. {
  261.   struct _MIDASpostProcessor *next, *prev;    /* reserved */
  262.   void *userData;        /* reserved */
  263.   MIDASpostProcFunction floatMono;
  264.   MIDASpostProcFunction floatStereo;
  265.   MIDASpostProcFunction intMono;
  266.   MIDASpostProcFunction intStereo;
  267. }
  268. MIDASpostProcessor;
  269.  
  270.  
  271.  
  272. typedef void *MIDASmodule;
  273. typedef DWORD MIDASmodulePlayHandle;
  274. typedef DWORD MIDASsample;
  275. typedef DWORD MIDASsamplePlayHandle;
  276. typedef void *MIDASstreamHandle;
  277. typedef void *MIDASechoHandle;
  278.  
  279.  
  280. #ifdef __cplusplus
  281. extern "C"
  282. {
  283. #endif
  284.  
  285.   _FUNC (int) MIDASgetLastError (void);
  286.     _FUNC (char *) MIDASgetErrorMessage (int errorCode);
  287.  
  288.     _FUNC (DWORD) MIDASgetDisplayRefreshRate (void);
  289.  
  290.     _FUNC (BOOL) MIDASstartup (void);
  291.     _FUNC (BOOL) MIDASdetectSD (void);
  292.     _FUNC (BOOL) MIDASdetectSoundCard (void);
  293.     _FUNC (BOOL) MIDASconfig (void);
  294.     _FUNC (BOOL) MIDASloadConfig (char *fileName);
  295.     _FUNC (BOOL) MIDASsaveConfig (char *fileName);
  296.     _FUNC (BOOL) MIDASreadConfigRegistry (DWORD key, char *subKey);
  297.     _FUNC (BOOL) MIDASwriteConfigRegistry (DWORD key, char *subKey);
  298.  
  299.     _FUNC (BOOL) MIDASinit (void);
  300.     _FUNC (BOOL) MIDASsetOption (int option, DWORD value);
  301.     _FUNC (DWORD) MIDASgetOption (int option);
  302.     _FUNC (BOOL) MIDASclose (void);
  303.     _FUNC (BOOL) MIDASsuspend (void);
  304.     _FUNC (BOOL) MIDASresume (void);
  305.     _FUNC (BOOL) MIDASopenChannels (int numChannels);
  306.     _FUNC (BOOL) MIDAScloseChannels (void);
  307.     _FUNC (BOOL) MIDASsetAmplification (DWORD amplification);
  308.     _FUNC (BOOL) MIDASstartBackgroundPlay (DWORD pollRate);
  309.     _FUNC (BOOL) MIDASstopBackgroundPlay (void);
  310.     _FUNC (BOOL) MIDASpoll (void);
  311.     _FUNC (void) MIDASlock (void);
  312.     _FUNC (void) MIDASunlock (void);
  313.     _FUNC (char *) MIDASgetVersionString (void);
  314.     _FUNC (BOOL) MIDASsetTimerCallbacks (DWORD rate, BOOL displaySync,
  315.                      void (MIDAS_CALL * preVR) (),
  316.                      void (MIDAS_CALL * immVR) (),
  317.                      void (MIDAS_CALL * inVR) ());
  318.     _FUNC (BOOL) MIDASremoveTimerCallbacks (void);
  319.  
  320.     _FUNC (DWORD) MIDASallocateChannel (void);
  321.     _FUNC (BOOL) MIDASfreeChannel (DWORD channel);
  322.  
  323.     _FUNC (MIDASmodule) MIDASloadModule (char *fileName);
  324.     _FUNC (MIDASmodulePlayHandle) MIDASplayModule (MIDASmodule module,
  325.                            BOOL loopSong);
  326.     _FUNC (MIDASmodulePlayHandle) MIDASplayModuleSection (MIDASmodule module,
  327.                               unsigned startPos,
  328.                               unsigned endPos,
  329.                               unsigned restartPos,
  330.                               BOOL loopSong);
  331.     _FUNC (BOOL) MIDASstopModule (MIDASmodulePlayHandle playHandle);
  332.     _FUNC (BOOL) MIDASfreeModule (MIDASmodule module);
  333.  
  334.     _FUNC (BOOL) MIDASgetPlayStatus (MIDASmodulePlayHandle playHandle,
  335.                      MIDASplayStatus * status);
  336.     _FUNC (BOOL) MIDASsetPosition (MIDASmodulePlayHandle playHandle,
  337.                    int newPosition);
  338.     _FUNC (BOOL) MIDASsetMusicVolume (MIDASmodulePlayHandle playHandle,
  339.                       unsigned volume);
  340.     _FUNC (BOOL) MIDASgetModuleInfo (MIDASmodule module, MIDASmoduleInfo * info);
  341.     _FUNC (BOOL) MIDASgetInstrumentInfo (MIDASmodule module, int instNum,
  342.                      MIDASinstrumentInfo * info);
  343.     _FUNC (BOOL) MIDASsetMusicSyncCallback (MIDASmodulePlayHandle playHandle,
  344.                         void (MIDAS_CALL * callback)
  345.                           (unsigned syncInfo,
  346.                            unsigned position,
  347.                            unsigned row));
  348.     _FUNC (BOOL) MIDASfadeMusicChannel (MIDASmodulePlayHandle playHandle,
  349.                     unsigned channel, unsigned fade);
  350.  
  351.     _FUNC (MIDASsample) MIDASloadRawSample (char *fileName, int sampleType,
  352.                         int loopSample);
  353.     _FUNC (MIDASsample) MIDASloadWaveSample (char *fileName, int loopSample);
  354.     _FUNC (BOOL) MIDASfreeSample (MIDASsample sample);
  355.     _FUNC (BOOL) MIDASallocAutoEffectChannels (unsigned numChannels);
  356.     _FUNC (BOOL) MIDASfreeAutoEffectChannels (void);
  357.     _FUNC (MIDASsamplePlayHandle) MIDASplaySample (MIDASsample sample,
  358.                            unsigned channel,
  359.                            int priority,
  360.                            unsigned rate,
  361.                            unsigned volume,
  362.                            int panning);
  363.     _FUNC (BOOL) MIDASstopSample (MIDASsamplePlayHandle sample);
  364.     _FUNC (BOOL) MIDASsetSampleRate (MIDASsamplePlayHandle sample,
  365.                      unsigned rate);
  366.     _FUNC (BOOL) MIDASsetSampleVolume (MIDASsamplePlayHandle sample,
  367.                        unsigned volume);
  368.     _FUNC (BOOL) MIDASsetSamplePanning (MIDASsamplePlayHandle sample,
  369.                     int panning);
  370.     _FUNC (BOOL) MIDASsetSamplePriority (MIDASsamplePlayHandle sample,
  371.                      int priority);
  372.     _FUNC (DWORD) MIDASgetSamplePlayStatus (MIDASsamplePlayHandle sample);
  373.  
  374.     _FUNC (MIDASstreamHandle) MIDASplayStreamFile (char *fileName,
  375.                            unsigned sampleType,
  376.                            unsigned sampleRate,
  377.                            unsigned bufferLength,
  378.                            int loopStream);
  379.     _FUNC (BOOL) MIDASstopStream (MIDASstreamHandle stream);
  380.  
  381.     _FUNC (MIDASstreamHandle) MIDASplayStreamWaveFile (char *fileName,
  382.                                unsigned bufferLength,
  383.                                int loopStream);
  384.  
  385.     _FUNC (MIDASstreamHandle) MIDASplayStreamPolling (unsigned sampleType,
  386.                               unsigned sampleRate,
  387.                               unsigned bufferLength);
  388.     _FUNC (unsigned) MIDASfeedStreamData (MIDASstreamHandle stream,
  389.                       unsigned char *data,
  390.                       unsigned numBytes, BOOL feedAll);
  391.  
  392.     _FUNC (BOOL) MIDASsetStreamRate (MIDASstreamHandle stream, unsigned rate);
  393.     _FUNC (BOOL) MIDASsetStreamVolume (MIDASstreamHandle stream,
  394.                        unsigned volume);
  395.     _FUNC (BOOL) MIDASsetStreamPanning (MIDASstreamHandle stream, int panning);
  396.  
  397.     _FUNC (DWORD) MIDASgetStreamBytesBuffered (MIDASstreamHandle stream);
  398.     _FUNC (BOOL) MIDASpauseStream (MIDASstreamHandle stream);
  399.     _FUNC (BOOL) MIDASresumeStream (MIDASstreamHandle stream);
  400.  
  401.     _FUNC (MIDASechoHandle) MIDASaddEchoEffect (MIDASechoSet * echoSet);
  402.     _FUNC (BOOL) MIDASremoveEchoEffect (MIDASechoHandle echoHandle);
  403.  
  404.     _FUNC (BOOL) MIDASaddPostProcessor (MIDASpostProcessor * postProc,
  405.                     unsigned procPos, void *userData);
  406.     _FUNC (BOOL) MIDASremovePostProcessor (MIDASpostProcessor * postProc);
  407.  
  408.  
  409.  
  410. #ifdef __cplusplus
  411. }
  412. #endif
  413.  
  414.  
  415.  
  416.  
  417. #endif
  418.  
  419.  
  420. /*
  421.  * $Log: midasdll.h,v $
  422.  * Revision 1.32  1997/08/15 16:48:25  pekangas
  423.  * Added user post-processing functions
  424.  *
  425.  * Revision 1.31  1997/07/31 16:36:34  pekangas
  426.  * Fixed to work in Linux again
  427.  *
  428.  * Revision 1.30  1997/07/31 14:30:58  pekangas
  429.  * Added option MIDAS_OPTION_FORCE_NO_SOUND
  430.  *
  431.  * Revision 1.29  1997/07/31 10:56:48  pekangas
  432.  * Renamed from MIDAS Sound System to MIDAS Digital Audio System
  433.  *
  434.  * Revision 1.28  1997/07/29 16:51:09  pekangas
  435.  * Added sample playing status query
  436.  *
  437.  * Revision 1.27  1997/07/25 13:49:47  pekangas
  438.  * Actually added MIDAS_FILTER_AUTO (oops)
  439.  *
  440.  * Revision 1.26  1997/07/25 13:48:24  pekangas
  441.  * Changed MIDAS_OPTION_OVERSAMPLING setting to MIDAS_OPTION_MIXING_MODE
  442.  * Added automatic filtering
  443.  * Added MIDASgetOption()
  444.  *
  445.  * Revision 1.25  1997/07/11 11:05:54  pekangas
  446.  * Added new options to the echoes: Each echo now has its own filter setting
  447.  * (low/high-pass or nothing) and the whole echo set has a common gain.
  448.  *
  449.  * Revision 1.24  1997/07/10 18:40:23  pekangas
  450.  * Added echo effect support
  451.  *
  452.  * Revision 1.23  1997/07/09 08:58:00  pekangas
  453.  * Added default stereo separation
  454.  *
  455.  * Revision 1.22  1997/07/08 19:16:44  pekangas
  456.  * Added Win32 setup functions, save/restore setup from registry, and
  457.  * fixed WinWave to ignore buffer blocks -setting to be compatible with the
  458.  * new setup.
  459.  *
  460.  * Revision 1.21  1997/06/05 20:18:49  pekangas
  461.  * Added preliminary support for interpolating mixing (mono only at the
  462.  * moment)
  463.  *
  464.  * Revision 1.20  1997/06/02 00:54:15  jpaana
  465.  * Changed most __LINUX__ defines to __UNIX__ for generic *nix porting
  466.  *
  467.  * Revision 1.19  1997/05/21 17:47:41  pekangas
  468.  * Changed MIDASfilterTypes to MIDASfilterModes
  469.  *
  470.  * Revision 1.18  1997/05/20 20:37:59  pekangas
  471.  * Added WAVE support to both streams and samples
  472.  *
  473.  * Revision 1.17  1997/05/07 17:14:53  pekangas
  474.  * Added a lot of new thread synchronization code, mainly to minimize the
  475.  * cases where MIDAS state may be modified when the player thread is active
  476.  * and vice versa. Added MIDASlock() and MIDASunlock() to the API.
  477.  *
  478.  * Revision 1.16  1997/05/03 17:54:02  pekangas
  479.  * Added optional simple output filtering
  480.  *
  481.  * Revision 1.15  1997/05/02 13:19:49  pekangas
  482.  * Several changes: Added support for non-looping module playback, added
  483.  * support for playing several modules simultaneously, added module section
  484.  * playback, added automatic channel allocation and deallocation to stream
  485.  * playback, simplified automatic effect channel handling and added functions
  486.  * for allocating and deallocating individiual channels.
  487.  *
  488.  * Revision 1.14  1997/04/08 15:48:07  pekangas
  489.  * Added gmpFadeChannel / MIDASfadeMusicChannel functions
  490.  *
  491.  * Revision 1.13  1997/04/07 21:07:51  pekangas
  492.  * Added the ability to pause/resume streams.
  493.  * Added functions to query the number of stream bytes buffered
  494.  *
  495.  * Revision 1.12  1997/03/09 19:13:01  pekangas
  496.  * Added the possibility to turn off u-law autoconvert
  497.  *
  498.  * Revision 1.11  1997/03/05 16:49:49  pekangas
  499.  * Added timer functions to DLL, some other minor modifications
  500.  *
  501.  * Revision 1.10  1997/02/27 16:03:36  pekangas
  502.  * Added DJGPP support
  503.  *
  504.  * Revision 1.9  1997/02/20 19:49:40  pekangas
  505.  * Added u-law sample type
  506.  *
  507.  * Revision 1.8  1997/02/19 20:45:09  pekangas
  508.  * Added functions MIDASsuspend() and MIDASresume()
  509.  *
  510.  * Revision 1.7  1997/02/12 17:18:37  pekangas
  511.  * Added MIDASsetAmplification()
  512.  *
  513.  * Revision 1.6  1997/02/12 16:28:12  pekangas
  514.  * Added ADPCM sample type
  515.  *
  516.  * Revision 1.5  1997/02/06 20:58:20  pekangas
  517.  * Added DirectSound support - new files, errors, and global flags
  518.  *
  519.  * Revision 1.4  1997/01/16 18:41:59  pekangas
  520.  * Changed copyright messages to Housemarque
  521.  *
  522.  * Revision 1.3  1997/01/16 18:26:27  pekangas
  523.  * Added numerous new functions
  524.  *
  525.  * Revision 1.2  1996/09/28 08:12:40  jpaana
  526.  * Fixed for Linux
  527.  *
  528.  * Revision 1.1  1996/09/25 18:38:12  pekangas
  529.  * Initial revision
  530.  *
  531. */
  532.