40 #define SEQUENCER_STEPS_PER_PATTERN 16 122 void (*tick_callback)(void);
272 #endif // _SEQUENCER_H Sequencer pattern 03.
Definition: sequencer.h:50
API for a small collection of mathematical functions.
uint8_t get_pattern_length(enum sequencer_pattern_number pattern)
Reads a sequencer pattern's length.
Definition: sequencer.c:127
Sequencer pattern 05.
Definition: sequencer.h:52
Number of available sequencer channels.
Definition: sequencer.h:78
Sequencer pattern 14.
Definition: sequencer.h:61
midi_value_t adjust_sequencer_speed(struct sequencer_channel *channel, int8_t difference)
Increments or decrements a sequencer channel's speed.
Definition: sequencer.c:72
Sequencer pattern 04.
Definition: sequencer.h:51
midi_message_type
MIDI status byte values (first nibble)
Definition: midi.h:80
void wipe_pattern(enum sequencer_pattern_number number)
Wipes a sequencer pattern.
Definition: sequencer.c:288
char * export_pattern(enum sequencer_pattern_number number)
Dumps a sequencer pattern.
Definition: sequencer.c:104
Sequencer pattern 19.
Definition: sequencer.h:66
void set_sequencer_pattern(struct sequencer_channel *channel, enum sequencer_pattern_number pattern)
Selects a sequencer channel's pattern.
Definition: sequencer.c:211
Sequencer pattern 07.
Definition: sequencer.h:54
uint8_t step_index
This counter points to the next sequencer step in the channel's pattern.
Definition: sequencer.h:119
uint8_t midi_value_t
Type for valid MIDI values [0..127].
Definition: midi.h:56
Number of available sequencer patterns.
Definition: sequencer.h:68
The settings and internal state of a wave.
Definition: wave.h:101
Waveform function generator.
struct sequencer_step get_pattern_step(enum sequencer_pattern_number pattern, uint8_t index)
Reads step from a sequencer pattern.
Definition: sequencer.c:132
GPIO configuration and service functions.
sequencer_channel_number
Enumeration of available sequencer channels.
Definition: sequencer.h:72
Sequencer pattern 13.
Definition: sequencer.h:60
#define SEQUENCER_STEPS_PER_PATTERN
Number of steps in a sequencer pattern.
Definition: sequencer.h:40
void set_pattern_length(enum sequencer_pattern_number pattern, uint8_t length)
Sets a sequencer pattern's length.
Definition: sequencer.c:197
midi_value_t data1
Data byte 1 (optional, depending on the message type)
Definition: sequencer.h:96
void init_sequencer_patterns(const struct sequencer_pattern *factory_patterns, uint8_t number_of_patterns)
Initializes / Restores "factory-default" patterns.
Definition: sequencer.c:169
Sequencer pattern 18.
Definition: sequencer.h:65
void overwrite_pattern(enum sequencer_pattern_number number, const struct sequencer_pattern *pattern)
Stores a given pattern at the specified location.
Definition: sequencer.c:176
A sequencer pattern.
Definition: sequencer.h:101
Sequencer pattern 02.
Definition: sequencer.h:49
MIDI message transceiver.
enum midi_message_type type
MIDI message type.
Definition: sequencer.h:94
void start_sequencer(struct sequencer_channel *channel)
Starts a sequencer channel.
Definition: sequencer.c:221
void update_sequencer(void)
Main background task for the sequencer module.
Definition: sequencer.c:245
Sequencer pattern 16.
Definition: sequencer.h:63
sequencer_pattern_number
Enumeration of available sequencer patterns.
Definition: sequencer.h:46
uint8_t length
Number of sequencer steps.
Definition: sequencer.h:103
void copy_pattern(enum sequencer_pattern_number source, enum sequencer_pattern_number destination)
Copies a sequencer pattern.
Definition: sequencer.c:92
Sequencer pattern 06.
Definition: sequencer.h:53
Sequencer channel 2.
Definition: sequencer.h:75
Sequencer pattern 17.
Definition: sequencer.h:64
bool clock_state
Last known state of the channel's clock.
Definition: sequencer.h:121
void import_pattern(enum sequencer_pattern_number number, const char *data)
Stores a pattern given as a hex-string at the specified location.
Definition: sequencer.c:142
void set_sequencer_speed(struct sequencer_channel *channel, midi_value_t speed)
Sets a sequencer channel's speed.
Definition: sequencer.c:216
State and configuration of a sequencer channel.
Definition: sequencer.h:113
Sequencer pattern 12.
Definition: sequencer.h:59
Sequencer channel 1.
Definition: sequencer.h:74
void stop_sequencer(struct sequencer_channel *channel)
Stops a sequencer channel.
Definition: sequencer.c:228
const struct sequencer_pattern factory_patterns[]
Definition: whammy.c:59
enum midi_channel channel
MIDI channel.
Definition: sequencer.h:93
sequencer_channel_mode
Type.
Definition: sequencer.h:82
void set_pattern_step(enum sequencer_pattern_number pattern, uint8_t index, const struct sequencer_step *step)
Modifies a single step in a sequencer pattern.
Definition: sequencer.c:202
Sequencer pattern 10.
Definition: sequencer.h:57
Sequencer pattern 09.
Definition: sequencer.h:56
Sequencer pattern 08.
Definition: sequencer.h:55
uint8_t speed
Stores the sequencer channel's speed.
Definition: sequencer.h:116
The pattern is looped as long as the sequencer channel is active.
Definition: sequencer.h:85
void configure_sequencer_channel(enum sequencer_channel_number number, struct sequencer_channel *channel)
Configures a sequencer channel.
Definition: sequencer.c:81
The pattern is played only once on start of the sequencer channel.
Definition: sequencer.h:84
bool toggle_sequencer(struct sequencer_channel *channel)
Starts or stops a sequencer channel.
Definition: sequencer.c:233
midi_channel
MIDI status byte values (second nibble)
Definition: midi.h:59
Sequencer pattern 11.
Definition: sequencer.h:58
Sequencer pattern 01.
Definition: sequencer.h:48
midi_value_t data0
Data byte 0.
Definition: sequencer.h:95
enum sequencer_pattern_number adjust_sequencer_pattern(struct sequencer_channel *channel, int8_t difference)
Increments or decrements a sequencer channel's pattern index.
Definition: sequencer.c:64
A sequencer step.
Definition: sequencer.h:91
Sequencer channel 3.
Definition: sequencer.h:76
Sequencer pattern 15.
Definition: sequencer.h:62
bool running
This flag indicates if the sequencer channel is currently running.
Definition: sequencer.h:118
Sequencer channel 4.
Definition: sequencer.h:77
Sequencer pattern 20.
Definition: sequencer.h:67