LMMS
Loading...
Searching...
No Matches
protrack.h
Go to the documentation of this file.
1/*
2 * Adplug - Replayer for many OPL2/OPL3 audio file formats.
3 * Copyright (C) 1999 - 2007 Simon Peter, <dn.tlp@gmx.net>, et al.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 *
19 * protrack.h - Generic Protracker Player by Simon Peter <dn.tlp@gmx.net>
20 */
21
22#ifndef H_PROTRACK
23#define H_PROTRACK
24
25#include "player.h"
26
27class CmodPlayer: public CPlayer
28{
29public:
30 CmodPlayer(Copl *newopl);
31 virtual ~CmodPlayer();
32
33 bool update();
34 void rewind(int subsong);
35 float getrefresh();
37 unsigned int getpatterns()
38 { return nop; }
39 unsigned int getpattern()
40 { return order[ord]; }
41 unsigned int getorders()
42 { return length; }
43 unsigned int getorder()
44 { return ord; }
45 unsigned int getrow()
46 { return rw; }
47 unsigned int getspeed()
48 { return speed; }
49
50 protected:
51 enum Flags {
53 Decimal = 1 << 0,
54 Faust = 1 << 1,
55 NoKeyOn = 1 << 2,
56 Opl3 = 1 << 3,
57 Tremolo = 1 << 4,
58 Vibrato = 1 << 5,
59 Percussion = 1 << 6
60 };
61
62 struct Instrument {
64 signed char slide;
65 } *inst;
66
67 struct Tracks {
68 unsigned char note,command,inst,param2,param1;
69 } **tracks;
70
71 unsigned char *order, *arplist, *arpcmd, initspeed;
72 unsigned short tempo, **trackord, bpm, nop;
73 unsigned long length, restartpos, activechan;
75
82
83 void init_trackord();
84 bool init_specialarp();
85 void init_notetable(const unsigned short *newnotetable);
86 bool realloc_order(unsigned long len);
87 bool realloc_patterns(unsigned long pats, unsigned long rows, unsigned long chans);
88 bool realloc_instruments(unsigned long len);
89
90 void dealloc();
91
92 private:
93 static const unsigned short sa2_notetable[12];
94 static const unsigned char vibratotab[32];
95
96 unsigned char speed, del, songend, regbd;
97 unsigned short rows, notetable[12];
98 unsigned long rw, ord, nrows, npats, nchans;
99
100 void setvolume(unsigned char chan);
101 void setvolume_alt(unsigned char chan);
102 void setfreq(unsigned char chan);
103 void playnote(unsigned char chan);
104 void setnote(unsigned char chan, int note);
105 void slide_down(unsigned char chan, int amount);
106 void slide_up(unsigned char chan, int amount);
107 void tone_portamento(unsigned char chan, unsigned char info);
108 void vibrato(unsigned char chan, unsigned char speed, unsigned char depth);
109 void vol_up(unsigned char chan, int amount);
110 void vol_down(unsigned char chan, int amount);
111 void vol_up_alt(unsigned char chan, int amount);
112 void vol_down_alt(unsigned char chan, int amount);
113
114 void dealloc_patterns();
115 bool resolve_order();
116 unsigned char set_opl_chip(unsigned char chan);
117};
118
119#endif
CPlayer(Copl *newopl)
Definition player.cpp:34
virtual ~CmodPlayer()
Definition protrack.cpp:56
static const unsigned short sa2_notetable[12]
Definition protrack.h:36
void setfreq(unsigned char chan)
Definition protrack.cpp:639
void setvolume(unsigned char chan)
Definition protrack.cpp:617
unsigned long activechan
Definition protrack.h:73
int curchip
Definition protrack.h:74
unsigned long nrows
Definition protrack.h:98
void init_notetable(const unsigned short *newnotetable)
Definition protrack.cpp:547
bool realloc_patterns(unsigned long pats, unsigned long rows, unsigned long chans)
Definition protrack.cpp:559
unsigned char songend
Definition protrack.h:96
unsigned short nop
Definition protrack.h:72
unsigned short tempo
Definition protrack.h:72
unsigned short bpm
Definition protrack.h:72
void setnote(unsigned char chan, int note)
Definition protrack.cpp:681
static const unsigned char vibratotab[32]
Definition protrack.h:40
void dealloc()
Definition protrack.cpp:606
bool realloc_order(unsigned long len)
Definition protrack.cpp:552
unsigned short notetable[12]
Definition protrack.h:97
unsigned long ord
Definition protrack.h:98
Flags
Definition protrack.h:51
@ Standard
Definition protrack.h:52
@ Decimal
Definition protrack.h:53
@ Tremolo
Definition protrack.h:57
@ Vibrato
Definition protrack.h:58
@ Percussion
Definition protrack.h:59
@ NoKeyOn
Definition protrack.h:55
@ Opl3
Definition protrack.h:56
@ Faust
Definition protrack.h:54
void setvolume_alt(unsigned char chan)
Definition protrack.cpp:629
unsigned short rows
Definition protrack.h:97
bool resolve_order()
Definition protrack.cpp:469
void vol_up(unsigned char chan, int amount)
Definition protrack.cpp:774
unsigned long length
Definition protrack.h:73
CmodPlayer(Copl *newopl)
Definition protrack.cpp:45
void vol_down(unsigned char chan, int amount)
Definition protrack.cpp:787
void dealloc_patterns()
Definition protrack.cpp:582
unsigned long nchans
Definition protrack.h:98
unsigned int getspeed()
Definition protrack.h:47
unsigned long rw
Definition protrack.h:98
unsigned long npats
Definition protrack.h:98
unsigned int getpatterns()
Definition protrack.h:37
unsigned char initspeed
Definition protrack.h:71
bool realloc_instruments(unsigned long len)
Definition protrack.cpp:596
unsigned int getrow()
Definition protrack.h:45
void vol_up_alt(unsigned char chan, int amount)
Definition protrack.cpp:800
unsigned int getorders()
Definition protrack.h:41
void vibrato(unsigned char chan, unsigned char speed, unsigned char depth)
Definition protrack.cpp:750
void init_trackord()
Definition protrack.cpp:531
unsigned char speed
Definition protrack.h:96
struct CmodPlayer::Channel * channel
void vol_down_alt(unsigned char chan, int amount)
Definition protrack.cpp:814
float getrefresh()
Definition protrack.cpp:526
unsigned int getorder()
Definition protrack.h:43
unsigned char del
Definition protrack.h:96
void rewind(int subsong)
Definition protrack.cpp:493
int flags
Definition protrack.h:74
struct CmodPlayer::Instrument * inst
void slide_down(unsigned char chan, int amount)
Definition protrack.cpp:703
bool init_specialarp()
Definition protrack.cpp:539
unsigned short ** trackord
Definition protrack.h:72
unsigned int getpattern()
Definition protrack.h:39
void playnote(unsigned char chan)
Definition protrack.cpp:650
void tone_portamento(unsigned char chan, unsigned char info)
Definition protrack.cpp:727
unsigned char set_opl_chip(unsigned char chan)
Definition protrack.cpp:452
unsigned char * order
Definition protrack.h:71
unsigned long restartpos
Definition protrack.h:73
void slide_up(unsigned char chan, int amount)
Definition protrack.cpp:715
unsigned char regbd
Definition protrack.h:96
bool update()
Definition protrack.cpp:61
unsigned char * arpcmd
Definition protrack.h:71
struct CmodPlayer::Tracks ** tracks
unsigned char * arplist
Definition protrack.h:71
Definition opl.h:26
struct backing_store_struct * info
Definition jmemsys.h:183
Definition protrack.h:76
unsigned char vol2
Definition protrack.h:78
unsigned short nextfreq
Definition protrack.h:77
signed char trigger
Definition protrack.h:80
unsigned char oct
Definition protrack.h:78
unsigned char key
Definition protrack.h:78
unsigned char arppos
Definition protrack.h:79
unsigned char inst
Definition protrack.h:78
unsigned char arpspdcnt
Definition protrack.h:79
unsigned char vibinfo1
Definition protrack.h:79
unsigned char nextoct
Definition protrack.h:78
unsigned char vibinfo2
Definition protrack.h:79
unsigned short freq
Definition protrack.h:77
unsigned char note
Definition protrack.h:79
unsigned char info2
Definition protrack.h:78
unsigned char fx
Definition protrack.h:78
unsigned char vol1
Definition protrack.h:78
unsigned char info1
Definition protrack.h:78
unsigned char portainfo
Definition protrack.h:79
Definition protrack.h:62
unsigned char arppos
Definition protrack.h:63
unsigned char misc
Definition protrack.h:63
signed char slide
Definition protrack.h:64
unsigned char arpspeed
Definition protrack.h:63
unsigned char arpspdcnt
Definition protrack.h:63
unsigned char arpstart
Definition protrack.h:63
unsigned char data[11]
Definition protrack.h:63
Definition protrack.h:67
unsigned char param2
Definition protrack.h:68
unsigned char note
Definition protrack.h:68
unsigned char command
Definition protrack.h:68
unsigned char param1
Definition protrack.h:68
unsigned char inst
Definition protrack.h:68