tweaks
This commit is contained in:
@@ -1,15 +1,17 @@
|
|||||||
|
|
||||||
#include "MidiController.h"
|
#include "MidiController.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
MidiController::MidiController(NoteQueue& queue) : noteQueue_(queue) {
|
MidiController::MidiController(NoteQueue& queue) : noteQueue_(queue) {
|
||||||
try {
|
try {
|
||||||
midiIn_ = std::make_unique<RtMidiIn>();
|
midiIn_ = std::make_unique<RtMidiIn>();
|
||||||
midiIn_->ignoreTypes(false, true, false);
|
midiIn_->ignoreTypes(true, true, true);
|
||||||
} catch (RtMidiError& e) {
|
} catch (RtMidiError& e) {
|
||||||
std::cerr << "RtMidi init failed: " << e.getMessage() << std::endl;
|
std::cerr << "RtMidi init failed: " << e.getMessage() << std::endl;
|
||||||
}
|
}
|
||||||
|
// TODO: this still doesnt work on windows
|
||||||
}
|
}
|
||||||
|
|
||||||
MidiController::~MidiController() {
|
MidiController::~MidiController() {
|
||||||
@@ -54,6 +56,10 @@ void MidiController::midiCallback(double /*deltaTime*/, std::vector<unsigned cha
|
|||||||
|
|
||||||
void MidiController::handleMessage(const std::vector<unsigned char>& msg) {
|
void MidiController::handleMessage(const std::vector<unsigned char>& msg) {
|
||||||
unsigned char status = msg[0] & 0xF0;
|
unsigned char status = msg[0] & 0xF0;
|
||||||
|
|
||||||
|
if (status == 0xFE) return;
|
||||||
|
if (status == 0xF8) return;
|
||||||
|
|
||||||
unsigned char note = msg.size() > 1 ? msg[1] : 0;
|
unsigned char note = msg.size() > 1 ? msg[1] : 0;
|
||||||
unsigned char vel = msg.size() > 2 ? msg[2] : 0;
|
unsigned char vel = msg.size() > 2 ? msg[2] : 0;
|
||||||
|
|
||||||
|
|||||||
@@ -64,23 +64,23 @@ struct ParamDefault {
|
|||||||
// later TODO: and then when I have full on profile saving there will be a default profile to load from
|
// later TODO: and then when I have full on profile saving there will be a default profile to load from
|
||||||
constexpr std::array<ParamDefault, static_cast<size_t>(ParamId::Count)> PARAM_DEFS {{
|
constexpr std::array<ParamDefault, static_cast<size_t>(ParamId::Count)> PARAM_DEFS {{
|
||||||
{ 100.0f, 20.0f, 600.0f}, // Osc1Freq
|
{ 100.0f, 20.0f, 600.0f}, // Osc1Freq
|
||||||
{ 0.0f, 0.0f, 0.0f}, // Osc1WaveSelector1
|
{ 2.0f, 0.0f, 0.0f}, // Osc1WaveSelector1
|
||||||
{ 1.0f, 0.0f, 0.0f}, // Osc1WaveSelector2
|
{ 1.0f, 0.0f, 0.0f}, // Osc1WaveSelector2
|
||||||
{ 1.0f, 0.0f, 2.0f}, // Osc1VolumeDepth
|
{ 1.0f, 0.0f, 2.0f}, // Osc1VolumeDepth
|
||||||
{ 0.05f, 0.0f, 2.0f}, // Osc1VolumeEnvA
|
{ 0.05f, 0.0f, 2.0f}, // Osc1VolumeEnvA
|
||||||
{ 0.2f, 0.0f, 2.0f}, // Osc1VolumeEnvD
|
{ 0.2f, 0.0f, 2.0f}, // Osc1VolumeEnvD
|
||||||
{ 0.7f, 0.0f, 1.0f}, // Osc1VolumeEnvS
|
{ 0.7f, 0.0f, 1.0f}, // Osc1VolumeEnvS
|
||||||
{ 0.2f, 0.0f, 2.0f}, // Osc1VolumeEnvR
|
{ 0.2f, 0.0f, 2.0f}, // Osc1VolumeEnvR
|
||||||
{ 1.0f, 0.0f, 8.0f}, // FilterCutoffDepth
|
{ 4.0f, 0.0f, 8.0f}, // FilterCutoffDepth
|
||||||
{ 0.05f, 0.0f, 2.0f}, // FilterCutoffEnvA
|
{ 0.05f, 0.0f, 2.0f}, // FilterCutoffEnvA
|
||||||
{ 0.05f, 0.0f, 2.0f}, // FilterCutoffEnvD
|
{ 0.20f, 0.0f, 2.0f}, // FilterCutoffEnvD
|
||||||
{ 2.0f, 0.0f, 1.0f}, // FilterCutoffEnvS
|
{ 0.2f, 0.0f, 1.0f}, // FilterCutoffEnvS
|
||||||
{ 0.08f, 0.0f, 2.0f}, // FilterCutoffEnvR
|
{ 0.25f, 0.0f, 2.0f}, // FilterCutoffEnvR
|
||||||
{ 1.414f, 0.0f, 8.0f}, // FilterResonanceDepth
|
{ 3.0f, 0.0f, 8.0f}, // FilterResonanceDepth
|
||||||
{ 0.05f, 0.0f, 2.0f}, // FilterResonanceEnvA
|
{ 0.05f, 0.0f, 2.0f}, // FilterResonanceEnvA
|
||||||
{ 0.05f, 0.0f, 2.0f}, // FilterResonanceEnvD
|
{ 0.20f, 0.0f, 2.0f}, // FilterResonanceEnvD
|
||||||
{ 0.5f, 0.0f, 1.0f}, // FilterResonanceEnvS
|
{ 0.5f, 0.0f, 1.0f}, // FilterResonanceEnvS
|
||||||
{ 0.10f, 0.0f, 2.0f}, // FilterResonanceEnvR
|
{ 0.30f, 0.0f, 2.0f}, // FilterResonanceEnvR
|
||||||
}};
|
}};
|
||||||
|
|
||||||
constexpr size_t PARAM_COUNT = static_cast<size_t>(ParamId::Count);
|
constexpr size_t PARAM_COUNT = static_cast<size_t>(ParamId::Count);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TODO: you get it, also in a yml config
|
// TODO: you get it, also in a yml config
|
||||||
#define SYNTH_PITCH_STANDARD 432.0f // frequency of home pitch
|
#define SYNTH_PITCH_STANDARD 440.0f // frequency of home pitch
|
||||||
#define SYNTH_MIDI_HOME 69 // midi note index of home pitch
|
#define SYNTH_MIDI_HOME 69 // midi note index of home pitch
|
||||||
#define SYNTH_NOTES_PER_OCTAVE 12
|
#define SYNTH_NOTES_PER_OCTAVE 12
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ void Synth::process(float* out, uint32_t nFrames, uint32_t sampleRate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: make pitchOffset variable for each oscillator (maybe three values like octave, semitone offset, and pitch offset in cents)
|
// TODO: make pitchOffset variable for each oscillator (maybe three values like octave, semitone offset, and pitch offset in cents)
|
||||||
float pitchOffset = 0.5f;
|
float pitchOffset = 1.0f;
|
||||||
float phaseInc = pitchOffset * 2.0f * M_PI * frequency_ / static_cast<float>(sampleRate);
|
float phaseInc = pitchOffset * 2.0f * M_PI * frequency_ / static_cast<float>(sampleRate);
|
||||||
|
|
||||||
float gain = gainEnv * getParam(ParamId::Osc1VolumeDepth);
|
float gain = gainEnv * getParam(ParamId::Osc1VolumeDepth);
|
||||||
|
|||||||
Reference in New Issue
Block a user