51 lines
886 B
C
51 lines
886 B
C
|
#ifndef _PATTERN_H_
|
||
|
#define _PATTERN_H_
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
|
||
|
class Pattern
|
||
|
{
|
||
|
public:
|
||
|
static const uint32_t PATTERN_LEN = 16;
|
||
|
static const uint32_t NUM_PATTERNS = 16;
|
||
|
|
||
|
Pattern();
|
||
|
|
||
|
bool toggleBit(uint32_t step);
|
||
|
bool toggleAccentBit(uint32_t step);
|
||
|
|
||
|
void setCurrentVoice(uint32_t);
|
||
|
uint32_t getCurrentVoice(void);
|
||
|
|
||
|
void setCurrentPattern(uint32_t);
|
||
|
uint32_t getCurrentPattern();
|
||
|
|
||
|
void clearCurrentPattern();
|
||
|
void randomizeCurrentPattern();
|
||
|
|
||
|
uint32_t getStepData(uint32_t index);
|
||
|
bool getVoiceBit(uint32_t step);
|
||
|
bool getAccentBit(uint32_t step);
|
||
|
|
||
|
bool writeToCard();
|
||
|
bool readFromCard();
|
||
|
|
||
|
private:
|
||
|
|
||
|
uint32_t pattern_data[NUM_PATTERNS][PATTERN_LEN];
|
||
|
|
||
|
uint32_t current_pattern;
|
||
|
uint32_t current_voice;
|
||
|
uint32_t current_voice_mask;
|
||
|
uint32_t current_accent_mask;
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#endif // keepout
|