246 lines
8.3 KiB
C
246 lines
8.3 KiB
C
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
//
|
||
|
// Copyright (c) 1998-1998 Microsoft Corporation
|
||
|
//
|
||
|
// File: iostru.h
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
// ioStructs.h
|
||
|
//
|
||
|
|
||
|
#ifndef __IOSTRUCTS_H__
|
||
|
#define __IOSTRUCTS_H__
|
||
|
|
||
|
#pragma pack(2)
|
||
|
|
||
|
#define FOURCC_BAND_FORM mmioFOURCC('A','A','B','N')
|
||
|
#define FOURCC_CLICK_LIST mmioFOURCC('A','A','C','L')
|
||
|
#define FOURCC_KEYBOARD_FORM mmioFOURCC('S','J','K','B')
|
||
|
#define FOURCC_PATTERN_FORM mmioFOURCC('A','A','P','T')
|
||
|
#define FOURCC_SECTION_FORM mmioFOURCC('A','A','S','E')
|
||
|
#define FOURCC_SONG_FORM mmioFOURCC('A','A','S','O')
|
||
|
#define FOURCC_STYLE_FORM mmioFOURCC('A','A','S','Y')
|
||
|
|
||
|
#define FOURCC_AUTHOR mmioFOURCC('a','u','t','h')
|
||
|
#define FOURCC_BAND mmioFOURCC('b','a','n','d')
|
||
|
#define FOURCC_CHORD mmioFOURCC('c','h','r','d')
|
||
|
#define FOURCC_CLICK mmioFOURCC('c','l','i','k')
|
||
|
#define FOURCC_COMMAND mmioFOURCC('c','m','n','d')
|
||
|
#define FOURCC_COPYRIGHT mmioFOURCC('c','p','y','r')
|
||
|
#define FOURCC_CURVE mmioFOURCC('c','u','r','v')
|
||
|
#define FOURCC_KEYBOARD mmioFOURCC('k','y','b','d')
|
||
|
#define FOURCC_LYRIC mmioFOURCC('l','y','r','c')
|
||
|
#define FOURCC_MUTE mmioFOURCC('m','u','t','e')
|
||
|
#define FOURCC_NOTE mmioFOURCC('n','o','t','e')
|
||
|
#define FOURCC_PATTERN mmioFOURCC('p','a','t','t')
|
||
|
#define FOURCC_PERSONALITYNAME mmioFOURCC('p','r','n','m')
|
||
|
#define FOURCC_PERSONALITYREF mmioFOURCC('p','r','e','f')
|
||
|
#define FOURCC_PHRASE mmioFOURCC('p','h','r','s')
|
||
|
#define FOURCC_PPQN mmioFOURCC('p','p','q','n')
|
||
|
#define FOURCC_SECTION mmioFOURCC('s','e','c','n')
|
||
|
#define FOURCC_SECTIONUI mmioFOURCC('s','c','u','i')
|
||
|
#define FOURCC_STYLE mmioFOURCC('s','t','y','l')
|
||
|
#define FOURCC_STYLEINFO mmioFOURCC('i','n','f','o')
|
||
|
#define FOURCC_STYLEREF mmioFOURCC('s','r','e','f')
|
||
|
#define FOURCC_TITLE mmioFOURCC('t','i','t','l')
|
||
|
|
||
|
typedef struct ioNoteEvent
|
||
|
{
|
||
|
long lTime; // When this event occurs.
|
||
|
BYTE bStatus; // MIDI status.
|
||
|
BYTE bNote; // Note value.
|
||
|
BYTE bVelocity; // Note velocity.
|
||
|
BYTE bVoiceID; // Band member who will play note
|
||
|
WORD wDuration; // Lead line note duration. (Song)
|
||
|
BYTE bEventType; // Type of event
|
||
|
} ioNoteEvent;
|
||
|
|
||
|
typedef struct ioNote
|
||
|
{
|
||
|
BYTE bEventType; // Type of event
|
||
|
BYTE bVoiceID; // Instrument identifier.
|
||
|
short nTime; // Time from center of beat.
|
||
|
WORD wVariation; // 16 variation bits.
|
||
|
BYTE bScaleValue; // Position in scale.
|
||
|
BYTE bBits; // Various bits.
|
||
|
BYTE bValue; // Note value.
|
||
|
BYTE bVelocity; // Note velocity.
|
||
|
WORD nMusicValue; // Description of note in chord and key.
|
||
|
short nDuration; // Duration
|
||
|
BYTE bTimeRange; // Range to randomize time.
|
||
|
BYTE bDurRange; // Range to randomize duration.
|
||
|
BYTE bVelRange; // Range to randomize velocity.
|
||
|
BYTE bPlayMode;
|
||
|
} ioNote;
|
||
|
|
||
|
typedef struct ioCurveEvent
|
||
|
{
|
||
|
long lTime;
|
||
|
WORD wVariation;
|
||
|
BYTE bVoiceID;
|
||
|
BYTE bVelocity;
|
||
|
BYTE bEventType;
|
||
|
} ioCurveEvent;
|
||
|
|
||
|
typedef struct ioCurve
|
||
|
{
|
||
|
BYTE bEventType;
|
||
|
BYTE bVoiceID;
|
||
|
short nTime;
|
||
|
WORD wVariation;
|
||
|
BYTE bCCData;
|
||
|
} ioCurve;
|
||
|
|
||
|
typedef struct ioSubCurve
|
||
|
{
|
||
|
BYTE bCurveType; // defines the shape of the curve
|
||
|
char fFlipped; // flaggs defining the flipped state: not, vertical, or horizontal
|
||
|
short nMinTime; // left lower corner of bounding box.
|
||
|
short nMinValue; // also used by the ECT_INSTANT curve type.
|
||
|
short nMaxTime; // right upper corner of bounding box.
|
||
|
short nMaxValue;
|
||
|
} ioSubCurve;
|
||
|
|
||
|
typedef struct ioMute
|
||
|
{
|
||
|
long lTime; // Time in clocks.
|
||
|
WORD wMuteBits; // Which instruments to mute.
|
||
|
WORD wLock; // Lock flag
|
||
|
} ioMute;
|
||
|
|
||
|
typedef struct ioCommand
|
||
|
{
|
||
|
long lTime; // Time, in clocks.
|
||
|
DWORD dwCommand; // Command type.
|
||
|
} ioCommand;
|
||
|
|
||
|
typedef struct ioChord
|
||
|
{
|
||
|
long lChordPattern; // pattern that defines chord
|
||
|
long lScalePattern; // scale pattern for the chord
|
||
|
long lInvertPattern; // inversion pattern
|
||
|
BYTE bRoot; // root note of chord
|
||
|
BYTE bReserved; // expansion room
|
||
|
WORD wCFlags; // bit flags
|
||
|
long lReserved; // expansion room
|
||
|
} ioChord;
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
CSF_KEYDOWN = 1, // key currently held down in sjam kybd
|
||
|
CSF_INSCALE = 2, // member of scale
|
||
|
CSF_FLAT = 4, // display with flat
|
||
|
CSF_SIMPLE = 8, // simple chord, display at top of sjam list
|
||
|
};
|
||
|
|
||
|
typedef struct ioChordSelection
|
||
|
{
|
||
|
wchar_t wstrName[16]; // text for display
|
||
|
BYTE fCSFlags; // ChordSelection flags
|
||
|
BYTE bBeat; // beat this falls on
|
||
|
WORD wMeasure; // measure this falls on
|
||
|
ioChord aChord[4]; // array of chords: levels
|
||
|
BYTE bClick; // click this falls on
|
||
|
} ioChordSelection;
|
||
|
|
||
|
#define KEY_FLAT 0x80
|
||
|
typedef struct ioSect
|
||
|
{
|
||
|
long lTime; // Time this section starts.
|
||
|
wchar_t wstrName[16]; // Each section has a name.
|
||
|
WORD wTempo; // Tempo.
|
||
|
WORD wRepeats; // Number of repeats.
|
||
|
WORD wMeasureLength; // Length, in measures.
|
||
|
WORD wClocksPerMeasure; // Length of each measure.
|
||
|
WORD wClocksPerBeat; // Length of each beat.
|
||
|
WORD wTempoFract; // Tempo fraction. (0-65536) (Score only)
|
||
|
DWORD dwFlags; // Currently not used in SuperJAM!
|
||
|
char chKey; // key sig. High bit is flat bit, the rest is root.
|
||
|
char chPad[3];
|
||
|
GUID guidStyle;
|
||
|
GUID guidPersonality;
|
||
|
wchar_t wstrCategory[16];
|
||
|
} ioSection;
|
||
|
|
||
|
typedef struct ioBand
|
||
|
{
|
||
|
wchar_t wstrName[20]; // Band name
|
||
|
BYTE abPatch[16];
|
||
|
BYTE abVolume[16];
|
||
|
BYTE abPan[16];
|
||
|
signed char achOctave[16];
|
||
|
char fDefault; // This band is the style's default band
|
||
|
char chPad;
|
||
|
WORD awDLSBank[16];
|
||
|
BYTE abDLSPatch[16];
|
||
|
GUID guidCollection;
|
||
|
// wchar_t wstrCollection[16];
|
||
|
char szCollection[32]; // this only needs to be single-wide chars
|
||
|
} ioBand;
|
||
|
|
||
|
typedef struct ioLyric
|
||
|
{
|
||
|
long lTime; // Time, in clocks
|
||
|
} ioLyric;
|
||
|
|
||
|
typedef struct ioPhrase
|
||
|
{
|
||
|
long lTime;
|
||
|
BYTE bID; // which phrase it is. Index starting at 0.
|
||
|
} ioPhrase;
|
||
|
|
||
|
typedef struct ioClick
|
||
|
{
|
||
|
short lTime; // Index into grid.
|
||
|
} ioClick;
|
||
|
|
||
|
typedef struct ioPattern
|
||
|
{
|
||
|
long lTime; // Time this starts.
|
||
|
DWORD dwLength; // Pattern length in clocks.
|
||
|
DWORD fFlags; // Various flags.
|
||
|
WORD wClocksPerClick; // Size of each click.
|
||
|
WORD wBeat; // What note gets the beat.
|
||
|
WORD wClocksPerBeat; // Size of each beat.
|
||
|
WORD wMeasures; // Number of measures.
|
||
|
wchar_t wstrName[16]; // Name of pattern.
|
||
|
DWORD dwKeyPattern; // Key for defining in.
|
||
|
DWORD dwChordPattern; // Defining chord.
|
||
|
BYTE abInvertUpper[16]; // Inversion upper limit.
|
||
|
BYTE abInvertLower[16]; // Inversion upper limit.
|
||
|
WORD wInvert; // Activate inversion flags.
|
||
|
WORD awVarFlags[16][16]; // Var flags for all musicians.
|
||
|
WORD wAutoInvert; // Automatically set inversion limits
|
||
|
BYTE bRoot; // Root for defining.
|
||
|
char achChordChoice[16];
|
||
|
} ioPattern;
|
||
|
|
||
|
typedef struct ioStyle
|
||
|
{
|
||
|
wchar_t wstrName[16]; // Each style has a name.
|
||
|
WORD wBPM; // Beats per measure.
|
||
|
WORD wBeat; // Beat note.
|
||
|
WORD wClocksPerClick; // Clocks per click in patterns.
|
||
|
WORD wClocksPerBeat; // Clocks per beat.
|
||
|
WORD wClocksPerMeasure; // Clocks per measure.
|
||
|
WORD wTempo; // Tempo.
|
||
|
WORD wTempoFract;
|
||
|
GUID guid;
|
||
|
wchar_t wstrCategory[16];
|
||
|
} ioStyle;
|
||
|
|
||
|
typedef struct ioPersonalityRef
|
||
|
{
|
||
|
wchar_t wstrName[20]; // Internal name stored in personality
|
||
|
char fDefault; // 1=Default personality
|
||
|
char achPad[3];
|
||
|
GUID guid;
|
||
|
} ioPersonalityRef;
|
||
|
|
||
|
#pragma pack()
|
||
|
|
||
|
#endif// __IOSTRUCTS_H__
|