3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* DirectMusic DLS Download Definitions
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2003-2004 Rok Mandeljc
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This program is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This program is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this program; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef __WINE_DMUSIC_DLS_H
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __WINE_DMUSIC_DLS_H
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <dls1.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*****************************************************************************
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Typedef definitions
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef LONG GCENT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef LONG PCENT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef LONG PERCENT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef LONG TCENT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef LONGLONG REFERENCE_TIME, *LPREFERENCE_TIME;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*****************************************************************************
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * FOURCC definition
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef mmioFOURCC
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef DWORD FOURCC;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define mmioFOURCC(ch0,ch1,ch2,ch3) \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*****************************************************************************
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Flags
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DEFAULT_SIZE_OFFSETTABLE 0x1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DOWNLOADINFO_INSTRUMENT 0x1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DOWNLOADINFO_WAVE 0x2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DOWNLOADINFO_INSTRUMENT2 0x3
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DOWNLOADINFO_WAVEARTICULATION 0x4
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DOWNLOADINFO_STREAMINGWAVE 0x5
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_DOWNLOADINFO_ONESHOTWAVE 0x6
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_INSTRUMENT_GM_INSTRUMENT 0x1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define DMUS_MIN_DATA_SIZE 0x4
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*****************************************************************************
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Structures
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* typedef definitions */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_DOWNLOADINFO DMUS_DOWNLOADINFO, *LPDMUS_DOWNLOADINFO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_OFFSETTABLE DMUS_OFFSETTABLE, *LPDMUS_OFFSETTABLE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_INSTRUMENT DMUS_INSTRUMENT, *LPDMUS_INSTRUMENT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_REGION DMUS_REGION, *LPDMUS_REGION;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_LFOPARAMS DMUS_LFOPARAMS, *LPDMUS_LFOPARAMS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_VEGPARAMS DMUS_VEGPARAMS, *LPDMUS_VEGPARAMS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_PEGPARAMS DMUS_PEGPARAMS, *LPDMUS_PEGPARAMS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_MSCPARAMS DMUS_MSCPARAMS, *LPDMUS_MSCPARAMS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_ARTICPARAMS DMUS_ARTICPARAMS, *LPDMUS_ARTICPARAMS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_ARTICULATION DMUS_ARTICULATION, *LPDMUS_ARTICULATION;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_ARTICULATION2 DMUS_ARTICULATION2, *LPDMUS_ARTICULATION2;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_EXTENSIONCHUNK DMUS_EXTENSIONCHUNK, *LPDMUS_EXTENSIONCHUNK;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_COPYRIGHT DMUS_COPYRIGHT, *LPDMUS_COPYRIGHT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_WAVEDATA DMUS_WAVEDATA, *LPDMUS_WAVEDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_WAVE DMUS_WAVE, *LPDMUS_WAVE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_NOTERANGE DMUS_NOTERANGE, *LPDMUS_NOTERANGE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_WAVEARTDL DMUS_WAVEARTDL, *LPDMUS_WAVEARTDL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DMUS_WAVEDL DMUS_WAVEDL, *LPDMUS_WAVEDL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* actual structures */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_DOWNLOADINFO {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwDLType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwDLId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwNumOffsetTableEntries;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cbSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_OFFSETTABLE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_INSTRUMENT {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulPatch;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFirstRegionIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulGlobalArtIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFirstExtCkIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulCopyrightIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFlags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_REGION {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync RGNRANGE RangeKey;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync RGNRANGE RangeVelocity;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync USHORT fusOptions;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync USHORT usKeyGroup;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulRegionArtIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulNextRegionIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFirstExtCkIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WAVELINK WaveLink;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WSMPL WSMP;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WLOOP WLOOP[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_LFOPARAMS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCENT pcFrequency;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcDelay;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GCENT gcVolumeScale;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCENT pcPitchScale;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync GCENT gcMWToVolume;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCENT pcMWToPitch;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_VEGPARAMS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcAttack;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcDecay;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PERCENT ptSustain;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcRelease;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcVel2Attack;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcKey2Decay;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_PEGPARAMS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcAttack;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcDecay;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PERCENT ptSustain;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcRelease;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcVel2Attack;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TCENT tcKey2Decay;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PCENT pcRange;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_MSCPARAMS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PERCENT ptDefaultPan;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_ARTICPARAMS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DMUS_LFOPARAMS LFO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DMUS_VEGPARAMS VolEG;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DMUS_PEGPARAMS PitchEG;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DMUS_MSCPARAMS Misc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_ARTICULATION {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulArt1Idx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFirstExtCkIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_ARTICULATION2 {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulArtIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFirstExtCkIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulNextArtIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_EXTENSIONCHUNK {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG cbSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulNextExtCkIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC ExtCkID;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE byExtCk[DMUS_MIN_DATA_SIZE];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_COPYRIGHT {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG cbSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE byCopyright[DMUS_MIN_DATA_SIZE];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_WAVEDATA {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG cbSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE byData[DMUS_MIN_DATA_SIZE];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_WAVE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulFirstExtCkIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulCopyrightIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulWaveDataIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WAVEFORMATEX WaveformatEx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_NOTERANGE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwLowNote;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwHighNote;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_WAVEARTDL {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulDownloadIdIdx;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulBus;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulBuffers;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ulMasterDLId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync USHORT usOptions;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncstruct _DMUS_WAVEDL {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG cbWaveData;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __WINE_DMUSIC_DLS_H */