mirror of https://github.com/probonopd/MiniDexed
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
877 B
30 lines
877 B
#ifndef __SYNTH_TUNING_H
|
|
#define __SYNTH_TUNING_H
|
|
|
|
#include "synth.h"
|
|
#include <memory>
|
|
#include <string>
|
|
#include "Tunings.h"
|
|
|
|
class TuningState {
|
|
public:
|
|
virtual ~TuningState() { }
|
|
|
|
virtual int32_t midinote_to_logfreq(int midinote) = 0;
|
|
virtual bool is_standard_tuning() { return true; }
|
|
virtual int scale_length() { return 12; }
|
|
virtual std::string display_tuning_str() { return "Standard Tuning"; }
|
|
|
|
virtual Tunings::Tuning &getTuning() {
|
|
static Tunings::Tuning t;
|
|
return t;
|
|
}
|
|
};
|
|
|
|
std::shared_ptr<TuningState> createStandardTuning();
|
|
|
|
std::shared_ptr<TuningState> createTuningFromSCLData( const std::string &sclData );
|
|
std::shared_ptr<TuningState> createTuningFromKBMData( const std::string &kbmData );
|
|
std::shared_ptr<TuningState> createTuningFromSCLAndKBMData( const std::string &sclData, const std::string &kbmData );
|
|
|
|
#endif
|
|
|