Holger Wirtz 2 years ago
parent b35ec52405
commit ebde14e11d
  1. 10
      UI.hpp
  2. 2
      config.h
  3. 148
      third-party/TeensyVariablePlayback/src/playresmp.h

@ -6778,7 +6778,10 @@ void display_bar_float(const char* title, float value, float factor, int32_t min
// Value // Value
display.setCursor(LCD_cols - size, 1); display.setCursor(LCD_cols - size, 1);
display_float(value * factor, size_number, size_fraction, zeros, false, sign); // TBD //display_float(value * factor, size_number, size_fraction, zeros, false, sign); // does not work with "Smallest code" optimizer
char s[LCD_cols + 1];
snprintf_P(s, strlen(s), PSTR("%+1.1f"), value * factor); // not so good solution, but works with optimizer
display.print(s);
// Bar // Bar
display.setCursor(0, 1); display.setCursor(0, 1);
@ -6833,7 +6836,10 @@ void display_meter_float(const char* title, float value, float factor, float off
// Value // Value
display.setCursor(LCD_cols - size, 1); display.setCursor(LCD_cols - size, 1);
display_float((value + offset) * factor, size_number, size_fraction, zeros, false, sign); //display_float((value + offset) * factor, size_number, size_fraction, zeros, false, sign); // does not work with "Smallest code" optimizer
char s[LCD_cols + 1];
snprintf_P(s, strlen(s), PSTR("%+1.1f"), (value + offset) * factor); // not so good solution, but works with optimizer
display.print(s);
// Bar // Bar
display.setCursor(0, 1); display.setCursor(0, 1);

@ -53,6 +53,8 @@
// sed -i.orig 's/^#define USB_MIDI_SYSEX_MAX 290/#define USB_MIDI_SYSEX_MAX 4104/' /usr/local/arduino-teensy/hardware/teensy/avr/cores/teensy3/usb_midi.h // sed -i.orig 's/^#define USB_MIDI_SYSEX_MAX 290/#define USB_MIDI_SYSEX_MAX 4104/' /usr/local/arduino-teensy/hardware/teensy/avr/cores/teensy3/usb_midi.h
// sed -i.orig 's/^#define USB_MIDI_SYSEX_MAX 290/#define USB_MIDI_SYSEX_MAX 4104/' /usr/local/arduino-teensy/hardware/teensy/avr/cores/teensy4/usb_midi.h // sed -i.orig 's/^#define USB_MIDI_SYSEX_MAX 290/#define USB_MIDI_SYSEX_MAX 4104/' /usr/local/arduino-teensy/hardware/teensy/avr/cores/teensy4/usb_midi.h
//#define USB_MIDI_SYSEX_MAX 4104 //#define USB_MIDI_SYSEX_MAX 4104
//
// Information about memory layout, etc.: https://www.pjrc.com/store/teensy41.html
#define VERSION "1.2.3" #define VERSION "1.2.3"

@ -8,90 +8,90 @@
template <class TResamplingReader> template <class TResamplingReader>
class AudioPlayResmp : public AudioStream class AudioPlayResmp : public AudioStream
{ {
public: public:
AudioPlayResmp(): AudioStream(0, NULL), reader(nullptr) AudioPlayResmp(): AudioStream(0, NULL), reader(nullptr)
{ {
} }
virtual ~AudioPlayResmp() { virtual ~AudioPlayResmp() {
} }
void begin(void) void begin(void)
{ {
reader->begin(); reader->begin();
} }
bool playRaw(const char *filename, uint16_t numChannels) bool playRaw(const char *filename, uint16_t numChannels)
{ {
stop(); stop();
return reader->play(filename, false, numChannels); return reader->play(filename, false, numChannels);
} }
bool playWav(const char *filename) bool playWav(const char *filename)
{ {
stop(); stop();
return reader->play(filename, true, 0); return reader->play(filename, true, 0);
} }
bool playRaw(int16_t *data, uint32_t numSamples, uint16_t numChannels)
{
stop();
return reader->playRaw(data, numSamples, numChannels);
}
bool playRaw(int16_t *data, uint32_t numSamples, uint16_t numChannels) bool playRaw(const unsigned int *data, uint32_t numSamples, uint16_t numChannels)
{ {
stop(); return playRaw((int16_t *) data, numSamples, numChannels);
return reader->playRaw(data, numSamples, numChannels); }
}
bool playRaw(const unsigned int *data, uint32_t numSamples, uint16_t numChannels) bool playWav(int16_t *data, uint32_t fileSize)
{ {
return playRaw((int16_t *) data, numSamples, numChannels); stop();
} return reader->playWav(data, fileSize);
}
bool playWav(int16_t *data, uint32_t fileSize) bool playWav(const unsigned int *data, uint32_t fileSize) {
{ return playWav((int16_t *) data, fileSize);
stop(); }
return reader->playWav(data, fileSize);
}
bool playWav(const unsigned int *data, uint32_t fileSize) {
return playWav((int16_t *) data, fileSize);
}
void setPlaybackRate(float f) {
reader->setPlaybackRate(f);
}
void setLoopType(loop_type t) {
reader->setLoopType(t);
}
void setLoopStart(uint32_t loop_start) {
reader->setLoopStart(loop_start);
}
void setLoopFinish(uint32_t loop_finish) {
reader->setLoopFinish(loop_finish);
}
void enableInterpolation(bool enable) {
if (enable)
reader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_quadratic);
else
reader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_none);
}
bool isPlaying(void) {
return reader->isPlaying();
};
void stop() { void setPlaybackRate(float f) {
reader->stop(); reader->setPlaybackRate(f);
} }
void update() void setLoopType(loop_type t) {
{ reader->setLoopType(t);
int _numChannels = reader->getNumChannels(); }
if (_numChannels == -1)
return; void setLoopStart(uint32_t loop_start) {
reader->setLoopStart(loop_start);
}
void setLoopFinish(uint32_t loop_finish) {
reader->setLoopFinish(loop_finish);
}
void enableInterpolation(bool enable) {
if (enable)
reader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_quadratic);
else
reader->setInterpolationType(ResampleInterpolationType::resampleinterpolation_none);
}
bool isPlaying(void) {
return reader->isPlaying();
};
void stop() {
reader->stop();
}
void update()
{
int _numChannels = reader->getNumChannels();
if (_numChannels == -1)
return;
unsigned int n; unsigned int n;
audio_block_t *blocks[_numChannels]; audio_block_t *blocks[_numChannels];
int16_t *data[_numChannels]; int16_t *data[_numChannels];
// only update if we're playing // only update if we're playing

Loading…
Cancel
Save