windows-nt/Source/XPSP1/NT/multimedia/directx/dmusic/dmstyle/sjdefs.h
2020-09-26 16:20:57 +08:00

136 lines
4.7 KiB
C

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (c) 1998-1998 Microsoft Corporation
//
// File: sjdefs.h
//
//--------------------------------------------------------------------------
#ifndef __SJ_DEFINES_H__
#define __SJ_DEFINES_H__
//#define DEFAULT_STYLE_PATH "\\multim~1\\music\\intera~1\\"
// Score defines
#define VNUM 16 // Total number of variations
#define LAST_INSTR 5 // Total number of displayed instr minus 1
#define MAX_OUTS 6 // Max MIDI out devices supported
#define EDITMODES 3
#define MODE_ALLCHORDS 4
#define MODE_FATCHORDS 8
#define BAND_NAME_SIZE 15
#define SECTION_NAME_SIZE 15
#define SONG_NAME_SIZE 20
#define FILTER_SIZE 40
#define TITLE_SIZE 60
#define SMALLEST_OFFSET 96
#define ERRORTEXT_SIZE 100
#define FILENAME_SIZE 256
#define FILENAMES_SIZE 512
#define BUFFER_SIZE 400
#define EVENT_FREED 0x35
#define EVENT_REMOVE 0x5A
#define EVENT_VOICE 1 // Performance event
#define EVENT_REALTIME 2 // qevent() must invoke interrupt
#define EVENT_ONTIME 3 // event should be handled on time
#define FROM_MIDIINPUT 2 // MIDI input
#define DEST_MSG 3 // Post message to app
#define DEST_MIDIOUT 4 // Routed to MIDI mapper
#define DEST_COMPOSER 5 // Routed to composition code
#define DEST_TEMPO 6 // Routed to tempo change code
#define DEST_VOLUME 7 // Routed to volume change code
#define DEST_RTEMPO 8 // Routed to relative tempo change code
#define DEST_RVOLUME 9 // Routed to relative volume change code
#define DEST_REMOVE 10 // Routed to remove code (freeevent)
#define DEST_METRONOME 11 // Routed to metronome code
#define DEST_ENDMOTIF 12 // ends a motif and frees its channels in use
#define DEST_MIDIFILE 13 // Source was a MIDI file, convert to DEST_MIDIOUT
#define NB_OFFSET 0x3 // Offset note up to 7 clicks early
#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 )
#define C_FILL 1 // Do a fill
#define C_INTRO 2 // Do an intro
#define C_BREAK 3 // Do a drum break
#define C_END 4 // End the song
//#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
// Section Flags
#define SECF_STOPPED_EARLY 0x0001
#define SECF_IS_TRANSITION 0x0002
// chord types for use by each instrument in a pattern
// Chord types for use by each instrument in a pattern
enum
{
CHTYPE_NOTINITIALIZED = 0,
CHTYPE_DRUM, // superceded by CHTYPE_FIXED
// no longer in Note Dialog's combo box selections
// no longer in Pattern Dialog's combo box selections
CHTYPE_BASS, // scale + lower chord
CHTYPE_UPPER, // scale + upper chord
CHTYPE_SCALEONLY, // scale, no chord
CHTYPE_BASSMELODIC,
CHTYPE_UPPERMELODIC,
CHTYPE_NONE, // Ignored on Pattern Dialog's menu selections.
CHTYPE_FIXED
};
#define VF_SCALE 0x7F // Seven positions in the scale
#define VF_ACCIDENTAL 0x80 // Handles chords outside of scale
#define VF_MAJOR 0x100 // Handles major chords
#define VF_MINOR 0x200 // Handles minor chords
#define VF_ALL 0x400 // Handles all chord types
#define VF_TO1 0x800 // Handles transitions to 1 chord
#define VF_TO5 0x1000 // Handles transitions to 5 chord
#define VF_SIMPLE 0x2000 // handles simple chords
#define VF_COMPLEX 0x4000 // handles complex chords
// this expects a voiceid from 1-16
#define VOICEID_TO_CHANNEL( id ) ((DWORD) ( ( id + 3 ) & 0xf ))
#pragma pack()
#endif // __SJ_DEFINES_H__