more configuration

This commit is contained in:
2024-05-21 13:43:40 +02:00
parent faf75e158a
commit 2827046b8b
14 changed files with 74 additions and 19 deletions

View File

@ -1,19 +1,26 @@
#include <stdint.h>
#include <sys/param.h>
#include "config.h"
typedef struct {
uint8_t amplitude;
uint8_t melodyAmplitude;
uint8_t effectsAmplitude;
} config_t;
config_t config;
void configSetAmplitude(uint8_t v) {
config.amplitude = v;
config.melodyAmplitude = MIN(v, 15);
config.effectsAmplitude = MIN(v+4, 15);
}
uint8_t configGetAmplitude() {
return config.amplitude;
uint8_t *configGetMelodyAmplitudePtr() {
return &(config.melodyAmplitude);
}
uint8_t *configGetEffectsAmplitudePtr() {
return &(config.effectsAmplitude);
}

View File

@ -5,7 +5,8 @@
#include <stdint.h>
void configSetAmplitude(uint8_t v);
uint8_t configGetAmplitude();
uint8_t *configGetMelodyAmplitudePtr();
uint8_t *configGetEffectsAmplitudePtr();
#endif // _CONFIG_H_

View File

@ -1,5 +1,4 @@
#include <stdbool.h>
#include <sys/param.h>
#include <stddef.h>
#include "psg.h"
#include "sequencer.h"
@ -22,14 +21,13 @@ const t_tone plingVoice1[] = {
t_melodies pling = {
.melodies = { { .tones = plingVoice1 } },
.amplitude = 12,
.numOfMelodies = 1,
.pace = 200,
.chip = 1
};
void playPling() {
pling.amplitude = MIN((configGetAmplitude() + 4), 15);
pling.amplitude = configGetEffectsAmplitudePtr();
sequencerPlayMelodies(&pling);
}

View File

@ -1,5 +1,4 @@
#include <stdbool.h>
#include <sys/param.h>
#include <stddef.h>
#include "psg.h"
#include "sequencer.h"
@ -927,7 +926,6 @@ const t_tone voice3[] = {
#define INITIAL_PACE 160
t_melodies tetrisTheme = {
.melodies = { { .tones = voice1 }, { .tones = voice2 }, { .tones = voice3 } },
.amplitude = 8,
.numOfMelodies = 3,
.pace = INITIAL_PACE,
.chip = 0
@ -935,7 +933,7 @@ t_melodies tetrisTheme = {
void playMelodyTetris() {
tetrisTheme.pace = INITIAL_PACE; // reset to start value each time
tetrisTheme.amplitude = MIN((configGetAmplitude() + 4), 15);
tetrisTheme.amplitude = configGetMelodyAmplitudePtr();
sequencerPlayMelodies(&tetrisTheme);
}

View File

@ -1,5 +1,4 @@
#include <stdbool.h>
#include <sys/param.h>
#include <stddef.h>
#include "psg.h"
#include "sequencer.h"
@ -74,14 +73,13 @@ const t_tone tusch1voice3[] = {
t_melodies tusch1 = {
.melodies = { { .tones = tusch1voice1 }, { .tones = tusch1voice2 }, { .tones = tusch1voice3 } },
.amplitude = 12,
.numOfMelodies = 3,
.pace = 200,
.chip = 1
};
void playTusch1() {
tusch1.amplitude = MIN((configGetAmplitude() + 4), 15);
tusch1.amplitude = configGetEffectsAmplitudePtr();
sequencerPlayMelodies(&tusch1);
}

View File

@ -59,7 +59,7 @@ void sequencerExec(void *handle) {
if (melody->tones[melody->idx].length == e_L_EndMark) {
melody->idx = 0;
}
psgPlayTone(melodies->chip, channel, melodies->amplitude, melody->tones[melody->idx].octave, melody->tones[melody->idx].note);
psgPlayTone(melodies->chip, channel, *(melodies->amplitude), melody->tones[melody->idx].octave, melody->tones[melody->idx].note);
melody->lengthCnt = (melody->tones[melody->idx].staccato) ?
(calcLength(melodies, melody->tones[melody->idx].length) / 2) :
calcLength(melodies, melody->tones[melody->idx].length);

View File

@ -52,7 +52,7 @@ typedef struct {
typedef struct {
uint8_t slotMask;
uint8_t chip;
uint8_t amplitude;
uint8_t *amplitude;
uint8_t taskId;
uint16_t quarterLength;
uint8_t numOfMelodies;