Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

High Level Features Galore #15

Open
TrebledJ opened this issue Oct 19, 2022 · 0 comments
Open

High Level Features Galore #15

TrebledJ opened this issue Oct 19, 2022 · 0 comments

Comments

@TrebledJ
Copy link
Owner

TrebledJ commented Oct 19, 2022

List of high-level commands/features.

// Record music into selected channel.
void record(bool playback = false, bool countin = false);

// Play selected song.
void play();
void resume();
void stop();

void menu::song::select_prev();
void menu::song::select_next();
void menu::song::clear(); // Delete all music data in the selected song.

void menu::channel::select_prev();
void menu::channel::select_next();
void menu::channel::adjust_volume(uint16_t volume); // Volume, 0-100.
void menu::channel::toggle_mute();
void menu::channel::toggle_solo();
void menu::channel::change_instrument();

void menu::channel::clear(); // Delete music data in the selected channel.

enum IOType {
  WAVEFORM,
  MIDI,
};

void menu::io::export(IOType);
void menu::io::import(IOType);

void menu::instr::select_prev();
void menu::instr::select_next();

void menu::setting::set_transpose(int16_t semitones);
void menu::setting::set_tempo(uint16_t bpm);
void menu::setting::set_time_signature(uint16_t n, uint16_t d);
void menu::setting::set_bitrate(uint32_t br);
void menu::setting::set_power_saving(bool on);

enum Effect {
  DEFAULT,        // Play normally.
  AUTO_CHORD,     // Complete notes based on the pressed notes.
  AUTO_ARPEGGIO,  // Like autochord, but alternates between notes.
};

void menu::fx::channel::set_fx(Effect);
void menu::fx::channel::set_reverb(uint16_t wet); // 0-100.
void menu::fx::channel::set_delay(uint16_t wet); // 0-100.

enum Equaliser {
  LOW_PASS,
  HIGH_PASS,
  LOW_BAND,
  HIGH_BAND,
};
void menu::fx::channel::set_eq(Equaliser);
struct menu::Instance {
  uint16_t selected_song;
  uint16_t selected_channel;
  Settings settings;
};

struct menu::Settings {
  int16_t transpose;
  uint16_t bpm;
  uint16_t time_sig_n;
  uint16_t time_sig_d;
  uint32_t bitrate;
  bool power_saving;
};

class Menu {
public:
  
  
};

class ActionMenu {
public:
  
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant