diff --git a/nisps/modes/generated/breakor_schema.hpp b/nisps/modes/generated/breakor_schema.hpp new file mode 100644 index 0000000..1b21591 --- /dev/null +++ b/nisps/modes/generated/breakor_schema.hpp @@ -0,0 +1,552 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/breakor.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_BREAKOR_SCHEMA_HPP +#define NISPS_GENERATED_BREAKOR_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kBreakorModeId = "breakor"; +inline constexpr std::string_view kBreakorEngineId = "breakor"; + +inline constexpr std::array kBreakorInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kBreakorHiddenLayers = {{ + 10u, + 14u, + 18u, +}}; + +inline constexpr MLConfig kBreakorMLConfig = { + 4u, + 56u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kBreakorParamCount = 56u; +inline constexpr std::array kBreakorParams = {{ + Param{ + "kick_ratio0", + "Kick Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "kick", + }, + Param{ + "kick_ratio1", + "Kick Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "kick", + }, + Param{ + "kick_ratio2", + "Kick Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "kick", + }, + Param{ + "kick_pmul", + "Kick Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "kick", + }, + Param{ + "kick_poff", + "Kick Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "kick", + }, + Param{ + "kick_amp0", + "Kick Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "kick", + }, + Param{ + "kick_amp1", + "Kick Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "kick", + }, + Param{ + "snare_ratio0", + "Snare Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "snare", + }, + Param{ + "snare_ratio1", + "Snare Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "snare", + }, + Param{ + "snare_ratio2", + "Snare Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "snare", + }, + Param{ + "snare_pmul", + "Snare Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "snare", + }, + Param{ + "snare_poff", + "Snare Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "snare", + }, + Param{ + "snare_amp0", + "Snare Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "snare", + }, + Param{ + "snare_amp1", + "Snare Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "snare", + }, + Param{ + "tom_ratio0", + "Tom Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "tom", + }, + Param{ + "tom_ratio1", + "Tom Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "tom", + }, + Param{ + "tom_ratio2", + "Tom Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "tom", + }, + Param{ + "tom_pmul", + "Tom Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "tom", + }, + Param{ + "tom_poff", + "Tom Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "tom", + }, + Param{ + "tom_amp0", + "Tom Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "tom", + }, + Param{ + "tom_amp1", + "Tom Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "tom", + }, + Param{ + "lowtom_ratio0", + "LowTom Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "lowtom", + }, + Param{ + "lowtom_ratio1", + "LowTom Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "lowtom", + }, + Param{ + "lowtom_ratio2", + "LowTom Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "lowtom", + }, + Param{ + "lowtom_pmul", + "LowTom Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "lowtom", + }, + Param{ + "lowtom_poff", + "LowTom Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "lowtom", + }, + Param{ + "lowtom_amp0", + "LowTom Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "lowtom", + }, + Param{ + "lowtom_amp1", + "LowTom Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "lowtom", + }, + Param{ + "rim_ratio0", + "Rim Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "rim", + }, + Param{ + "rim_ratio1", + "Rim Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "rim", + }, + Param{ + "rim_ratio2", + "Rim Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "rim", + }, + Param{ + "rim_pmul", + "Rim Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "rim", + }, + Param{ + "rim_poff", + "Rim Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "rim", + }, + Param{ + "rim_amp0", + "Rim Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "rim", + }, + Param{ + "rim_amp1", + "Rim Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "rim", + }, + Param{ + "hat_ratio0", + "Hat Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "hat", + }, + Param{ + "hat_ratio1", + "Hat Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "hat", + }, + Param{ + "hat_ratio2", + "Hat Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "hat", + }, + Param{ + "hat_pmul", + "Hat Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "hat", + }, + Param{ + "hat_poff", + "Hat Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "hat", + }, + Param{ + "hat_amp0", + "Hat Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "hat", + }, + Param{ + "hat_amp1", + "Hat Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "hat", + }, + Param{ + "ophat_ratio0", + "OpenHat Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "openhat", + }, + Param{ + "ophat_ratio1", + "OpenHat Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "openhat", + }, + Param{ + "ophat_ratio2", + "OpenHat Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "openhat", + }, + Param{ + "ophat_pmul", + "OpenHat Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "openhat", + }, + Param{ + "ophat_poff", + "OpenHat Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "openhat", + }, + Param{ + "ophat_amp0", + "OpenHat Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "openhat", + }, + Param{ + "ophat_amp1", + "OpenHat Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "openhat", + }, + Param{ + "perc_ratio0", + "Perc Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "perc", + }, + Param{ + "perc_ratio1", + "Perc Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "perc", + }, + Param{ + "perc_ratio2", + "Perc Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "perc", + }, + Param{ + "perc_pmul", + "Perc Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "perc", + }, + Param{ + "perc_poff", + "Perc Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "perc", + }, + Param{ + "perc_amp0", + "Perc Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "perc", + }, + Param{ + "perc_amp1", + "Perc Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "perc", + }, +}}; + +inline constexpr std::size_t kBreakorVoiceSpaceCount = 0u; +inline constexpr std::array kBreakorVoiceSpaces = {}; + +inline constexpr UIConfig kBreakorUI = { + PrimaryInput::XYPad, + false, + false, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_BREAKOR_SCHEMA_HPP diff --git a/nisps/modes/generated/channel_strip_schema.hpp b/nisps/modes/generated/channel_strip_schema.hpp new file mode 100644 index 0000000..3995dd9 --- /dev/null +++ b/nisps/modes/generated/channel_strip_schema.hpp @@ -0,0 +1,271 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/channel_strip.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_CHANNEL_STRIP_SCHEMA_HPP +#define NISPS_GENERATED_CHANNEL_STRIP_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kChannelStripModeId = "channel_strip"; +inline constexpr std::string_view kChannelStripEngineId = "channel_strip"; + +inline constexpr std::array kChannelStripInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kChannelStripHiddenLayers = {{ + 10u, + 10u, + 14u, +}}; + +inline constexpr MLConfig kChannelStripMLConfig = { + 4u, + 24u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kChannelStripParamCount = 24u; +inline constexpr std::array kChannelStripParams = {{ + Param{ + "pre_gain", + "Pre Gain", + 0.0f, + 1.0f, + 0.5f, + Curve::Square, + "gain", + }, + Param{ + "peak0_freq", + "Peak0 Freq", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "eq", + }, + Param{ + "p02", + "Param 02", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p03", + "Param 03", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "peak1_freq", + "Peak1 Freq", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "eq", + }, + Param{ + "peak_q", + "Peak Q", + 0.0f, + 1.0f, + 0.3f, + Curve::Linear, + "eq", + }, + Param{ + "peak_gain", + "Peak Gain", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "eq", + }, + Param{ + "in_lpf_cutoff", + "Input LPF", + 0.0f, + 1.0f, + 0.7f, + Curve::Square, + "filters", + }, + Param{ + "in_hpf_cutoff", + "Input HPF", + 0.0f, + 1.0f, + 0.2f, + Curve::Square, + "filters", + }, + Param{ + "p09", + "Param 09", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "comp_threshold", + "Comp Threshold", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "comp", + }, + Param{ + "comp_ratio", + "Comp Ratio", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "comp", + }, + Param{ + "comp_attack", + "Comp Attack", + 0.0f, + 1.0f, + 0.1f, + Curve::Linear, + "comp", + }, + Param{ + "comp_release", + "Comp Release", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "comp", + }, + Param{ + "lowshelf_freq", + "Lowshelf Freq", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "eq", + }, + Param{ + "lowshelf_q", + "Lowshelf Q", + 0.0f, + 1.0f, + 0.3f, + Curve::Linear, + "eq", + }, + Param{ + "lowshelf_gain", + "Lowshelf Gain", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "eq", + }, + Param{ + "highshelf_freq", + "Highshelf Freq", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "eq", + }, + Param{ + "highshelf_q", + "Highshelf Q", + 0.0f, + 1.0f, + 0.3f, + Curve::Linear, + "eq", + }, + Param{ + "highshelf_gain", + "Highshelf Gain", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "eq", + }, + Param{ + "p20", + "Param 20", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p21", + "Param 21", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p22", + "Param 22", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "post_gain", + "Post Gain", + 0.0f, + 1.0f, + 0.5f, + Curve::Square, + "gain", + }, +}}; + +inline constexpr std::size_t kChannelStripVoiceSpaceCount = 6u; +inline constexpr std::array kChannelStripVoiceSpaces = {{ + "WannabeNeve66", + "SSL 4K G-ist", + "SSL 9K-inda", + "MaleVox", + "FemaleVox", + "Neve 80", +}}; + +inline constexpr UIConfig kChannelStripUI = { + PrimaryInput::Joystick, + true, + false, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_CHANNEL_STRIP_SCHEMA_HPP diff --git a/nisps/modes/generated/elysiamorf_schema.hpp b/nisps/modes/generated/elysiamorf_schema.hpp new file mode 100644 index 0000000..04151d6 --- /dev/null +++ b/nisps/modes/generated/elysiamorf_schema.hpp @@ -0,0 +1,408 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/elysiamorf.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_ELYSIAMORF_SCHEMA_HPP +#define NISPS_GENERATED_ELYSIAMORF_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kElysiamorfModeId = "elysiamorf"; +inline constexpr std::string_view kElysiamorfEngineId = "elysiamorf"; + +inline constexpr std::array kElysiamorfInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kElysiamorfHiddenLayers = {{ + 10u, + 14u, + 18u, +}}; + +inline constexpr MLConfig kElysiamorfMLConfig = { + 4u, + 40u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kElysiamorfParamCount = 40u; +inline constexpr std::array kElysiamorfParams = {{ + Param{ + "fm0_carrier", + "FM0 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm0", + }, + Param{ + "fm0_mod_freq", + "FM0 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm0", + }, + Param{ + "fm0_mod_index", + "FM0 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm0", + }, + Param{ + "fm0_phasor_mul", + "FM0 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm0", + }, + Param{ + "fm0_phase_off", + "FM0 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm0", + }, + Param{ + "fm1_carrier", + "FM1 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm1", + }, + Param{ + "fm1_mod_freq", + "FM1 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm1", + }, + Param{ + "fm1_mod_index", + "FM1 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm1", + }, + Param{ + "fm1_phasor_mul", + "FM1 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm1", + }, + Param{ + "fm1_phase_off", + "FM1 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm1", + }, + Param{ + "fm2_carrier", + "FM2 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm2", + }, + Param{ + "fm2_mod_freq", + "FM2 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm2", + }, + Param{ + "fm2_mod_index", + "FM2 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm2", + }, + Param{ + "fm2_phasor_mul", + "FM2 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm2", + }, + Param{ + "fm2_phase_off", + "FM2 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm2", + }, + Param{ + "fm3_carrier", + "FM3 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm3", + }, + Param{ + "fm3_mod_freq", + "FM3 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm3", + }, + Param{ + "fm3_mod_index", + "FM3 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm3", + }, + Param{ + "fm3_phasor_mul", + "FM3 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm3", + }, + Param{ + "fm3_phase_off", + "FM3 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm3", + }, + Param{ + "fm4_carrier", + "FM4 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm4", + }, + Param{ + "fm4_mod_freq", + "FM4 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm4", + }, + Param{ + "fm4_mod_index", + "FM4 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm4", + }, + Param{ + "fm4_phasor_mul", + "FM4 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm4", + }, + Param{ + "fm4_phase_off", + "FM4 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm4", + }, + Param{ + "fm5_carrier", + "FM5 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm5", + }, + Param{ + "fm5_mod_freq", + "FM5 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm5", + }, + Param{ + "fm5_mod_index", + "FM5 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm5", + }, + Param{ + "fm5_phasor_mul", + "FM5 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm5", + }, + Param{ + "fm5_phase_off", + "FM5 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm5", + }, + Param{ + "fm6_carrier", + "FM6 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm6", + }, + Param{ + "fm6_mod_freq", + "FM6 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm6", + }, + Param{ + "fm6_mod_index", + "FM6 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm6", + }, + Param{ + "fm6_phasor_mul", + "FM6 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm6", + }, + Param{ + "fm6_phase_off", + "FM6 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm6", + }, + Param{ + "fm7_carrier", + "FM7 Carrier", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm7", + }, + Param{ + "fm7_mod_freq", + "FM7 Mod Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "fm7", + }, + Param{ + "fm7_mod_index", + "FM7 Mod Index", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm7", + }, + Param{ + "fm7_phasor_mul", + "FM7 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm7", + }, + Param{ + "fm7_phase_off", + "FM7 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "fm7", + }, +}}; + +inline constexpr std::size_t kElysiamorfVoiceSpaceCount = 0u; +inline constexpr std::array kElysiamorfVoiceSpaces = {}; + +inline constexpr UIConfig kElysiamorfUI = { + PrimaryInput::XYPad, + false, + false, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_ELYSIAMORF_SCHEMA_HPP diff --git a/nisps/modes/generated/memlcelium_schema.hpp b/nisps/modes/generated/memlcelium_schema.hpp new file mode 100644 index 0000000..b361ca6 --- /dev/null +++ b/nisps/modes/generated/memlcelium_schema.hpp @@ -0,0 +1,554 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/memlcelium.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_MEMLCELIUM_SCHEMA_HPP +#define NISPS_GENERATED_MEMLCELIUM_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kMemlceliumModeId = "memlcelium"; +inline constexpr std::string_view kMemlceliumEngineId = "memlcelium"; + +inline constexpr std::array kMemlceliumInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kMemlceliumHiddenLayers = {{ + 10u, + 14u, + 18u, +}}; + +inline constexpr MLConfig kMemlceliumMLConfig = { + 4u, + 56u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kMemlceliumParamCount = 56u; +inline constexpr std::array kMemlceliumParams = {{ + Param{ + "seq0_ratio0", + "Seq0 Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq0_ratio1", + "Seq0 Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq0_ratio2", + "Seq0 Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq0_phasor_mul", + "Seq0 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq0_phase_off", + "Seq0 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq0_amp0", + "Seq0 Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq0_amp1", + "Seq0 Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_ratio0", + "Seq1 Ratio 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_ratio1", + "Seq1 Ratio 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_ratio2", + "Seq1 Ratio 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_phasor_mul", + "Seq1 Phasor Mul", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_phase_off", + "Seq1 Phase Off", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_amp0", + "Seq1 Amp 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "seq1_amp1", + "Seq1 Amp 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "sequencer", + }, + Param{ + "v0_base_freq", + "V0 Base Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf0_cf", + "V0 PAF0 CF", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf1_cf", + "V0 PAF1 CF", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf2_cf", + "V0 PAF2 CF", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf0_bw", + "V0 PAF0 BW", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf1_bw", + "V0 PAF1 BW", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf2_bw", + "V0 PAF2 BW", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf_vib", + "V0 PAF Vib", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "v0_synth", + }, + Param{ + "v0_paf_vfr", + "V0 PAF Vib Rate", + 0.0f, + 1.0f, + 0.5f, + Curve::Square, + "v0_synth", + }, + Param{ + "v0_paf0_shift", + "V0 PAF0 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf1_shift", + "V0 PAF1 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_paf2_shift", + "V0 PAF2 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_amp_attack", + "V0 Amp Attack", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_env", + }, + Param{ + "v0_amp_decay", + "V0 Amp Decay", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "v0_env", + }, + Param{ + "v0_amp_sustain", + "V0 Amp Sustain", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v0_env", + }, + Param{ + "v0_amp_release", + "V0 Amp Release", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "v0_env", + }, + Param{ + "v0_pitch_attack", + "V0 Pitch Attack", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_env", + }, + Param{ + "v0_pitch_decay", + "V0 Pitch Decay", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "v0_env", + }, + Param{ + "v0_pitch_emph", + "V0 Pitch Emph", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_env", + }, + Param{ + "v0_shape_gain", + "V0 Shape Gain", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_shape_asym", + "V0 Shape Asym", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_shape_mix", + "V0 Shape Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v0_rm_gain", + "V0 RingMod Gain", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v0_synth", + }, + Param{ + "v1_base_freq", + "V1 Base Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_detune1", + "V1 Detune 1", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_detune2", + "V1 Detune 2", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf0_cf", + "V1 PAF0 CF", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf1_cf", + "V1 PAF1 CF", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf2_cf", + "V1 PAF2 CF", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf0_bw", + "V1 PAF0 BW", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf1_bw", + "V1 PAF1 BW", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf2_bw", + "V1 PAF2 BW", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf0_shift", + "V1 PAF0 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf1_shift", + "V1 PAF1 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_paf2_shift", + "V1 PAF2 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_synth", + }, + Param{ + "v1_amp_attack", + "V1 Amp Attack", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v1_env", + }, + Param{ + "v1_amp_decay", + "V1 Amp Decay", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "v1_env", + }, + Param{ + "v1_amp_sustain", + "V1 Amp Sustain", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "v1_env", + }, + Param{ + "v1_amp_release", + "V1 Amp Release", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "v1_env", + }, + Param{ + "v1_pitch_attack", + "V1 Pitch Attack", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v1_env", + }, + Param{ + "v1_pitch_decay", + "V1 Pitch Decay", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "v1_env", + }, + Param{ + "v1_pitch_emph", + "V1 Pitch Emph", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "v1_env", + }, +}}; + +inline constexpr std::size_t kMemlceliumVoiceSpaceCount = 1u; +inline constexpr std::array kMemlceliumVoiceSpaces = {{ + "Direct", +}}; + +inline constexpr UIConfig kMemlceliumUI = { + PrimaryInput::XYPad, + false, + true, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_MEMLCELIUM_SCHEMA_HPP diff --git a/nisps/modes/generated/paf_synth_schema.hpp b/nisps/modes/generated/paf_synth_schema.hpp new file mode 100644 index 0000000..887355e --- /dev/null +++ b/nisps/modes/generated/paf_synth_schema.hpp @@ -0,0 +1,353 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/paf_synth.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_PAF_SYNTH_SCHEMA_HPP +#define NISPS_GENERATED_PAF_SYNTH_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kPafSynthModeId = "paf_synth"; +inline constexpr std::string_view kPafSynthEngineId = "paf_synth"; + +inline constexpr std::array kPafSynthInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kPafSynthHiddenLayers = {{ + 10u, + 10u, + 14u, +}}; + +inline constexpr MLConfig kPafSynthMLConfig = { + 4u, + 33u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kPafSynthParamCount = 33u; +inline constexpr std::array kPafSynthParams = {{ + Param{ + "p00", + "Param 00", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p01", + "Param 01", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "paf0_cf", + "PAF0 Center Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "operators", + }, + Param{ + "paf1_cf", + "PAF1 Center Freq", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "operators", + }, + Param{ + "p04", + "Param 04", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "paf0_bw", + "PAF0 Bandwidth", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "operators", + }, + Param{ + "paf1_bw", + "PAF1 Bandwidth", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "operators", + }, + Param{ + "p07", + "Param 07", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "paf0_vib", + "PAF0 Vibrato Depth", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "modulation", + }, + Param{ + "paf1_vib", + "PAF1 Vibrato Depth", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "modulation", + }, + Param{ + "p10", + "Param 10", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "paf0_vfr", + "PAF0 Vibrato Rate", + 0.0f, + 1.0f, + 0.5f, + Curve::Square, + "modulation", + }, + Param{ + "paf1_vfr", + "PAF1 Vibrato Rate", + 0.0f, + 1.0f, + 0.5f, + Curve::Square, + "modulation", + }, + Param{ + "p13", + "Param 13", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "paf0_shift", + "PAF0 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "operators", + }, + Param{ + "paf1_shift", + "PAF1 Shift", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "operators", + }, + Param{ + "p16", + "Param 16", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "dl1mix", + "Delay Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "delay", + }, + Param{ + "p18", + "Param 18", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "dlfb", + "Delay Feedback", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delay", + }, + Param{ + "env_decay", + "Env Decay", + 0.0f, + 1.0f, + 0.3f, + Curve::Square, + "envelope", + }, + Param{ + "p21", + "Param 21", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p22", + "Param 22", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p23", + "Param 23", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p24", + "Param 24", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "p25", + "Param 25", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "shape_gain", + "Sine Shape Gain", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "shaper", + }, + Param{ + "shape_asym", + "Sine Shape Asym", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "shaper", + }, + Param{ + "shape_mix", + "Sine Shape Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "shaper", + }, + Param{ + "rm_gain", + "Ring Mod Gain", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "shaper", + }, + Param{ + "env_attack", + "Env Attack", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "envelope", + }, + Param{ + "env_sustain", + "Env Sustain", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "envelope", + }, + Param{ + "env_release", + "Env Release", + 0.0f, + 1.0f, + 0.3f, + Curve::Linear, + "envelope", + }, +}}; + +inline constexpr std::size_t kPafSynthVoiceSpaceCount = 7u; +inline constexpr std::array kPafSynthVoiceSpaces = {{ + "Ellipticacacia", + "Rowantares", + "Neemeda", + "Aquillow", + "Magnetarch", + "Elderstar", + "Ipeleiades", +}}; + +inline constexpr UIConfig kPafSynthUI = { + PrimaryInput::XYPad, + true, + true, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_PAF_SYNTH_SCHEMA_HPP diff --git a/nisps/modes/generated/schema_types.hpp b/nisps/modes/generated/schema_types.hpp new file mode 100644 index 0000000..76add88 --- /dev/null +++ b/nisps/modes/generated/schema_types.hpp @@ -0,0 +1,64 @@ +// AUTOGENERATED — do not edit. Run `bun run codegen/generate.ts` to regenerate. +// Shared C++ types for generated mode schemas. +// +// IMPORTANT: this file ships its own minimal `Curve` enum so generated mode +// headers compile in isolation while stream 1 (`nisps/core/math.hpp`) is in +// flight. Once stream 1 lands, replace the local enum below with +// #include "nisps/core/math.hpp" +// and delete the inline definition. +#ifndef NISPS_GENERATED_SCHEMA_TYPES_HPP +#define NISPS_GENERATED_SCHEMA_TYPES_HPP + +#include +#include +#include + +namespace nisps::modes::generated { + +// TODO(stream-1): replace with `#include "nisps/core/math.hpp"` and remove this enum. +enum class Curve : unsigned char { + Linear = 0, + Exp, + Log, + Square, + Sqrt, + Sigmoid, + Cubic, +}; + +struct Param { + std::string_view name; + std::string_view label; + float min; + float max; + float default_value; + Curve curve; + std::string_view group; +}; + +struct MLConfig { + std::size_t input_size; + std::size_t output_size; + float default_spread; + float default_learning_rate; + std::size_t default_max_iterations; +}; + +enum class PrimaryInput : unsigned char { + XYPad = 0, + Joystick, + Sliders, + AudioIn, + MidiIn, + None, +}; + +struct UIConfig { + PrimaryInput primary_input; + bool show_voice_space_selector; + bool show_synth_visualizer; +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_SCHEMA_TYPES_HPP diff --git a/nisps/modes/generated/sound_analysis_midi_schema.hpp b/nisps/modes/generated/sound_analysis_midi_schema.hpp new file mode 100644 index 0000000..03497fa --- /dev/null +++ b/nisps/modes/generated/sound_analysis_midi_schema.hpp @@ -0,0 +1,126 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/sound_analysis_midi.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_SOUND_ANALYSIS_MIDI_SCHEMA_HPP +#define NISPS_GENERATED_SOUND_ANALYSIS_MIDI_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kSoundAnalysisMidiModeId = "sound_analysis_midi"; +inline constexpr std::string_view kSoundAnalysisMidiEngineId = "thru"; + +inline constexpr std::array kSoundAnalysisMidiInputChannels = {{ + "audio_pitch", + "audio_aperiodicity", + "audio_energy", + "audio_attack", + "audio_brightness", + "audio_energy_crude", + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kSoundAnalysisMidiHiddenLayers = {{ + 10u, + 10u, + 14u, +}}; + +inline constexpr MLConfig kSoundAnalysisMidiMLConfig = { + 10u, + 8u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kSoundAnalysisMidiParamCount = 8u; +inline constexpr std::array kSoundAnalysisMidiParams = {{ + Param{ + "midi_cc0", + "MIDI CC 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc1", + "MIDI CC 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc2", + "MIDI CC 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc3", + "MIDI CC 3", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc4", + "MIDI CC 4", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc5", + "MIDI CC 5", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc6", + "MIDI CC 6", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, + Param{ + "midi_cc7", + "MIDI CC 7", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "midi", + }, +}}; + +inline constexpr std::size_t kSoundAnalysisMidiVoiceSpaceCount = 0u; +inline constexpr std::array kSoundAnalysisMidiVoiceSpaces = {}; + +inline constexpr UIConfig kSoundAnalysisMidiUI = { + PrimaryInput::AudioIn, + false, + false, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_SOUND_ANALYSIS_MIDI_SCHEMA_HPP diff --git a/nisps/modes/generated/verb_fx_schema.hpp b/nisps/modes/generated/verb_fx_schema.hpp new file mode 100644 index 0000000..3196753 --- /dev/null +++ b/nisps/modes/generated/verb_fx_schema.hpp @@ -0,0 +1,484 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/verb_fx.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_VERB_FX_SCHEMA_HPP +#define NISPS_GENERATED_VERB_FX_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kVerbFxModeId = "verb_fx"; +inline constexpr std::string_view kVerbFxEngineId = "verb_fx"; + +inline constexpr std::array kVerbFxInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kVerbFxHiddenLayers = {{ + 10u, + 14u, + 18u, +}}; + +inline constexpr MLConfig kVerbFxMLConfig = { + 4u, + 47u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kVerbFxParamCount = 47u; +inline constexpr std::array kVerbFxParams = {{ + Param{ + "fb_delay_xfade", + "Bank/Delay XFade", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "routing", + }, + Param{ + "lp0_fb", + "LP Comb 0 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp0_cutoff", + "LP Comb 0 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp1_fb", + "LP Comb 1 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp1_cutoff", + "LP Comb 1 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp2_fb", + "LP Comb 2 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp2_cutoff", + "LP Comb 2 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp3_fb", + "LP Comb 3 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp3_cutoff", + "LP Comb 3 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp4_fb", + "LP Comb 4 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp4_cutoff", + "LP Comb 4 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp5_fb", + "LP Comb 5 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp5_cutoff", + "LP Comb 5 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp6_fb", + "LP Comb 6 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp6_cutoff", + "LP Comb 6 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp7_fb", + "LP Comb 7 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "lp7_cutoff", + "LP Comb 7 Cutoff", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "allp0_fb", + "Allpass 0 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "allp1_fb", + "Allpass 1 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "allp2_fb", + "Allpass 2 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "allp3_fb", + "Allpass 3 FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "verb", + }, + Param{ + "fbank_f0", + "Filterbank Freq 0", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f1", + "Filterbank Freq 1", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f2", + "Filterbank Freq 2", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f3", + "Filterbank Freq 3", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f4", + "Filterbank Freq 4", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f5", + "Filterbank Freq 5", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f6", + "Filterbank Freq 6", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_f7", + "Filterbank Freq 7", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res0", + "Filterbank Res 0", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res1", + "Filterbank Res 1", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res2", + "Filterbank Res 2", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res3", + "Filterbank Res 3", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res4", + "Filterbank Res 4", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res5", + "Filterbank Res 5", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res6", + "Filterbank Res 6", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "fbank_res7", + "Filterbank Res 7", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "filterbank", + }, + Param{ + "delay0_time", + "Long Delay Time", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "delay0_fb", + "Long Delay FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "delay1_time", + "Med Delay Time", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "delay1_fb", + "Med Delay FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "delay2_time", + "Short Delay Time", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "delay2_fb", + "Short Delay FB", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "verb_vs_delay", + "Verb vs Delay", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "routing", + }, + Param{ + "delay_to_verb", + "Delay→Verb Send", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "routing", + }, + Param{ + "delay_morph", + "Delay Morph", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "delays", + }, + Param{ + "delay_blend", + "Delay Blend", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, +}}; + +inline constexpr std::size_t kVerbFxVoiceSpaceCount = 12u; +inline constexpr std::array kVerbFxVoiceSpaces = {{ + "Default", + "Resonant", + "Soft", + "Cathedral", + "Shimmer", + "Chamber", + "Metallic", + "Granular", + "Diffuse", + "Dark", + "Bright", + "Harmonic", +}}; + +inline constexpr UIConfig kVerbFxUI = { + PrimaryInput::Joystick, + true, + false, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_VERB_FX_SCHEMA_HPP diff --git a/nisps/modes/generated/xiasri_schema.hpp b/nisps/modes/generated/xiasri_schema.hpp new file mode 100644 index 0000000..bda7045 --- /dev/null +++ b/nisps/modes/generated/xiasri_schema.hpp @@ -0,0 +1,266 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/xiasri.json. Run `bun run codegen/generate.ts` to regenerate. +#ifndef NISPS_GENERATED_XIASRI_SCHEMA_HPP +#define NISPS_GENERATED_XIASRI_SCHEMA_HPP + +#include "schema_types.hpp" + +namespace nisps::modes::generated { + +inline constexpr std::string_view kXiasriModeId = "xiasri"; +inline constexpr std::string_view kXiasriEngineId = "xiasri"; + +inline constexpr std::array kXiasriInputChannels = {{ + "joy_x", + "joy_y", + "joy_z", + "joy_w", +}}; + +inline constexpr std::array kXiasriHiddenLayers = {{ + 10u, + 10u, + 14u, +}}; + +inline constexpr MLConfig kXiasriMLConfig = { + 4u, + 24u, + 0.6f, + 1.0f, + 1000u, +}; + +inline constexpr std::size_t kXiasriParamCount = 24u; +inline constexpr std::array kXiasriParams = {{ + Param{ + "dl1_mix", + "Delay 1 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, + Param{ + "dl2_mix", + "Delay 2 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, + Param{ + "dl3_mix", + "Delay 3 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, + Param{ + "p03", + "Param 03", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "general", + }, + Param{ + "allp1_fb", + "Allpass 1 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp2_fb", + "Allpass 2 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "comb1_fb", + "Comb 1 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "comb2_fb", + "Comb 2 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "dl1_fb", + "Delay 1 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, + Param{ + "dl2_fb", + "Delay 2 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, + Param{ + "dl3_fb", + "Delay 3 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, + Param{ + "wetdry_mix", + "Wet/Dry Mix", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "mix", + }, + Param{ + "pitch_transp", + "Pitch Transpose", + 0.0f, + 1.0f, + 0.5f, + Curve::Linear, + "pitch", + }, + Param{ + "pitch_mix", + "Pitch Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "pitch", + }, + Param{ + "allp3_fb", + "Allpass 3 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp4_fb", + "Allpass 4 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp5_fb", + "Allpass 5 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp6_fb", + "Allpass 6 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp3_mix", + "Allpass 3 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp4_mix", + "Allpass 4 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp5_mix", + "Allpass 5 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "allp6_mix", + "Allpass 6 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "verb", + }, + Param{ + "dl4_mix", + "Delay 4 Mix", + 0.0f, + 1.0f, + 0.0f, + Curve::Square, + "delays", + }, + Param{ + "dl4_fb", + "Delay 4 Feedback", + 0.0f, + 1.0f, + 0.0f, + Curve::Linear, + "delays", + }, +}}; + +inline constexpr std::size_t kXiasriVoiceSpaceCount = 1u; +inline constexpr std::array kXiasriVoiceSpaces = {{ + "Direct", +}}; + +inline constexpr UIConfig kXiasriUI = { + PrimaryInput::Joystick, + false, + false, +}; + +} // namespace nisps::modes::generated + +#endif // NISPS_GENERATED_XIASRI_SCHEMA_HPP diff --git a/playground/src/modes/generated/breakor_schema.ts b/playground/src/modes/generated/breakor_schema.ts new file mode 100644 index 0000000..0bfe8ab --- /dev/null +++ b/playground/src/modes/generated/breakor_schema.ts @@ -0,0 +1,596 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/breakor.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface BreakorParams { + readonly kick_ratio0: number; + readonly kick_ratio1: number; + readonly kick_ratio2: number; + readonly kick_pmul: number; + readonly kick_poff: number; + readonly kick_amp0: number; + readonly kick_amp1: number; + readonly snare_ratio0: number; + readonly snare_ratio1: number; + readonly snare_ratio2: number; + readonly snare_pmul: number; + readonly snare_poff: number; + readonly snare_amp0: number; + readonly snare_amp1: number; + readonly tom_ratio0: number; + readonly tom_ratio1: number; + readonly tom_ratio2: number; + readonly tom_pmul: number; + readonly tom_poff: number; + readonly tom_amp0: number; + readonly tom_amp1: number; + readonly lowtom_ratio0: number; + readonly lowtom_ratio1: number; + readonly lowtom_ratio2: number; + readonly lowtom_pmul: number; + readonly lowtom_poff: number; + readonly lowtom_amp0: number; + readonly lowtom_amp1: number; + readonly rim_ratio0: number; + readonly rim_ratio1: number; + readonly rim_ratio2: number; + readonly rim_pmul: number; + readonly rim_poff: number; + readonly rim_amp0: number; + readonly rim_amp1: number; + readonly hat_ratio0: number; + readonly hat_ratio1: number; + readonly hat_ratio2: number; + readonly hat_pmul: number; + readonly hat_poff: number; + readonly hat_amp0: number; + readonly hat_amp1: number; + readonly ophat_ratio0: number; + readonly ophat_ratio1: number; + readonly ophat_ratio2: number; + readonly ophat_pmul: number; + readonly ophat_poff: number; + readonly ophat_amp0: number; + readonly ophat_amp1: number; + readonly perc_ratio0: number; + readonly perc_ratio1: number; + readonly perc_ratio2: number; + readonly perc_pmul: number; + readonly perc_poff: number; + readonly perc_amp0: number; + readonly perc_amp1: number; +} + +export const BreakorSchema: ModeSchema = { + mode_id: 'breakor', + engine_id: 'breakor', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 14, + 18, + ], + output_size: 56, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'kick_ratio0', + label: 'Kick Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'kick', + }, + { + name: 'kick_ratio1', + label: 'Kick Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'kick', + }, + { + name: 'kick_ratio2', + label: 'Kick Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'kick', + }, + { + name: 'kick_pmul', + label: 'Kick Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'kick', + }, + { + name: 'kick_poff', + label: 'Kick Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'kick', + }, + { + name: 'kick_amp0', + label: 'Kick Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'kick', + }, + { + name: 'kick_amp1', + label: 'Kick Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'kick', + }, + { + name: 'snare_ratio0', + label: 'Snare Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'snare', + }, + { + name: 'snare_ratio1', + label: 'Snare Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'snare', + }, + { + name: 'snare_ratio2', + label: 'Snare Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'snare', + }, + { + name: 'snare_pmul', + label: 'Snare Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'snare', + }, + { + name: 'snare_poff', + label: 'Snare Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'snare', + }, + { + name: 'snare_amp0', + label: 'Snare Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'snare', + }, + { + name: 'snare_amp1', + label: 'Snare Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'snare', + }, + { + name: 'tom_ratio0', + label: 'Tom Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'tom', + }, + { + name: 'tom_ratio1', + label: 'Tom Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'tom', + }, + { + name: 'tom_ratio2', + label: 'Tom Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'tom', + }, + { + name: 'tom_pmul', + label: 'Tom Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'tom', + }, + { + name: 'tom_poff', + label: 'Tom Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'tom', + }, + { + name: 'tom_amp0', + label: 'Tom Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'tom', + }, + { + name: 'tom_amp1', + label: 'Tom Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'tom', + }, + { + name: 'lowtom_ratio0', + label: 'LowTom Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'lowtom_ratio1', + label: 'LowTom Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'lowtom_ratio2', + label: 'LowTom Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'lowtom_pmul', + label: 'LowTom Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'lowtom_poff', + label: 'LowTom Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'lowtom_amp0', + label: 'LowTom Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'lowtom_amp1', + label: 'LowTom Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'lowtom', + }, + { + name: 'rim_ratio0', + label: 'Rim Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'rim', + }, + { + name: 'rim_ratio1', + label: 'Rim Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'rim', + }, + { + name: 'rim_ratio2', + label: 'Rim Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'rim', + }, + { + name: 'rim_pmul', + label: 'Rim Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'rim', + }, + { + name: 'rim_poff', + label: 'Rim Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'rim', + }, + { + name: 'rim_amp0', + label: 'Rim Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'rim', + }, + { + name: 'rim_amp1', + label: 'Rim Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'rim', + }, + { + name: 'hat_ratio0', + label: 'Hat Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'hat', + }, + { + name: 'hat_ratio1', + label: 'Hat Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'hat', + }, + { + name: 'hat_ratio2', + label: 'Hat Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'hat', + }, + { + name: 'hat_pmul', + label: 'Hat Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'hat', + }, + { + name: 'hat_poff', + label: 'Hat Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'hat', + }, + { + name: 'hat_amp0', + label: 'Hat Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'hat', + }, + { + name: 'hat_amp1', + label: 'Hat Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'hat', + }, + { + name: 'ophat_ratio0', + label: 'OpenHat Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'openhat', + }, + { + name: 'ophat_ratio1', + label: 'OpenHat Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'openhat', + }, + { + name: 'ophat_ratio2', + label: 'OpenHat Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'openhat', + }, + { + name: 'ophat_pmul', + label: 'OpenHat Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'openhat', + }, + { + name: 'ophat_poff', + label: 'OpenHat Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'openhat', + }, + { + name: 'ophat_amp0', + label: 'OpenHat Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'openhat', + }, + { + name: 'ophat_amp1', + label: 'OpenHat Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'openhat', + }, + { + name: 'perc_ratio0', + label: 'Perc Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'perc', + }, + { + name: 'perc_ratio1', + label: 'Perc Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'perc', + }, + { + name: 'perc_ratio2', + label: 'Perc Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'perc', + }, + { + name: 'perc_pmul', + label: 'Perc Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'perc', + }, + { + name: 'perc_poff', + label: 'Perc Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'perc', + }, + { + name: 'perc_amp0', + label: 'Perc Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'perc', + }, + { + name: 'perc_amp1', + label: 'Perc Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'perc', + }, + ], + voice_spaces: [], + ui: { + primary_input: 'xy_pad', + show_voice_space_selector: false, + show_synth_visualizer: false, + }, +}; diff --git a/playground/src/modes/generated/channel_strip_schema.ts b/playground/src/modes/generated/channel_strip_schema.ts new file mode 100644 index 0000000..8bf61c8 --- /dev/null +++ b/playground/src/modes/generated/channel_strip_schema.ts @@ -0,0 +1,283 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/channel_strip.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface ChannelStripParams { + readonly pre_gain: number; + readonly peak0_freq: number; + readonly p02: number; + readonly p03: number; + readonly peak1_freq: number; + readonly peak_q: number; + readonly peak_gain: number; + readonly in_lpf_cutoff: number; + readonly in_hpf_cutoff: number; + readonly p09: number; + readonly comp_threshold: number; + readonly comp_ratio: number; + readonly comp_attack: number; + readonly comp_release: number; + readonly lowshelf_freq: number; + readonly lowshelf_q: number; + readonly lowshelf_gain: number; + readonly highshelf_freq: number; + readonly highshelf_q: number; + readonly highshelf_gain: number; + readonly p20: number; + readonly p21: number; + readonly p22: number; + readonly post_gain: number; +} + +export const ChannelStripSchema: ModeSchema = { + mode_id: 'channel_strip', + engine_id: 'channel_strip', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 10, + 14, + ], + output_size: 24, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'pre_gain', + label: 'Pre Gain', + min: 0, + max: 1, + default: 0.5, + curve: 'square', + group: 'gain', + }, + { + name: 'peak0_freq', + label: 'Peak0 Freq', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'eq', + }, + { + name: 'p02', + label: 'Param 02', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p03', + label: 'Param 03', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'peak1_freq', + label: 'Peak1 Freq', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'eq', + }, + { + name: 'peak_q', + label: 'Peak Q', + min: 0, + max: 1, + default: 0.3, + curve: 'linear', + group: 'eq', + }, + { + name: 'peak_gain', + label: 'Peak Gain', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'eq', + }, + { + name: 'in_lpf_cutoff', + label: 'Input LPF', + min: 0, + max: 1, + default: 0.7, + curve: 'square', + group: 'filters', + }, + { + name: 'in_hpf_cutoff', + label: 'Input HPF', + min: 0, + max: 1, + default: 0.2, + curve: 'square', + group: 'filters', + }, + { + name: 'p09', + label: 'Param 09', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'comp_threshold', + label: 'Comp Threshold', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'comp', + }, + { + name: 'comp_ratio', + label: 'Comp Ratio', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'comp', + }, + { + name: 'comp_attack', + label: 'Comp Attack', + min: 0, + max: 1, + default: 0.1, + curve: 'linear', + group: 'comp', + }, + { + name: 'comp_release', + label: 'Comp Release', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'comp', + }, + { + name: 'lowshelf_freq', + label: 'Lowshelf Freq', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'eq', + }, + { + name: 'lowshelf_q', + label: 'Lowshelf Q', + min: 0, + max: 1, + default: 0.3, + curve: 'linear', + group: 'eq', + }, + { + name: 'lowshelf_gain', + label: 'Lowshelf Gain', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'eq', + }, + { + name: 'highshelf_freq', + label: 'Highshelf Freq', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'eq', + }, + { + name: 'highshelf_q', + label: 'Highshelf Q', + min: 0, + max: 1, + default: 0.3, + curve: 'linear', + group: 'eq', + }, + { + name: 'highshelf_gain', + label: 'Highshelf Gain', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'eq', + }, + { + name: 'p20', + label: 'Param 20', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p21', + label: 'Param 21', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p22', + label: 'Param 22', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'post_gain', + label: 'Post Gain', + min: 0, + max: 1, + default: 0.5, + curve: 'square', + group: 'gain', + }, + ], + voice_spaces: [ + 'WannabeNeve66', + 'SSL 4K G-ist', + 'SSL 9K-inda', + 'MaleVox', + 'FemaleVox', + 'Neve 80', + ], + ui: { + primary_input: 'joystick', + show_voice_space_selector: true, + show_synth_visualizer: false, + }, +}; diff --git a/playground/src/modes/generated/elysiamorf_schema.ts b/playground/src/modes/generated/elysiamorf_schema.ts new file mode 100644 index 0000000..b08ec88 --- /dev/null +++ b/playground/src/modes/generated/elysiamorf_schema.ts @@ -0,0 +1,436 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/elysiamorf.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface ElysiamorfParams { + readonly fm0_carrier: number; + readonly fm0_mod_freq: number; + readonly fm0_mod_index: number; + readonly fm0_phasor_mul: number; + readonly fm0_phase_off: number; + readonly fm1_carrier: number; + readonly fm1_mod_freq: number; + readonly fm1_mod_index: number; + readonly fm1_phasor_mul: number; + readonly fm1_phase_off: number; + readonly fm2_carrier: number; + readonly fm2_mod_freq: number; + readonly fm2_mod_index: number; + readonly fm2_phasor_mul: number; + readonly fm2_phase_off: number; + readonly fm3_carrier: number; + readonly fm3_mod_freq: number; + readonly fm3_mod_index: number; + readonly fm3_phasor_mul: number; + readonly fm3_phase_off: number; + readonly fm4_carrier: number; + readonly fm4_mod_freq: number; + readonly fm4_mod_index: number; + readonly fm4_phasor_mul: number; + readonly fm4_phase_off: number; + readonly fm5_carrier: number; + readonly fm5_mod_freq: number; + readonly fm5_mod_index: number; + readonly fm5_phasor_mul: number; + readonly fm5_phase_off: number; + readonly fm6_carrier: number; + readonly fm6_mod_freq: number; + readonly fm6_mod_index: number; + readonly fm6_phasor_mul: number; + readonly fm6_phase_off: number; + readonly fm7_carrier: number; + readonly fm7_mod_freq: number; + readonly fm7_mod_index: number; + readonly fm7_phasor_mul: number; + readonly fm7_phase_off: number; +} + +export const ElysiamorfSchema: ModeSchema = { + mode_id: 'elysiamorf', + engine_id: 'elysiamorf', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 14, + 18, + ], + output_size: 40, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'fm0_carrier', + label: 'FM0 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm0', + }, + { + name: 'fm0_mod_freq', + label: 'FM0 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm0', + }, + { + name: 'fm0_mod_index', + label: 'FM0 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm0', + }, + { + name: 'fm0_phasor_mul', + label: 'FM0 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm0', + }, + { + name: 'fm0_phase_off', + label: 'FM0 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm0', + }, + { + name: 'fm1_carrier', + label: 'FM1 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm1', + }, + { + name: 'fm1_mod_freq', + label: 'FM1 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm1', + }, + { + name: 'fm1_mod_index', + label: 'FM1 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm1', + }, + { + name: 'fm1_phasor_mul', + label: 'FM1 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm1', + }, + { + name: 'fm1_phase_off', + label: 'FM1 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm1', + }, + { + name: 'fm2_carrier', + label: 'FM2 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm2', + }, + { + name: 'fm2_mod_freq', + label: 'FM2 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm2', + }, + { + name: 'fm2_mod_index', + label: 'FM2 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm2', + }, + { + name: 'fm2_phasor_mul', + label: 'FM2 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm2', + }, + { + name: 'fm2_phase_off', + label: 'FM2 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm2', + }, + { + name: 'fm3_carrier', + label: 'FM3 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm3', + }, + { + name: 'fm3_mod_freq', + label: 'FM3 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm3', + }, + { + name: 'fm3_mod_index', + label: 'FM3 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm3', + }, + { + name: 'fm3_phasor_mul', + label: 'FM3 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm3', + }, + { + name: 'fm3_phase_off', + label: 'FM3 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm3', + }, + { + name: 'fm4_carrier', + label: 'FM4 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm4', + }, + { + name: 'fm4_mod_freq', + label: 'FM4 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm4', + }, + { + name: 'fm4_mod_index', + label: 'FM4 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm4', + }, + { + name: 'fm4_phasor_mul', + label: 'FM4 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm4', + }, + { + name: 'fm4_phase_off', + label: 'FM4 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm4', + }, + { + name: 'fm5_carrier', + label: 'FM5 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm5', + }, + { + name: 'fm5_mod_freq', + label: 'FM5 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm5', + }, + { + name: 'fm5_mod_index', + label: 'FM5 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm5', + }, + { + name: 'fm5_phasor_mul', + label: 'FM5 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm5', + }, + { + name: 'fm5_phase_off', + label: 'FM5 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm5', + }, + { + name: 'fm6_carrier', + label: 'FM6 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm6', + }, + { + name: 'fm6_mod_freq', + label: 'FM6 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm6', + }, + { + name: 'fm6_mod_index', + label: 'FM6 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm6', + }, + { + name: 'fm6_phasor_mul', + label: 'FM6 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm6', + }, + { + name: 'fm6_phase_off', + label: 'FM6 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm6', + }, + { + name: 'fm7_carrier', + label: 'FM7 Carrier', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm7', + }, + { + name: 'fm7_mod_freq', + label: 'FM7 Mod Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'fm7', + }, + { + name: 'fm7_mod_index', + label: 'FM7 Mod Index', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm7', + }, + { + name: 'fm7_phasor_mul', + label: 'FM7 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm7', + }, + { + name: 'fm7_phase_off', + label: 'FM7 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'fm7', + }, + ], + voice_spaces: [], + ui: { + primary_input: 'xy_pad', + show_voice_space_selector: false, + show_synth_visualizer: false, + }, +}; diff --git a/playground/src/modes/generated/index.ts b/playground/src/modes/generated/index.ts new file mode 100644 index 0000000..cc036e2 --- /dev/null +++ b/playground/src/modes/generated/index.ts @@ -0,0 +1,12 @@ +// AUTOGENERATED — do not edit. Run `bun run codegen/generate.ts` to regenerate. +// Re-exports every generated mode schema. + +export * from './types'; +export * from './breakor_schema'; +export * from './channel_strip_schema'; +export * from './elysiamorf_schema'; +export * from './memlcelium_schema'; +export * from './paf_synth_schema'; +export * from './sound_analysis_midi_schema'; +export * from './verb_fx_schema'; +export * from './xiasri_schema'; diff --git a/playground/src/modes/generated/memlcelium_schema.ts b/playground/src/modes/generated/memlcelium_schema.ts new file mode 100644 index 0000000..2f0f6d9 --- /dev/null +++ b/playground/src/modes/generated/memlcelium_schema.ts @@ -0,0 +1,598 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/memlcelium.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface MemlceliumParams { + readonly seq0_ratio0: number; + readonly seq0_ratio1: number; + readonly seq0_ratio2: number; + readonly seq0_phasor_mul: number; + readonly seq0_phase_off: number; + readonly seq0_amp0: number; + readonly seq0_amp1: number; + readonly seq1_ratio0: number; + readonly seq1_ratio1: number; + readonly seq1_ratio2: number; + readonly seq1_phasor_mul: number; + readonly seq1_phase_off: number; + readonly seq1_amp0: number; + readonly seq1_amp1: number; + readonly v0_base_freq: number; + readonly v0_paf0_cf: number; + readonly v0_paf1_cf: number; + readonly v0_paf2_cf: number; + readonly v0_paf0_bw: number; + readonly v0_paf1_bw: number; + readonly v0_paf2_bw: number; + readonly v0_paf_vib: number; + readonly v0_paf_vfr: number; + readonly v0_paf0_shift: number; + readonly v0_paf1_shift: number; + readonly v0_paf2_shift: number; + readonly v0_amp_attack: number; + readonly v0_amp_decay: number; + readonly v0_amp_sustain: number; + readonly v0_amp_release: number; + readonly v0_pitch_attack: number; + readonly v0_pitch_decay: number; + readonly v0_pitch_emph: number; + readonly v0_shape_gain: number; + readonly v0_shape_asym: number; + readonly v0_shape_mix: number; + readonly v0_rm_gain: number; + readonly v1_base_freq: number; + readonly v1_detune1: number; + readonly v1_detune2: number; + readonly v1_paf0_cf: number; + readonly v1_paf1_cf: number; + readonly v1_paf2_cf: number; + readonly v1_paf0_bw: number; + readonly v1_paf1_bw: number; + readonly v1_paf2_bw: number; + readonly v1_paf0_shift: number; + readonly v1_paf1_shift: number; + readonly v1_paf2_shift: number; + readonly v1_amp_attack: number; + readonly v1_amp_decay: number; + readonly v1_amp_sustain: number; + readonly v1_amp_release: number; + readonly v1_pitch_attack: number; + readonly v1_pitch_decay: number; + readonly v1_pitch_emph: number; +} + +export const MemlceliumSchema: ModeSchema = { + mode_id: 'memlcelium', + engine_id: 'memlcelium', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 14, + 18, + ], + output_size: 56, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'seq0_ratio0', + label: 'Seq0 Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq0_ratio1', + label: 'Seq0 Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq0_ratio2', + label: 'Seq0 Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq0_phasor_mul', + label: 'Seq0 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq0_phase_off', + label: 'Seq0 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq0_amp0', + label: 'Seq0 Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq0_amp1', + label: 'Seq0 Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_ratio0', + label: 'Seq1 Ratio 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_ratio1', + label: 'Seq1 Ratio 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_ratio2', + label: 'Seq1 Ratio 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_phasor_mul', + label: 'Seq1 Phasor Mul', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_phase_off', + label: 'Seq1 Phase Off', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_amp0', + label: 'Seq1 Amp 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'seq1_amp1', + label: 'Seq1 Amp 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'sequencer', + }, + { + name: 'v0_base_freq', + label: 'V0 Base Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf0_cf', + label: 'V0 PAF0 CF', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf1_cf', + label: 'V0 PAF1 CF', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf2_cf', + label: 'V0 PAF2 CF', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf0_bw', + label: 'V0 PAF0 BW', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf1_bw', + label: 'V0 PAF1 BW', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf2_bw', + label: 'V0 PAF2 BW', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf_vib', + label: 'V0 PAF Vib', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'v0_synth', + }, + { + name: 'v0_paf_vfr', + label: 'V0 PAF Vib Rate', + min: 0, + max: 1, + default: 0.5, + curve: 'square', + group: 'v0_synth', + }, + { + name: 'v0_paf0_shift', + label: 'V0 PAF0 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf1_shift', + label: 'V0 PAF1 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_paf2_shift', + label: 'V0 PAF2 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_amp_attack', + label: 'V0 Amp Attack', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_env', + }, + { + name: 'v0_amp_decay', + label: 'V0 Amp Decay', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'v0_env', + }, + { + name: 'v0_amp_sustain', + label: 'V0 Amp Sustain', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v0_env', + }, + { + name: 'v0_amp_release', + label: 'V0 Amp Release', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'v0_env', + }, + { + name: 'v0_pitch_attack', + label: 'V0 Pitch Attack', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_env', + }, + { + name: 'v0_pitch_decay', + label: 'V0 Pitch Decay', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'v0_env', + }, + { + name: 'v0_pitch_emph', + label: 'V0 Pitch Emph', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_env', + }, + { + name: 'v0_shape_gain', + label: 'V0 Shape Gain', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_shape_asym', + label: 'V0 Shape Asym', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_shape_mix', + label: 'V0 Shape Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v0_rm_gain', + label: 'V0 RingMod Gain', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v0_synth', + }, + { + name: 'v1_base_freq', + label: 'V1 Base Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_detune1', + label: 'V1 Detune 1', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_detune2', + label: 'V1 Detune 2', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf0_cf', + label: 'V1 PAF0 CF', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf1_cf', + label: 'V1 PAF1 CF', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf2_cf', + label: 'V1 PAF2 CF', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf0_bw', + label: 'V1 PAF0 BW', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf1_bw', + label: 'V1 PAF1 BW', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf2_bw', + label: 'V1 PAF2 BW', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf0_shift', + label: 'V1 PAF0 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf1_shift', + label: 'V1 PAF1 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_paf2_shift', + label: 'V1 PAF2 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_synth', + }, + { + name: 'v1_amp_attack', + label: 'V1 Amp Attack', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v1_env', + }, + { + name: 'v1_amp_decay', + label: 'V1 Amp Decay', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'v1_env', + }, + { + name: 'v1_amp_sustain', + label: 'V1 Amp Sustain', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'v1_env', + }, + { + name: 'v1_amp_release', + label: 'V1 Amp Release', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'v1_env', + }, + { + name: 'v1_pitch_attack', + label: 'V1 Pitch Attack', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v1_env', + }, + { + name: 'v1_pitch_decay', + label: 'V1 Pitch Decay', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'v1_env', + }, + { + name: 'v1_pitch_emph', + label: 'V1 Pitch Emph', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'v1_env', + }, + ], + voice_spaces: [ + 'Direct', + ], + ui: { + primary_input: 'xy_pad', + show_voice_space_selector: false, + show_synth_visualizer: true, + }, +}; diff --git a/playground/src/modes/generated/paf_synth_schema.ts b/playground/src/modes/generated/paf_synth_schema.ts new file mode 100644 index 0000000..6b66bc0 --- /dev/null +++ b/playground/src/modes/generated/paf_synth_schema.ts @@ -0,0 +1,374 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/paf_synth.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface PafSynthParams { + readonly p00: number; + readonly p01: number; + readonly paf0_cf: number; + readonly paf1_cf: number; + readonly p04: number; + readonly paf0_bw: number; + readonly paf1_bw: number; + readonly p07: number; + readonly paf0_vib: number; + readonly paf1_vib: number; + readonly p10: number; + readonly paf0_vfr: number; + readonly paf1_vfr: number; + readonly p13: number; + readonly paf0_shift: number; + readonly paf1_shift: number; + readonly p16: number; + readonly dl1mix: number; + readonly p18: number; + readonly dlfb: number; + readonly env_decay: number; + readonly p21: number; + readonly p22: number; + readonly p23: number; + readonly p24: number; + readonly p25: number; + readonly shape_gain: number; + readonly shape_asym: number; + readonly shape_mix: number; + readonly rm_gain: number; + readonly env_attack: number; + readonly env_sustain: number; + readonly env_release: number; +} + +export const PafSynthSchema: ModeSchema = { + mode_id: 'paf_synth', + engine_id: 'paf_synth', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 10, + 14, + ], + output_size: 33, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'p00', + label: 'Param 00', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p01', + label: 'Param 01', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'paf0_cf', + label: 'PAF0 Center Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'operators', + }, + { + name: 'paf1_cf', + label: 'PAF1 Center Freq', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'operators', + }, + { + name: 'p04', + label: 'Param 04', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'paf0_bw', + label: 'PAF0 Bandwidth', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'operators', + }, + { + name: 'paf1_bw', + label: 'PAF1 Bandwidth', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'operators', + }, + { + name: 'p07', + label: 'Param 07', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'paf0_vib', + label: 'PAF0 Vibrato Depth', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'modulation', + }, + { + name: 'paf1_vib', + label: 'PAF1 Vibrato Depth', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'modulation', + }, + { + name: 'p10', + label: 'Param 10', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'paf0_vfr', + label: 'PAF0 Vibrato Rate', + min: 0, + max: 1, + default: 0.5, + curve: 'square', + group: 'modulation', + }, + { + name: 'paf1_vfr', + label: 'PAF1 Vibrato Rate', + min: 0, + max: 1, + default: 0.5, + curve: 'square', + group: 'modulation', + }, + { + name: 'p13', + label: 'Param 13', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'paf0_shift', + label: 'PAF0 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'operators', + }, + { + name: 'paf1_shift', + label: 'PAF1 Shift', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'operators', + }, + { + name: 'p16', + label: 'Param 16', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'dl1mix', + label: 'Delay Mix', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'delay', + }, + { + name: 'p18', + label: 'Param 18', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'dlfb', + label: 'Delay Feedback', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delay', + }, + { + name: 'env_decay', + label: 'Env Decay', + min: 0, + max: 1, + default: 0.3, + curve: 'square', + group: 'envelope', + }, + { + name: 'p21', + label: 'Param 21', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p22', + label: 'Param 22', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p23', + label: 'Param 23', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p24', + label: 'Param 24', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'p25', + label: 'Param 25', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'shape_gain', + label: 'Sine Shape Gain', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'shaper', + }, + { + name: 'shape_asym', + label: 'Sine Shape Asym', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'shaper', + }, + { + name: 'shape_mix', + label: 'Sine Shape Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'shaper', + }, + { + name: 'rm_gain', + label: 'Ring Mod Gain', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'shaper', + }, + { + name: 'env_attack', + label: 'Env Attack', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'envelope', + }, + { + name: 'env_sustain', + label: 'Env Sustain', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'envelope', + }, + { + name: 'env_release', + label: 'Env Release', + min: 0, + max: 1, + default: 0.3, + curve: 'linear', + group: 'envelope', + }, + ], + voice_spaces: [ + 'Ellipticacacia', + 'Rowantares', + 'Neemeda', + 'Aquillow', + 'Magnetarch', + 'Elderstar', + 'Ipeleiades', + ], + ui: { + primary_input: 'xy_pad', + show_voice_space_selector: true, + show_synth_visualizer: true, + }, +}; diff --git a/playground/src/modes/generated/sound_analysis_midi_schema.ts b/playground/src/modes/generated/sound_analysis_midi_schema.ts new file mode 100644 index 0000000..67bd6cc --- /dev/null +++ b/playground/src/modes/generated/sound_analysis_midi_schema.ts @@ -0,0 +1,122 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/sound_analysis_midi.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface SoundAnalysisMidiParams { + readonly midi_cc0: number; + readonly midi_cc1: number; + readonly midi_cc2: number; + readonly midi_cc3: number; + readonly midi_cc4: number; + readonly midi_cc5: number; + readonly midi_cc6: number; + readonly midi_cc7: number; +} + +export const SoundAnalysisMidiSchema: ModeSchema = { + mode_id: 'sound_analysis_midi', + engine_id: 'thru', + ml: { + input_channels: [ + 'audio_pitch', + 'audio_aperiodicity', + 'audio_energy', + 'audio_attack', + 'audio_brightness', + 'audio_energy_crude', + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 10, + hidden_layers: [ + 10, + 10, + 14, + ], + output_size: 8, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'midi_cc0', + label: 'MIDI CC 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc1', + label: 'MIDI CC 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc2', + label: 'MIDI CC 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc3', + label: 'MIDI CC 3', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc4', + label: 'MIDI CC 4', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc5', + label: 'MIDI CC 5', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc6', + label: 'MIDI CC 6', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + { + name: 'midi_cc7', + label: 'MIDI CC 7', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'midi', + }, + ], + voice_spaces: [], + ui: { + primary_input: 'audio_in', + show_voice_space_selector: false, + show_synth_visualizer: false, + }, +}; diff --git a/playground/src/modes/generated/types.ts b/playground/src/modes/generated/types.ts new file mode 100644 index 0000000..1aec060 --- /dev/null +++ b/playground/src/modes/generated/types.ts @@ -0,0 +1,54 @@ +// AUTOGENERATED — do not edit. Run `bun run codegen/generate.ts` to regenerate. +// Shared TypeScript types for generated mode schemas. + +export type Curve = + | 'linear' + | 'exp' + | 'log' + | 'square' + | 'sqrt' + | 'sigmoid' + | 'cubic'; + +export type PrimaryInput = + | 'xy_pad' + | 'joystick' + | 'sliders' + | 'audio_in' + | 'midi_in' + | 'none'; + +export interface Param { + readonly name: string; + readonly label: string; + readonly min: number; + readonly max: number; + readonly default: number; + readonly curve: Curve; + readonly group: string; +} + +export interface MLConfig { + readonly input_channels: readonly string[]; + readonly input_size: number; + readonly hidden_layers: readonly number[]; + readonly output_size: number; + readonly default_spread: number; + readonly default_learning_rate: number; + readonly default_max_iterations: number; +} + +export interface UIConfig { + readonly primary_input: PrimaryInput; + readonly show_voice_space_selector: boolean; + readonly show_synth_visualizer: boolean; +} + +export interface ModeSchema { + readonly mode_id: string; + readonly engine_id: string; + readonly ml: MLConfig; + readonly params: readonly Param[]; + readonly voice_spaces: readonly string[]; + readonly ui: UIConfig; +} diff --git a/playground/src/modes/generated/verb_fx_schema.ts b/playground/src/modes/generated/verb_fx_schema.ts new file mode 100644 index 0000000..e24a80e --- /dev/null +++ b/playground/src/modes/generated/verb_fx_schema.ts @@ -0,0 +1,519 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/verb_fx.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface VerbFxParams { + readonly fb_delay_xfade: number; + readonly lp0_fb: number; + readonly lp0_cutoff: number; + readonly lp1_fb: number; + readonly lp1_cutoff: number; + readonly lp2_fb: number; + readonly lp2_cutoff: number; + readonly lp3_fb: number; + readonly lp3_cutoff: number; + readonly lp4_fb: number; + readonly lp4_cutoff: number; + readonly lp5_fb: number; + readonly lp5_cutoff: number; + readonly lp6_fb: number; + readonly lp6_cutoff: number; + readonly lp7_fb: number; + readonly lp7_cutoff: number; + readonly allp0_fb: number; + readonly allp1_fb: number; + readonly allp2_fb: number; + readonly allp3_fb: number; + readonly fbank_f0: number; + readonly fbank_f1: number; + readonly fbank_f2: number; + readonly fbank_f3: number; + readonly fbank_f4: number; + readonly fbank_f5: number; + readonly fbank_f6: number; + readonly fbank_f7: number; + readonly fbank_res0: number; + readonly fbank_res1: number; + readonly fbank_res2: number; + readonly fbank_res3: number; + readonly fbank_res4: number; + readonly fbank_res5: number; + readonly fbank_res6: number; + readonly fbank_res7: number; + readonly delay0_time: number; + readonly delay0_fb: number; + readonly delay1_time: number; + readonly delay1_fb: number; + readonly delay2_time: number; + readonly delay2_fb: number; + readonly verb_vs_delay: number; + readonly delay_to_verb: number; + readonly delay_morph: number; + readonly delay_blend: number; +} + +export const VerbFxSchema: ModeSchema = { + mode_id: 'verb_fx', + engine_id: 'verb_fx', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 14, + 18, + ], + output_size: 47, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'fb_delay_xfade', + label: 'Bank/Delay XFade', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'routing', + }, + { + name: 'lp0_fb', + label: 'LP Comb 0 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp0_cutoff', + label: 'LP Comb 0 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp1_fb', + label: 'LP Comb 1 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp1_cutoff', + label: 'LP Comb 1 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp2_fb', + label: 'LP Comb 2 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp2_cutoff', + label: 'LP Comb 2 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp3_fb', + label: 'LP Comb 3 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp3_cutoff', + label: 'LP Comb 3 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp4_fb', + label: 'LP Comb 4 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp4_cutoff', + label: 'LP Comb 4 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp5_fb', + label: 'LP Comb 5 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp5_cutoff', + label: 'LP Comb 5 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp6_fb', + label: 'LP Comb 6 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp6_cutoff', + label: 'LP Comb 6 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp7_fb', + label: 'LP Comb 7 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'lp7_cutoff', + label: 'LP Comb 7 Cutoff', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp0_fb', + label: 'Allpass 0 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp1_fb', + label: 'Allpass 1 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp2_fb', + label: 'Allpass 2 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp3_fb', + label: 'Allpass 3 FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'verb', + }, + { + name: 'fbank_f0', + label: 'Filterbank Freq 0', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f1', + label: 'Filterbank Freq 1', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f2', + label: 'Filterbank Freq 2', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f3', + label: 'Filterbank Freq 3', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f4', + label: 'Filterbank Freq 4', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f5', + label: 'Filterbank Freq 5', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f6', + label: 'Filterbank Freq 6', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_f7', + label: 'Filterbank Freq 7', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res0', + label: 'Filterbank Res 0', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res1', + label: 'Filterbank Res 1', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res2', + label: 'Filterbank Res 2', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res3', + label: 'Filterbank Res 3', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res4', + label: 'Filterbank Res 4', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res5', + label: 'Filterbank Res 5', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res6', + label: 'Filterbank Res 6', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'fbank_res7', + label: 'Filterbank Res 7', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'filterbank', + }, + { + name: 'delay0_time', + label: 'Long Delay Time', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'delay0_fb', + label: 'Long Delay FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'delay1_time', + label: 'Med Delay Time', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'delay1_fb', + label: 'Med Delay FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'delay2_time', + label: 'Short Delay Time', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'delay2_fb', + label: 'Short Delay FB', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'verb_vs_delay', + label: 'Verb vs Delay', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'routing', + }, + { + name: 'delay_to_verb', + label: 'Delay→Verb Send', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'routing', + }, + { + name: 'delay_morph', + label: 'Delay Morph', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'delays', + }, + { + name: 'delay_blend', + label: 'Delay Blend', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + ], + voice_spaces: [ + 'Default', + 'Resonant', + 'Soft', + 'Cathedral', + 'Shimmer', + 'Chamber', + 'Metallic', + 'Granular', + 'Diffuse', + 'Dark', + 'Bright', + 'Harmonic', + ], + ui: { + primary_input: 'joystick', + show_voice_space_selector: true, + show_synth_visualizer: false, + }, +}; diff --git a/playground/src/modes/generated/xiasri_schema.ts b/playground/src/modes/generated/xiasri_schema.ts new file mode 100644 index 0000000..e1b774a --- /dev/null +++ b/playground/src/modes/generated/xiasri_schema.ts @@ -0,0 +1,278 @@ +// AUTOGENERATED — do not edit. Source: schemas/modes/xiasri.json. Run `bun run codegen/generate.ts` to regenerate. +import type { ModeSchema } from './types'; + +export interface XiasriParams { + readonly dl1_mix: number; + readonly dl2_mix: number; + readonly dl3_mix: number; + readonly p03: number; + readonly allp1_fb: number; + readonly allp2_fb: number; + readonly comb1_fb: number; + readonly comb2_fb: number; + readonly dl1_fb: number; + readonly dl2_fb: number; + readonly dl3_fb: number; + readonly wetdry_mix: number; + readonly pitch_transp: number; + readonly pitch_mix: number; + readonly allp3_fb: number; + readonly allp4_fb: number; + readonly allp5_fb: number; + readonly allp6_fb: number; + readonly allp3_mix: number; + readonly allp4_mix: number; + readonly allp5_mix: number; + readonly allp6_mix: number; + readonly dl4_mix: number; + readonly dl4_fb: number; +} + +export const XiasriSchema: ModeSchema = { + mode_id: 'xiasri', + engine_id: 'xiasri', + ml: { + input_channels: [ + 'joy_x', + 'joy_y', + 'joy_z', + 'joy_w', + ], + input_size: 4, + hidden_layers: [ + 10, + 10, + 14, + ], + output_size: 24, + default_spread: 0.6, + default_learning_rate: 1, + default_max_iterations: 1000, + }, + params: [ + { + name: 'dl1_mix', + label: 'Delay 1 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + { + name: 'dl2_mix', + label: 'Delay 2 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + { + name: 'dl3_mix', + label: 'Delay 3 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + { + name: 'p03', + label: 'Param 03', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'general', + }, + { + name: 'allp1_fb', + label: 'Allpass 1 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp2_fb', + label: 'Allpass 2 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'comb1_fb', + label: 'Comb 1 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'comb2_fb', + label: 'Comb 2 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'dl1_fb', + label: 'Delay 1 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + { + name: 'dl2_fb', + label: 'Delay 2 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + { + name: 'dl3_fb', + label: 'Delay 3 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + { + name: 'wetdry_mix', + label: 'Wet/Dry Mix', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'mix', + }, + { + name: 'pitch_transp', + label: 'Pitch Transpose', + min: 0, + max: 1, + default: 0.5, + curve: 'linear', + group: 'pitch', + }, + { + name: 'pitch_mix', + label: 'Pitch Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'pitch', + }, + { + name: 'allp3_fb', + label: 'Allpass 3 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp4_fb', + label: 'Allpass 4 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp5_fb', + label: 'Allpass 5 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp6_fb', + label: 'Allpass 6 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp3_mix', + label: 'Allpass 3 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp4_mix', + label: 'Allpass 4 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp5_mix', + label: 'Allpass 5 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'allp6_mix', + label: 'Allpass 6 Mix', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'verb', + }, + { + name: 'dl4_mix', + label: 'Delay 4 Mix', + min: 0, + max: 1, + default: 0, + curve: 'square', + group: 'delays', + }, + { + name: 'dl4_fb', + label: 'Delay 4 Feedback', + min: 0, + max: 1, + default: 0, + curve: 'linear', + group: 'delays', + }, + ], + voice_spaces: [ + 'Direct', + ], + ui: { + primary_input: 'joystick', + show_voice_space_selector: false, + show_synth_visualizer: false, + }, +};