home *** CD-ROM | disk | FTP | other *** search
/ Large Pack of OldSkool DOS MOD Trackers / ht12_m68k.lha / HivelyTracker / Replayer / src / hvl_replay.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-12-08  |  6.8 KB  |  208 lines

  1.  
  2. // Woohoo!
  3. #define MAX_CHANNELS 16
  4.  
  5. #define Period2Freq(period) ((3546897.f * 65536.f) / (period)) 
  6.  
  7. struct hvl_envelope
  8. {
  9.   int16 aFrames, aVolume;
  10.   int16 dFrames, dVolume;
  11.   int16 sFrames;
  12.   int16 rFrames, rVolume;
  13.   int16 pad;
  14. };
  15.  
  16. struct hvl_plsentry
  17. {
  18.   uint8 ple_Note;
  19.   uint8 ple_Waveform;
  20.   int16 ple_Fixed;
  21.   int8  ple_FX[2];
  22.   int8  ple_FXParam[2];
  23. };
  24.  
  25. struct hvl_plist
  26. {
  27.   int16                pls_Speed;
  28.   int16                pls_Length;
  29.   struct hvl_plsentry *pls_Entries;
  30. };
  31.  
  32. struct hvl_instrument
  33. {
  34.   TEXT                ins_Name[128];
  35.   uint8               ins_Volume;
  36.   uint8               ins_WaveLength;
  37.   uint8               ins_FilterLowerLimit;
  38.   uint8               ins_FilterUpperLimit;
  39.   uint8               ins_FilterSpeed;
  40.   uint8               ins_SquareLowerLimit;
  41.   uint8               ins_SquareUpperLimit;
  42.   uint8               ins_SquareSpeed;
  43.   uint8               ins_VibratoDelay;
  44.   uint8               ins_VibratoSpeed;
  45.   uint8               ins_VibratoDepth;
  46.   uint8               ins_HardCutRelease;
  47.   uint8               ins_HardCutReleaseFrames;
  48.   struct hvl_envelope ins_Envelope;
  49.   struct hvl_plist    ins_PList;
  50. };
  51.  
  52. struct hvl_position
  53. {
  54.   uint8 pos_Track[MAX_CHANNELS];
  55.   int8  pos_Transpose[MAX_CHANNELS];
  56. };
  57.  
  58. struct hvl_step
  59. {
  60.   uint8 stp_Note;
  61.   uint8 stp_Instrument;
  62.   uint8 stp_FX;
  63.   uint8 stp_FXParam;
  64.   uint8 stp_FXb;
  65.   uint8 stp_FXbParam;
  66. };
  67.  
  68. struct hvl_voice
  69. {
  70.   int16                  vc_Track;
  71.   int16                  vc_NextTrack;
  72.   int16                  vc_Transpose;
  73.   int16                  vc_NextTranspose;
  74.   int32                  vc_ADSRVolume;
  75.   struct hvl_envelope    vc_ADSR;
  76.   struct hvl_instrument *vc_Instrument;
  77.   uint32                 vc_SamplePos;
  78.   uint32                 vc_Delta;
  79.   uint16                 vc_InstrPeriod;
  80.   uint16                 vc_TrackPeriod;
  81.   uint16                 vc_VibratoPeriod;
  82.   uint16                 vc_WaveLength;
  83.   int16                  vc_NoteMaxVolume;
  84.   uint16                 vc_PerfSubVolume;
  85.   uint8                  vc_NewWaveform;
  86.   uint8                  vc_Waveform;
  87.   uint8                  vc_PlantPeriod;
  88.   uint8                  vc_VoiceVolume;
  89.   uint8                  vc_PlantSquare;
  90.   uint8                  vc_IgnoreSquare;
  91.   uint8                  vc_FixedNote;
  92.   int16                  vc_VolumeSlideUp;
  93.   int16                  vc_VolumeSlideDown;
  94.   int16                  vc_HardCut;
  95.   uint8                  vc_HardCutRelease;
  96.   int16                  vc_HardCutReleaseF;
  97.   uint8                  vc_PeriodSlideOn;
  98.   int16                  vc_PeriodSlideSpeed;
  99.   int16                  vc_PeriodSlidePeriod;
  100.   int16                  vc_PeriodSlideLimit;
  101.   int16                  vc_PeriodSlideWithLimit;
  102.   int16                  vc_PeriodPerfSlideSpeed;
  103.   int16                  vc_PeriodPerfSlidePeriod;
  104.   uint8                  vc_PeriodPerfSlideOn;
  105.   int16                  vc_VibratoDelay;
  106.   int16                  vc_VibratoSpeed;
  107.   int16                  vc_VibratoCurrent;
  108.   int16                  vc_VibratoDepth;
  109.   int16                  vc_SquareOn;
  110.   int16                  vc_SquareInit;
  111.   int16                  vc_SquareWait;
  112.   int16                  vc_SquareLowerLimit;
  113.   int16                  vc_SquareUpperLimit;
  114.   int16                  vc_SquarePos;
  115.   int16                  vc_SquareSign;
  116.   int16                  vc_SquareSlidingIn;
  117.   int16                  vc_SquareReverse;
  118.   uint8                  vc_FilterOn;
  119.   uint8                  vc_FilterInit;
  120.   int16                  vc_FilterWait;
  121.   int16                  vc_FilterSpeed;
  122.   int16                  vc_FilterUpperLimit;
  123.   int16                  vc_FilterLowerLimit;
  124.   int16                  vc_FilterPos;
  125.   int16                  vc_FilterSign;
  126.   int16                  vc_FilterSlidingIn;
  127.   int16                  vc_IgnoreFilter;
  128.   int16                  vc_PerfCurrent;
  129.   int16                  vc_PerfSpeed;
  130.   int16                  vc_PerfWait;
  131.   struct hvl_plist      *vc_PerfList;
  132.   int8                  *vc_AudioPointer;
  133.   int8                  *vc_AudioSource;
  134.   uint8                  vc_NoteDelayOn;
  135.   uint8                  vc_NoteCutOn;
  136.   int16                  vc_NoteDelayWait;
  137.   int16                  vc_NoteCutWait;
  138.   int16                  vc_AudioPeriod;
  139.   int16                  vc_AudioVolume;
  140.   int32                  vc_WNRandom;
  141.   int8                  *vc_MixSource;
  142.   int8                   vc_SquareTempBuffer[0x80];
  143.   int8                   vc_VoiceBuffer[0x282*4];
  144.   uint8                  vc_VoiceNum;
  145.   uint8                  vc_TrackMasterVolume;
  146.   uint8                  vc_TrackOn;
  147.   int16                  vc_VoicePeriod;
  148.   uint32                 vc_Pan;
  149.   uint32                 vc_PanMultLeft;
  150.   uint32                 vc_PanMultRight;
  151.   uint32                 vc_RingSamplePos;
  152.   uint32                 vc_RingDelta;
  153.   int8                  *vc_RingMixSource;
  154.   uint8                  vc_RingPlantPeriod;
  155.   int16                  vc_RingInstrPeriod;
  156.   int16                  vc_RingBasePeriod;
  157.   int16                  vc_RingAudioPeriod;
  158.   int8                  *vc_RingAudioSource;
  159.   uint8                  vc_RingNewWaveform;
  160.   uint8                  vc_RingWaveform;
  161.   uint8                  vc_RingFixedPeriod;
  162.   int8                   vc_RingVoiceBuffer[0x282*4];
  163. };
  164.  
  165. struct hvl_tune
  166. {
  167.   TEXT                   ht_Name[128];
  168.   uint16                 ht_SongNum;
  169.   uint32                 ht_Frequency;
  170.   float64                ht_FreqF;
  171.   int8                  *ht_WaveformTab[MAX_CHANNELS];
  172.   uint16                 ht_Restart;
  173.   uint16                 ht_PositionNr;
  174.   uint8                  ht_SpeedMultiplier;
  175.   uint8                  ht_TrackLength;
  176.   uint8                  ht_TrackNr;
  177.   uint8                  ht_InstrumentNr;
  178.   uint8                  ht_SubsongNr;
  179.   uint8                  ht_PosJump;
  180.   uint16                 ht_PlayingTime;
  181.   int16                  ht_Tempo;
  182.   int16                  ht_PosNr;
  183.   int16                  ht_StepWaitFrames;
  184.   int16                  ht_NoteNr;
  185.   uint16                 ht_PosJumpNote;
  186.   uint8                  ht_GetNewPosition;
  187.   uint8                  ht_PatternBreak;
  188.   uint8                  ht_SongEndReached;
  189.   uint8                  ht_Stereo;
  190.   uint16                *ht_Subsongs;
  191.   uint16                 ht_Channels;
  192.   struct hvl_position   *ht_Positions;
  193.   struct hvl_step        ht_Tracks[256][64];
  194.   struct hvl_instrument *ht_Instruments;
  195.   struct hvl_voice       ht_Voices[MAX_CHANNELS];
  196.   int32                  ht_defstereo;
  197.   int32                  ht_defpanleft;
  198.   int32                  ht_defpanright;
  199.   int32                  ht_mixgain;
  200. };
  201.  
  202. void hvl_DecodeFrame( struct hvl_tune *ht, int8 *buf1, int8 *buf2, int32 bufmod );
  203. void hvl_InitReplayer( void );
  204. BOOL hvl_InitSubsong( struct hvl_tune *ht, uint32 nr );
  205. struct hvl_tune *hvl_LoadTune( TEXT *name, uint32 freq, uint32 defstereo );
  206. void hvl_FreeTune( struct hvl_tune *ht );
  207.  
  208.