cog/Frameworks/SSEQPlayer/SSEQPlayer/Track.h

63 lines
1.1 KiB
C++

/*
* SSEQ Player - Track structure
* By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com]
* Last modification on 2013-04-01
*
* Adapted from source code of FeOS Sound System
* By fincs
* https://github.com/fincs/FSS
*/
#ifndef SSEQPLAYER_TRACK_H
#define SSEQPLAYER_TRACK_H
#include <bitset>
#include "consts.h"
struct Player;
struct Track
{
int8_t trackId;
std::bitset<TS_BITS> state;
uint8_t num, prio;
Player *ply;
const uint8_t *startPos;
const uint8_t *pos;
const uint8_t *stack[FSS_TRACKSTACKSIZE];
uint8_t stackPos;
uint8_t loopCount[FSS_TRACKSTACKSIZE];
int wait;
uint16_t patch;
uint8_t portaKey, portaTime;
int16_t sweepPitch;
uint8_t vol, expr;
int8_t pan; // -64..63
uint8_t pitchBendRange;
int8_t pitchBend;
int8_t transpose;
uint8_t a, d, s, r;
uint8_t modType, modSpeed, modDepth, modRange;
uint16_t modDelay;
std::bitset<TUF_BITS> updateFlags;
Track();
void Init(uint8_t handle, Player *ply, const uint8_t *pos, int n);
void Zero();
void ClearState();
void Free();
int NoteOn(int key, int vel, int len);
int NoteOnTie(int key, int vel);
void ReleaseAllNotes();
void Run();
};
#endif