dmusicf.h revision b955672b950093ff7416d1269dd4d3b69983bd8f
/*
* DirectMusic File Formats
*
* Copyright (C) 2003-2004 Rok Mandeljc
*
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Sun LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Sun elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_DMUSIC_FILEFORMATS_H
#define __WINE_DMUSIC_FILEFORMATS_H
#ifndef __WINESRC__
#include <windows.h>
#endif /* __WINESRC__ */
#define COM_NO_WINDOWS_H
#include <objbase.h>
#include <mmsystem.h>
#include <pshpack8.h>
#ifdef __cplusplus
extern "C" {
#endif
/*****************************************************************************
* FOURCC Definitions
*/
/* Common chunks */
/* AudioPath */
/* Band */
/* Chordmap */
/* Container */
/* DirectSound Buffer Configuration */
/* Effects */
/* Reference */
/* Script */
/* Segment */
/* Style chunks */
/* Tool */
/* ToolGraph */
/* Track */
/* Band Track */
/* Chord Track */
/* Chordmap Track */
/* Command Track */
/* Lyrics Track */
/* Marker Track */
/* Mute Track */
/* Parameter Control Track */
/* Pattern Track */
/* Script Track */
/* Segment Trgigger Track */
/* Sequence Track */
/* Signpost Track */
/* Style Track */
/* SysEx Track */
/* Tempo Track */
/* Time Signature Track */
/* Wave Track */
/* Wave Header */
/*****************************************************************************
* Flags
*/
#define DMUS_BUFFERF_SHARED 0x1
#define DMUS_BUFFERF_DEFINED 0x2
#define DMUS_BUFFERF_MIXIN 0x8
#define DMUS_CHORDMAPF_VERSION8 0x1
#define DMUS_CONTAINED_OBJF_KEEP 0x1
#define DMUS_CONTAINER_NOLOADS 0x2
#define DMUS_IO_INST_PATCH 0x0001
#define DMUS_IO_INST_BANKSELECT 0x0002
#define DMUS_IO_INST_ASSIGN_PATCH 0x0008
#define DMUS_IO_INST_NOTERANGES 0x0010
#define DMUS_IO_INST_PAN 0x0020
#define DMUS_IO_INST_VOLUME 0x0040
#define DMUS_IO_INST_TRANSPOSE 0x0080
#define DMUS_IO_INST_GM 0x0100
#define DMUS_IO_INST_GS 0x0200
#define DMUS_IO_INST_XG 0x0400
#define DMUS_IO_INST_CHANNEL_PRIORITY 0x0800
#define DMUS_IO_INST_USE_DEFAULT_GM_SET 0x1000
#define DMUS_IO_INST_PITCHBENDRANGE 0x2000
#define DMUS_IO_SCRIPTTRACKF_PREPARE 0x1
#define DMUS_IO_SCRIPTTRACKF_QUEUE 0x2
#define DMUS_IO_SCRIPTTRACKF_ATTIME 0x4
#define DMUS_MARKERF_START 0x1
#define DMUS_MARKERF_STOP 0x2
#define DMUS_MARKERF_CHORD_ALIGN 0x4
#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
#define DMUS_PARTF_USE_MARKERS 0x1
#define DMUS_PARTF_ALIGN_CHORDS 0x2
#define DMUS_PORTCONFIGF_DRUMSON10 0x1
#define DMUS_PORTCONFIGF_USEDEFAULT 0x2
#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT 0x1
#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS 0x2
#define DMUS_SEGIOF_REFLENGTH 0x1
#define DMUS_SEGIOF_CLOCKTIME 0x2
#define DMUS_SEGMENTTRACKF_MOTIF 0x1
/* Song flags; MS doesn't support this in DX 9.0 anymore */
#define DMUS_SONG_MAXSEGID 0x7FFFFFFF
#define DMUS_SONG_ANYSEG 0x80000000
#define DMUS_SONG_NOSEG 0xFFFFFFFF
#define DMUS_SONG_NOFROMSEG 0x80000001
#define DMUS_SIGNPOSTF_A 0x0001
#define DMUS_SIGNPOSTF_B 0x0002
#define DMUS_SIGNPOSTF_C 0x0004
#define DMUS_SIGNPOSTF_D 0x0008
#define DMUS_SIGNPOSTF_E 0x0010
#define DMUS_SIGNPOSTF_F 0x0020
#define DMUS_SIGNPOSTF_1 0x0100
#define DMUS_SIGNPOSTF_2 0x0200
#define DMUS_SIGNPOSTF_3 0x0400
#define DMUS_SIGNPOSTF_4 0x0800
#define DMUS_SIGNPOSTF_5 0x1000
#define DMUS_SIGNPOSTF_6 0x2000
#define DMUS_SIGNPOSTF_7 0x4000
#define DMUS_SIGNPOSTF_CADENCE 0x8000
#define DMUS_SIGNPOSTF_LETTER (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F)
#define DMUS_SIGNPOSTF_ROOT (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7)
#define DMUS_SPOSTCADENCEF_1 0x2
#define DMUS_SPOSTCADENCEF_2 0x4
#define DMUS_VARIATIONF_MAJOR 0x0000007F
#define DMUS_VARIATIONF_MINOR 0x00003F80
#define DMUS_VARIATIONF_OTHER 0x001FC000
#define DMUS_VARIATIONF_ROOT_SCALE 0x00200000
#define DMUS_VARIATIONF_ROOT_FLAT 0x00400000
#define DMUS_VARIATIONF_ROOT_SHARP 0x00800000
#define DMUS_VARIATIONF_TYPE_TRIAD 0x01000000
#define DMUS_VARIATIONF_TYPE_6AND7 0x02000000
#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000
#define DMUS_VARIATIONF_DEST_TO1 0x08000000
#define DMUS_VARIATIONF_DEST_TO5 0x10000000
#define DMUS_VARIATIONF_DEST_OTHER 0x40000000
#define DMUS_VARIATIONF_MODES 0xE0000000
#define DMUS_VARIATIONF_IMA25_MODE 0x00000000
#define DMUS_VARIATIONF_DMUS_MODE 0x20000000
#define DMUS_WAVETRACKF_SYNC_VAR 0x1
#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2
/*****************************************************************************
* Enumerations
*/
/* typedef definitions */
typedef enum enumDMUS_VARIATIONT_TYPES DMUS_VARIATIONT_TYPES;
typedef enum enumDMUS_EMBELLISHT_TYPES DMUS_EMBELLISHT_TYPES;
typedef enum enumDMUS_PATTERNT_TYPES DMUS_PATTERNT_TYPES;
/* actual enumerations */
enum enumDMUS_VARIATIONT_TYPES {
DMUS_VARIATIONT_SEQUENTIAL = 0x0,
DMUS_VARIATIONT_RANDOM = 0x1,
DMUS_VARIATIONT_RANDOM_START = 0x2,
DMUS_VARIATIONT_NO_REPEAT = 0x3,
};
enum enumDMUS_EMBELLISHT_TYPES {
DMUS_EMBELLISHT_NORMAL = 0x0000,
DMUS_EMBELLISHT_FILL = 0x0001,
DMUS_EMBELLISHT_BREAK = 0x0002,
DMUS_EMBELLISHT_INTRO = 0x0004,
DMUS_EMBELLISHT_END = 0x0008,
DMUS_EMBELLISHT_MOTIF = 0x0010,
DMUS_EMBELLISHT_ALL = 0xFFFF
};
enum enumDMUS_PATTERNT_TYPES {
DMUS_PATTERNT_RANDOM = 0x0,
DMUS_PATTERNT_REPEAT = 0x1,
DMUS_PATTERNT_SEQUENTIAL = 0x2,
DMUS_PATTERNT_RANDOM_START = 0x3,
DMUS_PATTERNT_NO_REPEAT = 0x4,
DMUS_PATTERNT_RANDOM_ROW = 0x5
};
/*****************************************************************************
* Structures
*/
/* typedef definitions */
typedef struct _DMUS_IO_STYLE_ANTICIPATION DMUS_IO_STYLE_ANTICIPATION, *LPDMUS_IO_STYLE_ANTICIPATION;
typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER DMUS_IO_PCHANNELTOBUFFER_HEADER, *LPDMUS_IO_PCHANNELTOBUFFER_HEADER;
typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER DMUS_IO_BUFFER_ATTRIBUTES_HEADER, *LPDMUS_IO_BUFFER_ATTRIBUTES_HEADER;
typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER DMUS_IO_CONTAINED_OBJECT_HEADER, *LPDMUS_IO_CONTAINED_OBJECT_HEADER;
typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER DMUS_IO_TRACK_EXTRAS_HEADER, *LPDMUS_IO_TRACK_EXTRAS_HEADER;
typedef struct _DMUS_IO_TIMESIGNATURE_ITEM DMUS_IO_TIMESIGNATURE_ITEM, *LPDMUS_IO_TIMESIGNATURE_ITEM;
typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER DMUS_IO_SEGMENT_TRACK_HEADER, *LPDMUS_IO_SEGMENT_TRACK_HEADER;
typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER DMUS_IO_SEGMENT_ITEM_HEADER, *LPDMUS_IO_SEGMENT_ITEM_HEADER;
typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER DMUS_IO_SCRIPTTRACK_EVENTHEADER, *LPDMUS_IO_SCRIPTTRACK_EVENTHEADER;
typedef struct _DMUS_IO_LYRICSTRACK_EVENTHEADER DMUS_IO_LYRICSTRACK_EVENTHEADER, *LPDMUS_IO_LYRICSTRACK_EVENTHEADER;
typedef struct _DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER DMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER, *LPDMUS_IO_PARAMCONTROLTRACK_OBJECTHEADER;
typedef struct _DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER DMUS_IO_PARAMCONTROLTRACK_PARAMHEADER, *LPDMUS_IO_PARAMCONTROLTRACK_PARAMHEADER;
typedef struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO DMUS_IO_PARAMCONTROLTRACK_CURVEINFO, *LPDMUS_IO_PARAMCONTROLTRACK_CURVEINFO;
/* actual structures */
struct _DMUS_IO_SEQ_ITEM {
short nOffset;
};
struct _DMUS_IO_CURVE_ITEM {
short nOffset;
short nStartValue;
short nEndValue;
short nResetValue;
/* DX8 */
};
struct _DMUS_IO_TEMPO_ITEM {
double dblTempo;
};
struct _DMUS_IO_SYSEX_ITEM {
};
struct _DMUS_RHYTHM_PARAM {
};
struct _DMUS_TEMPO_PARAM {
double dblTempo;
};
struct _DMUS_MUTE_PARAM {
};
#pragma pack(2)
struct _DMUS_IO_TIMESIG {
};
struct _DMUS_IO_STYLE {
double dblTempo;
};
struct _DMUS_IO_VERSION {
};
struct _DMUS_IO_PATTERN {
};
struct _DMUS_IO_STYLEPART {
};
struct _DMUS_IO_PARTREF {
};
struct _DMUS_IO_STYLENOTE {
short nTimeOffset;
/* DX8 */
};
struct _DMUS_IO_STYLECURVE {
short nTimeOffset;
short nStartValue;
short nEndValue;
short nResetValue;
/* DX8 */
};
struct _DMUS_IO_STYLEMARKER {
};
struct _DMUS_IO_STYLERESOLUTION {
};
struct _DMUS_IO_STYLE_ANTICIPATION {
short nTimeOffset;
};
struct _DMUS_IO_MOTIFSETTINGS {
};
#pragma pack()
struct _DMUS_IO_CHORD {
};
struct _DMUS_IO_SUBCHORD {
};
struct _DMUS_IO_COMMAND {
};
struct _DMUS_IO_TOOL_HEADER {
long lIndex;
};
struct _DMUS_IO_PORTCONFIG_HEADER {
};
struct _DMUS_IO_PCHANNELTOBUFFER_HEADER {
};
struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER {
};
struct _DMUS_IO_BAND_TRACK_HEADER {
};
struct _DMUS_IO_BAND_ITEM_HEADER {
};
struct _DMUS_IO_BAND_ITEM_HEADER2 {
};
struct _DMUS_IO_INSTRUMENT {
short nTranspose;
short nPitchBendRange;
};
struct _DMUS_IO_WAVE_HEADER {
};
struct _DMUS_IO_WAVE_TRACK_HEADER {
long lVolume;
};
struct _DMUS_IO_WAVE_PART_HEADER {
long lVolume;
};
struct _DMUS_IO_WAVE_ITEM_HEADER {
long lVolume;
long lPitch;
};
struct _DMUS_IO_CONTAINER_HEADER {
};
struct _DMUS_IO_CONTAINED_OBJECT_HEADER {
};
struct _DMUS_IO_SEGMENT_HEADER {
/* DX8 */
/* DX9 */
};
struct _DMUS_IO_TRACK_HEADER {
};
struct _DMUS_IO_TRACK_EXTRAS_HEADER {
};
struct _DMUS_IO_REFERENCE {
};
struct _DMUS_IO_CHORDMAP {
};
struct _DMUS_IO_CHORDMAP_SUBCHORD {
};
struct _DMUS_IO_CHORDENTRY {
};
struct _DMUS_IO_NEXTCHORD {
};
struct _DMUS_IO_CHORDMAP_SIGNPOST {
};
struct _DMUS_IO_SCRIPT_HEADER {
};
struct _DMUS_IO_SIGNPOST {
};
struct _DMUS_IO_MUTE {
};
struct _DMUS_IO_TIMESIGNATURE_ITEM {
};
struct _DMUS_IO_VALID_START {
};
struct _DMUS_IO_PLAY_MARKER {
};
struct _DMUS_IO_SEGMENT_TRACK_HEADER {
};
struct _DMUS_IO_SEGMENT_ITEM_HEADER {
};
struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER {
};
struct _DMUS_IO_LYRICSTRACK_EVENTHEADER {
};
};
};
struct _DMUS_IO_PARAMCONTROLTRACK_CURVEINFO {
float fltStartValue;
float fltEndValue;
};
struct _DSOUND_IO_DSBUFFERDESC {
};
struct _DSOUND_IO_DSBUSID {
};
struct _DSOUND_IO_3D {
};
struct _DSOUND_IO_DXDMO_HEADER {
};
struct _DSOUND_IO_DXDMO_DATA {
};
#ifdef __cplusplus
}
#endif
#include <poppack.h>
#endif /* __WINE_DMUSIC_FILEFORMATS_H */