aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/adlmidi.h46
1 files changed, 19 insertions, 27 deletions
diff --git a/include/adlmidi.h b/include/adlmidi.h
index 145b5dd..1279e9f 100644
--- a/include/adlmidi.h
+++ b/include/adlmidi.h
@@ -40,33 +40,7 @@ enum ADLMIDI_VolumeModels
struct ADL_MIDIPlayer
{
- unsigned int AdlBank;
- unsigned int NumFourOps;
- unsigned int NumCards;
- unsigned int HighTremoloMode;
- unsigned int HighVibratoMode;
- unsigned int AdlPercussionMode;
- unsigned int LogarithmicVolumes;
- int VolumeModel;
- unsigned int SkipForward;
- unsigned int loopingIsEnabled;
- unsigned int ScaleModulators;
- double delay;
- double carry;
-
- /* The lag between visual content and audio content equals */
- /* the sum of these two buffers. */
- double mindelay;
- double maxdelay;
-
- /* For internal usage */
- ssize_t stored_samples; /* num of collected samples */
- short backup_samples[1024]; /* Backup sample storage. */
- ssize_t backup_samples_size; /* Backup sample storage. */
- /* For internal usage */
-
void *adl_midiPlayer;
- unsigned long PCM_RATE;
};
/* Sets number of emulated sound cards (from 1 to 100). Emulation of multiple sound cards exchanges polyphony limits*/
@@ -127,14 +101,32 @@ extern int adl_openData(struct ADL_MIDIPlayer *device, void *mem, long size);
/*Resets MIDI player*/
extern void adl_reset(struct ADL_MIDIPlayer *device);
+/*Get total time length of current song*/
+extern double adl_totalTimeLength(struct ADL_MIDIPlayer *device);
+
+/*Get loop start time if presented. -1 means MIDI file has no loop points */
+extern double adl_loopStartTime(struct ADL_MIDIPlayer *device);
+
+/*Get loop end time if presented. -1 means MIDI file has no loop points */
+extern double adl_loopEndTime(struct ADL_MIDIPlayer *device);
+
+/*Get current time position in seconds*/
+extern double adl_positionTell(struct ADL_MIDIPlayer *device);
+
+/*Jump to absolute time position in seconds*/
+extern void adl_positionSeek(struct ADL_MIDIPlayer *device, double seconds);
+
/*Reset MIDI track position to begin */
extern void adl_positionRewind(struct ADL_MIDIPlayer *device);
+/*Set tempo multiplier: 1.0 - original tempo, >1 - play faster, <1 - play slower */
+extern void adl_setTempo(struct ADL_MIDIPlayer *device, double tempo);
+
/*Close and delete ADLMIDI device*/
extern void adl_close(struct ADL_MIDIPlayer *device);
/*Take a sample buffer*/
-extern int adl_play(struct ADL_MIDIPlayer *device, int sampleCount, short out[]);
+extern int adl_play(struct ADL_MIDIPlayer *device, int sampleCount, short out[]);
#ifdef __cplusplus
}