1 /* Defines and Structures for Instrument Collection Form RIFF DLS1 2 * 3 * Copyright (C) 2003-2004 Rok Mandeljc 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 18 */ 19 20 #ifndef __WINE_INCLUDE_DLS1_H 21 #define __WINE_INCLUDE_DLS1_H 22 23 /***************************************************************************** 24 * FOURCCs 25 */ 26 #define FOURCC_DLS mmioFOURCC('D','L','S',' ') 27 #define FOURCC_DLID mmioFOURCC('d','l','i','d') 28 #define FOURCC_COLH mmioFOURCC('c','o','l','h') 29 #define FOURCC_WVPL mmioFOURCC('w','v','p','l') 30 #define FOURCC_PTBL mmioFOURCC('p','t','b','l') 31 #define FOURCC_PATH mmioFOURCC('p','a','t','h') 32 #define FOURCC_wave mmioFOURCC('w','a','v','e') 33 #define FOURCC_LINS mmioFOURCC('l','i','n','s') 34 #define FOURCC_INS mmioFOURCC('i','n','s',' ') 35 #define FOURCC_INSH mmioFOURCC('i','n','s','h') 36 #define FOURCC_LRGN mmioFOURCC('l','r','g','n') 37 #define FOURCC_RGN mmioFOURCC('r','g','n',' ') 38 #define FOURCC_RGNH mmioFOURCC('r','g','n','h') 39 #define FOURCC_LART mmioFOURCC('l','a','r','t') 40 #define FOURCC_ART1 mmioFOURCC('a','r','t','1') 41 #define FOURCC_WLNK mmioFOURCC('w','l','n','k') 42 #define FOURCC_WSMP mmioFOURCC('w','s','m','p') 43 #define FOURCC_VERS mmioFOURCC('v','e','r','s') 44 45 /***************************************************************************** 46 * Flags 47 */ 48 49 #define CONN_DST_NONE 0x000 50 #define CONN_DST_ATTENUATION 0x001 51 #define CONN_DST_PITCH 0x003 52 #define CONN_DST_PAN 0x004 53 54 #define CONN_DST_LFO_FREQUENCY 0x104 55 #define CONN_DST_LFO_STARTDELAY 0x105 56 57 #define CONN_DST_EG1_ATTACKTIME 0x206 58 #define CONN_DST_EG1_DECAYTIME 0x207 59 #define CONN_DST_EG1_RELEASETIME 0x209 60 #define CONN_DST_EG1_SUSTAINLEVEL 0x20A 61 62 #define CONN_DST_EG2_ATTACKTIME 0x30A 63 #define CONN_DST_EG2_DECAYTIME 0x30B 64 #define CONN_DST_EG2_RELEASETIME 0x30D 65 #define CONN_DST_EG2_SUSTAINLEVEL 0x30E 66 67 #define CONN_SRC_NONE 0x000 68 #define CONN_SRC_LFO 0x001 69 #define CONN_SRC_KEYONVELOCITY 0x002 70 #define CONN_SRC_KEYNUMBER 0x003 71 #define CONN_SRC_EG1 0x004 72 #define CONN_SRC_EG2 0x005 73 #define CONN_SRC_PITCHWHEEL 0x006 74 75 #define CONN_SRC_CC1 0x081 76 #define CONN_SRC_CC7 0x087 77 #define CONN_SRC_CC10 0x08A 78 #define CONN_SRC_CC11 0x08B 79 80 #define CONN_TRN_NONE 0x000 81 #define CONN_TRN_CONCAVE 0x001 82 83 #define F_INSTRUMENT_DRUMS 0x80000000 84 85 #define F_RGN_OPTION_SELFNONEXCLUSIVE 0x1 86 87 #define F_WAVELINK_PHASE_MASTER 0x1 88 89 #define F_WSMP_NO_TRUNCATION 0x1 90 #define F_WSMP_NO_COMPRESSION 0x2 91 92 #define POOL_CUE_NULL 0xFFFFFFFF 93 94 #define WAVELINK_CHANNEL_LEFT 0x1 95 #define WAVELINK_CHANNEL_RIGHT 0x2 96 97 #define WLOOP_TYPE_FORWARD 0x0 98 99 /***************************************************************************** 100 * Structures 101 */ 102 /* typedef definitions */ 103 typedef struct _DLSID DLSID, *LPDLSID; 104 typedef struct _DLSVERSION DLSVERSION, *LPDLSVERSION; 105 typedef struct _CONNECTION CONNECTION, *LPCONNECTION; 106 typedef struct _CONNECTIONLIST CONNECTIONLIST, *LPCONNECTIONLIST; 107 typedef struct _RGNRANGE RGNRANGE, *LPRGNRANGE; 108 typedef struct _MIDILOCALE MIDILOCALE, *LPMIDILOCALE; 109 typedef struct _RGNHEADER RGNHEADER, *LPRGNHEADER; 110 typedef struct _INSTHEADER INSTHEADER, *LPINSTHEADER; 111 typedef struct _DLSHEADER DLSHEADER, *LPDLSHEADER; 112 typedef struct _WAVELINK WAVELINK, *LPWAVELINK; 113 typedef struct _POOLCUE POOLCUE, *LPPOOLCUE; 114 typedef struct _POOLTABLE POOLTABLE, *LPPOOLTABLE; 115 typedef struct _rwsmp WSMPL, *LPWSMPL; 116 typedef struct _rloop WLOOP, *LPWLOOP; 117 118 /* actual structures */ 119 struct _DLSID { 120 ULONG ulData1; 121 USHORT usData2; 122 USHORT usData3; 123 BYTE abData4[8]; 124 }; 125 126 struct _DLSVERSION { 127 DWORD dwVersionMS; 128 DWORD dwVersionLS; 129 }; 130 131 struct _CONNECTION { 132 USHORT usSource; 133 USHORT usControl; 134 USHORT usDestination; 135 USHORT usTransform; 136 LONG lScale; 137 }; 138 139 struct _CONNECTIONLIST { 140 ULONG cbSize; 141 ULONG cConnections; 142 }; 143 144 struct _RGNRANGE { 145 USHORT usLow; 146 USHORT usHigh; 147 }; 148 149 struct _MIDILOCALE { 150 ULONG ulBank; 151 ULONG ulInstrument; 152 }; 153 154 struct _RGNHEADER { 155 RGNRANGE RangeKey; 156 RGNRANGE RangeVelocity; 157 USHORT fusOptions; 158 USHORT usKeyGroup; 159 }; 160 161 struct _INSTHEADER { 162 ULONG cRegions; 163 MIDILOCALE Locale; 164 }; 165 166 struct _DLSHEADER { 167 ULONG cInstruments; 168 }; 169 170 struct _WAVELINK { 171 USHORT fusOptions; 172 USHORT usPhaseGroup; 173 ULONG ulChannel; 174 ULONG ulTableIndex; 175 }; 176 177 struct _POOLCUE { 178 ULONG ulOffset; 179 }; 180 181 struct _POOLTABLE { 182 ULONG cbSize; 183 ULONG cCues; 184 }; 185 186 struct _rwsmp { 187 ULONG cbSize; 188 USHORT usUnityNote; 189 SHORT sFineTune; 190 LONG lAttenuation; 191 ULONG fulOptions; 192 ULONG cSampleLoops; 193 }; 194 195 struct _rloop { 196 ULONG cbSize; 197 ULONG ulType; 198 ULONG ulStart; 199 ULONG ulLength; 200 }; 201 202 #endif /* __WINE_INCLUDE_DLS1_H */ 203