215 lines
8.3 KiB
C
215 lines
8.3 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (c) 1998-1998 Microsoft Corporation
|
|
//
|
|
// File: sjpers.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
// SJPers.h #defines and structs from SuperJam! Used for loading personalities.
|
|
|
|
#define CM_DEFAULT 2 // Prsonality.dwflags & CM_DEFAULT
|
|
|
|
#define SP_A 1 // Use SP flags for templates
|
|
#define SP_B 2
|
|
#define SP_C 4
|
|
#define SP_D 8
|
|
#define SP_E 0x10
|
|
#define SP_F 0x20
|
|
#define SP_LETTER (SP_A | SP_B | SP_C | SP_D | SP_E | SP_F)
|
|
#define SP_1 0x100
|
|
#define SP_2 0x200
|
|
#define SP_3 0x400
|
|
#define SP_4 0x800
|
|
#define SP_5 0x1000
|
|
#define SP_6 0x2000
|
|
#define SP_7 0x4000
|
|
#define SP_ROOT (SP_1 | SP_2 | SP_3 | SP_4 | SP_5 | SP_6 | SP_7)
|
|
#define SP_CADENCE 0x8000
|
|
|
|
#define SPOST_CADENCE1 2 // Use the first cadence chord.
|
|
#define SPOST_CADENCE2 4 // Use the second cadence chord.
|
|
|
|
#define PF_FILL 0x0001 // Fill pattern
|
|
#define PF_START 0x0002 // May be starting pattern
|
|
#define PF_INTRO 0x0002
|
|
#define PF_WHOLE 0x0004 // Handles chords on measures
|
|
#define PF_HALF 0x0008 // Chords every two beats
|
|
#define PF_QUARTER 0x0010 // Chords on beats
|
|
#define PF_BREAK 0x0020
|
|
#define PF_END 0x0040
|
|
#define PF_A 0x0080
|
|
#define PF_B 0x0100
|
|
#define PF_C 0x0200
|
|
#define PF_D 0x0400
|
|
#define PF_E 0x0800
|
|
#define PF_F 0x1000
|
|
#define PF_G 0x2000
|
|
#define PF_H 0x10000
|
|
#define PF_STOPNOW 0x4000
|
|
#define PF_INRIFF 0x8000
|
|
#define PF_MOTIF 0x20000 // this pattern is a motif, not a regular pattern
|
|
#define PF_BEATS ( PF_WHOLE | PF_HALF | PF_QUARTER )
|
|
#define PF_RIFF ( PF_INTRO | PF_BREAK | PF_FILL | PF_END )
|
|
#define PF_GROOVE ( PF_A | PF_B | PF_C | PF_D | PF_E | PF_F | PF_G | PF_H )
|
|
|
|
|
|
/* SCTchord bBits flags ===============================================*/
|
|
|
|
#define CHORD_INVERT 0x10 /* This chord may be inverted */
|
|
#define CHORD_FOUR 0x20 /* This should be a 4 note chord */
|
|
#define CHORD_UPPER 0x40 /* Shift upper octave down */
|
|
#define CHORD_SIMPLE 0x80 /* This is a simple chord */
|
|
#define CHORD_COUNT 0x0F /* Number of notes in chord (up to 15) */
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct ChordExt FAR *LPCHORDEXT;
|
|
struct ChordExt // Based on ChordSelection
|
|
{
|
|
LPCHORDEXT pNext;
|
|
long time;
|
|
long pattern; // Pattern that defines chord
|
|
char name[12]; // Text for display
|
|
char keydown; // Currently held down
|
|
char root; // Root note of chord
|
|
char inscale; // Member of scale
|
|
char flat; // Display with flat
|
|
short varflags; // Used to select appropriate variation
|
|
short measure; // What measure
|
|
char beat; // What beat this falls on
|
|
unsigned char bits; // Invert and item count
|
|
long scalepattern; // Scale Pattern for the chord
|
|
long melodypattern;// Melody Pattern for the chord
|
|
};
|
|
|
|
typedef struct SinePost FAR *LPSINEPOST ;
|
|
struct SinePost
|
|
{
|
|
LPSINEPOST pNext ; // The next personality in the list.
|
|
ChordExt chord; // Chord for sign post.
|
|
ChordExt cadence[2]; // Chords for cadence.
|
|
DWORD chords; // Which kinds of signpost supported.
|
|
DWORD flags;
|
|
DWORD tempflags;
|
|
};
|
|
|
|
typedef struct ChrdEntry FAR *LPCHRDENTRY ;
|
|
|
|
typedef struct NextChrd FAR *LPNEXTCHRD ;
|
|
struct NextChrd
|
|
{
|
|
LPNEXTCHRD pNext; // List of chords to go to next.
|
|
LPCHRDENTRY nextchord;
|
|
unsigned long dwflags;
|
|
short nweight; // Importance of destination chord.
|
|
short nminbeats; // Min beats to wait till chord.
|
|
short nmaxbeats; // Max beats to wait till chord.
|
|
short nid; // ID of destination chord.
|
|
};
|
|
|
|
#define NEXTCHORD_SIZE (sizeof(NextChrd)-sizeof(LPNEXTCHRD)-sizeof(LPCHRDENTRY))
|
|
#define CHORDENTRY_SIZE (sizeof(ChordExt)-sizeof(LPCHORDEXT)+sizeof(unsigned long)+sizeof(short))
|
|
|
|
#define CE_SELECTED 1 // This is the active chord.
|
|
#define CE_START 2
|
|
#define CE_END 4
|
|
#define CE_MEASURE 8
|
|
#define CE_PATH 16
|
|
#define CE_TREE 32
|
|
|
|
struct ChrdEntry
|
|
{
|
|
LPCHRDENTRY pNext ; // The next personality in the list.
|
|
LPNEXTCHRD nextchordlist; // List of chords to go to next.
|
|
ChordExt chord; // Chord definition.
|
|
unsigned long dwflags; // Various flags.
|
|
short nid; // ID for pointer maintenance.
|
|
};
|
|
|
|
typedef struct SCTchord FAR *LPSCTCHORD ;
|
|
struct SCTchord
|
|
{
|
|
LPSCTCHORD pNext; /* The next chord in the list. */
|
|
long lDLL1; /* Reserved for use by score.dll */
|
|
long lPattern; /* Pattern that defines chord. */
|
|
char achName[12]; /* Chord name. */
|
|
char chDLL2; /* Reserved for use by score.dll */
|
|
char chRoot; /* Root note of chord. */
|
|
char chDLL3; /* Reserved for use by score.dll */
|
|
char chFlat; /* Indicates root is flat. */
|
|
short nDLL4; /* Reserved for use by score.dll */
|
|
short nMeasure; /* Measure this chord occurs. */
|
|
char chBeat; /* Beat this chord falls on. */
|
|
BYTE bBits; /* Flags used when playing chord */
|
|
long lScalePattern; /* Scale Pattern for the chord. */
|
|
long lMelodyPattern; /* Melody Pattern for the chord. */
|
|
};
|
|
|
|
typedef struct SCTpersonality FAR *LPSCTPERSONALITY ;
|
|
struct SCTpersonality
|
|
{
|
|
LPSCTPERSONALITY pNext ; /* Next SCTpersonality in the list. */
|
|
char achName[20] ; /* Name of composition personality. */
|
|
char achDescription[80];/* Description of personality. */
|
|
char achUserName[20];/* Description of personality. */
|
|
LPVOID lpDLL1 ; /* Reserved for use by score.dll */
|
|
long lScalePattern ; /* Scale pattern used by personality*/
|
|
SCTchord chord[24] ; /* 24 note chord palette. */
|
|
char chDefault ; /* 0=Not default. 1=Default. */
|
|
char chDLL1 ; /* Reserved for use by score.dll */
|
|
};
|
|
|
|
typedef struct Prsonality FAR *LPPERSONALITY ;
|
|
struct Prsonality
|
|
{
|
|
LPPERSONALITY pNext ; // The next personality in the list.
|
|
LPCHRDENTRY chordlist; // All chords in the map.
|
|
LPSINEPOST signpostlist; // All available sign posts.
|
|
DWORD dwAA; // only valid for separately loaded personalities
|
|
long scalepattern; // Scale for map.
|
|
char name[20];
|
|
char description[80];
|
|
char username[20];
|
|
SCTchord chord[24];
|
|
unsigned long dwflags;
|
|
long playlist; // Collection of NextChords for playback.
|
|
LPCHRDENTRY firstchord;
|
|
struct SCTpersonality* lpSCTpersonality;
|
|
};
|
|
|
|
typedef struct CommandExt FAR *LPCOMMAND;
|
|
typedef struct CommandExt
|
|
{
|
|
LPCOMMAND pNext;
|
|
long time; // Time, in clocks
|
|
short measure; // Which measure
|
|
DWORD command; // Command type
|
|
DWORD chord; // Used by composition engine
|
|
} CommandExt;
|
|
|
|
typedef struct SCTcommand FAR *LPSCTCOMMAND ;
|
|
typedef struct SCTcommand
|
|
{
|
|
LPSCTCOMMAND pNext ; // The next command in the list.
|
|
long lDLL1 ; // Reserved for use by score.dll.
|
|
short nMeasure ; // Measure this command occurs.
|
|
DWORD dwCommand ; // Command type.
|
|
DWORD dwChord ; // Signpost chord.
|
|
} SCTcommand ;
|
|
|
|
typedef struct SCTtemplate FAR *LPSCTTEMPLATE ;
|
|
typedef struct SCTtemplate
|
|
{
|
|
LPSCTTEMPLATE pNext ; // The next template in the list.
|
|
char achName[20] ; // Template name.
|
|
char achType[20] ; // Template type.
|
|
short nMeasures ;
|
|
LPSCTCOMMAND lpSCTcommandList ; // Template commands.
|
|
} SCTtemplate ;
|
|
|
|
#pragma pack()
|
|
|