From 2aa7ae649c20b1565a1872c4e6c88be9e7df891c Mon Sep 17 00:00:00 2001 From: joyo Date: Sun, 6 Oct 2024 11:48:21 -0700 Subject: [PATCH] a ton of changes --- patches/nonagon 42.vcv | Bin 0 -> 47118 bytes patches/nonagon.vcv | Bin 518204 -> 55344 bytes private/plugin.json | 77 +++ private/res/ButtonBank.svg | 985 +++++++++++++++++++++++++++ private/res/ColorHelper.svg | 978 +++++++++++++++++++++++++++ private/res/GridJnctLPP3.svg | 20 +- private/res/MasterSwitch.svg | 978 +++++++++++++++++++++++++++ private/res/MxDJ.svg | 973 +++++++++++++++++++++++++++ private/res/SampleRateDivider.svg | 984 +++++++++++++++++++++++++++ private/res/SmartCanvas.svg | 991 ++++++++++++++++++++++++++++ private/res/TheNonagon.svg | 169 +++-- private/src/ButtonBank.hpp | 427 ++++++++++++ private/src/ClockSelectCell.hpp | 130 ++++ private/src/ColorHelper.hpp | 384 +++++++++++ private/src/FaderBank.hpp | 31 +- private/src/GangedRandomLFO.hpp | 40 +- private/src/GridJnct.hpp | 181 +++-- private/src/IndexArp.hpp | 231 +++++++ private/src/LameJuis.hpp | 175 ++++- private/src/LinAlg.hpp | 721 ++++++++++++++++++++ private/src/MasterSwitch.hpp | 365 ++++++++++ private/src/MxDJ.hpp | 495 ++++++++++++++ private/src/NonagonPanner.hpp | 262 ++++++++ private/src/NormGen.hpp | 5 + private/src/PercentileSequencer.hpp | 109 +-- private/src/PhasorEnvelope.hpp | 40 +- private/src/PolyCC.hpp | 113 ++++ private/src/Q.hpp | 110 +++ private/src/SampleRateDivider.hpp | 64 ++ private/src/Slew.hpp | 28 + private/src/SmartCanvas.hpp | 345 ++++++++++ private/src/SmartGrid.hpp | 90 ++- private/src/SmartGridWidget.hpp | 3 - private/src/TheNonagon.hpp | 942 ++++++++++++++------------ private/src/TheoryOfTime.hpp | 648 ++++++++++++++++-- private/src/TimbreAndMutes.hpp | 50 +- private/src/VoiceAllocator.hpp | 140 ++++ private/src/ZCurve.hpp | 27 + private/src/plugin.cpp | 21 + private/src/plugin.hpp | 6 + 40 files changed, 11557 insertions(+), 781 deletions(-) create mode 100644 patches/nonagon 42.vcv create mode 100644 private/res/ButtonBank.svg create mode 100644 private/res/ColorHelper.svg create mode 100644 private/res/MasterSwitch.svg create mode 100644 private/res/MxDJ.svg create mode 100644 private/res/SampleRateDivider.svg create mode 100644 private/res/SmartCanvas.svg create mode 100644 private/src/ButtonBank.hpp create mode 100644 private/src/ClockSelectCell.hpp create mode 100644 private/src/ColorHelper.hpp create mode 100644 private/src/IndexArp.hpp create mode 100644 private/src/LinAlg.hpp create mode 100644 private/src/MasterSwitch.hpp create mode 100644 private/src/MxDJ.hpp create mode 100644 private/src/NonagonPanner.hpp create mode 100644 private/src/PolyCC.hpp create mode 100644 private/src/Q.hpp create mode 100644 private/src/SampleRateDivider.hpp create mode 100644 private/src/Slew.hpp create mode 100644 private/src/SmartCanvas.hpp create mode 100644 private/src/VoiceAllocator.hpp create mode 100644 private/src/ZCurve.hpp diff --git a/patches/nonagon 42.vcv b/patches/nonagon 42.vcv new file mode 100644 index 0000000000000000000000000000000000000000..dfdbeb9613696f9c1d6b55107ca883121cc714c9 GIT binary patch literal 47118 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 delta 505009 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

}MBhSt(lK$hV&< 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ௗ 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 vSU9;^~!`9fksz5liEJZ}4S!A&rQVukKB~a*lGI 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

APc)CojAXlt?axFu^$=jpF_U|o?PYJoVL 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

yTQColiD81dvl8a)*E9DvAxiJGduV1S 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 diff --git a/private/plugin.json b/private/plugin.json index 3d9b90d..f9b7909 100644 --- a/private/plugin.json +++ b/private/plugin.json @@ -70,6 +70,83 @@ [ ] }, + { + "slug": "MxDJ", + "name": "MxDJ", + "description": "MxDJ", + "tags": + [ + ], + "keywords": + [ + ] + }, + { + "slug": "SampleRateDivider", + "name": "SampleRateDivider", + "description": "SampleRateDivider", + "tags": + [ + ], + "keywords": + [ + ] + }, + { + "slug": "ColorHelper", + "name": "ColorHelper", + "description": "ColorHelper", + "tags": + [ + ], + "keywords": + [ + ] + }, + { + "slug": "ButtonBank", + "name": "ButtonBank", + "description": "ButtonBank", + "tags": + [ + ], + "keywords": + [ + ] + }, + { + "slug": "MasterSwitch", + "name": "MasterSwitch", + "description": "MasterSwitch", + "tags": + [ + ], + "keywords": + [ + ] + }, + { + "slug": "SmartCanvas", + "name": "SmartCanvas", + "description": "SmartCanvas", + "tags": + [ + ], + "keywords": + [ + ] + }, + { + "slug": "PolyCC", + "name": "PolyCC", + "description": "PolyCC", + "tags": + [ + ], + "keywords": + [ + ] + }, { "slug": "PhasorEnvelope", "name": "PhasorEnvelope", diff --git a/private/res/ButtonBank.svg b/private/res/ButtonBank.svg new file mode 100644 index 0000000..22f9552 --- /dev/null +++ b/private/res/ButtonBank.svg @@ -0,0 +1,985 @@ + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private/res/ColorHelper.svg b/private/res/ColorHelper.svg new file mode 100644 index 0000000..45e8611 --- /dev/null +++ b/private/res/ColorHelper.svg @@ -0,0 +1,978 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private/res/GridJnctLPP3.svg b/private/res/GridJnctLPP3.svg index 5cb58be..a1f1ffb 100644 --- a/private/res/GridJnctLPP3.svg +++ b/private/res/GridJnctLPP3.svg @@ -2,9 +2,9 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private/res/MxDJ.svg b/private/res/MxDJ.svg new file mode 100644 index 0000000..4134b63 --- /dev/null +++ b/private/res/MxDJ.svg @@ -0,0 +1,973 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private/res/SampleRateDivider.svg b/private/res/SampleRateDivider.svg new file mode 100644 index 0000000..80316fc --- /dev/null +++ b/private/res/SampleRateDivider.svg @@ -0,0 +1,984 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sample Rate Divider + + + diff --git a/private/res/SmartCanvas.svg b/private/res/SmartCanvas.svg new file mode 100644 index 0000000..0bcc950 --- /dev/null +++ b/private/res/SmartCanvas.svg @@ -0,0 +1,991 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private/res/TheNonagon.svg b/private/res/TheNonagon.svg index e738560..32736a4 100644 --- a/private/res/TheNonagon.svg +++ b/private/res/TheNonagon.svg @@ -2,9 +2,9 @@ @@ -51,7 +51,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.4142136" - inkscape:cx="74.599763" + inkscape:cx="209.65716" inkscape:cy="257.38686" inkscape:document-units="mm" inkscape:current-layer="layer1" @@ -84,7 +84,6 @@ image/svg+xml - @@ -95,16 +94,16 @@ transform="translate(0,-168.5)" style="display:inline"> o1k o2k o3k o1t o1o o2t o2o o3t o3o i1i 12i i3i i4i i5i i1s i2s i3s i4s i5s m11 m12 m13 m14 m15 eq1s eq1k m21 m22 m23 m24 m25 eq2s eq2k m31 m32 m33 m34 m35 eq3s eq3k m41 m42 m43 m44 m45 eq4s eq4k m51 m52 m53 m54 m55 eq5s eq5k m61 m62 m63 m64 m65 eq6s eq6k i1l i2l i3l i4l o1l o2l o3l eq2s diff --git a/private/src/ButtonBank.hpp b/private/src/ButtonBank.hpp new file mode 100644 index 0000000..02217e3 --- /dev/null +++ b/private/src/ButtonBank.hpp @@ -0,0 +1,427 @@ +#pragma once +#include "SmartGrid.hpp" +#include "StateSaver.hpp" +#include "plugin.hpp" +#include "VoiceAllocator.hpp" + +namespace SmartGrid +{ + +struct ButtonBankInternal : Grid +{ + Color m_offColor; + Color m_onColor; + bool m_momentary; + size_t m_width[x_gridSize]; + VoiceAllocator m_voiceAllocator; + + struct BankedButton : public Cell + { + bool m_state; + Color m_color; + bool m_hasDirectColor; + + int m_x; + int m_y; + ButtonBankInternal* m_owner; + + struct Input + { + ColorDecode m_color; + bool m_hasDirectColor; + + Input() + : m_hasDirectColor(false) + { + } + }; + + CellVoice ToCellVoice() + { + return CellVoice(&m_state, m_x, m_y); + } + + void Process(Input& input) + { + m_hasDirectColor = input.m_hasDirectColor; + if (m_hasDirectColor) + { + m_color = input.m_color.m_color; + } + } + + BankedButton(int x, int y, ButtonBankInternal* owner) + : m_state(false) + , m_color(Color::White) + , m_hasDirectColor(false) + , m_x(x) + , m_y(y) + , m_owner(owner) + { + m_pressureSensitive = true; + } + + virtual Color GetColor() override + { + if (static_cast(m_owner->m_width[m_y]) <= m_x) + { + return Color::Off; + } + else if (m_hasDirectColor) + { + return m_color; + } + else + { + return m_state ? m_owner->m_onColor : m_owner->m_offColor; + } + } + + virtual void OnPress(uint8_t) override + { + if (m_owner->HasPolyphony()) + { + if (m_state) + { + m_owner->m_voiceAllocator.DeAllocate(ToCellVoice()); + } + else + { + m_owner->m_voiceAllocator.Allocate(ToCellVoice()); + } + } + else + { + m_state = !m_state; + } + } + + virtual void OnRelease() override + { + if (m_owner->m_momentary) + { + if (m_owner->HasPolyphony()) + { + if (m_state) + { + m_owner->m_voiceAllocator.DeAllocate(ToCellVoice()); + } + } + else + { + m_state = !m_state; + } + } + } + }; + + ButtonBankInternal() + : m_offColor(Color::White.Dim()) + , m_onColor(Color::White) + , m_momentary(false) + { + for (size_t i = 0; i < x_gridSize; ++i) + { + m_width[i] = x_gridSize; + for (size_t j = 0; j < x_gridSize; ++j) + { + Put(i, j, new BankedButton(i, j, this)); + } + } + } + + struct Input + { + ColorDecode m_offColor; + ColorDecode m_onColor; + bool m_momentary; + size_t m_width[x_gridSize]; + BankedButton::Input m_input[x_gridSize][x_gridSize]; + size_t m_maxPolyphony; + + Input() + : m_offColor(Color::White.Dim()) + , m_onColor(Color::White) + , m_momentary(false) + , m_maxPolyphony(0) + { + for (size_t i = 0; i < x_gridSize; ++i) + { + m_width[i] = x_gridSize; + } + } + }; + + bool HasPolyphony() + { + return m_voiceAllocator.m_maxPolyphony > 0; + } + + void Clear() + { + for (size_t i = 0; i < x_gridSize; ++i) + { + for (size_t j = 0; j < x_gridSize; ++j) + { + static_cast(Get(j, i))->m_state = false; + } + } + } + + void ProcessInput(Input& input) + { + m_offColor = input.m_offColor.m_color; + m_onColor = input.m_onColor.m_color; + m_momentary = input.m_momentary; + if (m_voiceAllocator.m_maxPolyphony != input.m_maxPolyphony) + { + m_voiceAllocator.SetPolyphony(input.m_maxPolyphony); + Clear(); + } + + for (size_t i = 0; i < x_gridSize; ++i) + { + m_width[i] = input.m_width[i]; + for (size_t j = 0; j < m_width[i]; ++j) + { + static_cast(Get(j, i))->Process(input.m_input[j][i]); + } + } + } +}; + +struct ButtonBank : Module +{ + static constexpr size_t x_maxPoly = 16; + + static constexpr size_t x_momentaryParam = 0; + static constexpr size_t x_onColorParam = x_momentaryParam + 1; + static constexpr size_t x_offColorParam = x_onColorParam + 1; + static constexpr size_t x_widthParam = x_offColorParam + 1; + static constexpr size_t x_polyphonyParam = x_widthParam + x_gridSize; + static constexpr size_t x_numParams = x_polyphonyParam + 1; + + static constexpr size_t x_momentaryIn = 0; + static constexpr size_t x_onColorIn = x_momentaryIn + 1; + static constexpr size_t x_offColorIn = x_onColorIn + 1; + static constexpr size_t x_rowColorIn = x_offColorIn + 1; + static constexpr size_t x_numIns = x_rowColorIn + x_gridSize; + + static constexpr size_t x_gridIdOut = 0; + static constexpr size_t x_gateOut = x_gridIdOut + 1; + static constexpr size_t x_velocityOut = x_gateOut + x_gridSize; + static constexpr size_t x_polyXOut = x_velocityOut + x_gridSize; + static constexpr size_t x_polyYOut = x_polyXOut + 1; + static constexpr size_t x_polyVelocityOut = x_polyYOut + 1; + static constexpr size_t x_polyGateOut = x_polyVelocityOut + 1; + static constexpr size_t x_numOuts = x_polyGateOut + 1; + + bool m_overflowPorts = true; + + ButtonBankInternal m_bank; + ButtonBankInternal::Input m_state; + rack::dsp::TSchmittTrigger m_momentaryTrig; + PeriodChecker m_periodChecker; + + ButtonBank() + { + config(x_numParams, x_numIns, x_numOuts, 0); + + configSwitch(x_momentaryParam, 0, 1, 0, "Momentary"); + configParam(x_onColorParam, 0, 1, 1, "On Color"); + configParam(x_offColorParam, 0, 1, Color::White.Dim().ZEncodeFloat(), "Off Color"); + configSwitch(x_polyphonyParam, 0, 16, 0, "Polyphony"); + + configInput(x_momentaryIn, "Momentary"); + configInput(x_onColorIn, "On Color"); + configInput(x_offColorIn, "Off Color"); + configOutput(x_gridIdOut, "Grid Id"); + configOutput(x_polyXOut, "Poly X"); + configOutput(x_polyYOut, "Poly Y"); + configOutput(x_polyVelocityOut, "Poly Velocity"); + configOutput(x_polyGateOut, "Poly Gate"); + + for (size_t i = 0; i < x_gridSize; ++i) + { + configSwitch(x_widthParam + i, 0, 8, 8, "Row Width " + std::to_string(i)); + configInput(x_rowColorIn + i, "Poly Row Color " + std::to_string(i)); + configOutput(x_gateOut + i, "Poly Gates Row " + std::to_string(i)); + configOutput(x_velocityOut + i, "Poly Velocity Row " + std::to_string(i)); + } + } + + void ReadInputs() + { + bool momentary = m_momentaryTrig.process(inputs[x_momentaryIn].getVoltage()); + if (params[x_momentaryParam].getValue() > 0) + { + momentary = !momentary; + } + + m_state.m_momentary = momentary; + + if (inputs[x_onColorIn].isConnected()) + { + m_state.m_onColor.Process(Color::FloatToZ(inputs[x_onColorIn].getVoltage() / 10)); + } + else + { + m_state.m_onColor.Process(Color::FloatToZ(params[x_onColorParam].getValue())); + } + + if (inputs[x_offColorIn].isConnected()) + { + m_state.m_offColor.Process(Color::FloatToZ(inputs[x_offColorIn].getVoltage() / 10)); + } + else + { + m_state.m_offColor.Process(Color::FloatToZ(params[x_offColorParam].getValue())); + } + + m_state.m_maxPolyphony = static_cast(params[x_polyphonyParam].getValue()); + + size_t row = 0; + size_t chan = 0; + for (size_t i = 0; i < x_gridSize; ++i) + { + m_state.m_width[i] = static_cast(params[x_widthParam + i].getValue()); + if (inputs[x_rowColorIn + i].isConnected() || !m_overflowPorts) + { + row = i; + chan = 0; + } + + for (size_t j = 0; j < m_state.m_width[i]; ++j) + { + if (inputs[x_rowColorIn + row].isConnected() && + static_cast(chan) < inputs[x_rowColorIn + row].getChannels()) + { + m_state.m_input[j][i].m_hasDirectColor = true; + m_state.m_input[j][i].m_color.Process(Color::FloatToZ(inputs[x_rowColorIn + row].getVoltage(chan) / 10)); + } + else + { + m_state.m_input[j][i].m_hasDirectColor = false; + } + + ++chan; + } + } + } + + void SetOutputs() + { + size_t row = 0; + size_t chan = 0; + for (size_t i = 0; i < x_gridSize; ++i) + { + if (outputs[x_gateOut + i].isConnected() || outputs[x_velocityOut + i].isConnected() || !m_overflowPorts) + { + row = i; + chan = 0; + outputs[x_gateOut + row].setChannels(m_state.m_width[i]); + outputs[x_velocityOut + row].setChannels(m_state.m_width[i]); + } + else + { + outputs[x_gateOut + row].setChannels(std::min(outputs[x_gateOut + row].getChannels() + m_state.m_width[i], x_maxPoly)); + outputs[x_velocityOut + row].setChannels(std::min(outputs[x_velocityOut + row].getChannels() + m_state.m_width[i], x_maxPoly)); + } + + + for (size_t j = 0; j < m_state.m_width[i]; ++j) + { + if (chan >= x_maxPoly) + { + break; + } + + ButtonBankInternal::BankedButton* cell = static_cast(m_bank.Get(j, i)); + outputs[x_gateOut + row].setVoltage(cell->m_state ? 10 : 0, chan); + outputs[x_velocityOut + row].setVoltage(static_cast(cell->m_velocity) * 10 / 127, chan); + ++chan; + } + } + + outputs[x_polyXOut].setChannels(m_bank.m_voiceAllocator.m_maxPolyphony); + outputs[x_polyYOut].setChannels(m_bank.m_voiceAllocator.m_maxPolyphony); + outputs[x_polyVelocityOut].setChannels(m_bank.m_voiceAllocator.m_maxPolyphony); + outputs[x_polyGateOut].setChannels(m_bank.m_voiceAllocator.m_maxPolyphony); + + for (size_t i = 0; i < m_bank.m_voiceAllocator.m_maxPolyphony; ++i) + { + CellVoice voice = m_bank.m_voiceAllocator.m_voices[i]; + if (voice.m_gate && *voice.m_gate) + { + outputs[x_polyGateOut].setVoltage(10, i); + outputs[x_polyXOut].setVoltage(voice.m_x, i); + outputs[x_polyYOut].setVoltage(voice.m_y, i); + ButtonBankInternal::BankedButton* cell = static_cast(m_bank.Get(voice.m_x, voice.m_y)); + outputs[x_polyVelocityOut].setVoltage(static_cast(cell->m_velocity) * 10 / 127, i); + } + else + { + outputs[x_polyGateOut].setVoltage(0, i); + outputs[x_polyXOut].setVoltage(0, i); + outputs[x_polyYOut].setVoltage(0, i); + outputs[x_polyVelocityOut].setVoltage(0, i); + } + } + + outputs[x_gridIdOut].setVoltage(m_bank.m_gridId); + } + + void process(const ProcessArgs &args) override + { + m_bank.ProcessStatic(args.sampleTime); + if (m_periodChecker.Process(args.sampleTime)) + { + ReadInputs(); + } + + m_bank.ProcessInput(m_state); + + SetOutputs(); + } +}; + +struct ButtonBankWidget : public ModuleWidget +{ + ButtonBankWidget(ButtonBank* module) + { + setModule(module); + setPanel(createPanel(asset::plugin(pluginInstance, "res/ButtonBank.svg"))); + + addChild(createWidget(Vec(RACK_GRID_WIDTH, 0))); + addChild(createWidget(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); + addChild(createWidget(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); + addChild(createWidget(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); + + addParam(createParamCentered(Vec(50, 100), module, module->x_momentaryParam)); + addInput(createInputCentered(Vec(50, 125), module, module->x_momentaryIn)); + + addParam(createParamCentered(Vec(50, 200), module, module->x_onColorParam)); + addInput(createInputCentered(Vec(50, 225), module, module->x_onColorIn)); + addParam(createParamCentered(Vec(50, 250), module, module->x_offColorParam)); + addInput(createInputCentered(Vec(50, 275), module, module->x_offColorIn)); + addOutput(createOutputCentered(Vec(50, 350), module, module->x_gridIdOut)); + + addParam(createParamCentered(Vec(300, 200), module, module->x_polyphonyParam)); + addOutput(createOutputCentered(Vec(300, 225), module, module->x_polyXOut)); + addOutput(createOutputCentered(Vec(300, 250), module, module->x_polyYOut)); + addOutput(createOutputCentered(Vec(300, 275), module, module->x_polyVelocityOut)); + addOutput(createOutputCentered(Vec(300, 300), module, module->x_polyGateOut)); + + for (size_t i = 0; i < x_gridSize; ++i) + { + float xPos = 100; + float yPos = 100 + 25 * i; + addParam(createParamCentered(Vec(xPos, yPos), module, module->x_widthParam + i)); + addInput(createInputCentered(Vec(xPos + 50, yPos), module, module->x_rowColorIn + i)); + addOutput(createOutputCentered(Vec(xPos + 100, yPos), module, module->x_gateOut + i)); + addOutput(createOutputCentered(Vec(xPos + 150, yPos), module, module->x_velocityOut + i)); + } + } +}; + +} diff --git a/private/src/ClockSelectCell.hpp b/private/src/ClockSelectCell.hpp new file mode 100644 index 0000000..6221230 --- /dev/null +++ b/private/src/ClockSelectCell.hpp @@ -0,0 +1,130 @@ +#include "PercentileSequencer.hpp" +#include "IndexArp.hpp" + +struct ClockSelectCell : public SmartGrid::Cell +{ + virtual ~ClockSelectCell() + { + } + + int* m_clockSelect; + int* m_resetSelect; + bool* m_externalReset; + size_t m_trio; + size_t* m_numHeld; + size_t* m_maxHeld; + int m_myClock; + SmartGrid::Color m_offColor; + SmartGrid::Color m_clockColor; + SmartGrid::Color m_resetColor; + bool m_unsetOnRelease; + + ClockSelectCell( + PercentileSequencerInternal::Input* state, + size_t trio, + size_t* numHeld, + size_t* maxHeld, + int myClock, + SmartGrid::Color offColor, + SmartGrid::Color clockColor, + SmartGrid::Color resetColor) + : m_clockSelect(state->m_clockSelect) + , m_resetSelect(state->m_resetSelect) + , m_externalReset(state->m_externalReset) + , m_trio(trio) + , m_numHeld(numHeld) + , m_maxHeld(maxHeld) + , m_myClock(myClock) + , m_offColor(offColor) + , m_clockColor(clockColor) + , m_resetColor(resetColor) + , m_unsetOnRelease(false) + { + } + + ClockSelectCell( + NonagonIndexArp::Input* state, + size_t trio, + size_t* numHeld, + size_t* maxHeld, + int myClock, + SmartGrid::Color offColor, + SmartGrid::Color clockColor, + SmartGrid::Color resetColor) + : m_clockSelect(state->m_clockSelect) + , m_resetSelect(state->m_resetSelect) + , m_externalReset(nullptr) + , m_trio(trio) + , m_numHeld(numHeld) + , m_maxHeld(maxHeld) + , m_myClock(myClock) + , m_offColor(offColor) + , m_clockColor(clockColor) + , m_resetColor(resetColor) + , m_unsetOnRelease(false) + { + } + + virtual void OnPress(uint8_t) override + { + ++(*m_numHeld); + + if (*m_numHeld == 1) + { + if (m_clockSelect[m_trio] == m_myClock) + { + m_unsetOnRelease = true; + } + else + { + m_clockSelect[m_trio] = m_myClock; + } + + m_resetSelect[m_trio] = -1; + } + else if (*m_numHeld == 2) + { + m_resetSelect[m_trio] = m_myClock; + } + + *m_maxHeld = std::max(*m_maxHeld, *m_numHeld); + } + + virtual void OnRelease() override + { + --(*m_numHeld); + + if (*m_numHeld == 0) + { + if (m_externalReset) + { + m_externalReset[m_trio] = true; + } + + if (*m_maxHeld == 1 && m_unsetOnRelease) + { + m_clockSelect[m_trio] = -1; + } + + *m_maxHeld = 0; + } + + m_unsetOnRelease = false; + } + + virtual SmartGrid::Color GetColor() override + { + if (m_clockSelect[m_trio] == m_myClock) + { + return m_clockColor; + } + else if (m_resetSelect[m_trio] == m_myClock) + { + return m_resetColor; + } + else + { + return m_offColor; + } + } +}; diff --git a/private/src/ColorHelper.hpp b/private/src/ColorHelper.hpp new file mode 100644 index 0000000..c67a562 --- /dev/null +++ b/private/src/ColorHelper.hpp @@ -0,0 +1,384 @@ +#pragma once +#include "SmartGrid.hpp" +#include "plugin.hpp" +#include + +namespace SmartGrid +{ + +struct ColorEncode +{ + ColorEncode() + : m_encodedColor(0) + { + } + + Color m_color; + size_t m_encodedColor; + + size_t Process(Color c) + { + if (m_color != c) + { + m_color = c; + m_encodedColor = c.ZEncode(); + } + + return m_encodedColor; + } +}; + +struct ColorDecode +{ + size_t m_encoded; + Color m_color; + + ColorDecode() + : m_encoded(0) + { + } + + ColorDecode(Color c) + : m_encoded(c.ZEncode()) + , m_color(c) + { + } + + Color Process(size_t encoded) + { + if (m_encoded != encoded) + { + m_encoded = encoded; + m_color = Color::ZDecode(encoded); + } + + return m_color; + } + + Color ProcessFloat(float value) + { + return Process(Color::FloatToZ(value)); + } + + Color ProcessVoltage(float voltage) + { + return ProcessFloat(voltage / 10); + } + + void Hookup(ColorEncode encode) + { + m_encoded = encode.m_encodedColor; + m_color = encode.m_color; + } +}; + +struct BrightnessAdjuster +{ + struct Input + { + Input() + : m_encodedColor(0) + , m_brightness(1) + { + } + + size_t m_encodedColor; + float m_brightness; + }; + + BrightnessAdjuster() + : m_brightness(0) + { + } + + ColorDecode m_preColor; + float m_brightness; + ColorEncode m_encodedColor; + + size_t Process(Input& input) + { + if (m_preColor.m_encoded != input.m_encodedColor || m_brightness != input.m_brightness) + { + Color c = m_preColor.Process(input.m_encodedColor); + m_encodedColor.Process(c.AdjustBrightness(input.m_brightness)); + } + + return m_encodedColor.m_encodedColor; + } +}; + +struct ColorInterpolator +{ + struct Input + { + Input() + : m_position(0) + { + m_color[0] = 0; + m_color[1] = 0; + } + + size_t m_color[2]; + float m_position; + }; + + ColorDecode m_color[2]; + ColorEncode m_encodedColor; + + void Process(Input& input) + { + Color c1 = m_color[0].Process(input.m_color[0]); + Color c2 = m_color[1].Process(input.m_color[1]); + m_encodedColor.Process(c1.Interpolate(c2, input.m_position)); + } +}; + +struct ColorHelperChannel +{ + ColorEncode m_encoders[2]; + BrightnessAdjuster m_brightness[2]; + ColorInterpolator m_interp; + + struct Input + { + Color m_encoderInput[2]; + BrightnessAdjuster::Input m_brightnessInput[2]; + ColorInterpolator::Input m_interpInput; + bool m_brightnessConnected[2]; + bool m_interpConnected[2]; + }; + + void Process(Input& input) + { + for (size_t i = 0; i < 2; ++i) + { + size_t encoded = m_encoders[i].Process(input.m_encoderInput[i]); + if (!input.m_brightnessConnected[i]) + { + m_brightness[i].m_preColor.Hookup(m_encoders[i]); + input.m_brightnessInput[i].m_encodedColor = encoded; + } + + encoded = m_brightness[i].Process(input.m_brightnessInput[i]); + + if (!input.m_interpConnected[i]) + { + input.m_interpInput.m_color[i] = encoded; + m_interp.m_color[i].Hookup(m_brightness[i].m_encodedColor); + } + } + + m_interp.Process(input.m_interpInput); + } +}; + +struct ColorHelper : Module +{ + static constexpr size_t x_maxPoly = 16; + ColorHelperChannel::Input m_state[x_maxPoly]; + ColorHelperChannel m_channels[x_maxPoly]; + PeriodChecker m_checker; + + static constexpr size_t x_redParam = 0; + static constexpr size_t x_greenParam = x_redParam + 2; + static constexpr size_t x_blueParam = x_greenParam + 2; + static constexpr size_t x_brightnessParam = x_blueParam + 2; + static constexpr size_t x_brightnessAttn = x_brightnessParam + 2; + static constexpr size_t x_interpParam = x_brightnessAttn + 2; + static constexpr size_t x_numParams = x_interpParam + 1; + + static constexpr size_t x_redIn = 0; + static constexpr size_t x_greenIn = x_redIn + 2; + static constexpr size_t x_blueIn = x_greenIn + 2; + static constexpr size_t x_brightnessColorIn = x_blueIn + 2; + static constexpr size_t x_brightnessIn = x_brightnessColorIn + 2; + static constexpr size_t x_interpColorIn = x_brightnessIn + 2; + static constexpr size_t x_interpIn = x_interpColorIn + 2; + static constexpr size_t x_numIns = x_interpIn + 1; + + static constexpr size_t x_colorOut = 0; + static constexpr size_t x_brightColorOut = x_colorOut + 2; + static constexpr size_t x_interpOut = x_brightColorOut + 2; + static constexpr size_t x_numOuts = x_interpOut + 1; + + ColorHelper() + : m_checker(0.001) + { + config(x_numParams, x_numIns, x_numOuts, 0); + + for (size_t i = 0; i < 2; ++i) + { + configParam(x_redParam, 0, 1, 1, "Red " + std::to_string(i + 1)); + configParam(x_greenParam, 0, 1, 0, "Green " + std::to_string(i + 1)); + configParam(x_blueParam, 0, 1, 0, "Blue " + std::to_string(i + 1)); + configParam(x_brightnessParam, 0, 1, 0, "Brightness " + std::to_string(i + 1)); + configParam(x_brightnessAttn, -1, 1, 0, "Brightness Attn" + std::to_string(i + 1)); + + configInput(x_redIn, "Red " + std::to_string(i + 1)); + configInput(x_greenIn, "Green " + std::to_string(i + 1)); + configInput(x_blueIn, "Red " + std::to_string(i + 1)); + configInput(x_brightnessColorIn, "Brightness Adjustor Color" + std::to_string(i + 1)); + configInput(x_brightnessIn, "Brightness " + std::to_string(i + 1)); + configInput(x_interpColorIn, "Interpolator color " + std::to_string(i + 1)); + + configOutput(x_colorOut, "Color " + std::to_string(i + 1)); + configOutput(x_brightColorOut, "Bright Adjusted " + std::to_string(i + 1)); + } + + configParam(x_interpParam, 0, 1, 0, "Interpolate"); + configInput(x_interpIn, "Interpolate"); + configOutput(x_interpOut, "Interpolated Color"); + } + + float GetVal(size_t inId, ssize_t attnId, size_t paramId, size_t chan) + { + float ret = 0; + + if (inputs[inId].isConnected()) + { + ret += inputs[inId].getVoltage(chan % inputs[inId].getChannels()) / 10; + if (attnId != -1) + { + ret *= params[attnId].getValue(); + } + } + + ret += params[paramId].getValue(); + + return ret; + } + + uint8_t GetColorComponent(size_t inId, size_t paramId, size_t chan) + { + float preRet = GetVal(inId, -1, paramId, chan); + return std::max(0, std::min(preRet * 256, 255)); + } + + void process(const ProcessArgs &args) override + { + if (m_checker.Process(args.sampleTime)) + { + size_t poly = 1; + for (size_t i = 0; i < x_numIns; ++i) + { + poly = std::max(poly, inputs[i].getChannels()); + } + + for (size_t i = 0; i < poly; ++i) + { + for (size_t j = 0; j < 2; ++j) + { + m_state[i].m_encoderInput[j].m_red = GetColorComponent(x_redIn + j, x_redParam + j, i); + m_state[i].m_encoderInput[j].m_green = GetColorComponent(x_greenIn + j, x_greenParam + j, i); + m_state[i].m_encoderInput[j].m_blue = GetColorComponent(x_blueIn + j, x_blueParam + j, i); + m_state[i].m_brightnessInput[j].m_brightness = GetVal(x_brightnessIn + j, x_brightnessAttn + j, x_brightnessParam + j, i); + if (inputs[x_brightnessColorIn + j].isConnected()) + { + m_state[i].m_brightnessInput[j].m_encodedColor = Color::FloatToZ(inputs[x_brightnessColorIn + j].getVoltage(i) / 10); + m_state[i].m_brightnessConnected[j] = true; + } + else + { + m_state[i].m_brightnessConnected[j] = false; + } + + if (inputs[x_interpColorIn + j].isConnected()) + { + m_state[i].m_interpInput.m_color[j] = Color::FloatToZ(inputs[x_interpColorIn + j].getVoltage(i) / 10); + m_state[i].m_interpConnected[j] = true; + } + else + { + m_state[i].m_interpConnected[j] = false; + } + } + + m_state[i].m_interpInput.m_position = GetVal(x_interpIn, -1, x_interpParam, i); + + m_channels[i].Process(m_state[i]); + } + + size_t interpPoly = std::max(1, inputs[x_interpIn].getChannels()); + + for (size_t j = 0; j < 2; ++j) + { + size_t colorPoly = std::max( + std::max(1, inputs[x_redIn + j].getChannels()), + std::max(inputs[x_greenIn + j].getChannels(), inputs[x_blueIn + j].getChannels())); + + outputs[x_colorOut + j].setChannels(colorPoly); + for (size_t i = 0; i < colorPoly; ++i) + { + float volt = Color::ZToFloat(m_channels[i].m_encoders[j].m_encodedColor) * 10; + outputs[x_colorOut + j].setVoltage(volt, i); + } + + size_t brightPoly = inputs[x_brightnessColorIn + j].isConnected() + ? static_cast(inputs[x_brightnessColorIn + j].getChannels()) + : colorPoly; + + outputs[x_brightColorOut + j].setChannels(brightPoly); + for (size_t i = 0; i < brightPoly; ++i) + { + float volt = Color::ZToFloat(m_channels[i].m_brightness[j].m_encodedColor.m_encodedColor) * 10; + outputs[x_brightColorOut + j].setVoltage(volt, i); + } + + if (inputs[x_interpColorIn + j].isConnected()) + { + interpPoly = std::max(interpPoly, brightPoly); + } + else + { + interpPoly = std::max(interpPoly, inputs[x_interpColorIn + j].getChannels()); + } + } + + outputs[x_interpOut].setChannels(interpPoly); + for (size_t i = 0; i < interpPoly; ++i) + { + float volt = Color::ZToFloat(m_channels[i].m_interp.m_encodedColor.m_encodedColor) * 10; + outputs[x_interpOut].setVoltage(volt, i); + } + } + } +}; + +struct ColorHelperWidget : ModuleWidget +{ + ColorHelperWidget(ColorHelper* module) + { + setModule(module); + setPanel(createPanel(asset::plugin(pluginInstance, "res/ColorHelper.svg"))); + + for (size_t i = 0; i < 2; ++i) + { + int yPos = 100 + 100 * i; + int pPos = yPos + 25; + addInput(createInputCentered(Vec(50, yPos), module, module->x_redIn + i)); + addParam(createParamCentered(Vec(50, pPos), module, module->x_redParam + i)); + addInput(createInputCentered(Vec(75, yPos), module, module->x_greenIn + i)); + addParam(createParamCentered(Vec(75, pPos), module, module->x_greenParam + i)); + addInput(createInputCentered(Vec(100, yPos), module, module->x_blueIn + i)); + addParam(createParamCentered(Vec(100, pPos), module, module->x_blueParam + i)); + + addOutput(createOutputCentered(Vec(125, yPos), module, module->x_colorOut + i)); + + addInput(createInputCentered(Vec(175, yPos), module, module->x_brightnessColorIn + i)); + addParam(createParamCentered(Vec(175, pPos), module, module->x_brightnessParam + i)); + addInput(createInputCentered(Vec(200, yPos), module, module->x_brightnessIn + i)); + addParam(createParamCentered(Vec(200, pPos), module, module->x_brightnessAttn + i)); + + addOutput(createOutputCentered(Vec(225, yPos), module, module->x_brightColorOut + i)); + + addInput(createInputCentered(Vec(275, yPos), module, module->x_interpColorIn + i)); + } + + int yPos = 300; + addInput(createInputCentered(Vec(200, yPos), module, module->x_interpIn)); + addParam(createParamCentered(Vec(225, yPos), module, module->x_interpParam)); + addOutput(createOutputCentered(Vec(250, yPos), module, module->x_interpOut)); + } +}; + +} diff --git a/private/src/FaderBank.hpp b/private/src/FaderBank.hpp index 892bdd6..277088f 100644 --- a/private/src/FaderBank.hpp +++ b/private/src/FaderBank.hpp @@ -1,5 +1,6 @@ #pragma once #include "SmartGrid.hpp" +#include "StateSaver.hpp" #include "plugin.hpp" namespace SmartGrid @@ -48,13 +49,14 @@ struct FaderBankSmartGrid : public CompositeGrid } }; - FaderBankSmartGrid() + FaderBankSmartGrid(StateSaver& saver) : CompositeGrid() { for (size_t i = 0; i < x_gridSize; ++i) { m_faders[i].reset(new BankedFader()); AddGrid(i, 0, m_faders[i]); + saver.Insert("Value", i, &m_faders[i]->m_state); } } @@ -97,20 +99,25 @@ struct FaderBankSmartGrid : public CompositeGrid struct FaderBank : public Module { + StateSaver m_stateSaver; FaderBankSmartGrid m_faderBank; FaderBankSmartGrid::Input m_state; + static constexpr size_t x_colorIn = x_gridSize; + static constexpr size_t x_gridIdOutId = x_gridSize; FaderBank() + : m_faderBank(m_stateSaver) { - config(x_gridSize, x_gridSize, x_gridSize + 1, 0); + config(x_gridSize, 2 * x_gridSize, x_gridSize + 1, 0); for (size_t i = 0; i < x_gridSize; ++i) { configInput(i, ("Fader " + std::to_string(i)).c_str()); configOutput(i, ("Fader " + std::to_string(i)).c_str()); configParam(i, 0, 1, 1, ("Color " + std::to_string(i)).c_str()); + configInput(x_colorIn + i, ("Color " + std::to_string(i)).c_str()); } configOutput(x_gridIdOutId, "Grid Id"); @@ -122,7 +129,14 @@ struct FaderBank : public Module { m_state.m_inputs[i].m_outputConnected = outputs[i].isConnected(); m_state.m_inputs[i].m_inputConnected = inputs[i].isConnected(); - m_state.m_inputs[i].m_color = Color::ZDecodeFloat(params[i].getValue()); + if (inputs[x_colorIn + i].isConnected()) + { + m_state.m_inputs[i].m_color = Color::ZDecodeFloat(inputs[x_colorIn + i].getVoltage() / 10); + } + else + { + m_state.m_inputs[i].m_color = Color::ZDecodeFloat(params[i].getValue()); + } } } @@ -136,6 +150,16 @@ struct FaderBank : public Module outputs[x_gridIdOutId].setVoltage(m_faderBank.m_gridId); } + json_t* dataToJson() override + { + return m_stateSaver.ToJSON(); + } + + void dataFromJson(json_t* rootJ) override + { + m_stateSaver.SetFromJSON(rootJ); + } + void process(const ProcessArgs &args) override { m_faderBank.ProcessStatic(args.sampleTime); @@ -161,6 +185,7 @@ struct FaderBankWidget : public ModuleWidget float rowPos = 100 + i * 30; addOutput(createOutputCentered(Vec(rowStart, rowPos), module, i)); addInput(createInputCentered(Vec(rowStart + 50, rowPos), module, i)); + addInput(createInputCentered(Vec(rowStart + 75, rowPos), module, x_gridSize + i)); addParam(createParamCentered(Vec(rowStart + 100, rowPos), module, i)); } } diff --git a/private/src/GangedRandomLFO.hpp b/private/src/GangedRandomLFO.hpp index 5978bba..a1854d3 100644 --- a/private/src/GangedRandomLFO.hpp +++ b/private/src/GangedRandomLFO.hpp @@ -225,6 +225,35 @@ struct GangedRandomLFO : Module return static_cast(params[NumGangsParamId()].getValue() + 0.5); } + size_t OffsetInId(size_t out) + { + return out; + } + + size_t XFadeInId(size_t out) + { + return OffsetInId(x_outs) + out; + } + + size_t NumInputs() + { + return XFadeInId(x_outs); + } + + float Normalize(size_t out, size_t chan, float val) + { + if (inputs[XFadeInId(out)].isConnected()) + { + float fd = inputs[XFadeInId(out)].getVoltage(chan % inputs[XFadeInId(out)].getChannels()) / 10; + float off = inputs[OffsetInId(out)].getVoltage(chan % inputs[OffsetInId(out)].getChannels()); + return (1 - fd) * off + fd * val; + } + else + { + return val; + } + } + size_t OutputId(size_t out) { return out; @@ -247,6 +276,7 @@ struct GangedRandomLFO : Module void SetOutput(size_t out, size_t chan, float val) { + val = Normalize(out, chan, val); val = std::max(0, std::min(val, 10)); outputs[OutputId(out)].setVoltage(val, chan); } @@ -288,7 +318,7 @@ struct GangedRandomLFO : Module GangedRandomLFO() { - config(NumParams(), 0, NumOutputs(), 0); + config(NumParams(), NumInputs(), NumOutputs(), 0); configParam(TimeParamId(), 0.1, 600, 45, "Time (secs)"); configParam(SigmaParamId(), 0.1, 20, 2, "Sigma"); @@ -298,6 +328,8 @@ struct GangedRandomLFO : Module for (size_t i = 0; i < x_outs; ++i) { configOutput(OutputId(i), ("Output " + std::to_string(i))); + configInput(OffsetInId(i), ("Offset " + std::to_string(i))); + configInput(XFadeInId(i), ("XFade " + std::to_string(i))); } } }; @@ -316,12 +348,14 @@ struct GangedRandomLFOWidget : ModuleWidget addParam(createParamCentered(Vec(100 + 2 * dx, 100), module, module->GangSizeParamId())); addParam(createParamCentered(Vec(100 + 3 * dx, 100), module, module->NumGangsParamId())); - float rowStart = 50; + float rowStart = 25; for (size_t i = 0; i < module->x_outs; ++i) { float rowPos = 100 + i * 30; - addOutput(createOutputCentered(Vec(rowStart, rowPos), module, module->OutputId(i))); + addInput(createInputCentered(Vec(rowStart, rowPos), module, module->OffsetInId(i))); + addInput(createInputCentered(Vec(rowStart + 25, rowPos), module, module->XFadeInId(i))); + addOutput(createOutputCentered(Vec(rowStart + 50, rowPos), module, module->OutputId(i))); } } }; diff --git a/private/src/GridJnct.hpp b/private/src/GridJnct.hpp index dbe100b..2d2edb4 100644 --- a/private/src/GridJnct.hpp +++ b/private/src/GridJnct.hpp @@ -4,6 +4,7 @@ #include "MidiWidget.hpp" #include "SmartGridWidget.hpp" #include "StateSaver.hpp" +#include "ColorHelper.hpp" namespace SmartGrid { @@ -90,16 +91,16 @@ struct MenuButtonRow { case RowPos::Top: { - return x_gridSize; + return x_gridYMin; } case RowPos::Bottom: { - return x_gridYMin + 1; + return x_gridYMax - 2; } case RowPos::SubBottom: case RowPos::Unused: { - return x_gridYMin; + return x_gridYMax - 1; } case RowPos::Right: case RowPos::Left: @@ -111,15 +112,15 @@ struct MenuButtonRow static RowPos GetPos(int i, int j) { - if (j == x_gridSize && 0 <= i && i < x_gridSize) + if (j == x_gridYMin && 0 <= i && i < x_gridSize) { return RowPos::Top; } - else if (j == x_gridYMin + 1 && 0 <= i && i < x_gridSize) + else if (j == x_gridYMax - 2 && 0 <= i && i < x_gridSize) { return RowPos::Bottom; } - else if (j == x_gridYMin && 0 <= i && i < x_gridSize) + else if (j == x_gridYMax - 1 && 0 <= i && i < x_gridSize) { return RowPos::SubBottom; } @@ -143,15 +144,15 @@ struct MenuButtonRow { case RowPos::Top: { - return j == x_gridSize && m_start <= i && i < m_end; + return j == x_gridYMin && m_start <= i && i < m_end; } case RowPos::Bottom: { - return j == x_gridYMin + 1 && m_start <= i && i < m_end; + return j == x_gridYMax - 2 && m_start <= i && i < m_end; } case RowPos::SubBottom: { - return j == x_gridYMin && m_start <= i && i < m_end; + return j == x_gridYMax - 1 && m_start <= i && i < m_end; } case RowPos::Right: { @@ -289,9 +290,10 @@ struct MenuGrid : public AbstractGrid { } - MenuGrid() + MenuGrid(StateSaver& saver) : m_selectedAbsPos(x_invalidAbsPos) { + saver.Insert("SelectedAbsPos", &m_selectedAbsPos); } size_t AbsPos(MenuButtonRow::RowPos pos, size_t ix) @@ -306,23 +308,35 @@ struct MenuGrid : public AbstractGrid struct MenuButton : public Cell { + enum class Mode : int + { + Grid, + Momentary, + Toggle + }; + bool m_gateOut; bool m_gateOutConnected; - bool m_hasGrid; + bool m_hasInput; size_t m_gridId; size_t m_absPos; MenuGrid* m_owner; - + Color m_color; + Mode m_mode; + struct Input { bool m_gateOutConnected; - bool m_hasGrid; + bool m_hasInput; size_t m_gridId; + Mode m_mode; + ColorDecode m_color; Input() : m_gateOutConnected(false) - , m_hasGrid(false) + , m_hasInput(false) , m_gridId(x_numGridIds) + , m_mode(Mode::Grid) { } }; @@ -334,26 +348,45 @@ struct MenuGrid : public AbstractGrid MenuButton(MenuGrid* owner, size_t absPos) : m_gateOut(false) , m_gateOutConnected(false) - , m_hasGrid(false) + , m_hasInput(false) , m_gridId(x_numGridIds) , m_absPos(absPos) , m_owner(owner) + , m_color(Color::Off) + , m_mode(Mode::Grid) { } void Process(Input& input) { m_gateOutConnected = input.m_gateOutConnected; - m_hasGrid = input.m_hasGrid; - bool gridIdChanged = input.m_gridId != m_gridId; - m_gridId = input.m_gridId; - if (IsSelected() && gridIdChanged && m_hasGrid) - { - m_owner->Select(this); + m_mode = input.m_mode; + m_hasInput = input.m_hasInput; + if (m_mode == Mode::Grid) + { + bool gridIdChanged = input.m_gridId != m_gridId; + m_gridId = input.m_gridId; + bool hasGridId = m_gridId != x_numGridIds; + if (IsSelected() && gridIdChanged && hasGridId) + { + m_owner->Select(this); + } + else if (IsSelected() && !hasGridId) + { + m_owner->DeSelect(); + } } - else if (IsSelected() && !m_hasGrid) + else { - m_owner->DeSelect(); + if (IsSelected()) + { + m_owner->DeSelect(); + } + + if (input.m_hasInput) + { + m_color = input.m_color.m_color; + } } } @@ -364,32 +397,58 @@ struct MenuGrid : public AbstractGrid virtual Color GetColor() override { - if (m_hasGrid) - { - return IsSelected() ? g_smartBus.GetOnColor(m_gridId) : g_smartBus.GetOffColor(m_gridId); - } - else if (m_gateOutConnected) + if (m_mode == Mode::Grid) { - return m_gateOut ? Color::White : Color::White.Dim(); + if (m_hasInput && m_gridId != x_numGridIds) + { + return IsSelected() ? g_smartBus.GetOnColor(m_gridId) : g_smartBus.GetOffColor(m_gridId); + } + else if (m_gateOutConnected) + { + return m_gateOut ? Color::White : Color::White.Dim(); + } + else + { + return Color::Off; + } } else { - return Color::Off; + if (m_hasInput) + { + return m_color; + } + else + { + return m_gateOut ? Color::White : Color::White.Dim(); + } } } virtual void OnPress(uint8_t) override { - if (m_hasGrid) + if (m_hasInput && m_mode == Mode::Grid) { - m_owner->Select(this); - m_gateOut = true; + if (m_gridId != x_numGridIds) + { + m_owner->Select(this); + m_gateOut = true; + } } - else if (m_gateOutConnected && !m_gateOut) + else if (m_gateOutConnected && + (!m_gateOut || m_mode == Mode::Momentary)) { m_gateOut = true; } - else if (m_gateOutConnected) + else + { + m_gateOut = false; + } + } + + virtual void OnRelease() override + { + if (m_mode == Mode::Momentary) { m_gateOut = false; } @@ -480,7 +539,7 @@ struct MenuGrid : public AbstractGrid void SetGridId(MenuButtonRow::RowPos pos, size_t ix, size_t gridId) { static_cast(Get(pos, ix))->m_gridId = gridId; - static_cast(Get(pos, ix))->m_hasGrid = true; + static_cast(Get(pos, ix))->m_hasInput = true; } virtual Color GetColor(int i, int j) override @@ -530,8 +589,8 @@ struct MenuGridSwitcher : public GridSwitcher { } - MenuGridSwitcher() - : GridSwitcher(new MenuGrid()) + MenuGridSwitcher(StateSaver& saver) + : GridSwitcher(new MenuGrid(saver)) { } @@ -568,20 +627,23 @@ struct GridJnct : Module return GetNumButtonRows() * x_gridSize; } + static constexpr size_t x_numParams = GetNumIOIds(); + static constexpr size_t x_numInputs = GetNumIOIds(); static constexpr size_t x_gridIdOutId = GetNumIOIds(); static constexpr size_t x_activeGridIdOutId = x_gridIdOutId + 1; static constexpr size_t x_numOutputs = x_activeGridIdOutId + 1; - + StateSaver m_stateSaver; MenuGridSwitcher m_switcher; MenuGrid::Input m_state; PeriodChecker m_periodChecker; GridJnct() + : m_switcher(m_stateSaver) { - config(0, GetNumIOIds(), x_numOutputs, 0); + config(x_numParams, GetNumIOIds(), x_numOutputs, 0); for (size_t i = 0; i < GetNumButtonRows(); ++i) { @@ -593,6 +655,7 @@ struct GridJnct : Module auto pairPos = m_switcher.GetMenuGrid()->PairPos(i); configInput(i, (MenuButtonRow::RowPosToString(pairPos.first) + " " + std::to_string(pairPos.second) + " Grid Id ")); configOutput(i, (MenuButtonRow::RowPosToString(pairPos.first) + " " + std::to_string(pairPos.second) + " Gate ")); + configSwitch(i, 0, 2, 0, (MenuButtonRow::RowPosToString(pairPos.first) + " " + std::to_string(pairPos.second) + " Mode "), {"Grid", "Momentary", "Toggle"}); } configOutput(x_gridIdOutId, "Grid Id"); @@ -607,14 +670,25 @@ struct GridJnct : Module size_t posIx = static_cast(pairPos.first); MenuGrid::MenuButton::Input& input = m_state.m_inputs[posIx][pairPos.second]; input.m_gateOutConnected = outputs[i].isConnected(); - input.m_hasGrid = inputs[i].isConnected(); - size_t gridId = static_cast(inputs[i].getVoltage() + 0.5); - if (gridId > x_numGridIds) + input.m_mode = static_cast(static_cast(params[i].getValue())); + input.m_hasInput = inputs[i].isConnected(); + if (input.m_mode == MenuGrid::MenuButton::Mode::Grid) { - gridId = x_numGridIds; + size_t gridId = static_cast(inputs[i].getVoltage() + 0.5); + if (gridId > x_numGridIds) + { + gridId = x_numGridIds; + } + + input.m_gridId = gridId; + } + else + { + if (input.m_hasInput) + { + input.m_color.Process(Color::FloatToZ(inputs[i].getVoltage() / 10)); + } } - - input.m_gridId = gridId; } } @@ -634,6 +708,16 @@ struct GridJnct : Module outputs[x_activeGridIdOutId].setVoltage(m_switcher.m_selectedGridId); } + json_t* dataToJson() override + { + return m_stateSaver.ToJSON(); + } + + void dataFromJson(json_t* rootJ) override + { + m_stateSaver.SetFromJSON(rootJ); + } + void process(const ProcessArgs &args) override { m_switcher.ProcessStatic(args.sampleTime); @@ -661,7 +745,7 @@ struct GridJnctWidget : ModuleWidget if (pos == MenuButtonRow::RowPos::Left || pos == MenuButtonRow::RowPos::Right) { - y = x_yStart - x_sep * ix - 5 * x_sep; + y = x_yStart - x_sep * (x_gridSize - ix - 1) - 5 * x_sep; if (pos == MenuButtonRow::RowPos::Left) { x = x_xStart; @@ -721,6 +805,9 @@ struct GridJnctWidget : ModuleWidget auto pairPos = module->m_switcher.GetMenuGrid()->PairPos(i); addInput(createInputCentered(GetPos(pairPos.first, pairPos.second, true), module, i)); addOutput(createOutputCentered(GetPos(pairPos.first, pairPos.second, false), module, i)); + size_t xPos = static_cast(pairPos.first) * 25 + 375; + size_t yPos = 125 + pairPos.second * 25; + addParam(createParamCentered(Vec(xPos, yPos), module, i)); } addOutput(createOutputCentered(Vec(375, 100), module, module->x_gridIdOutId)); diff --git a/private/src/IndexArp.hpp b/private/src/IndexArp.hpp new file mode 100644 index 0000000..76dbf0c --- /dev/null +++ b/private/src/IndexArp.hpp @@ -0,0 +1,231 @@ +#pragma once + +struct IndexArp +{ + static constexpr size_t x_rhythmLength = 8; + + int m_preIndex; + int m_motiveIndex; + int m_rhythmIndex; + int m_lastMotiveLength; + bool m_resetNextClock; + + int m_size; + int m_index; + + IndexArp() + : m_preIndex(0) + , m_motiveIndex(0) + , m_rhythmIndex(0) + , m_lastMotiveLength(0) + , m_resetNextClock(false) + , m_size(1) + , m_index(0) + { + } + + struct Input + { + bool m_clock; + bool m_reset; + int m_offset; + int m_intervalSubOne; + bool m_cycle; + bool m_rhythm[x_rhythmLength]; + int m_rhythmLength; + bool m_up; + int m_motiveInterval; + + Input() + : m_clock(false) + , m_reset(true) + , m_offset(0) + , m_intervalSubOne(0) + , m_cycle(false) + , m_rhythmLength(x_rhythmLength) + , m_up(true) + , m_motiveInterval(0) + { + for (size_t i = 0; i < x_rhythmLength; ++i) + { + m_rhythm[i] = true; + } + } + }; + + Input m_state; + + void Process(Input& input) + { + if (input.m_reset) + { + m_resetNextClock = true; + } + + if (input.m_clock) + { + if (m_resetNextClock) + { + Reset(input); + } + else + { + ++m_rhythmIndex; + if (input.m_rhythm[m_rhythmIndex % input.m_rhythmLength]) + { + ++m_preIndex; + if (m_rhythmIndex >= input.m_rhythmLength) + { + m_rhythmIndex %= input.m_rhythmLength; + ++m_motiveIndex; + m_lastMotiveLength = m_preIndex; + m_preIndex = 0; + } + } + + //INFO("preIndex %d rhythmIndex %d motiveIndex %d", m_preIndex, m_rhythmIndex,m_motiveIndex); + } + + m_state = input; + } + } + + void Reset(Input& input) + { + m_preIndex = 0; + m_rhythmIndex = 0; + m_motiveIndex = 0; + m_resetNextClock = false; + } + + void Get(int size, int* ix, int* octave) + { + int offset = m_state.m_offset; + if (!m_state.m_up) + { + offset = size - offset; + } + + int index = m_preIndex * (m_state.m_intervalSubOne + 1); + + if (m_state.m_cycle) + { + offset += m_state.m_motiveInterval * (m_motiveIndex / 2); + if (m_motiveIndex % 2 == 1) + { + index = m_lastMotiveLength - index; + } + } + else + { + offset += m_state.m_motiveInterval * m_motiveIndex; + } + + if (!m_state.m_up) + { + index = size - index; + } + + offset %= size; + while (index < -size) + { + index += size; + } + + if (2 * size < index) + { + index %= 2 * size; + } + + int preResult = offset + index; + *octave = preResult / size; + while (preResult < 0) + { + preResult += size; + *octave -= 1; + } + + *ix = preResult % size; + + m_size = size; + m_index = *ix; + + if (*ix < 0 || *ix >= size) + { + INFO("preix %d motiv %d ix %d off %d ix %d oct %d size %d", + m_preIndex, m_motiveIndex, index, offset, *ix, *octave, size); + assert(false); + } + } +}; + +struct NonagonIndexArp +{ + static constexpr size_t x_numClocks = 7; + static constexpr size_t x_numTrios = 3; + static constexpr size_t x_voicesPerTrio = 3; + static constexpr size_t x_numVoices = 9; + + IndexArp m_arp[x_numVoices]; + IndexArp m_committedArp[x_numVoices]; + + struct Input + { + IndexArp::Input m_input[x_numVoices]; + bool m_clocks[x_numClocks]; + int m_clockSelect[x_numTrios]; + int m_resetSelect[x_numTrios]; + bool m_externalReset; + int m_commit[x_numVoices]; + + Input() + { + for (size_t i = 0; i < x_numClocks; ++i) + { + m_clocks[i] = false; + } + + for (size_t i = 0; i < x_numTrios; ++i) + { + m_clockSelect[i] = 0; + m_resetSelect[i] = -1; + } + + for (size_t i = 0; i < x_numVoices; ++i) + { + m_commit[i] = i; + } + + m_externalReset = true; + } + + void SetClocks() + { + for (size_t i = 0; i < x_numVoices; ++i) + { + size_t j = i / x_voicesPerTrio; + m_input[i].m_reset = m_externalReset || (m_resetSelect[j] >= 0 && m_clocks[m_resetSelect[j]]); + m_input[i].m_clock = m_clockSelect[j] >= 0 && m_clocks[m_clockSelect[j]]; + } + + m_externalReset = false; + } + }; + + void Process(Input& input) + { + input.SetClocks(); + for (size_t i = 0; i < x_numVoices; ++i) + { + m_arp[i].Process(input.m_input[i]); + } + + for (size_t i = 0; i < x_numVoices; ++i) + { + if (input.m_commit[i] != -1) + { + m_committedArp[i] = m_arp[input.m_commit[i]]; + } + } + } +}; diff --git a/private/src/LameJuis.hpp b/private/src/LameJuis.hpp index 86bede5..149e7a9 100644 --- a/private/src/LameJuis.hpp +++ b/private/src/LameJuis.hpp @@ -2,6 +2,7 @@ #include "plugin.hpp" #include #include "LameJuisConstants.hpp" +#include "IndexArp.hpp" struct LameJuisInternal { @@ -593,6 +594,11 @@ struct LameJuisInternal { return std::tie(m_pitch, m_result) < std::tie(other.m_pitch, other.m_result); } + + void OctaveReduce() + { + m_pitch = m_pitch - std::floor(m_pitch); + } MatrixEvalResult m_result; float m_pitch; @@ -682,6 +688,12 @@ struct LameJuisInternal bool m_coMutes[x_numInputs]; size_t m_polyChans; float m_percentiles[x_maxPoly]; + bool m_harmonic[x_maxPoly]; + bool m_usePercentile[x_maxPoly]; + int m_index[x_maxPoly]; + int m_octave[x_maxPoly]; + IndexArp* m_indexArp[x_maxPoly]; + IndexArp* m_preIndexArp[x_maxPoly]; Input() { @@ -690,6 +702,17 @@ struct LameJuisInternal { m_coMutes[i] = false; } + + for (size_t i = 0; i < x_maxPoly; ++i) + { + m_percentiles[i] = 0; + m_harmonic[i] = false; + m_usePercentile[i] = false; + m_index[i] = 0; + m_octave[i] = 0; + m_indexArp[i] = nullptr; + m_preIndexArp[i] = nullptr; + } } }; @@ -712,6 +735,17 @@ struct LameJuisInternal m_coMutes[i] = false; } + for (size_t i = 0; i < x_maxPoly; ++i) + { + m_percentiles[i] = 0; + m_harmonic[i] = false; + m_usePercentile[i] = false; + m_index[i] = 0; + m_octave[i] = 0; + m_indexArp[i] = nullptr; + m_preIndexArp[i] = nullptr; + } + m_owner = owner; } @@ -722,6 +756,11 @@ struct LameJuisInternal for (size_t i = 0; i < m_polyChans; ++i) { m_percentiles[i] = input.m_percentiles[i]; + m_harmonic[i] = input.m_harmonic[i]; + m_usePercentile[i] = input.m_usePercentile[i]; + m_octave[i] = input.m_octave[i]; + m_indexArp[i] = input.m_indexArp[i]; + m_preIndexArp[i] = input.m_preIndexArp[i]; } for (size_t i = 0; i < x_numInputs; ++i) @@ -737,10 +776,17 @@ struct LameJuisInternal bool m_coMutes[x_numInputs]; float m_percentiles[x_maxPoly]; + bool m_harmonic[x_maxPoly]; + bool m_usePercentile[x_maxPoly]; + int m_index[x_maxPoly]; + int m_octave[x_maxPoly]; + IndexArp* m_indexArp[x_maxPoly]; + IndexArp* m_preIndexArp[x_maxPoly]; size_t m_polyChans; Output* m_owner; }; + template struct CacheForSingleInputVector { CacheForSingleInputVector() : @@ -757,7 +803,21 @@ struct LameJuisInternal LameJuisInternal* matrix, LameJuisInternal::Output* output, LameJuisInternal::InputVector defaultVector, - float percentile) + size_t chan) + { + Eval(matrix, output, defaultVector); + + int octave; + ssize_t ix = GetIx(output, chan, &octave); + MatrixEvalResultWithPitch result = m_cachedResults[ix]; + result.m_pitch += octave; + return result; + } + + void Eval( + LameJuisInternal* matrix, + LameJuisInternal::Output* output, + LameJuisInternal::InputVector defaultVector) { if (!m_isEvaluated) { @@ -765,23 +825,69 @@ struct LameJuisInternal for (; !itr.Done(); itr.Next()) { m_cachedResults[itr.m_ordinal] = matrix->EvalMatrix(itr.Get()); + if (!Harmonic) + { + m_cachedResults[itr.m_ordinal].OctaveReduce(); + } } m_numResults = itr.m_ordinal; std::sort(m_cachedResults, m_cachedResults + m_numResults); + + size_t cur = 0; + m_resultOrd[0] = 0; + m_reverseIndex[0] = 0; + for (size_t i = 1; i < m_numResults; ++i) + { + if (m_cachedResults[i].m_pitch != m_cachedResults[i - 1].m_pitch) + { + ++cur; + m_reverseIndex[cur] = i; + } + + m_resultOrd[i] = cur; + } + + m_numDistinctResults = cur + 1; m_isEvaluated = true; } - + } + + ssize_t GetIx(LameJuisInternal::Output* output, size_t chan, int* octave) + { + *octave = output->m_coMuteState.m_octave[chan]; + if (output->m_coMuteState.m_usePercentile[chan]) + { + return PercentileToIx(output->m_coMuteState.m_percentiles[chan]); + } + else if (output->m_coMuteState.m_indexArp[chan]) + { + int result; + output->m_coMuteState.m_preIndexArp[chan]->Get(m_numDistinctResults, &result, octave); + output->m_coMuteState.m_indexArp[chan]->Get(m_numDistinctResults, &result, octave); + return m_reverseIndex[result]; + } + else + { + return m_reverseIndex[output->m_coMuteState.m_index[chan]]; + } + } + + ssize_t PercentileToIx(float percentile) + { ssize_t ix = static_cast(percentile * m_numResults); ix = std::min(ix, m_numResults - 1); ix = std::max(ix, 0); - return m_cachedResults[ix]; + return ix; } MatrixEvalResultWithPitch m_cachedResults[1 << x_numInputs]; + size_t m_resultOrd[1 << x_numInputs]; + size_t m_reverseIndex[1 << x_numInputs]; size_t m_numResults; + size_t m_numDistinctResults; bool m_isEvaluated; }; @@ -797,7 +903,8 @@ struct LameJuisInternal MatrixEvalResultWithPitch m_pitch[x_maxPoly]; CoMuteState m_coMuteState; - CacheForSingleInputVector m_outputCaches[1 << x_numInputs]; + CacheForSingleInputVector m_harmonicOutputCaches[1 << x_numInputs]; + CacheForSingleInputVector m_melodicOutputCaches[1 << x_numInputs]; bool m_lastStepEvaluated; LameJuisInternal* m_owner; @@ -811,7 +918,8 @@ struct LameJuisInternal { for (size_t i = 0; i < (1 << x_numInputs); ++i) { - m_outputCaches[i].ClearCache(); + m_harmonicOutputCaches[i].ClearCache(); + m_melodicOutputCaches[i].ClearCache(); } ClearLastStep(); @@ -847,8 +955,15 @@ struct LameJuisInternal MatrixEvalResultWithPitch ComputePitch(LameJuisInternal* matrix, InputVector defaultVector, size_t chan) { - float percentile = m_coMuteState.m_percentiles[chan]; - return m_outputCaches[defaultVector.m_bits].ComputePitch(matrix, this, defaultVector, percentile); + bool harmonic = m_coMuteState.m_harmonic[chan]; + if (harmonic) + { + return m_harmonicOutputCaches[defaultVector.m_bits].ComputePitch(matrix, this, defaultVector, chan); + } + else + { + return m_melodicOutputCaches[defaultVector.m_bits].ComputePitch(matrix, this, defaultVector, chan); + } } void SetPitch(MatrixEvalResultWithPitch pitch, size_t chan) @@ -872,6 +987,52 @@ struct LameJuisInternal } }; + struct SeqPaletteState + { + SeqPaletteState() + : m_ord(0) + , m_ordMax(1) + , m_isCur(false) + { + } + + size_t m_ord; + size_t m_ordMax; + bool m_isCur; + }; + + SeqPaletteState GetSeqPaletteState( + size_t outputId, + size_t ix, + InputVector input) + { + constexpr size_t x_tot = 1 << x_numInputs; + Output& o = m_outputs[outputId]; + Output::CacheForSingleInputVector& c = o.m_harmonicOutputCaches[input.m_bits]; + SeqPaletteState result; + if (!c.m_isEvaluated) + { + return result; + } + + result.m_ordMax = c.m_resultOrd[c.m_numResults - 1] + 1; + size_t repeats = x_tot / c.m_numResults; + size_t rIx = ix / repeats; + result.m_ord = c.m_resultOrd[rIx]; + + for (size_t i = 0; i < o.GetPolyChans(); ++i) + { + size_t pIx = c.GetIx(&o, i, nullptr); + if (pIx == rIx) + { + result.m_isCur = true; + break; + } + } + + return result; + } + struct Input { InputBit::Input m_inputBitInput[x_numInputs]; diff --git a/private/src/LinAlg.hpp b/private/src/LinAlg.hpp new file mode 100644 index 0000000..068bbcd --- /dev/null +++ b/private/src/LinAlg.hpp @@ -0,0 +1,721 @@ +// linalg.h - 2.2 - Single-header public domain linear algebra library +// +// The intent of this library is to provide the bulk of the functionality +// you need to write programs that frequently use small, fixed-size vectors +// and matrices, in domains such as computational geometry or computer +// graphics. It strives for terse, readable source code. +// +// The original author of this software is Sterling Orsten, and its permanent +// home is . If you find this software +// useful, an acknowledgement in your source text and/or product documentation +// is appreciated, but not required. +// +// The author acknowledges significant insights and contributions by: +// Stan Melax +// Dimitri Diakopoulos +// +// Some features are deprecated. Define LINALG_FORWARD_COMPATIBLE to remove them. + + + +// This is free and unencumbered software released into the public domain. +// +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. +// +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// For more information, please refer to + + + +#pragma once +#ifndef LINALG_H +#define LINALG_H + +#include // For various unary math functions, such as std::sqrt +#include // To resolve std::abs ambiguity on clang +#include // For implementing namespace linalg::aliases +#include // For std::array +#include // For forward definitions of std::ostream +#include // For std::enable_if, std::is_same, std::declval +#include // For std::hash declaration + +// In Visual Studio 2015, `constexpr` applied to a member function implies `const`, which causes ambiguous overload resolution +#if _MSC_VER <= 1900 +#define LINALG_CONSTEXPR14 +#else +#define LINALG_CONSTEXPR14 constexpr +#endif + +namespace linalg +{ + // Small, fixed-length vector type, consisting of exactly M elements of type T, and presumed to be a column-vector unless otherwise noted. + template struct vec; + + // Small, fixed-size matrix type, consisting of exactly M rows and N columns of type T, stored in column-major order. + template struct mat; + + // Specialize converter with a function application operator that converts type U to type T to enable implicit conversions + template struct converter {}; + namespace detail + { + template using conv_t = typename std::enable_if::value, decltype(converter{}(std::declval()))>::type; + + // Trait for retrieving scalar type of any linear algebra object + template struct scalar_type {}; + template struct scalar_type> { using type = T; }; + template struct scalar_type> { using type = T; }; + + // Type returned by the compare(...) function which supports all six comparison operators against 0 + template struct ord { T a,b; }; + template constexpr bool operator == (const ord & o, std::nullptr_t) { return o.a == o.b; } + template constexpr bool operator != (const ord & o, std::nullptr_t) { return !(o.a == o.b); } + template constexpr bool operator < (const ord & o, std::nullptr_t) { return o.a < o.b; } + template constexpr bool operator > (const ord & o, std::nullptr_t) { return o.b < o.a; } + template constexpr bool operator <= (const ord & o, std::nullptr_t) { return !(o.b < o.a); } + template constexpr bool operator >= (const ord & o, std::nullptr_t) { return !(o.a < o.b); } + + // Patterns which can be used with the compare(...) function + template struct any_compare {}; + template struct any_compare,vec> { using type=ord; constexpr ord operator() (const vec & a, const vec & b) const { return ord{a.x,b.x}; } }; + template struct any_compare,vec> { using type=ord; constexpr ord operator() (const vec & a, const vec & b) const { return !(a.x==b.x) ? ord{a.x,b.x} : ord{a.y,b.y}; } }; + template struct any_compare,vec> { using type=ord; constexpr ord operator() (const vec & a, const vec & b) const { return !(a.x==b.x) ? ord{a.x,b.x} : !(a.y==b.y) ? ord{a.y,b.y} : ord{a.z,b.z}; } }; + template struct any_compare,vec> { using type=ord; constexpr ord operator() (const vec & a, const vec & b) const { return !(a.x==b.x) ? ord{a.x,b.x} : !(a.y==b.y) ? ord{a.y,b.y} : !(a.z==b.z) ? ord{a.z,b.z} : ord{a.w,b.w}; } }; + template struct any_compare,mat> { using type=ord; constexpr ord operator() (const mat & a, const mat & b) const { return compare(a.x,b.x); } }; + template struct any_compare,mat> { using type=ord; constexpr ord operator() (const mat & a, const mat & b) const { return a.x!=b.x ? compare(a.x,b.x) : compare(a.y,b.y); } }; + template struct any_compare,mat> { using type=ord; constexpr ord operator() (const mat & a, const mat & b) const { return a.x!=b.x ? compare(a.x,b.x) : a.y!=b.y ? compare(a.y,b.y) : compare(a.z,b.z); } }; + template struct any_compare,mat> { using type=ord; constexpr ord operator() (const mat & a, const mat & b) const { return a.x!=b.x ? compare(a.x,b.x) : a.y!=b.y ? compare(a.y,b.y) : a.z!=b.z ? compare(a.z,b.z) : compare(a.w,b.w); } }; + + // Helper for compile-time index-based access to members of vector and matrix types + template struct getter; + template<> struct getter<0> { template constexpr auto operator() (A & a) const -> decltype(a.x) { return a.x; } }; + template<> struct getter<1> { template constexpr auto operator() (A & a) const -> decltype(a.y) { return a.y; } }; + template<> struct getter<2> { template constexpr auto operator() (A & a) const -> decltype(a.z) { return a.z; } }; + template<> struct getter<3> { template constexpr auto operator() (A & a) const -> decltype(a.w) { return a.w; } }; + + // Stand-in for std::integer_sequence/std::make_integer_sequence + template struct seq {}; + template struct make_seq_impl; + template struct make_seq_impl { using type=seq<>; }; + template struct make_seq_impl { using type=seq; }; + template struct make_seq_impl { using type=seq; }; + template struct make_seq_impl { using type=seq; }; + template struct make_seq_impl { using type=seq; }; + template using make_seq = typename make_seq_impl::type; + template vec constexpr swizzle(const vec & v, seq i) { return {getter{}(v)...}; } + template mat constexpr swizzle(const mat & m, seq i, seq j) { return {swizzle(getter{}(m),i)...}; } + + // SFINAE helpers to determine result of function application + template using ret_t = decltype(std::declval()(std::declval()...)); + + // SFINAE helper which is defined if all provided types are scalars + struct empty {}; + template struct scalars; + template<> struct scalars<> { using type=void; }; + template struct scalars : std::conditional::value, scalars, empty>::type {}; + template using scalars_t = typename scalars::type; + + // Helpers which indicate how apply(F, ...) should be called for various arguments + template struct apply {}; // Patterns which contain only vectors or scalars + template struct apply, vec > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a ) { return {f(getter{}(a) )...}; } }; + template struct apply, vec, vec > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a, const vec & b ) { return {f(getter{}(a), getter{}(b) )...}; } }; + template struct apply, vec, B > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a, B b ) { return {f(getter{}(a), b )...}; } }; + template struct apply, A, vec > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, A a, const vec & b ) { return {f(a, getter{}(b) )...}; } }; + template struct apply, vec, vec, vec> { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a, const vec & b, const vec & c) { return {f(getter{}(a), getter{}(b), getter{}(c))...}; } }; + template struct apply, vec, vec, C > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a, const vec & b, C c) { return {f(getter{}(a), getter{}(b), c )...}; } }; + template struct apply, vec, B, vec> { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a, B b, const vec & c) { return {f(getter{}(a), b, getter{}(c))...}; } }; + template struct apply, vec, B, C > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, const vec & a, B b, C c) { return {f(getter{}(a), b, c )...}; } }; + template struct apply, A, vec, vec> { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, A a, const vec & b, const vec & c) { return {f(a, getter{}(b), getter{}(c))...}; } }; + template struct apply, A, vec, C > { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, A a, const vec & b, C c) { return {f(a, getter{}(b), c )...}; } }; + template struct apply, A, B, vec> { using type=vec,M>; enum {size=M, mm=0}; template static constexpr type impl(seq, F f, A a, B b, const vec & c) { return {f(a, b, getter{}(c))...}; } }; + template struct apply, mat > { using type=mat,M,N>; enum {size=N, mm=0}; template static constexpr type impl(seq, F f, const mat & a ) { return {apply >::impl(make_seq<0,M>{}, f, getter{}(a) )...}; } }; + template struct apply, mat, mat> { using type=mat,M,N>; enum {size=N, mm=1}; template static constexpr type impl(seq, F f, const mat & a, const mat & b) { return {apply, vec>::impl(make_seq<0,M>{}, f, getter{}(a), getter{}(b))...}; } }; + template struct apply, mat, B > { using type=mat,M,N>; enum {size=N, mm=0}; template static constexpr type impl(seq, F f, const mat & a, B b) { return {apply, B >::impl(make_seq<0,M>{}, f, getter{}(a), b )...}; } }; + template struct apply, A, mat> { using type=mat,M,N>; enum {size=N, mm=0}; template static constexpr type impl(seq, F f, A a, const mat & b) { return {apply>::impl(make_seq<0,M>{}, f, a, getter{}(b))...}; } }; + template struct apply, A...> { using type = ret_t; enum {size=0, mm=0}; static constexpr type impl(seq<>, F f, A... a) { return f(a...); } }; + + // Function objects for selecting between alternatives + struct min { template constexpr auto operator() (A a, B b) const -> typename std::remove_reference::type { return a constexpr auto operator() (A a, B b) const -> typename std::remove_reference::type { return a constexpr auto operator() (A a, B b, C c) const -> typename std::remove_reference::type { return a constexpr auto operator() (A a, B b, C c) const -> typename std::remove_reference::type { return a ? b : c; } }; + struct lerp { template constexpr auto operator() (A a, B b, C c) const -> decltype(a*(1-c) + b*c) { return a*(1-c) + b*c; } }; + + // Function objects for applying operators + struct op_pos { template constexpr auto operator() (A a) const -> decltype(+a) { return +a; } }; + struct op_neg { template constexpr auto operator() (A a) const -> decltype(-a) { return -a; } }; + struct op_not { template constexpr auto operator() (A a) const -> decltype(!a) { return !a; } }; + struct op_cmp { template constexpr auto operator() (A a) const -> decltype(~(a)) { return ~a; } }; + struct op_mul { template constexpr auto operator() (A a, B b) const -> decltype(a * b) { return a * b; } }; + struct op_div { template constexpr auto operator() (A a, B b) const -> decltype(a / b) { return a / b; } }; + struct op_mod { template constexpr auto operator() (A a, B b) const -> decltype(a % b) { return a % b; } }; + struct op_add { template constexpr auto operator() (A a, B b) const -> decltype(a + b) { return a + b; } }; + struct op_sub { template constexpr auto operator() (A a, B b) const -> decltype(a - b) { return a - b; } }; + struct op_lsh { template constexpr auto operator() (A a, B b) const -> decltype(a << b) { return a << b; } }; + struct op_rsh { template constexpr auto operator() (A a, B b) const -> decltype(a >> b) { return a >> b; } }; + struct op_lt { template constexpr auto operator() (A a, B b) const -> decltype(a < b) { return a < b; } }; + struct op_gt { template constexpr auto operator() (A a, B b) const -> decltype(a > b) { return a > b; } }; + struct op_le { template constexpr auto operator() (A a, B b) const -> decltype(a <= b) { return a <= b; } }; + struct op_ge { template constexpr auto operator() (A a, B b) const -> decltype(a >= b) { return a >= b; } }; + struct op_eq { template constexpr auto operator() (A a, B b) const -> decltype(a == b) { return a == b; } }; + struct op_ne { template constexpr auto operator() (A a, B b) const -> decltype(a != b) { return a != b; } }; + struct op_int { template constexpr auto operator() (A a, B b) const -> decltype(a & b) { return a & b; } }; + struct op_xor { template constexpr auto operator() (A a, B b) const -> decltype(a ^ b) { return a ^ b; } }; + struct op_un { template constexpr auto operator() (A a, B b) const -> decltype(a | b) { return a | b; } }; + struct op_and { template constexpr auto operator() (A a, B b) const -> decltype(a && b) { return a && b; } }; + struct op_or { template constexpr auto operator() (A a, B b) const -> decltype(a || b) { return a || b; } }; + + // Function objects for applying standard library math functions + struct std_abs { template auto operator() (A a) const -> decltype(std::abs (a)) { return std::abs (a); } }; + struct std_floor { template auto operator() (A a) const -> decltype(std::floor(a)) { return std::floor(a); } }; + struct std_ceil { template auto operator() (A a) const -> decltype(std::ceil (a)) { return std::ceil (a); } }; + struct std_exp { template auto operator() (A a) const -> decltype(std::exp (a)) { return std::exp (a); } }; + struct std_log { template auto operator() (A a) const -> decltype(std::log (a)) { return std::log (a); } }; + struct std_log10 { template auto operator() (A a) const -> decltype(std::log10(a)) { return std::log10(a); } }; + struct std_sqrt { template auto operator() (A a) const -> decltype(std::sqrt (a)) { return std::sqrt (a); } }; + struct std_sin { template auto operator() (A a) const -> decltype(std::sin (a)) { return std::sin (a); } }; + struct std_cos { template auto operator() (A a) const -> decltype(std::cos (a)) { return std::cos (a); } }; + struct std_tan { template auto operator() (A a) const -> decltype(std::tan (a)) { return std::tan (a); } }; + struct std_asin { template auto operator() (A a) const -> decltype(std::asin (a)) { return std::asin (a); } }; + struct std_acos { template auto operator() (A a) const -> decltype(std::acos (a)) { return std::acos (a); } }; + struct std_atan { template auto operator() (A a) const -> decltype(std::atan (a)) { return std::atan (a); } }; + struct std_sinh { template auto operator() (A a) const -> decltype(std::sinh (a)) { return std::sinh (a); } }; + struct std_cosh { template auto operator() (A a) const -> decltype(std::cosh (a)) { return std::cosh (a); } }; + struct std_tanh { template auto operator() (A a) const -> decltype(std::tanh (a)) { return std::tanh (a); } }; + struct std_round { template auto operator() (A a) const -> decltype(std::round(a)) { return std::round(a); } }; + struct std_fmod { template auto operator() (A a, B b) const -> decltype(std::fmod (a, b)) { return std::fmod (a, b); } }; + struct std_pow { template auto operator() (A a, B b) const -> decltype(std::pow (a, b)) { return std::pow (a, b); } }; + struct std_atan2 { template auto operator() (A a, B b) const -> decltype(std::atan2 (a, b)) { return std::atan2 (a, b); } }; + struct std_copysign { template auto operator() (A a, B b) const -> decltype(std::copysign(a, b)) { return std::copysign(a, b); } }; + } + + // Small, fixed-length vector type, consisting of exactly M elements of type T, and presumed to be a column-vector unless otherwise noted + template struct vec + { + T x; + constexpr vec() : x() {} + constexpr vec(const T & x_) : x(x_) {} + // NOTE: vec does NOT have a constructor from pointer, this can conflict with initializing its single element from zero + template + constexpr explicit vec(const vec & v) : vec(static_cast(v.x)) {} + constexpr const T & operator[] (int i) const { return x; } + LINALG_CONSTEXPR14 T & operator[] (int i) { return x; } + + template> constexpr vec(const U & u) : vec(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + template struct vec + { + T x,y; + constexpr vec() : x(), y() {} + constexpr vec(const T & x_, const T & y_) : x(x_), y(y_) {} + constexpr explicit vec(const T & s) : vec(s, s) {} + constexpr explicit vec(const T * p) : vec(p[0], p[1]) {} + template + constexpr explicit vec(const vec & v) : vec(static_cast(v.x), static_cast(v.y)) {} + constexpr const T & operator[] (int i) const { return i==0?x:y; } + LINALG_CONSTEXPR14 T & operator[] (int i) { return i==0?x:y; } + + template> constexpr vec(const U & u) : vec(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + template struct vec + { + T x,y,z; + constexpr vec() : x(), y(), z() {} + constexpr vec(const T & x_, const T & y_, + const T & z_) : x(x_), y(y_), z(z_) {} + constexpr vec(const vec & xy, + const T & z_) : vec(xy.x, xy.y, z_) {} + constexpr explicit vec(const T & s) : vec(s, s, s) {} + constexpr explicit vec(const T * p) : vec(p[0], p[1], p[2]) {} + template + constexpr explicit vec(const vec & v) : vec(static_cast(v.x), static_cast(v.y), static_cast(v.z)) {} + constexpr const T & operator[] (int i) const { return i==0?x:i==1?y:z; } + LINALG_CONSTEXPR14 T & operator[] (int i) { return i==0?x:i==1?y:z; } + constexpr const vec & xy() const { return *reinterpret_cast *>(this); } + vec & xy() { return *reinterpret_cast *>(this); } + + template> constexpr vec(const U & u) : vec(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + template struct vec + { + T x,y,z,w; + constexpr vec() : x(), y(), z(), w() {} + constexpr vec(const T & x_, const T & y_, + const T & z_, const T & w_) : x(x_), y(y_), z(z_), w(w_) {} + constexpr vec(const vec & xy, + const T & z_, const T & w_) : vec(xy.x, xy.y, z_, w_) {} + constexpr vec(const vec & xyz, + const T & w_) : vec(xyz.x, xyz.y, xyz.z, w_) {} + constexpr explicit vec(const T & s) : vec(s, s, s, s) {} + constexpr explicit vec(const T * p) : vec(p[0], p[1], p[2], p[3]) {} + template + constexpr explicit vec(const vec & v) : vec(static_cast(v.x), static_cast(v.y), static_cast(v.z), static_cast(v.w)) {} + constexpr const T & operator[] (int i) const { return i==0?x:i==1?y:i==2?z:w; } + LINALG_CONSTEXPR14 T & operator[] (int i) { return i==0?x:i==1?y:i==2?z:w; } + constexpr const vec & xy() const { return *reinterpret_cast *>(this); } + constexpr const vec & xyz() const { return *reinterpret_cast *>(this); } + vec & xy() { return *reinterpret_cast *>(this); } + vec & xyz() { return *reinterpret_cast *>(this); } + + template> constexpr vec(const U & u) : vec(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + + // Small, fixed-size matrix type, consisting of exactly M rows and N columns of type T, stored in column-major order. + template struct mat + { + typedef vec V; + V x; + constexpr mat() : x() {} + constexpr mat(const V & x_) : x(x_) {} + constexpr explicit mat(const T & s) : x(s) {} + constexpr explicit mat(const T * p) : x(p+M*0) {} + template + constexpr explicit mat(const mat & m) : mat(V(m.x)) {} + constexpr vec row(int i) const { return {x[i]}; } + constexpr const V & operator[] (int j) const { return x; } + LINALG_CONSTEXPR14 V & operator[] (int j) { return x; } + + template> constexpr mat(const U & u) : mat(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + template struct mat + { + typedef vec V; + V x,y; + constexpr mat() : x(), y() {} + constexpr mat(const V & x_, const V & y_) : x(x_), y(y_) {} + constexpr explicit mat(const T & s) : x(s), y(s) {} + constexpr explicit mat(const T * p) : x(p+M*0), y(p+M*1) {} + template + constexpr explicit mat(const mat & m) : mat(V(m.x), V(m.y)) {} + constexpr vec row(int i) const { return {x[i], y[i]}; } + constexpr const V & operator[] (int j) const { return j==0?x:y; } + LINALG_CONSTEXPR14 V & operator[] (int j) { return j==0?x:y; } + + template> constexpr mat(const U & u) : mat(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + template struct mat + { + typedef vec V; + V x,y,z; + constexpr mat() : x(), y(), z() {} + constexpr mat(const V & x_, const V & y_, + const V & z_) : x(x_), y(y_), z(z_) {} + constexpr explicit mat(const T & s) : x(s), y(s), z(s) {} + constexpr explicit mat(const T * p) : x(p+M*0), y(p+M*1), z(p+M*2) {} + template + constexpr explicit mat(const mat & m) : mat(V(m.x), V(m.y), V(m.z)) {} + constexpr vec row(int i) const { return {x[i], y[i], z[i]}; } + constexpr const V & operator[] (int j) const { return j==0?x:j==1?y:z; } + LINALG_CONSTEXPR14 V & operator[] (int j) { return j==0?x:j==1?y:z; } + + template> constexpr mat(const U & u) : mat(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + template struct mat + { + typedef vec V; + V x,y,z,w; + constexpr mat() : x(), y(), z(), w() {} + constexpr mat(const V & x_, const V & y_, + const V & z_, const V & w_) : x(x_), y(y_), z(z_), w(w_) {} + constexpr explicit mat(const T & s) : x(s), y(s), z(s), w(s) {} + constexpr explicit mat(const T * p) : x(p+M*0), y(p+M*1), z(p+M*2), w(p+M*3) {} + template + constexpr explicit mat(const mat & m) : mat(V(m.x), V(m.y), V(m.z), V(m.w)) {} + constexpr vec row(int i) const { return {x[i], y[i], z[i], w[i]}; } + constexpr const V & operator[] (int j) const { return j==0?x:j==1?y:j==2?z:w; } + LINALG_CONSTEXPR14 V & operator[] (int j) { return j==0?x:j==1?y:j==2?z:w; } + + template> constexpr mat(const U & u) : mat(converter{}(u)) {} + template> constexpr operator U () const { return converter{}(*this); } + }; + + // Define a type which will convert to the multiplicative identity of any square matrix + struct identity_t { constexpr explicit identity_t(int) {} }; + template struct converter, identity_t> { constexpr mat operator() (identity_t) const { return {vec{1}}; } }; + template struct converter, identity_t> { constexpr mat operator() (identity_t) const { return {{1,0},{0,1}}; } }; + template struct converter, identity_t> { constexpr mat operator() (identity_t) const { return {{1,0,0},{0,1,0},{0,0,1}}; } }; + template struct converter, identity_t> { constexpr mat operator() (identity_t) const { return {{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}}; } }; + constexpr identity_t identity {1}; + + // Produce a scalar by applying f(A,B) -> A to adjacent pairs of elements from a vec/mat in left-to-right/column-major order (matching the associativity of arithmetic and logical operators) + template constexpr A fold(F f, A a, const vec & b) { return f(a, b.x); } + template constexpr A fold(F f, A a, const vec & b) { return f(f(a, b.x), b.y); } + template constexpr A fold(F f, A a, const vec & b) { return f(f(f(a, b.x), b.y), b.z); } + template constexpr A fold(F f, A a, const vec & b) { return f(f(f(f(a, b.x), b.y), b.z), b.w); } + template constexpr A fold(F f, A a, const mat & b) { return fold(f, a, b.x); } + template constexpr A fold(F f, A a, const mat & b) { return fold(f, fold(f, a, b.x), b.y); } + template constexpr A fold(F f, A a, const mat & b) { return fold(f, fold(f, fold(f, a, b.x), b.y), b.z); } + template constexpr A fold(F f, A a, const mat & b) { return fold(f, fold(f, fold(f, fold(f, a, b.x), b.y), b.z), b.w); } + + // Type aliases for the result of calling apply(...) with various arguments, can be used with return type SFINAE to constrian overload sets + template using apply_t = typename detail::apply::type; + template using mm_apply_t = typename std::enable_if::mm, apply_t>::type; + template using no_mm_apply_t = typename std::enable_if::mm, apply_t>::type; + template using scalar_t = typename detail::scalar_type::type; // Underlying scalar type when performing elementwise operations + + // apply(f,...) applies the provided function in an elementwise fashion to its arguments, producing an object of the same dimensions + template constexpr apply_t apply(F func, const A & ... args) { return detail::apply::impl(detail::make_seq<0,detail::apply::size>{}, func, args...); } + + // map(a,f) is equivalent to apply(f,a) + template constexpr apply_t map(const A & a, F func) { return apply(func, a); } + + // zip(a,b,f) is equivalent to apply(f,a,b) + template constexpr apply_t zip(const A & a, const B & b, F func) { return apply(func, a, b); } + + // Relational operators are defined to compare the elements of two vectors or matrices lexicographically, in column-major order + template constexpr typename detail::any_compare::type compare(const A & a, const B & b) { return detail::any_compare()(a,b); } + template constexpr auto operator == (const A & a, const B & b) -> decltype(compare(a,b) == 0) { return compare(a,b) == 0; } + template constexpr auto operator != (const A & a, const B & b) -> decltype(compare(a,b) != 0) { return compare(a,b) != 0; } + template constexpr auto operator < (const A & a, const B & b) -> decltype(compare(a,b) < 0) { return compare(a,b) < 0; } + template constexpr auto operator > (const A & a, const B & b) -> decltype(compare(a,b) > 0) { return compare(a,b) > 0; } + template constexpr auto operator <= (const A & a, const B & b) -> decltype(compare(a,b) <= 0) { return compare(a,b) <= 0; } + template constexpr auto operator >= (const A & a, const B & b) -> decltype(compare(a,b) >= 0) { return compare(a,b) >= 0; } + + // Functions for coalescing scalar values + template constexpr bool any (const A & a) { return fold(detail::op_or{}, false, a); } + template constexpr bool all (const A & a) { return fold(detail::op_and{}, true, a); } + template constexpr scalar_t sum (const A & a) { return fold(detail::op_add{}, scalar_t(0), a); } + template constexpr scalar_t product(const A & a) { return fold(detail::op_mul{}, scalar_t(1), a); } + template constexpr scalar_t minelem(const A & a) { return fold(detail::min{}, a.x, a); } + template constexpr scalar_t maxelem(const A & a) { return fold(detail::max{}, a.x, a); } + template int argmin(const vec & a) { int j=0; for(int i=1; i int argmax(const vec & a) { int j=0; for(int i=1; i a[j]) j = i; return j; } + + // Unary operators are defined component-wise for linalg types + template constexpr apply_t operator + (const A & a) { return apply(detail::op_pos{}, a); } + template constexpr apply_t operator - (const A & a) { return apply(detail::op_neg{}, a); } + template constexpr apply_t operator ~ (const A & a) { return apply(detail::op_cmp{}, a); } + template constexpr apply_t operator ! (const A & a) { return apply(detail::op_not{}, a); } + + // Binary operators are defined component-wise for linalg types, EXCEPT for `operator *` + template constexpr apply_t operator + (const A & a, const B & b) { return apply(detail::op_add{}, a, b); } + template constexpr apply_t operator - (const A & a, const B & b) { return apply(detail::op_sub{}, a, b); } + template constexpr apply_t cmul (const A & a, const B & b) { return apply(detail::op_mul{}, a, b); } + template constexpr apply_t operator / (const A & a, const B & b) { return apply(detail::op_div{}, a, b); } + template constexpr apply_t operator % (const A & a, const B & b) { return apply(detail::op_mod{}, a, b); } + template constexpr apply_t operator | (const A & a, const B & b) { return apply(detail::op_un{}, a, b); } + template constexpr apply_t operator ^ (const A & a, const B & b) { return apply(detail::op_xor{}, a, b); } + template constexpr apply_t operator & (const A & a, const B & b) { return apply(detail::op_int{}, a, b); } + template constexpr apply_t operator << (const A & a, const B & b) { return apply(detail::op_lsh{}, a, b); } + template constexpr apply_t operator >> (const A & a, const B & b) { return apply(detail::op_rsh{}, a, b); } + + // Binary `operator *` was originally defined component-wise for all patterns, in a fashion consistent with the other operators. However, + // this was one of the most frequent sources of confusion among new users of this library, with the binary `operator *` being used accidentally + // by users who INTENDED the semantics of the algebraic matrix product, but RECEIVED the semantics of the Hadamard product. While there is + // precedent within the HLSL, Fortran, R, APL, J, and Mathematica programming languages for `operator *` having the semantics of the Hadamard + // product between matrices, it is counterintuitive to users of GLSL, Eigen, and many other languages and libraries that chose matrix product + // semantics for `operator *`. + // + // For these reasons, binary `operator *` is now DEPRECATED between pairs of matrices. Users may call `cmul(...)` for component-wise multiplication, + // or `mul(...)` for matrix multiplication. Binary `operator *` continues to be available for vector * vector, vector * scalar, matrix * scalar, etc. + template constexpr no_mm_apply_t operator * (const A & a, const B & b) { return cmul(a,b); } + #ifndef LINALG_FORWARD_COMPATIBLE + template [[deprecated("`operator *` between pairs of matrices is deprecated. See the source text for details.")]] constexpr mm_apply_t operator * (const A & a, const B & b) { return cmul(a,b); } + #endif + + // Binary assignment operators a $= b is always defined as though it were explicitly written a = a $ b + template constexpr auto operator += (A & a, const B & b) -> decltype(a = a + b) { return a = a + b; } + template constexpr auto operator -= (A & a, const B & b) -> decltype(a = a - b) { return a = a - b; } + template constexpr auto operator *= (A & a, const B & b) -> decltype(a = a * b) { return a = a * b; } + template constexpr auto operator /= (A & a, const B & b) -> decltype(a = a / b) { return a = a / b; } + template constexpr auto operator %= (A & a, const B & b) -> decltype(a = a % b) { return a = a % b; } + template constexpr auto operator |= (A & a, const B & b) -> decltype(a = a | b) { return a = a | b; } + template constexpr auto operator ^= (A & a, const B & b) -> decltype(a = a ^ b) { return a = a ^ b; } + template constexpr auto operator &= (A & a, const B & b) -> decltype(a = a & b) { return a = a & b; } + template constexpr auto operator <<= (A & a, const B & b) -> decltype(a = a << b) { return a = a << b; } + template constexpr auto operator >>= (A & a, const B & b) -> decltype(a = a >> b) { return a = a >> b; } + + // Swizzles and subobjects + template constexpr vec swizzle(const vec & a) { return {detail::getter{}(a)...}; } + template constexpr vec subvec (const vec & a) { return detail::swizzle(a, detail::make_seq{}); } + template constexpr mat submat (const mat & a) { return detail::swizzle(a, detail::make_seq{}, detail::make_seq{}); } + + // Component-wise standard library math functions + template apply_t abs (const A & a) { return apply(detail::std_abs{}, a); } + template apply_t floor(const A & a) { return apply(detail::std_floor{}, a); } + template apply_t ceil (const A & a) { return apply(detail::std_ceil{}, a); } + template apply_t exp (const A & a) { return apply(detail::std_exp{}, a); } + template apply_t log (const A & a) { return apply(detail::std_log{}, a); } + template apply_t log10(const A & a) { return apply(detail::std_log10{}, a); } + template apply_t sqrt (const A & a) { return apply(detail::std_sqrt{}, a); } + template apply_t sin (const A & a) { return apply(detail::std_sin{}, a); } + template apply_t cos (const A & a) { return apply(detail::std_cos{}, a); } + template apply_t tan (const A & a) { return apply(detail::std_tan{}, a); } + template apply_t asin (const A & a) { return apply(detail::std_asin{}, a); } + template apply_t acos (const A & a) { return apply(detail::std_acos{}, a); } + template apply_t atan (const A & a) { return apply(detail::std_atan{}, a); } + template apply_t sinh (const A & a) { return apply(detail::std_sinh{}, a); } + template apply_t cosh (const A & a) { return apply(detail::std_cosh{}, a); } + template apply_t tanh (const A & a) { return apply(detail::std_tanh{}, a); } + template apply_t round(const A & a) { return apply(detail::std_round{}, a); } + + template apply_t fmod (const A & a, const B & b) { return apply(detail::std_fmod{}, a, b); } + template apply_t pow (const A & a, const B & b) { return apply(detail::std_pow{}, a, b); } + template apply_t atan2 (const A & a, const B & b) { return apply(detail::std_atan2{}, a, b); } + template apply_t copysign(const A & a, const B & b) { return apply(detail::std_copysign{}, a, b); } + + // Component-wise relational functions on vectors + template constexpr apply_t equal (const A & a, const B & b) { return apply(detail::op_eq{}, a, b); } + template constexpr apply_t nequal (const A & a, const B & b) { return apply(detail::op_ne{}, a, b); } + template constexpr apply_t less (const A & a, const B & b) { return apply(detail::op_lt{}, a, b); } + template constexpr apply_t greater(const A & a, const B & b) { return apply(detail::op_gt{}, a, b); } + template constexpr apply_t lequal (const A & a, const B & b) { return apply(detail::op_le{}, a, b); } + template constexpr apply_t gequal (const A & a, const B & b) { return apply(detail::op_ge{}, a, b); } + + // Component-wise selection functions on vectors + template constexpr apply_t min(const A & a, const B & b) { return apply(detail::min{}, a, b); } + template constexpr apply_t max(const A & a, const B & b) { return apply(detail::max{}, a, b); } + template constexpr apply_t clamp (const X & x, const L & l, const H & h) { return apply(detail::clamp{}, x, l, h); } + template constexpr apply_t select(const P & p, const A & a, const B & b) { return apply(detail::select{}, p, a, b); } + template constexpr apply_t lerp (const A & a, const B & b, const T & t) { return apply(detail::lerp{}, a, b, t); } + + // Support for vector algebra + template constexpr T cross (const vec & a, const vec & b) { return a.x*b.y-a.y*b.x; } + template constexpr vec cross (T a, const vec & b) { return {-a*b.y, a*b.x}; } + template constexpr vec cross (const vec & a, T b) { return {a.y*b, -a.x*b}; } + template constexpr vec cross (const vec & a, const vec & b) { return {a.y*b.z-a.z*b.y, a.z*b.x-a.x*b.z, a.x*b.y-a.y*b.x}; } + template constexpr T dot (const vec & a, const vec & b) { return sum(a*b); } + template constexpr T length2 (const vec & a) { return dot(a,a); } + template T length (const vec & a) { return std::sqrt(length2(a)); } + template vec normalize(const vec & a) { return a / length(a); } + template constexpr T distance2(const vec & a, const vec & b) { return length2(b-a); } + template T distance (const vec & a, const vec & b) { return length(b-a); } + template T uangle (const vec & a, const vec & b) { T d=dot(a,b); return d > 1 ? 0 : std::acos(d < -1 ? -1 : d); } + template T angle (const vec & a, const vec & b) { return uangle(normalize(a), normalize(b)); } + template vec rot (T a, const vec & v) { const T s = std::sin(a), c = std::cos(a); return {v.x*c - v.y*s, v.x*s + v.y*c}; } + template vec nlerp (const vec & a, const vec & b, T t) { return normalize(lerp(a,b,t)); } + template vec slerp (const vec & a, const vec & b, T t) { T th=uangle(a,b); return th == 0 ? a : a*(std::sin(th*(1-t))/std::sin(th)) + b*(std::sin(th*t)/std::sin(th)); } + + // Support for quaternion algebra using 4D vectors, representing xi + yj + zk + w + template constexpr vec qconj(const vec & q) { return {-q.x,-q.y,-q.z,q.w}; } + template vec qinv (const vec & q) { return qconj(q)/length2(q); } + template vec qexp (const vec & q) { const auto v = q.xyz(); const auto vv = length(v); return std::exp(q.w) * vec{v * (vv > 0 ? std::sin(vv)/vv : 0), std::cos(vv)}; } + template vec qlog (const vec & q) { const auto v = q.xyz(); const auto vv = length(v), qq = length(q); return {v * (vv > 0 ? std::acos(q.w/qq)/vv : 0), std::log(qq)}; } + template vec qpow (const vec & q, const T & p) { const auto v = q.xyz(); const auto vv = length(v), qq = length(q), th = std::acos(q.w/qq); return std::pow(qq,p)*vec{v * (vv > 0 ? std::sin(p*th)/vv : 0), std::cos(p*th)}; } + template constexpr vec qmul (const vec & a, const vec & b) { return {a.x*b.w+a.w*b.x+a.y*b.z-a.z*b.y, a.y*b.w+a.w*b.y+a.z*b.x-a.x*b.z, a.z*b.w+a.w*b.z+a.x*b.y-a.y*b.x, a.w*b.w-a.x*b.x-a.y*b.y-a.z*b.z}; } + template constexpr vec qmul(const vec & a, R... r) { return qmul(a, qmul(r...)); } + + // Support for 3D spatial rotations using quaternions, via qmul(qmul(q, v), qconj(q)) + template constexpr vec qxdir (const vec & q) { return {q.w*q.w+q.x*q.x-q.y*q.y-q.z*q.z, (q.x*q.y+q.z*q.w)*2, (q.z*q.x-q.y*q.w)*2}; } + template constexpr vec qydir (const vec & q) { return {(q.x*q.y-q.z*q.w)*2, q.w*q.w-q.x*q.x+q.y*q.y-q.z*q.z, (q.y*q.z+q.x*q.w)*2}; } + template constexpr vec qzdir (const vec & q) { return {(q.z*q.x+q.y*q.w)*2, (q.y*q.z-q.x*q.w)*2, q.w*q.w-q.x*q.x-q.y*q.y+q.z*q.z}; } + template constexpr mat qmat (const vec & q) { return {qxdir(q), qydir(q), qzdir(q)}; } + template constexpr vec qrot (const vec & q, const vec & v) { return qxdir(q)*v.x + qydir(q)*v.y + qzdir(q)*v.z; } + template T qangle(const vec & q) { return std::atan2(length(q.xyz()), q.w)*2; } + template vec qaxis (const vec & q) { return normalize(q.xyz()); } + template vec qnlerp(const vec & a, const vec & b, T t) { return nlerp(a, dot(a,b) < 0 ? -b : b, t); } + template vec qslerp(const vec & a, const vec & b, T t) { return slerp(a, dot(a,b) < 0 ? -b : b, t); } + + // Support for matrix algebra + template constexpr vec mul(const mat & a, const vec & b) { return a.x*b.x; } + template constexpr vec mul(const mat & a, const vec & b) { return a.x*b.x + a.y*b.y; } + template constexpr vec mul(const mat & a, const vec & b) { return a.x*b.x + a.y*b.y + a.z*b.z; } + template constexpr vec mul(const mat & a, const vec & b) { return a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w; } + template constexpr mat mul(const mat & a, const mat & b) { return {mul(a,b.x)}; } + template constexpr mat mul(const mat & a, const mat & b) { return {mul(a,b.x), mul(a,b.y)}; } + template constexpr mat mul(const mat & a, const mat & b) { return {mul(a,b.x), mul(a,b.y), mul(a,b.z)}; } + template constexpr mat mul(const mat & a, const mat & b) { return {mul(a,b.x), mul(a,b.y), mul(a,b.z), mul(a,b.w)}; } + template constexpr vec mul(const mat & a, const mat & b, const vec & c) { return mul(mul(a,b),c); } + template constexpr mat mul(const mat & a, const mat & b, const mat & c) { return mul(mul(a,b),c); } + template constexpr vec mul(const mat & a, const mat & b, const mat & c, const vec & d) { return mul(mul(a,b,c),d); } + template constexpr mat mul(const mat & a, const mat & b, const mat & c, const mat & d) { return mul(mul(a,b,c),d); } + template constexpr mat outerprod(const vec & a, const vec & b) { return {a*b.x}; } + template constexpr mat outerprod(const vec & a, const vec & b) { return {a*b.x, a*b.y}; } + template constexpr mat outerprod(const vec & a, const vec & b) { return {a*b.x, a*b.y, a*b.z}; } + template constexpr mat outerprod(const vec & a, const vec & b) { return {a*b.x, a*b.y, a*b.z, a*b.w}; } + template constexpr vec diagonal(const mat & a) { return {a.x.x}; } + template constexpr vec diagonal(const mat & a) { return {a.x.x, a.y.y}; } + template constexpr vec diagonal(const mat & a) { return {a.x.x, a.y.y, a.z.z}; } + template constexpr vec diagonal(const mat & a) { return {a.x.x, a.y.y, a.z.z, a.w.w}; } + template constexpr T trace(const mat & a) { return sum(diagonal(a)); } + template constexpr mat transpose(const mat & m) { return {m.row(0)}; } + template constexpr mat transpose(const mat & m) { return {m.row(0), m.row(1)}; } + template constexpr mat transpose(const mat & m) { return {m.row(0), m.row(1), m.row(2)}; } + template constexpr mat transpose(const mat & m) { return {m.row(0), m.row(1), m.row(2), m.row(3)}; } + template constexpr mat transpose(const vec & m) { return transpose(mat(m)); } + template constexpr mat adjugate(const mat & a) { return {vec{1}}; } + template constexpr mat adjugate(const mat & a) { return {{a.y.y, -a.x.y}, {-a.y.x, a.x.x}}; } + template constexpr mat adjugate(const mat & a); + template constexpr mat adjugate(const mat & a); + template constexpr mat comatrix(const mat & a) { return transpose(adjugate(a)); } + template constexpr T determinant(const mat & a) { return a.x.x; } + template constexpr T determinant(const mat & a) { return a.x.x*a.y.y - a.x.y*a.y.x; } + template constexpr T determinant(const mat & a) { return a.x.x*(a.y.y*a.z.z - a.z.y*a.y.z) + a.x.y*(a.y.z*a.z.x - a.z.z*a.y.x) + a.x.z*(a.y.x*a.z.y - a.z.x*a.y.y); } + template constexpr T determinant(const mat & a); + template constexpr mat inverse(const mat & a) { return adjugate(a)/determinant(a); } + + // Vectors and matrices can be used as ranges + template T * begin( vec & a) { return &a.x; } + template const T * begin(const vec & a) { return &a.x; } + template T * end ( vec & a) { return begin(a) + M; } + template const T * end (const vec & a) { return begin(a) + M; } + template vec * begin( mat & a) { return &a.x; } + template const vec * begin(const mat & a) { return &a.x; } + template vec * end ( mat & a) { return begin(a) + N; } + template const vec * end (const mat & a) { return begin(a) + N; } + + // Factory functions for 3D spatial transformations (will possibly be removed or changed in a future version) + enum fwd_axis { neg_z, pos_z }; // Should projection matrices be generated assuming forward is {0,0,-1} or {0,0,1} + enum z_range { neg_one_to_one, zero_to_one }; // Should projection matrices map z into the range of [-1,1] or [0,1]? + template vec rotation_quat (const vec & axis, T angle) { return {axis*std::sin(angle/2), std::cos(angle/2)}; } + template vec rotation_quat (const mat & m); + template mat translation_matrix(const vec & translation) { return {{1,0,0,0},{0,1,0,0},{0,0,1,0},{translation,1}}; } + template mat rotation_matrix (const vec & rotation) { return {{qxdir(rotation),0}, {qydir(rotation),0}, {qzdir(rotation),0}, {0,0,0,1}}; } + template mat scaling_matrix (const vec & scaling) { return {{scaling.x,0,0,0}, {0,scaling.y,0,0}, {0,0,scaling.z,0}, {0,0,0,1}}; } + template mat pose_matrix (const vec & q, const vec & p) { return {{qxdir(q),0}, {qydir(q),0}, {qzdir(q),0}, {p,1}}; } + template mat lookat_matrix (const vec & eye, const vec & center, const vec & view_y_dir, fwd_axis fwd = neg_z); + template mat frustum_matrix (T x0, T x1, T y0, T y1, T n, T f, fwd_axis a = neg_z, z_range z = neg_one_to_one); + template mat perspective_matrix(T fovy, T aspect, T n, T f, fwd_axis a = neg_z, z_range z = neg_one_to_one) { T y = n*std::tan(fovy / 2), x = y*aspect; return frustum_matrix(-x, x, -y, y, n, f, a, z); } + + // Provide implicit conversion between linalg::vec and std::array + template struct converter, std::array> { vec operator() (const std::array & a) const { return {a[0]}; } }; + template struct converter, std::array> { vec operator() (const std::array & a) const { return {a[0], a[1]}; } }; + template struct converter, std::array> { vec operator() (const std::array & a) const { return {a[0], a[1], a[2]}; } }; + template struct converter, std::array> { vec operator() (const std::array & a) const { return {a[0], a[1], a[2], a[3]}; } }; + + template struct converter, vec> { std::array operator() (const vec & a) const { return {a[0]}; } }; + template struct converter, vec> { std::array operator() (const vec & a) const { return {a[0], a[1]}; } }; + template struct converter, vec> { std::array operator() (const vec & a) const { return {a[0], a[1], a[2]}; } }; + template struct converter, vec> { std::array operator() (const vec & a) const { return {a[0], a[1], a[2], a[3]}; } }; + + // Provide typedefs for common element types and vector/matrix sizes + namespace aliases + { + typedef vec bool1; typedef vec byte1; typedef vec short1; typedef vec ushort1; + typedef vec bool2; typedef vec byte2; typedef vec short2; typedef vec ushort2; + typedef vec bool3; typedef vec byte3; typedef vec short3; typedef vec ushort3; + typedef vec bool4; typedef vec byte4; typedef vec short4; typedef vec ushort4; + typedef vec int1; typedef vec uint1; typedef vec float1; typedef vec double1; + typedef vec int2; typedef vec uint2; typedef vec float2; typedef vec double2; + typedef vec int3; typedef vec uint3; typedef vec float3; typedef vec double3; + typedef vec int4; typedef vec uint4; typedef vec float4; typedef vec double4; + typedef mat bool1x1; typedef mat int1x1; typedef mat float1x1; typedef mat double1x1; + typedef mat bool1x2; typedef mat int1x2; typedef mat float1x2; typedef mat double1x2; + typedef mat bool1x3; typedef mat int1x3; typedef mat float1x3; typedef mat double1x3; + typedef mat bool1x4; typedef mat int1x4; typedef mat float1x4; typedef mat double1x4; + typedef mat bool2x1; typedef mat int2x1; typedef mat float2x1; typedef mat double2x1; + typedef mat bool2x2; typedef mat int2x2; typedef mat float2x2; typedef mat double2x2; + typedef mat bool2x3; typedef mat int2x3; typedef mat float2x3; typedef mat double2x3; + typedef mat bool2x4; typedef mat int2x4; typedef mat float2x4; typedef mat double2x4; + typedef mat bool3x1; typedef mat int3x1; typedef mat float3x1; typedef mat double3x1; + typedef mat bool3x2; typedef mat int3x2; typedef mat float3x2; typedef mat double3x2; + typedef mat bool3x3; typedef mat int3x3; typedef mat float3x3; typedef mat double3x3; + typedef mat bool3x4; typedef mat int3x4; typedef mat float3x4; typedef mat double3x4; + typedef mat bool4x1; typedef mat int4x1; typedef mat float4x1; typedef mat double4x1; + typedef mat bool4x2; typedef mat int4x2; typedef mat float4x2; typedef mat double4x2; + typedef mat bool4x3; typedef mat int4x3; typedef mat float4x3; typedef mat double4x3; + typedef mat bool4x4; typedef mat int4x4; typedef mat float4x4; typedef mat double4x4; + } + + // Provide output streaming operators, writing something that resembles an aggregate literal that could be used to construct the specified value + namespace ostream_overloads + { + template std::basic_ostream & operator << (std::basic_ostream & out, const vec & v) { return out << '{' << v[0] << '}'; } + template std::basic_ostream & operator << (std::basic_ostream & out, const vec & v) { return out << '{' << v[0] << ',' << v[1] << '}'; } + template std::basic_ostream & operator << (std::basic_ostream & out, const vec & v) { return out << '{' << v[0] << ',' << v[1] << ',' << v[2] << '}'; } + template std::basic_ostream & operator << (std::basic_ostream & out, const vec & v) { return out << '{' << v[0] << ',' << v[1] << ',' << v[2] << ',' << v[3] << '}'; } + + template std::basic_ostream & operator << (std::basic_ostream & out, const mat & m) { return out << '{' << m[0] << '}'; } + template std::basic_ostream & operator << (std::basic_ostream & out, const mat & m) { return out << '{' << m[0] << ',' << m[1] << '}'; } + template std::basic_ostream & operator << (std::basic_ostream & out, const mat & m) { return out << '{' << m[0] << ',' << m[1] << ',' << m[2] << '}'; } + template std::basic_ostream & operator << (std::basic_ostream & out, const mat & m) { return out << '{' << m[0] << ',' << m[1] << ',' << m[2] << ',' << m[3] << '}'; } + } +} + +namespace std +{ + // Provide specializations for std::hash<...> with linalg types + template struct hash> { std::size_t operator()(const linalg::vec & v) const { std::hash h; return h(v.x); } }; + template struct hash> { std::size_t operator()(const linalg::vec & v) const { std::hash h; return h(v.x) ^ (h(v.y) << 1); } }; + template struct hash> { std::size_t operator()(const linalg::vec & v) const { std::hash h; return h(v.x) ^ (h(v.y) << 1) ^ (h(v.z) << 2); } }; + template struct hash> { std::size_t operator()(const linalg::vec & v) const { std::hash h; return h(v.x) ^ (h(v.y) << 1) ^ (h(v.z) << 2) ^ (h(v.w) << 3); } }; + + template struct hash> { std::size_t operator()(const linalg::mat & v) const { std::hash> h; return h(v.x); } }; + template struct hash> { std::size_t operator()(const linalg::mat & v) const { std::hash> h; return h(v.x) ^ (h(v.y) << M); } }; + template struct hash> { std::size_t operator()(const linalg::mat & v) const { std::hash> h; return h(v.x) ^ (h(v.y) << M) ^ (h(v.z) << (M*2)); } }; + template struct hash> { std::size_t operator()(const linalg::mat & v) const { std::hash> h; return h(v.x) ^ (h(v.y) << M) ^ (h(v.z) << (M*2)) ^ (h(v.w) << (M*3)); } }; +} + +// Definitions of functions too long to be defined inline +template constexpr linalg::mat linalg::adjugate(const mat & a) +{ + return {{a.y.y*a.z.z - a.z.y*a.y.z, a.z.y*a.x.z - a.x.y*a.z.z, a.x.y*a.y.z - a.y.y*a.x.z}, + {a.y.z*a.z.x - a.z.z*a.y.x, a.z.z*a.x.x - a.x.z*a.z.x, a.x.z*a.y.x - a.y.z*a.x.x}, + {a.y.x*a.z.y - a.z.x*a.y.y, a.z.x*a.x.y - a.x.x*a.z.y, a.x.x*a.y.y - a.y.x*a.x.y}}; +} + +template constexpr linalg::mat linalg::adjugate(const mat & a) +{ + return {{a.y.y*a.z.z*a.w.w + a.w.y*a.y.z*a.z.w + a.z.y*a.w.z*a.y.w - a.y.y*a.w.z*a.z.w - a.z.y*a.y.z*a.w.w - a.w.y*a.z.z*a.y.w, + a.x.y*a.w.z*a.z.w + a.z.y*a.x.z*a.w.w + a.w.y*a.z.z*a.x.w - a.w.y*a.x.z*a.z.w - a.z.y*a.w.z*a.x.w - a.x.y*a.z.z*a.w.w, + a.x.y*a.y.z*a.w.w + a.w.y*a.x.z*a.y.w + a.y.y*a.w.z*a.x.w - a.x.y*a.w.z*a.y.w - a.y.y*a.x.z*a.w.w - a.w.y*a.y.z*a.x.w, + a.x.y*a.z.z*a.y.w + a.y.y*a.x.z*a.z.w + a.z.y*a.y.z*a.x.w - a.x.y*a.y.z*a.z.w - a.z.y*a.x.z*a.y.w - a.y.y*a.z.z*a.x.w}, + {a.y.z*a.w.w*a.z.x + a.z.z*a.y.w*a.w.x + a.w.z*a.z.w*a.y.x - a.y.z*a.z.w*a.w.x - a.w.z*a.y.w*a.z.x - a.z.z*a.w.w*a.y.x, + a.x.z*a.z.w*a.w.x + a.w.z*a.x.w*a.z.x + a.z.z*a.w.w*a.x.x - a.x.z*a.w.w*a.z.x - a.z.z*a.x.w*a.w.x - a.w.z*a.z.w*a.x.x, + a.x.z*a.w.w*a.y.x + a.y.z*a.x.w*a.w.x + a.w.z*a.y.w*a.x.x - a.x.z*a.y.w*a.w.x - a.w.z*a.x.w*a.y.x - a.y.z*a.w.w*a.x.x, + a.x.z*a.y.w*a.z.x + a.z.z*a.x.w*a.y.x + a.y.z*a.z.w*a.x.x - a.x.z*a.z.w*a.y.x - a.y.z*a.x.w*a.z.x - a.z.z*a.y.w*a.x.x}, + {a.y.w*a.z.x*a.w.y + a.w.w*a.y.x*a.z.y + a.z.w*a.w.x*a.y.y - a.y.w*a.w.x*a.z.y - a.z.w*a.y.x*a.w.y - a.w.w*a.z.x*a.y.y, + a.x.w*a.w.x*a.z.y + a.z.w*a.x.x*a.w.y + a.w.w*a.z.x*a.x.y - a.x.w*a.z.x*a.w.y - a.w.w*a.x.x*a.z.y - a.z.w*a.w.x*a.x.y, + a.x.w*a.y.x*a.w.y + a.w.w*a.x.x*a.y.y + a.y.w*a.w.x*a.x.y - a.x.w*a.w.x*a.y.y - a.y.w*a.x.x*a.w.y - a.w.w*a.y.x*a.x.y, + a.x.w*a.z.x*a.y.y + a.y.w*a.x.x*a.z.y + a.z.w*a.y.x*a.x.y - a.x.w*a.y.x*a.z.y - a.z.w*a.x.x*a.y.y - a.y.w*a.z.x*a.x.y}, + {a.y.x*a.w.y*a.z.z + a.z.x*a.y.y*a.w.z + a.w.x*a.z.y*a.y.z - a.y.x*a.z.y*a.w.z - a.w.x*a.y.y*a.z.z - a.z.x*a.w.y*a.y.z, + a.x.x*a.z.y*a.w.z + a.w.x*a.x.y*a.z.z + a.z.x*a.w.y*a.x.z - a.x.x*a.w.y*a.z.z - a.z.x*a.x.y*a.w.z - a.w.x*a.z.y*a.x.z, + a.x.x*a.w.y*a.y.z + a.y.x*a.x.y*a.w.z + a.w.x*a.y.y*a.x.z - a.x.x*a.y.y*a.w.z - a.w.x*a.x.y*a.y.z - a.y.x*a.w.y*a.x.z, + a.x.x*a.y.y*a.z.z + a.z.x*a.x.y*a.y.z + a.y.x*a.z.y*a.x.z - a.x.x*a.z.y*a.y.z - a.y.x*a.x.y*a.z.z - a.z.x*a.y.y*a.x.z}}; +} + +template constexpr T linalg::determinant(const mat & a) +{ + return a.x.x*(a.y.y*a.z.z*a.w.w + a.w.y*a.y.z*a.z.w + a.z.y*a.w.z*a.y.w - a.y.y*a.w.z*a.z.w - a.z.y*a.y.z*a.w.w - a.w.y*a.z.z*a.y.w) + + a.x.y*(a.y.z*a.w.w*a.z.x + a.z.z*a.y.w*a.w.x + a.w.z*a.z.w*a.y.x - a.y.z*a.z.w*a.w.x - a.w.z*a.y.w*a.z.x - a.z.z*a.w.w*a.y.x) + + a.x.z*(a.y.w*a.z.x*a.w.y + a.w.w*a.y.x*a.z.y + a.z.w*a.w.x*a.y.y - a.y.w*a.w.x*a.z.y - a.z.w*a.y.x*a.w.y - a.w.w*a.z.x*a.y.y) + + a.x.w*(a.y.x*a.w.y*a.z.z + a.z.x*a.y.y*a.w.z + a.w.x*a.z.y*a.y.z - a.y.x*a.z.y*a.w.z - a.w.x*a.y.y*a.z.z - a.z.x*a.w.y*a.y.z); +} + +template linalg::vec linalg::rotation_quat(const mat & m) +{ + const vec q {m.x.x-m.y.y-m.z.z, m.y.y-m.x.x-m.z.z, m.z.z-m.x.x-m.y.y, m.x.x+m.y.y+m.z.z}, s[] { + {1, m.x.y + m.y.x, m.z.x + m.x.z, m.y.z - m.z.y}, + {m.x.y + m.y.x, 1, m.y.z + m.z.y, m.z.x - m.x.z}, + {m.x.z + m.z.x, m.y.z + m.z.y, 1, m.x.y - m.y.x}, + {m.y.z - m.z.y, m.z.x - m.x.z, m.x.y - m.y.x, 1}}; + return copysign(normalize(sqrt(max(T(0), T(1)+q))), s[argmax(q)]); +} + +template linalg::mat linalg::lookat_matrix(const vec & eye, const vec & center, const vec & view_y_dir, fwd_axis a) +{ + const vec f = normalize(center - eye), z = a == pos_z ? f : -f, x = normalize(cross(view_y_dir, z)), y = cross(z, x); + return inverse(mat{{x,0},{y,0},{z,0},{eye,1}}); +} + +template linalg::mat linalg::frustum_matrix(T x0, T x1, T y0, T y1, T n, T f, fwd_axis a, z_range z) +{ + const T s = a == pos_z ? T(1) : T(-1), o = z == neg_one_to_one ? n : 0; + return {{2*n/(x1-x0),0,0,0}, {0,2*n/(y1-y0),0,0}, {-s*(x0+x1)/(x1-x0),-s*(y0+y1)/(y1-y0),s*(f+o)/(f-n),s}, {0,0,-(n+o)*f/(f-n),0}}; +} + +#endif diff --git a/private/src/MasterSwitch.hpp b/private/src/MasterSwitch.hpp new file mode 100644 index 0000000..bcdd82a --- /dev/null +++ b/private/src/MasterSwitch.hpp @@ -0,0 +1,365 @@ +#pragma once +#include "PeriodChecker.hpp" +#include "StateSaver.hpp" +#include "plugin.hpp" + +struct MasterSwitch : Module +{ + static constexpr size_t x_maxSteps = 64; + static constexpr size_t x_maxChans = 64; + static constexpr size_t x_maxPoly = 16; + static constexpr size_t x_numJacks = 4; + static constexpr size_t x_numLanes = 8; + + enum class InputMode : int + { + Clock, + Select, + OneHot, + Parallel + }; + + enum class SampleMode : int + { + SH, + Track, + TH + }; + + InputMode m_inputMode; + SampleMode m_sampleMode; + size_t m_steps; + size_t m_curStep[x_maxChans]; + size_t m_numChans; + size_t m_numLanes; + rack::dsp::TSchmittTrigger m_clockTrig[x_maxChans]; + rack::dsp::TSchmittTrigger m_resetTrig; + PeriodChecker m_periodChecker; + + MasterSwitch() + : m_inputMode(InputMode::Clock) + , m_sampleMode(SampleMode::SH) + , m_steps(0) + , m_numChans(0) + , m_numLanes(0) + { + config(x_numParams, x_numIns, x_numOuts, 0); + for (size_t i = 0; i < x_maxChans; ++i) + { + m_curStep[i] = 0; + } + + for (size_t i = 0; i < x_numJacks; ++i) + { + configInput(x_stepIn + i, "Step" + std::to_string(i)); + configOutput(x_stepOut + i, "Step" + std::to_string(i)); + configOutput(x_oneHotOut + i, "OneHot" + std::to_string(i)); + for (size_t j = 0; j < x_numLanes; ++j) + { + configInput(x_valueIn + x_numJacks * j + i, "Value" + std::to_string(j) + "_" + std::to_string(i)); + configOutput(x_laneOut + x_numJacks * j + i, "Lane" + std::to_string(j) + "_" + std::to_string(i)); + } + } + + configInput(x_resetIn, "Reset"); + configSwitch(x_inputModeParam, 0, 3, 0, "Input Mode", {"Clock", "Select", "OneHot", "Parallel"}); + configSwitch(x_sampleParam, 0, 2, 0, "Sample Mode", {"SH", "Track", "TH"}); + configSwitch(x_numStepsParam, 1, x_maxSteps, x_maxSteps, "Steps"); + } + + size_t Chan2Jack(size_t chan) + { + return chan / x_maxPoly; + } + + size_t Chan2Poly(size_t chan) + { + return chan % x_maxPoly; + } + + size_t JackPoly2Chan(size_t jack, size_t poly) + { + return x_numJacks * jack + poly; + } + + static constexpr size_t x_inputModeParam = 0; + static constexpr size_t x_sampleParam = x_inputModeParam + 1; + static constexpr size_t x_numStepsParam = x_sampleParam + 1; + static constexpr size_t x_numParams = x_numStepsParam + 1; + + static constexpr size_t x_stepIn = 0; + static constexpr size_t x_valueIn = x_stepIn + x_numJacks; + static constexpr size_t x_resetIn = x_valueIn + x_numJacks * x_numLanes; + static constexpr size_t x_numIns = x_resetIn + 1; + + static constexpr size_t x_stepOut = 0; + static constexpr size_t x_oneHotOut = x_stepOut + x_numJacks; + static constexpr size_t x_laneOut = x_oneHotOut + x_numJacks; + static constexpr size_t x_numOuts = x_laneOut + x_numJacks * x_numLanes; + + void SetNumChans() + { + size_t numLanes = x_numLanes; + for (ssize_t i = x_numLanes - 1; i >= 0; --i) + { + bool connected = false; + for (size_t j = 0; j < x_numJacks; ++j) + { + if (inputs[x_valueIn + x_numJacks * i + j].isConnected()) + { + connected = true; + break; + } + } + + if (connected) + { + break; + } + + --numLanes; + } + + m_numLanes = numLanes; + + size_t inputPoly = 0; + for (size_t i = 0; i < x_numJacks; ++i) + { + if (i + 1 < x_numJacks && inputs[x_stepIn + i + 1].isConnected()) + { + inputPoly = (i + 1) * x_maxPoly; + } + else if (inputs[x_stepIn + i].isConnected()) + { + inputPoly += inputs[x_stepIn + i].getChannels(); + } + } + + size_t numChans = inputPoly; + size_t numSteps = static_cast(params[x_numStepsParam].getValue()); + + m_inputMode = static_cast(static_cast(params[x_inputModeParam].getValue())); + m_sampleMode = static_cast(static_cast(params[x_sampleParam].getValue())); + if (m_inputMode == InputMode::OneHot) + { + numChans = 1; + numSteps = inputPoly; + } + else if (m_inputMode == InputMode::Parallel) + { + for (size_t i = 0; i < numChans; ++i) + { + m_curStep[i] = i; + } + } + + if (m_numChans != numChans || + m_steps != numSteps) + { + m_numChans = numChans; + m_steps = numSteps; + for (size_t i = 0; i < x_numJacks; ++i) + { + outputs[x_stepOut + i].setChannels(JackPolyChans(i, m_numChans)); + if (m_numChans == 1) + { + outputs[x_oneHotOut + i].setChannels(JackPolyChans(i, m_steps)); + } + else + { + outputs[x_oneHotOut + i].setChannels(0); + } + + for (size_t j = 0; j < m_numLanes; ++j) + { + outputs[x_laneOut + j * x_numJacks + i].setChannels(JackPolyChans(i, m_numChans)); + } + } + } + } + + size_t JackPolyChans(size_t jack, size_t chans) + { + if (chans <= jack * x_maxPoly) + { + return 0; + } + else + { + return std::min(16, chans - jack * x_maxPoly); + } + } + + float GetStepIn(size_t chan) + { + return inputs[x_stepIn + Chan2Jack(chan)].getVoltage(Chan2Poly(chan)); + } + + float GetValue(size_t lane, size_t step) + { + return inputs[x_valueIn + x_numJacks * lane + Chan2Jack(step)].getVoltage(Chan2Poly(step)); + } + + void SetValue(size_t lane, size_t chan) + { + float value = GetValue(lane, m_curStep[chan]); + outputs[x_laneOut + x_numJacks * lane + Chan2Jack(chan)].setVoltage(value, Chan2Poly(chan)); + } + + void SetChan(size_t chan) + { + for (size_t i = 0; i < m_numLanes; ++i) + { + SetValue(i, chan); + } + } + + void StepSelect() + { + if (m_inputMode == InputMode::OneHot) + { + bool wasHigh = m_clockTrig[m_curStep[0]].isHigh(); + m_clockTrig[m_curStep[0]].process(GetStepIn(m_curStep[0])); + if (!m_clockTrig[m_curStep[0]].isHigh()) + { + for (size_t i = 0; i < m_steps; ++i) + { + m_clockTrig[i].process(GetStepIn(i)); + if (m_clockTrig[i].isHigh()) + { + m_curStep[0] = i; + } + } + } + + if (m_sampleMode == SampleMode::SH && + !wasHigh && + m_clockTrig[m_curStep[0]].isHigh()) + { + SetChan(0); + } + else if (m_sampleMode == SampleMode::TH && + m_clockTrig[m_curStep[0]].isHigh()) + { + SetChan(0); + } + } + else + { + for (size_t i = 0; i < m_numChans; ++i) + { + if (m_inputMode == InputMode::Clock || m_inputMode == InputMode::Parallel) + { + bool wasHigh = m_clockTrig[i].isHigh(); + m_clockTrig[i].process(GetStepIn(i)); + if (!wasHigh && m_clockTrig[i].isHigh()) + { + if (m_inputMode == InputMode::Clock) + { + m_curStep[i] = (m_curStep[i] + 1) % m_steps; + } + + if (m_sampleMode != SampleMode::Track) + { + SetChan(i); + } + } + else if (m_sampleMode == SampleMode::TH && + m_clockTrig[i].isHigh()) + { + SetChan(i); + } + } + else + { + int step = static_cast(GetStepIn(i) * 8); + step = std::min(m_steps - 1, std::max(0, step)); + if (static_cast(m_curStep[i]) != step) + { + if (m_sampleMode != SampleMode::Track) + { + SetChan(i); + } + + m_curStep[i] = step; + } + } + } + } + + if (m_sampleMode == SampleMode::Track) + { + for (size_t i = 0; i < m_numChans; ++i) + { + SetChan(i); + } + } + } + + void SetOutputs() + { + for (size_t i = 0; i < m_numChans; ++i) + { + outputs[x_stepOut + Chan2Jack(i)].setVoltage(static_cast(m_curStep[i]) / 8, Chan2Poly(i)); + } + + for (size_t i = 0; i < m_steps; ++i) + { + float voltage = i == m_curStep[0] ? 10 : 0; + outputs[x_oneHotOut + Chan2Jack(i)].setVoltage(voltage, Chan2Poly(i)); + } + } + + void HandleReset() + { + bool wasHigh = m_resetTrig.isHigh(); + m_resetTrig.process(inputs[x_resetIn].getVoltage()); + if (!wasHigh && m_resetTrig.isHigh()) + { + for (size_t i = 0; i < m_numChans; ++i) + { + m_curStep[i] = 0; + SetChan(i); + } + } + } + + void process(const ProcessArgs &args) override + { + if (m_periodChecker.Process(args.sampleTime)) + { + SetNumChans(); + } + + HandleReset(); + StepSelect(); + SetOutputs(); + } +}; + +struct MasterSwitchWidget : ModuleWidget +{ + MasterSwitchWidget(MasterSwitch *module) + { + setModule(module); + setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/MasterSwitch.svg"))); + + addParam(createParam(Vec(10, 10), module, MasterSwitch::x_inputModeParam)); + addParam(createParam(Vec(10, 40), module, MasterSwitch::x_sampleParam)); + addParam(createParam(Vec(10, 70), module, MasterSwitch::x_numStepsParam)); + + for (size_t i = 0; i < MasterSwitch::x_numJacks; ++i) + { + addInput(createInput(Vec(30 + 25 * i, 100), module, MasterSwitch::x_stepIn + i)); + addOutput(createOutput(Vec(30 + 25 * i, 125), module, MasterSwitch::x_stepOut + i)); + addOutput(createOutput(Vec(150 + 25 * i, 125), module, MasterSwitch::x_oneHotOut + i)); + for (size_t j = 0; j < MasterSwitch::x_numLanes; ++j) + { + addInput(createInput(Vec(30 + 25 * i, 150 + j * 25), module, MasterSwitch::x_valueIn + MasterSwitch::x_numJacks * j + i)); + addOutput(createOutput(Vec(150 + 25 * i, 150 + j * 25), module, MasterSwitch::x_laneOut + MasterSwitch::x_numJacks * j + i)); + } + } + + addInput(createInput(Vec(50, 70), module, MasterSwitch::x_resetIn)); + } +}; diff --git a/private/src/MxDJ.hpp b/private/src/MxDJ.hpp new file mode 100644 index 0000000..43fb2aa --- /dev/null +++ b/private/src/MxDJ.hpp @@ -0,0 +1,495 @@ +#pragma once +#include "plugin.hpp" +#include "AudioFile.h" +#include "Trig.hpp" +#include +#include +#include + +struct SamplePack; + +struct Sample +{ + enum class Tag : size_t + { + None = 0, + Dnb = 1, + FourOnFloor = 2, + EDM = 3, + Reggae = 4 + }; + + static char Tag2Char(Tag t) + { + switch (t) + { + case Tag::Dnb: return 'd'; + case Tag::FourOnFloor: return '4'; + case Tag::EDM: return 'e'; + case Tag::Reggae: return 'r'; + default: return '0'; + } + } + + static Tag Char2Tag(char c) + { + switch (c) + { + case 'd': return Tag::Dnb; + case '4': return Tag::FourOnFloor; + case 'e': return Tag::EDM; + case 'r': return Tag::Reggae; + default: return Tag::None; + } + } + + Sample( + std::string filename, + size_t beats, + float intensity, + bool isFill, + std::string tags, + SamplePack* pack) + : m_beats(beats) + , m_filename(filename) + , m_intensity(intensity) + , m_isFill(isFill) + , m_tags(0) + , m_pack(pack) + { + for (char ch : tags) + { + Tag t = Char2Tag(ch); + if (t != Tag::None) + { + SetTag(t); + } + } + } + + bool HasTag(Tag t) + { + return m_tags & (1 << static_cast(t)); + } + + void SetTag(Tag t) + { + m_tags |= 1 << static_cast(t); + } + + size_t m_beats; + std::string m_filename; + float m_intensity; + bool m_isFill; + size_t m_tags; + SamplePack* m_pack; +}; + +struct SamplePack +{ + std::string m_name; + std::vector> m_loops; + std::vector> m_fills; + + SamplePack(std::string name) + : m_name(name) + { + } + + Sample* Add( + std::string filename, + size_t beats, + float intensity, + bool isFill, + std::string tags) + { + Sample* s = new Sample(filename, beats, intensity, isFill, tags, this); + if (isFill) + { + m_fills.emplace_back(s); + return m_fills.back().get(); + } + else + { + m_loops.emplace_back(s); + return m_loops.back().get(); + } + } +}; + +struct SampleDb +{ + std::map m_samples; + std::vector m_allLoops; + std::vector m_allFills; + + void Add( + std::string packName, + std::string filename, + size_t beats, + float intensity, + bool isFill, + std::string tags) + { + if (m_samples.count(packName) == 0) + { + INFO("Adding new pack '%s'", packName.c_str()); + m_samples.insert({std::string(packName), SamplePack(packName)}); + } + + INFO("Adding sample '%s' (%lu %f %d %s)", filename.c_str(), beats, intensity, isFill, tags.c_str()); + Sample* s = m_samples.find(std::string(packName))->second.Add(filename, beats, intensity, isFill, tags); + if (isFill) + { + m_allFills.push_back(s); + } + else + { + m_allLoops.push_back(s); + } + + for (Sample* s2 : m_allLoops) + { + INFO("%p Filename = %s", s2, s2->m_filename.c_str()); + } + } + + void LoadDbFile(const char* dbFilename) + { + std::ifstream infile(dbFilename); + std::string line; + while (std::getline(infile, line)) + { + std::stringstream ss(line); + std::string tmp; + std::stringstream tss; + + std::string packName; + std::string filename; + size_t beats; + float intensity; + bool isFill; + std::string tags; + + std::getline(ss, packName, ','); + std::getline(ss, filename, ','); + + filename.erase(std::remove(filename.begin(), filename.end(), '\\'), filename.end()); + + std::getline(ss, tmp, ','); + tss << tmp; + tss >> beats; + + tss.clear(); + std::getline(ss, tmp, ','); + tss << tmp; + tss >> intensity; + + tss.clear(); + std::getline(ss, tmp, ','); + tss << tmp; + tss >> isFill; + + std::getline(ss, tags); + + Add( + packName.c_str(), + filename.c_str(), + beats, + intensity, + isFill, + tags.c_str()); + } + } + + Sample* RandomSample(RGen& gen) + { + size_t ix = gen.RangeGen(m_allLoops.size()); + return m_allLoops[ix]; + } +}; + +struct MxDJDeck +{ + struct Input + { + float m_t; + size_t m_beats; + + Input() + : m_t(0) + , m_beats(16) + { + } + }; + + struct Output + { + float m_out[2]; + + Output() + { + m_out[0] = 0; + m_out[1] = 0; + } + }; + + MxDJDeck() + : m_sample(nullptr) + { + } + + void LoadSample(Sample* s) + { + bool tst = false; + if (m_loading.compare_exchange_strong(tst, true)) + { + m_sample = s; + LoadFile(s->m_filename.c_str()); + m_loading.store(false); + } + } + + void LoadFile(const char* fname) + { + bool ok = m_audioFile.load(fname); + if (!ok) + { + WARN("Could not load %s", fname); + } + } + + void Process(Input& input) + { + if (!m_sample || + m_loading.load() || + m_audioFile.samples.size() == 0 || + m_audioFile.samples[0].size() == 0) + { + return; + } + + float pos = input.m_t * input.m_beats / m_sample->m_beats; + pos = pos - floor(pos); + size_t ix = pos * static_cast(m_audioFile.samples[0].size()); + ix = std::min(ix, m_audioFile.samples[0].size() - 1); + + for (size_t i = 0; i < 2 && i < m_audioFile.samples.size(); ++i) + { + m_output.m_out[i] = m_audioFile.samples[i][ix]; + } + } + + AudioFile m_audioFile; + Sample* m_sample; + std::atomic m_loading; + Output m_output; +}; + +struct MxDJInternal +{ + enum class State + { + Unloaded, + Running, + Switching + }; + + struct Input + { + MxDJDeck::Input m_input; + float m_fadeBeats; + bool m_requestNewSample; + RGen m_gen; + + Input() + : m_fadeBeats(1.0 / 32.0) + { + } + }; + + struct Output + { + float m_out[2]; + + Output() + { + m_out[0] = 0; + m_out[1] = 0; + } + }; + + MxDJInternal() + : m_state(State::Unloaded) + , m_active(&m_decks[0]) + , m_waiting(&m_decks[1]) + , m_switchBeat(-1) + , m_done(false) + , m_loadRequested(nullptr) + , m_loadThread(&MxDJInternal::LoadThread, this) + { + m_samples.LoadDbFile("/Users/joyo/Downloads/LoopDb.csv"); + } + + ~MxDJInternal() + { + m_done.store(true); + m_loadThread.join(); + } + + void Process(Input& input) + { + if (input.m_requestNewSample || m_state == State::Unloaded) + { + LoadRandomSample(input); + } + + m_active->Process(input.m_input); + + for (size_t i = 0; i < 2; ++i) + { + m_output.m_out[i] = m_active->m_output.m_out[i]; + } + + if (m_state == State::Switching) + { + m_waiting->Process(input.m_input); + + float beatPos = input.m_input.m_t * input.m_input.m_beats; + if (m_switchBeat == -1) + { + m_switchBeat = floor(beatPos); + } + + beatPos = beatPos - m_switchBeat; + float fadePos; + if (beatPos > 0) + { + fadePos = beatPos / input.m_fadeBeats + 1.0 - 1.0 / input.m_fadeBeats; + fadePos = std::max(0, std::min(1, fadePos)); + } + else + { + fadePos = 1; + } + + for (size_t i = 0; i < 2; ++i) + { + m_output.m_out[i] *= 1 - fadePos; + m_output.m_out[i] += fadePos * m_waiting->m_output.m_out[i]; + } + + if (fadePos == 1) + { + Switch(); + } + } + } + + void Switch() + { + INFO("Switching"); + std::swap(m_active, m_waiting); + m_state = State::Running; + m_switchBeat = -1; + } + + void LoadSample(Sample* s) + { + INFO("Loading %s", s->m_filename.c_str()); + if (m_state == State::Unloaded) + { + m_active->LoadSample(s); + m_state = State::Running; + } + else if (m_state == State::Running) + { + m_waiting->LoadSample(s); + m_state = State::Switching; + } + } + + void RequestLoadSample(Sample* s) + { + Sample* tst = nullptr; + m_loadRequested.compare_exchange_strong(tst, s); + } + + void LoadRandomSample(Input& input) + { + RequestLoadSample(m_samples.RandomSample(input.m_gen)); + } + + void LoadThread() + { + while (!m_done.load()) + { + Sample* s = m_loadRequested.load(); + if (s) + { + LoadSample(s); + m_loadRequested.store(nullptr); + } + else + { + usleep(1000); + } + } + } + + SampleDb m_samples; + State m_state; + MxDJDeck m_decks[2]; + MxDJDeck* m_active; + MxDJDeck* m_waiting; + float m_switchBeat; + Output m_output; + std::atomic m_done; + std::atomic m_loadRequested; + std::thread m_loadThread; +}; + +struct MxDJ : Module +{ + MxDJInternal m_dj; + MxDJInternal::Input m_state; + + Trig m_newSampSame; + Trig m_newSampDiff; + + MxDJ() + { + config(0, 3, 2, 0); + configInput(0, "Time in"); + configInput(1, "New Samp Same"); + configInput(2, "New Samp Diff"); + configOutput(0, "Left Out"); + configOutput(1, "Right Out"); + } + + void process(const ProcessArgs &args) override + { + m_state.m_input.m_t = inputs[0].getVoltage() / 10; + m_state.m_requestNewSample = m_newSampDiff.Process(inputs[2].getVoltage()); + m_dj.Process(m_state); + for (size_t i = 0; i < 2; ++i) + { + outputs[i].setVoltage(m_dj.m_output.m_out[i] * 10); + } + } +}; + +struct MxDJWidget : ModuleWidget +{ + MxDJWidget(MxDJ* module) + { + setModule(module); + setPanel(createPanel(asset::plugin(pluginInstance, "res/MxDJ.svg"))); + + addOutput(createOutputCentered(Vec(175, 100), module, 0)); + addOutput(createOutputCentered(Vec(125, 100), module, 1)); + addInput(createInputCentered(Vec(125, 200), module, 0)); + addInput(createInputCentered(Vec(150, 200), module, 1)); + addInput(createInputCentered(Vec(175, 200), module, 2)); + } +}; diff --git a/private/src/NonagonPanner.hpp b/private/src/NonagonPanner.hpp new file mode 100644 index 0000000..02e726b --- /dev/null +++ b/private/src/NonagonPanner.hpp @@ -0,0 +1,262 @@ +#pragma once +#include "LinAlg.hpp" +#include "plugin.hpp" +#include +#include +#include "Trig.hpp" +#include "NormGen.hpp" + +typedef linalg::aliases::float3 Vector; +typedef linalg::aliases::float4 Quat; + +Quat ToQuat(Vector& v, float phase) +{ + float s = std::sin(phase * M_PI); + float c = std::cos(phase * M_PI); + return Quat(v * s, c); +} + +Vector Rotate(Vector v, Vector& n, float phase) +{ + return linalg::qrot(ToQuat(n, phase), v); +} + +float Reduce(float x) +{ + return x - floor(x); +} + +Vector SphereToCart(float azimuth, float inclination) +{ + float si = std::sin(inclination * M_PI); + float ci = std::cos(inclination * M_PI); + float sa = std::sin(2 * azimuth * M_PI); + float ca = std::cos(2 * azimuth * M_PI); + return Vector(si * ca, si * sa, ci); +} + +struct PhasorSwitcher +{ + int m_valIx; + int m_desiredIx; + float* m_options[6]; + + float F(int ix) + { + if (ix == -1) + { + return 0; + } + if (ix == -2) + { + return 0; + } + else + { + return *m_options[ix]; + } + } + + PhasorSwitcher() + : m_valIx(-1) + , m_desiredIx(-2) + { + } + + void Do() + { + if (m_valIx == -2 && m_desiredIx != -2) + { + m_valIx = m_desiredIx; + } + else if (m_desiredIx != -2) + { + float v1 = F(m_valIx); + float v2 = F(m_desiredIx); + if (std::abs(v1 - v2) < 1.0 / 256) + { + m_valIx = m_desiredIx; + m_desiredIx = -2; + } + } + } + + float Get() + { + Do(); + return F(m_valIx); + } + + void Desire(int ix) + { + if (ix == m_valIx) + { + m_desiredIx = -1; + } + else + { + m_desiredIx = ix; + } + } +}; + +struct OrbiterLFOs +{ + ManyGangedRandomLFO::Input m_state; + ManyGangedRandomLFO m_lfo; + + OrbiterLFOs() + { + m_state.m_numGangs = 10; + m_state.m_gangSize = 1; + m_state.m_time = 10; + } + + void Process(float dt) + { + m_lfo.Process(dt, m_state); + } +}; + +struct Orbiter +{ + int m_phaseOffset[9]; + float m_mainPhase; + OrbiterLFOs m_lfos; + + float MainPhase(int offset) + { + return Reduce(m_mainPhase + static_cast(offset) / 9); + } + + float Radius(float) + { + return 1; + } + + struct Input + { + float m_radMod[9]; + + float m_azimuth; + float m_azimuthOffset[3]; + float m_azimuthSpread; + + float m_inclinationScale; + float m_inclination[3]; + + float m_mainFreq; + + Vector GetNormal(size_t ix) + { + float a = m_azimuth + m_azimuthSpread * m_azimuthOffset[ix]; + float i = m_inclinationScale * m_inclination[ix]; + return SphereToCart(a, i); + } + + Vector GetStraight(size_t ix) + { + float a = m_azimuth + m_azimuthSpread * m_azimuthOffset[ix]; + float i = m_inclinationScale * m_inclination[ix] + 0.5; + return SphereToCart(a, i); + } + + void PopulateFromLFOs(OrbiterLFOs& lfos) + { + float* trgs[] = { + &m_azimuth, + &m_azimuthOffset[0], + &m_azimuthOffset[1], + &m_azimuthOffset[2], + &m_azimuthSpread, + &m_inclinationScale, + &m_inclination[0], + &m_inclination[1], + &m_inclination[2], + }; + + for (size_t i = 0; i < 9; ++i) + { + *trgs[i] = lfos.m_lfo.m_lfos[i].m_pos[0] / 10; + } + + m_azimuthSpread = std::max(0, std::min(m_azimuthSpread, 1)); + m_inclinationScale = std::max(0, std::min(m_inclinationScale, 1)); + float normFreq = lfos.m_lfo.m_lfos[9].m_pos[0] / 10; + m_mainFreq = 1.0 / 60.0 * std::exp2f(normFreq * std::log2f(60.0 / 5.0)); + } + + Input() + : m_azimuth(0) + , m_azimuthSpread(0) + , m_inclinationScale(0) + { + for (size_t i = 0; i < 9; ++i) + { + m_radMod[i] = 0; + } + + for (size_t i = 0; i < 3; ++i) + { + m_azimuthOffset[i] = 0; + m_inclination[i] = 0; + } + } + }; + + struct Output + { + Vector m_pos[9]; + }; + + Output m_output; + + void ReadInputs(Input& input) + { + input.PopulateFromLFOs(m_lfos); + } + + void Process(float dt, Input& input) + { + m_lfos.Process(dt); + ReadInputs(input); + m_mainPhase = Reduce(m_mainPhase + input.m_mainFreq * dt); + for (size_t i = 0; i < 3; ++i) + { + Vector mainNormal = input.GetNormal(i); + Vector straight = input.GetStraight(i); + for (size_t j = 0; j < 3; ++j) + { + if (i == 2 && j == 0) + { + m_output.m_pos[3 * i + j] = Vector(0, 0, 0); + } + else + { + size_t ix = 3 * i + j; + int offset = m_phaseOffset[ix]; + + float phase = MainPhase(offset); + float rad = Radius(input.m_radMod[ix]); + Vector mainPos = Rotate(rad * straight, mainNormal, phase); + m_output.m_pos[ix] = mainPos; + } + } + } + } + + Orbiter() + { + static constexpr int oa[] = {0, 4, 2}; + + m_mainPhase = 0; + for (size_t i = 0; i < 3; ++i) + { + for (size_t j = 0; j < 3; ++j) + { + int o = oa[i]; + m_phaseOffset[3 * i + j] = o + 3 * j; + } + } + } +}; diff --git a/private/src/NormGen.hpp b/private/src/NormGen.hpp index a8d7807..04964f1 100644 --- a/private/src/NormGen.hpp +++ b/private/src/NormGen.hpp @@ -22,4 +22,9 @@ struct RGen { return m_uni(m_gen); } + + size_t RangeGen(size_t max) + { + return static_cast(UniGen() * max); + } }; diff --git a/private/src/PercentileSequencer.hpp b/private/src/PercentileSequencer.hpp index 6a65e7d..011d9f0 100644 --- a/private/src/PercentileSequencer.hpp +++ b/private/src/PercentileSequencer.hpp @@ -118,7 +118,7 @@ struct PercentileSequencerInternal if (m_advanced[1]) { - float tenorVal = input.m_sequence[m_stepSelector[1].m_curStep]- 1; + float tenorVal = input.m_sequence[m_stepSelector[1].m_curStep] - 1; m_tenor = tenorMax + (tenorMax - tenorMin) * tenorVal * input.m_sequenceScale; } @@ -127,6 +127,13 @@ struct PercentileSequencerInternal } } + void ProcessNoClock(Input& input) + { + m_bass = 0; + m_tenor = input.m_tenorDistance; + m_alto = input.m_tenorDistance / 2; + } + float& GetVal(size_t voice) { switch (voice) @@ -189,6 +196,10 @@ struct PercentileSequencerInternal else { input.m_input[i].SetClock(false); + if (input.m_clocks[0]) + { + m_sequencer[i].ProcessNoClock(input.m_input[i]); + } } m_sequencer[i].Process(input.m_input[i]); @@ -201,102 +212,6 @@ struct PercentileSequencerInternal } }; -struct PercentileSequencerClockSelectCell : public SmartGrid::Cell -{ - virtual ~PercentileSequencerClockSelectCell() - { - } - - PercentileSequencerInternal::Input* m_state; - size_t m_trio; - size_t* m_numHeld; - size_t* m_maxHeld; - int m_myClock; - SmartGrid::Color m_offColor; - SmartGrid::Color m_clockColor; - SmartGrid::Color m_resetColor; - bool m_unsetOnRelease; - - PercentileSequencerClockSelectCell( - PercentileSequencerInternal::Input* state, - size_t trio, - size_t* numHeld, - size_t* maxHeld, - int myClock, - SmartGrid::Color offColor, - SmartGrid::Color clockColor, - SmartGrid::Color resetColor) - : m_state(state) - , m_trio(trio) - , m_numHeld(numHeld) - , m_maxHeld(maxHeld) - , m_myClock(myClock) - , m_offColor(offColor) - , m_clockColor(clockColor) - , m_resetColor(resetColor) - , m_unsetOnRelease(false) - { - } - - virtual void OnPress(uint8_t) override - { - ++(*m_numHeld); - - if (*m_numHeld == 1) - { - if (m_state->m_clockSelect[m_trio] == m_myClock) - { - m_unsetOnRelease = true; - } - else - { - m_state->m_clockSelect[m_trio] = m_myClock; - } - - m_state->m_resetSelect[m_trio] = -1; - } - else if (*m_numHeld == 2) - { - m_state->m_resetSelect[m_trio] = m_myClock; - } - - *m_maxHeld = std::max(*m_maxHeld, *m_numHeld); - } - - virtual void OnRelease() override - { - --(*m_numHeld); - - if (*m_numHeld == 0) - { - m_state->m_externalReset[m_trio] = true; - if (*m_maxHeld == 1 && m_unsetOnRelease) - { - m_state->m_clockSelect[m_trio] = -1; - } - - *m_maxHeld = 0; - } - - m_unsetOnRelease = false; - } - - virtual SmartGrid::Color GetColor() override - { - if (m_state->m_clockSelect[m_trio] == m_myClock) - { - return m_clockColor; - } - else if (m_state->m_resetSelect[m_trio] == m_myClock) - { - return m_resetColor; - } - else - { - return m_offColor; - } - } -}; // struct PercentileSequencer : Module // { diff --git a/private/src/PhasorEnvelope.hpp b/private/src/PhasorEnvelope.hpp index 1427948..69e336d 100644 --- a/private/src/PhasorEnvelope.hpp +++ b/private/src/PhasorEnvelope.hpp @@ -2,6 +2,7 @@ #include #include #include "plugin.hpp" +#include "Slew.hpp" struct PhasorEnvelopeInternal { @@ -10,6 +11,7 @@ struct PhasorEnvelopeInternal float m_gateFrac; float m_attackFrac; float m_shape; + float m_decayTime; float m_in; Input() @@ -54,7 +56,15 @@ struct PhasorEnvelopeInternal return powf(in, powf(10, m_shape)); } } - }; + }; + + float Process(float dt, Input& input) + { + float phase = input.ComputePhase(); + return m_slew.SlewDown(dt, input.m_decayTime, phase); + } + + Slew m_slew; }; struct PhasorEnvelope : Module @@ -67,24 +77,27 @@ struct PhasorEnvelope : Module static constexpr size_t x_attackFracInId = 3; static constexpr size_t x_shapeInId = 5; static constexpr size_t x_amplitudeInId = 7; - static constexpr size_t x_numInputs = 9; + static constexpr size_t x_decayInId = 9; + static constexpr size_t x_numInputs = 11; static constexpr size_t x_gateFracKnob = 0; static constexpr size_t x_attackFracKnob = 4; static constexpr size_t x_shapeKnob = 8; static constexpr size_t x_amplitudeKnob = 12; - static constexpr size_t x_numKnobs = 16; + static constexpr size_t x_decayKnob = 16; + static constexpr size_t x_numKnobs = 20; + PhasorEnvelopeInternal m_env[x_numEnvs][x_maxPoly]; PhasorEnvelopeInternal::Input m_state[x_numEnvs][x_maxPoly]; float GetValue(size_t cvId, size_t knobId, size_t chan, float denom=10) { float val = params[knobId].getValue(); - float cv = inputs[cvId].getVoltage(chan) * params[knobId + 1].getValue() / denom; + float cv = inputs[cvId].getVoltage(chan % inputs[cvId].getChannels()) * params[knobId + 1].getValue() / denom; return val + cv; } - void Process() + void Process(float dt) { size_t chans = inputs[x_phaseInId].getChannels(); for (size_t i = 0; i < x_numEnvs; ++i) @@ -93,7 +106,7 @@ struct PhasorEnvelope : Module for (size_t j = 0; j < chans; ++j) { m_state[i][j].m_in = inputs[x_phaseInId].getVoltage(j) / 10; - float voltage = m_state[i][j].ComputePhase(); + float voltage = m_env[i][j].Process(dt, m_state[i][j]); voltage *= GetValue(x_amplitudeInId + i, x_amplitudeKnob + 2 * i, j, 1); outputs[i].setVoltage(voltage, j); } @@ -109,7 +122,8 @@ struct PhasorEnvelope : Module { m_state[i][j].m_gateFrac = GetValue(x_gateFracInId + i, x_gateFracKnob + 2 * i, j); m_state[i][j].m_attackFrac = GetValue(x_attackFracInId + i, x_attackFracKnob + 2 * i, j); - m_state[i][j].m_shape = GetValue(x_shapeInId + i, x_shapeKnob + 2 * i, j); + m_state[i][j].m_shape = GetValue(x_shapeInId + i, x_shapeKnob + 2 * i, j, 5); + m_state[i][j].m_decayTime = GetValue(x_decayInId + i, x_decayKnob + 2 * i, j, 5); } } } @@ -126,10 +140,11 @@ struct PhasorEnvelope : Module m_timeToCheck = x_timeToCheck; } - Process(); + Process(args.sampleTime); } PhasorEnvelope() + : m_timeToCheck(0) { config(x_numKnobs, x_numInputs, x_numEnvs, 0); configInput(x_phaseInId, "Phasor"); @@ -140,16 +155,19 @@ struct PhasorEnvelope : Module configInput(x_attackFracInId + i, ("Attack Fraction CV " + std::to_string(i)).c_str()); configInput(x_shapeInId + i, ("Shape CV " + std::to_string(i)).c_str()); configInput(x_amplitudeInId + i, ("Amplitude CV " + std::to_string(i)).c_str()); + configInput(x_decayInId + i, ("Decay CV " + std::to_string(i)).c_str()); configParam(x_gateFracKnob + 2 * i, 0, 1, 0.5, ("Env Length " + std::to_string(i)).c_str()); configParam(x_attackFracKnob + 2 * i, 0, 1, 0.05, ("Attack Fraction " + std::to_string(i)).c_str()); configParam(x_shapeKnob + 2 * i, -1, 1, 0, ("Shape " + std::to_string(i)).c_str()); configParam(x_amplitudeKnob + 2 * i, 0, 10, 10, ("Amplitude " + std::to_string(i)).c_str()); + configParam(x_decayKnob + 2 * i, 0, 10, 10, ("Decay " + std::to_string(i)).c_str()); configParam(x_gateFracKnob + 2 * i + 1, -1, 1, 0, ("Env Length Attn " + std::to_string(i)).c_str()); configParam(x_attackFracKnob + 2 * i + 1, -1, 1, 0, ("Attack Fraction Attn " + std::to_string(i)).c_str()); configParam(x_shapeKnob + 2 * i + 1, -1, 1, 0, ("Shape Attn " + std::to_string(i)).c_str()); configParam(x_amplitudeKnob + 2 * i + 1, -1, 1, 0, ("Amplitude Attn " + std::to_string(i)).c_str()); + configParam(x_decayKnob + 2 * i + 1, -1, 1, 0, ("Decay Attn " + std::to_string(i)).c_str()); } } }; @@ -193,6 +211,12 @@ struct PhasorEnvelopeWidget : ModuleWidget addInput(createInputCentered(Vec(xPos, yPos), module, module->x_amplitudeInId + i)); addParam(createParamCentered(Vec(xPos + xOff, yPos), module, module->x_amplitudeKnob + 1 + 2 * i)); addParam(createParamCentered(Vec(xPos + 2 * xOff, yPos), module, module->x_amplitudeKnob + 2 * i)); + + yPos += yOff; + + addInput(createInputCentered(Vec(xPos, yPos), module, module->x_decayInId + i)); + addParam(createParamCentered(Vec(xPos + xOff, yPos), module, module->x_decayKnob + 1 + 2 * i)); + addParam(createParamCentered(Vec(xPos + 2 * xOff, yPos), module, module->x_decayKnob + 2 * i)); } } }; diff --git a/private/src/PolyCC.hpp b/private/src/PolyCC.hpp new file mode 100644 index 0000000..0aa68e6 --- /dev/null +++ b/private/src/PolyCC.hpp @@ -0,0 +1,113 @@ +#pragma once +#include "plugin.hpp" +#include "PeriodChecker.hpp" + +struct PolyCC : public Module +{ + midi::Output m_output; + + StateSaver m_stateSaver; + + uint8_t m_lastValue[16][16]; + + PeriodChecker m_checker; + + PolyCC() + { + config(0, 16, 0, 0); + + for (size_t i = 0; i < 16; ++i) + { + for (size_t j = 0; j < 16; ++j) + { + m_lastValue[i][j] = 255; + } + } + } + + void process(const ProcessArgs& args) override + { + if (!m_checker.Process(args.sampleTime)) + { + return; + } + + for (size_t i = 0; i < 16; ++i) + { + if (inputs[i].isConnected()) + { + for (size_t j = 0; j < static_cast(inputs[i].getChannels()); ++j) + { + midi::Message msg; + + uint8_t value = std::max(0, std::min(127, inputs[i].getVoltage(j) * 128 / 10)); + if (m_lastValue[i][j] == value) + { + continue; + } + + m_lastValue[i][j] = value; + + msg.setStatus(0xb); + msg.setNote(i); + msg.setValue(value); + msg.setFrame(args.frame); + m_output.setChannel(j); + m_output.sendMessage(msg); + } + } + } + + m_output.setChannel(0); + } + + json_t* dataToJson() override + { + json_t* rootJ = json_object(); + json_object_set_new(rootJ, "midiOut", m_output.toJson()); + json_object_set_new(rootJ, "state", m_stateSaver.ToJSON()); + return rootJ; + } + + void dataFromJson(json_t* rootJ) override + { + json_t* midiJ = json_object_get(rootJ, "midiOut"); + if (midiJ) + { + m_output.fromJson(midiJ); + } + + midiJ = json_object_get(rootJ, "state"); + if (midiJ) + { + m_stateSaver.SetFromJSON(midiJ); + } + } +}; + +struct PolyCCWidget : public ModuleWidget +{ + PolyCCWidget(PolyCC* module) + { + setModule(module); + setPanel(createPanel(asset::plugin(pluginInstance, "res/PolyCV_MIDICC.svg"))); + + addChild(createWidget(Vec(RACK_GRID_WIDTH, 0))); + addChild(createWidget(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); + addChild(createWidget(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); + addChild(createWidget(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); + + StoermelderPackOne::MidiWidget<>* midiOutputWidget = createWidget>(Vec(10.0f, 107.4f)); + midiOutputWidget->box.size = Vec(130.0f, 67.0f); + midiOutputWidget->setMidiPort(module ? &module->m_output : NULL); + addChild(midiOutputWidget); + + for (size_t i = 0; i < 4; ++i) + { + for (size_t j = 0; j < 4; ++j) + { + addInput(createInputCentered(Vec(10 + 25 * i, 200 + 25 * j), module, i + 4 * j)); + } + } + } +}; diff --git a/private/src/Q.hpp b/private/src/Q.hpp new file mode 100644 index 0000000..4f41863 --- /dev/null +++ b/private/src/Q.hpp @@ -0,0 +1,110 @@ +#pragma once +#include + +struct Q +{ + int64_t m_num; + int64_t m_denom; + + Q() : m_num(0), m_denom(1) + { + } + + Q(int64_t num, int64_t denom) + : m_num(num) + , m_denom(denom) + { + Reduce(); + } + + Q(int64_t asInt) + : m_num(asInt) + , m_denom(1) + { + } + + void Reduce() + { + int64_t gcd = std::gcd(m_num, m_denom); + m_num /= gcd; + m_denom /= gcd; + } + + std::string ToString() + { + return std::to_string(m_num) + "/" + std::to_string(m_denom); + } + + Q operator*(Q other) + { + return Q(m_num * other.m_num, m_denom * other.m_denom); + } + + Q operator+(Q other) + { + return Q(m_num * other.m_denom + other.m_num * other.m_denom, m_denom * other.m_denom); + } + + bool operator==(Q other) + { + return std::tie(m_num, m_denom) == std::tie(other.m_num, other.m_denum); + } + + bool operator!=(Q other) + { + return !(*this === other); + } + + bool operator<(Q other) + { + return m_num * other.m_denom < other.m_num * m_denom; + } + + bool operator<=(Q other) + { + return m_num * other.m_denom <= other.m_num * m_denom; + } +}; + +struct QSiblingIterator +{ + int64_t m_ix; + int64_t m_denom; + + QSiblingIterator(int64_t denom) + : m_ix(0), + , m_denom(denom) + { + } + + Q operator*() + { + return Q(m_ix, m_denom); + } + + QSiblingIterator operator++() + { + ++ix; + return *this; + } + + static QSiblingIterator Begin(Q q) + { + return QSiblingIterator(0, q.m_denom); + } + + static QSiblingIterator End() + { + return QSiblingIterator(1); + } + + bool operator==(QSiblingIterator other) + { + return **this == *other; + } + + bool operator!=(QSiblingIterator other) + { + return **this != *other; + } +}; diff --git a/private/src/SampleRateDivider.hpp b/private/src/SampleRateDivider.hpp new file mode 100644 index 0000000..e27dd3c --- /dev/null +++ b/private/src/SampleRateDivider.hpp @@ -0,0 +1,64 @@ + + +struct SampleRateDivider : public Module +{ + static constexpr size_t x_maxPoly = 16; + size_t m_counter; + size_t m_divider[x_maxPoly]; + + SampleRateDivider() + { + config(0, 2, 1, 0); + + configInput(0, "Input"); + configInput(1, "Divider"); + configOutput(0, "Output"); + + m_counter = 0; + for (size_t i = 0; i < x_maxPoly; i++) + { + m_divider[i] = 1; + } + } + + void process(const ProcessArgs &args) override + { + if (m_counter % 100 == 0) + { + for (int i = 0; i < inputs[0].getChannels(); i++) + { + m_divider[i] = 1.59 * inputs[1].getVoltage(i % inputs[1].getChannels()) + 1; + } + + outputs[0].setChannels(inputs[0].getChannels()); + } + + m_counter++; + + for (int i = 0; i < inputs[0].getChannels(); i++) + { + if (m_counter % m_divider[i] == 0) + { + outputs[0].setVoltage(inputs[0].getVoltage(i), i); + } + } + } +}; + +struct SampleRateDividerWidget : ModuleWidget +{ + SampleRateDividerWidget(SampleRateDivider *module) + { + setModule(module); + setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/SampleRateDivider.svg"))); + + addChild(createWidget(Vec(RACK_GRID_WIDTH, 0))); + addChild(createWidget(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); + addChild(createWidget(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); + addChild(createWidget(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); + + addInput(createInput(Vec(10, 30), module, 0)); + addInput(createInput(Vec(10, 60), module, 1)); + addOutput(createOutput(Vec(10, 90), module, 0)); + } +}; diff --git a/private/src/Slew.hpp b/private/src/Slew.hpp new file mode 100644 index 0000000..fbbaf01 --- /dev/null +++ b/private/src/Slew.hpp @@ -0,0 +1,28 @@ + + +struct Slew +{ + float m_val; + + Slew() : m_val(0) + { + } + + Slew(float val) : m_val(val) + { + } + + float SlewDown(float dt, float time, float trg) + { + if (m_val <= trg || time < dt) + { + m_val = trg; + } + else + { + m_val = std::max(m_val - dt / time, trg); + } + + return m_val; + } +}; diff --git a/private/src/SmartCanvas.hpp b/private/src/SmartCanvas.hpp new file mode 100644 index 0000000..019f413 --- /dev/null +++ b/private/src/SmartCanvas.hpp @@ -0,0 +1,345 @@ +#pragma once +#include "SmartGrid.hpp" +#include "StateSaver.hpp" +#include "plugin.hpp" + +namespace SmartGrid +{ + +struct SmartCanvasInternal : public AbstractGrid +{ + virtual ~SmartCanvasInternal() + { + } + + struct Elem + { + size_t m_gridId; + int m_srcX; + int m_srcY; + int m_trgX; + int m_trgY; + int m_lenX; + int m_lenY; + + bool m_flipX; + bool m_flipY; + int m_rotate; + + Elem() + : m_gridId(x_numGridIds) + , m_srcX(0) + , m_srcY(0) + , m_trgX(0) + , m_trgY(0) + , m_lenX(x_gridSize) + , m_lenY(x_gridSize) + , m_flipX(false) + , m_flipY(false) + , m_rotate(0) + { + } + + std::pair ApplyFlipAndRotate(int x, int y) + { + if (m_flipX) + { + x = x_gridSize - x - 1; + } + + if (m_flipY) + { + y = x_gridSize - y - 1; + } + + int rotate = m_rotate; + while (rotate > 0) + { + int xp = y; + int yp = x_gridSize - x - 1; + x = xp; + y = yp; + --rotate; + } + + return std::pair(x, y); + } + + std::pair GetSrcCoords(int x, int y, bool* outOfBounds) + { + x = x - m_trgX + m_srcX; + y = y - m_trgY + m_srcY; + if (x < 0 || x_gridSize <= x || y < 0 || x_gridSize <= y) + { + *outOfBounds = true; + return std::pair(0, 0); + } + + *outOfBounds = false; + return ApplyFlipAndRotate(x, y); + } + + bool HasGrid() + { + return m_gridId != x_numGridIds; + } + + bool InBounds(int x, int y) + { + return m_trgX <= x && x < m_trgX + m_lenX && + m_trgY <= y && y < m_trgY + m_lenY && + 0 <= x && x < x_gridSize && + 0 <= y && y < x_gridSize; + } + + struct Input + { + size_t m_gridId; + int m_srcX; + int m_srcY; + int m_trgX; + int m_trgY; + int m_lenX; + int m_lenY; + + bool m_flipX; + bool m_flipY; + int m_rotate; + + Input() + : m_gridId(x_numGridIds) + , m_srcX(0) + , m_srcY(0) + , m_trgX(0) + , m_trgY(0) + , m_lenX(x_gridSize) + , m_lenY(x_gridSize) + , m_flipX(false) + , m_flipY(false) + , m_rotate(0) + { + } + }; + + void Process(Input& input) + { + m_gridId = input.m_gridId; + m_srcX = input.m_srcX; + m_srcY = input.m_srcY; + m_trgX = input.m_trgX; + m_trgY = input.m_trgY; + m_lenX = input.m_lenX; + m_lenY = input.m_lenY; + m_flipX = input.m_flipX; + m_flipY = input.m_flipY; + m_rotate = input.m_rotate; + } + }; + + static constexpr size_t x_numElems = 8; + + Color m_onColor; + Elem m_elems[x_numElems]; + + struct Input + { + Elem::Input m_inputs[x_numElems]; + ColorDecode m_onColor; + + Input() + : m_onColor(Color::White) + { + } + }; + + void ProcessInput(Input& input) + { + m_onColor = input.m_onColor.m_color; + for (size_t i = 0; i < x_numElems; ++i) + { + m_elems[i].Process(input.m_inputs[i]); + } + } + + virtual void Apply(Message msg) + { + for (size_t i = 0; i < x_numElems; ++i) + { + if (m_elems[i].HasGrid() && + m_elems[i].InBounds(msg.m_x, msg.m_y)) + { + bool oob = false; + std::pair coords = m_elems[i].GetSrcCoords(msg.m_x, msg.m_y, &oob); + if (!oob) + { + g_smartBus.PutVelocity(m_elems[i].m_gridId, coords.first, coords.second, msg.m_velocity); + break; + } + } + } + } + + virtual Color GetColor(int x, int y) + { + for (size_t i = 0; i < x_numElems; ++i) + { + if (m_elems[i].HasGrid() && + m_elems[i].InBounds(x, y)) + { + bool oob = false; + std::pair coords = m_elems[i].GetSrcCoords(x, y, &oob); + if (!oob) + { + return g_smartBus.GetColor(m_elems[i].m_gridId, coords.first, coords.second); + } + } + } + + return Color::Off; + } + + virtual Color GetOnColor() + { + return m_onColor; + } + + virtual Color GetOffColor() + { + return m_onColor.Dim(); + } +}; + +struct SmartCanvas : Module +{ + SmartCanvasInternal m_canvas; + SmartCanvasInternal::Input m_state; + PeriodChecker m_periodChecker; + + static constexpr size_t x_srcXYParam = 0; + static constexpr size_t x_trgXYParam = x_srcXYParam + 2 * SmartCanvasInternal::x_numElems; + static constexpr size_t x_lenXYParam = x_trgXYParam + 2 * SmartCanvasInternal::x_numElems; + static constexpr size_t x_flipXYParam = x_lenXYParam + 2 * SmartCanvasInternal::x_numElems; + static constexpr size_t x_rotateParam = x_flipXYParam + 2 * SmartCanvasInternal::x_numElems; + static constexpr size_t x_colorParam = x_rotateParam + SmartCanvasInternal::x_numElems; + static constexpr size_t x_numParams = x_colorParam + 1; + + static constexpr size_t x_srcXYIn = 0; + static constexpr size_t x_gridIdIn = x_srcXYIn + 2 * SmartCanvasInternal::x_numElems; + static constexpr size_t x_colorIn = x_gridIdIn + SmartCanvasInternal::x_numElems; + static constexpr size_t x_numIns = x_colorIn + 1; + + static constexpr size_t x_gridIdOut = 0; + static constexpr size_t x_numOuts = x_gridIdOut + 1; + + SmartCanvas() + { + config(x_numParams, x_numIns, x_numOuts, 0); + + for (size_t i = 0; i < SmartCanvasInternal::x_numElems; ++i) + { + for (size_t j = 0; j < 2; ++j) + { + std::string xy = j == 0 ? "X" : "Y"; + size_t offset = 2 * i + j; + configSwitch(x_srcXYParam + offset, 0, 7, 0, "Source " + xy + " Pos Element " + std::to_string(i)); + configSwitch(x_trgXYParam + offset, 0, 7, 0, "Target " + xy + " Pos Element " + std::to_string(i)); + configSwitch(x_lenXYParam + offset, 1, 8, 8, (j == 0 ? "Width Element " : "Height Element ") + std::to_string(i)); + configSwitch(x_flipXYParam + offset, 0, 1, 0, "Flip " + xy + " Element " + std::to_string(i)); + + configInput(x_srcXYIn + offset, xy + " CV Element " + std::to_string(i)); + } + + configSwitch(x_rotateParam + i, 0, 3, 0, "Rotate Element " + std::to_string(i)); + configInput(x_gridIdIn + i, "Grid Id Element " + std::to_string(i)); + } + + configOutput(x_gridIdOut, "Grid Id"); + } + + void ReadInputs() + { + for (size_t i = 0; i < SmartCanvasInternal::x_numElems; ++i) + { + if (!inputs[x_gridIdIn + i].isConnected() || + inputs[x_gridIdIn + i].getVoltage() > x_numGridIds) + { + m_state.m_inputs[i].m_gridId = x_numGridIds; + continue; + } + + m_state.m_inputs[i].m_gridId = static_cast(inputs[x_gridIdIn + i].getVoltage()); + + m_state.m_inputs[i].m_srcX = static_cast(params[x_srcXYParam + 2 * i].getValue()); + m_state.m_inputs[i].m_srcX += static_cast(inputs[x_srcXYIn + 2 * i].getVoltage()); + m_state.m_inputs[i].m_trgX = static_cast(params[x_trgXYParam + 2 * i].getValue()); + m_state.m_inputs[i].m_lenX = static_cast(params[x_lenXYParam + 2 * i].getValue()); + m_state.m_inputs[i].m_flipX = static_cast(params[x_flipXYParam + 2 * i].getValue()); + + m_state.m_inputs[i].m_srcY = static_cast(params[x_srcXYParam + 2 * i + 1].getValue()); + m_state.m_inputs[i].m_srcY += static_cast(inputs[x_srcXYIn + 2 * i + 1].getVoltage()); + m_state.m_inputs[i].m_trgY = static_cast(params[x_trgXYParam + 2 * i + 1].getValue()); + m_state.m_inputs[i].m_lenY = static_cast(params[x_lenXYParam + 2 * i + 1].getValue()); + m_state.m_inputs[i].m_flipY = static_cast(params[x_flipXYParam + 2 * i + 1].getValue()); + + m_state.m_inputs[i].m_rotate = static_cast(params[x_rotateParam + i].getValue()); + } + + if (inputs[x_colorIn].isConnected()) + { + m_state.m_onColor.ProcessVoltage(inputs[x_colorIn].getVoltage()); + } + else + { + m_state.m_onColor.ProcessFloat(params[x_colorParam].getValue()); + } + } + + void SetOutputs() + { + outputs[x_gridIdOut].setVoltage(m_canvas.m_gridId); + } + + void process(const ProcessArgs &args) override + { + m_canvas.ProcessStatic(args.sampleTime); + if (m_periodChecker.Process(args.sampleTime)) + { + ReadInputs(); + } + + m_canvas.ProcessInput(m_state); + + SetOutputs(); + } +}; + +struct SmartCanvasWidget : ModuleWidget +{ + SmartCanvasWidget(SmartCanvas* module) + { + setModule(module); + setPanel(createPanel(asset::plugin(pluginInstance, "res/SmartCanvas.svg"))); + + for (size_t i = 0; i < SmartCanvasInternal::x_numElems; ++i) + { + int yPos = 100 + 25 * i; + + for (size_t j = 0; j < 2; ++j) + { + size_t offset = 2 * i + j; + addParam(createParamCentered(Vec(100 + 25 * j, yPos), module, module->x_srcXYParam + offset)); + addInput(createInputCentered(Vec(150 + 25 * j, yPos), module, module->x_srcXYIn + offset)); + addParam(createParamCentered(Vec(225 + 25 * j, yPos), module, module->x_trgXYParam + offset)); + addParam(createParamCentered(Vec(300 + 25 * j, yPos), module, module->x_lenXYParam + offset)); + addParam(createParamCentered(Vec(375 + 25 * j, yPos), module, module->x_flipXYParam + offset)); + } + + addInput(createInputCentered(Vec(50, yPos), module, module->x_gridIdIn + i)); + addParam(createParamCentered(Vec(425, yPos), module, module->x_rotateParam + i)); + } + + addOutput(createOutputCentered(Vec(50, 300), module, module->x_gridIdOut)); + } +}; + +} diff --git a/private/src/SmartGrid.hpp b/private/src/SmartGrid.hpp index 647562b..49c8c12 100644 --- a/private/src/SmartGrid.hpp +++ b/private/src/SmartGrid.hpp @@ -82,12 +82,22 @@ struct Color float ZEncodeFloat() { - return static_cast(ZEncode()) / static_cast(1 << 24); + return ZToFloat(ZEncode()); } static Color ZDecodeFloat(float x) { - return ZDecode(std::min((1 << 24) - 1, static_cast(x * (1 << 24)))); + return ZDecode(FloatToZ(x)); + } + + static size_t FloatToZ(float x) + { + return std::min((1 << 24) - 1, static_cast(x * (1 << 24))); + } + + static float ZToFloat(size_t z) + { + return static_cast(z) / static_cast(1 << 24); } Color AdjustBrightness(float x) @@ -112,6 +122,25 @@ struct Color return c; } + Color Interpolate(Color other, float position) + { + if (position <= 0) + { + return *this; + } + else if (position >= 1) + { + return other; + } + else + { + return Color( + static_cast(m_red) + (static_cast(other.m_red) - static_cast(m_red)) * position, + static_cast(m_green) + (static_cast(other.m_green) - static_cast(m_green)) * position, + static_cast(m_blue) + (static_cast(other.m_blue) - static_cast(m_blue)) * position); + } + } + uint8_t m_red; uint8_t m_green; uint8_t m_blue; @@ -197,12 +226,12 @@ struct Cell } bool m_pressureSensitive; - bool m_velocity; + uint8_t m_velocity; Cell() { m_pressureSensitive = false; - m_velocity = false; + m_velocity = 0; } virtual Color GetColor() @@ -471,11 +500,49 @@ struct CycleCell : Cell } }; +template +struct BinaryCell : Cell +{ + Color m_offColor; + Color m_onColor; + StateClass m_mask; + StateClass* m_state; + + BinaryCell( + Color offColor, + Color onColor, + size_t ix, + StateClass* state) + : m_offColor(offColor) + , m_onColor(onColor) + , m_mask(1 << ix) + , m_state(state) + { + } + + virtual Color GetColor() override + { + if (m_mask & (*m_state)) + { + return m_onColor; + } + else + { + return m_offColor; + } + } + + virtual void OnPress(uint8_t) override + { + *m_state = (*m_state) ^ m_mask; + } +}; + static constexpr int x_gridSize = 8; static constexpr int x_gridXMin = -1; static constexpr int x_gridXMax = 9; -static constexpr int x_gridYMin = -2; -static constexpr int x_gridYMax = 9; +static constexpr int x_gridYMin = -1; +static constexpr int x_gridYMax = 10; static constexpr size_t x_gridMaxSize = 11; enum class ControllerShape : int @@ -568,6 +635,8 @@ struct Message static uint8_t LPPosToNote(int x, int y) { + y = x_gridSize - y - 1; + // Remap y to match the bottom two button rows of LPProMk3 // if (y == -1) @@ -589,7 +658,7 @@ struct Message // The LaunchpadPro's bottom two rows are in the "wrong" order. // Remap. // - return std::make_pair(note - 1, -2); + return std::make_pair(note - 1, 9); } int y = (note - 11) / 10; @@ -605,9 +674,10 @@ struct Message if (x == 9) { x = -1; + y += 1; } - return std::make_pair(x, y); + return std::make_pair(x, x_gridSize - y - 1); } static Message FromLPMidi(const midi::Message& msg) @@ -643,7 +713,7 @@ struct Message } }; -static constexpr size_t x_numGridIds = 128; +static constexpr size_t x_numGridIds = 256; struct GridIdAllocator { @@ -1372,7 +1442,7 @@ struct Fader : public Grid { for (int i = 0; i < height; ++i) { - Put(0, i, new FaderCell(this, i)); + Put(0, i, new FaderCell(this, height - i - 1)); } if (IsExponential()) diff --git a/private/src/SmartGridWidget.hpp b/private/src/SmartGridWidget.hpp index 9e701f9..da3c774 100644 --- a/private/src/SmartGridWidget.hpp +++ b/private/src/SmartGridWidget.hpp @@ -25,14 +25,11 @@ struct GridWidget : LightWidget Color color = Color::Off; if (m_gridId) { - INFO("Grid-idying"); size_t gridId = *m_gridId; if (gridId < x_numGridIds) { color = g_smartBus.GetColor(gridId, m_x, m_y); } - - INFO("Done"); } NVGcolor nvgc = nvgRGBA(color.m_red, color.m_green, color.m_blue, 255); diff --git a/private/src/TheNonagon.hpp b/private/src/TheNonagon.hpp index 249e8ce..00e36ec 100644 --- a/private/src/TheNonagon.hpp +++ b/private/src/TheNonagon.hpp @@ -1,4 +1,4 @@ -#pragma once + #include "SmartGrid.hpp" #include "GridJnct.hpp" #include "TheoryOfTime.hpp" @@ -9,6 +9,9 @@ #include "MultiPhasorGate.hpp" #include "PercentileSequencer.hpp" #include "TrioOctaveSwitches.hpp" +#include "NonagonPanner.hpp" +#include "Trig.hpp" +#include "ClockSelectCell.hpp" struct TheNonagonInternal { @@ -17,7 +20,7 @@ struct TheNonagonInternal static constexpr size_t x_numTrios = 3; static constexpr size_t x_voicesPerTrio = 3; static constexpr size_t x_numGridIds = 16; - static constexpr size_t x_numExtraTimbres = 1; + static constexpr size_t x_numExtraTimbres = 3; struct Input { @@ -25,15 +28,17 @@ struct TheNonagonInternal LameJuisInternal::Input m_lameJuisInput; TimbreAndMute::Input m_timbreAndMuteInput; MultiPhasorGateInternal::Input m_multiPhasorGateInput; - PercentileSequencerInternal::Input m_percentileSequencerInput; + NonagonIndexArp::Input m_arpInput; TrioOctaveSwitches::Input m_trioOctaveSwitchesInput; + Orbiter::Input m_pannerInput; bool m_mute[x_numVoices]; float m_extraTimbre[x_numTrios][x_numExtraTimbres]; bool m_running; bool m_recording; Input() - : m_running(false) + : m_timbreAndMuteInput(m_mute) + , m_running(false) , m_recording(false) { for (size_t i = 0; i < x_numVoices; ++i) @@ -47,6 +52,11 @@ struct TheNonagonInternal { m_extraTimbre[i][j] = 0; } + + for (size_t j = 0; j < x_voicesPerTrio; ++j) + { + + } } } }; @@ -55,11 +65,15 @@ struct TheNonagonInternal LameJuisInternal m_lameJuis; TimbreAndMute m_timbreAndMute; MultiPhasorGateInternal m_multiPhasorGate; - PercentileSequencerInternal m_percentileSequencer; + Orbiter m_panner; + NonagonIndexArp m_indexArp; bool m_muted[x_numVoices]; bool m_gateAck[x_numVoices]; + double m_timer; + Trig m_timerTrig; TheNonagonInternal() + : m_timer(0) { for (size_t i = 0; i < x_numVoices; ++i) { @@ -77,6 +91,7 @@ struct TheNonagonInternal float m_gridId[x_numGridIds]; float m_extraTimbre[x_numVoices][x_numExtraTimbres]; bool m_recording; + float m_totPhasors[x_numTimeBits]; Output() { @@ -92,6 +107,11 @@ struct TheNonagonInternal m_extraTimbre[i][j] = 0; } } + + for (size_t i = 0; i < x_numTimeBits; ++i) + { + m_totPhasors[i] = 0; + } m_recording = false; } @@ -104,7 +124,7 @@ struct TheNonagonInternal bool m_bit; }; - TimeBit m_time[x_numTimeBits]; + TimeBit m_time[x_numTimeBits + 1]; bool* TimeBit(size_t i) { @@ -118,6 +138,7 @@ struct TheNonagonInternal void SetLameJuisInput(Input& input) { + m_time[x_numTimeBits].m_bit = m_theoryOfTime.m_musicalTime.m_gate[0]; for (size_t i = 0; i < x_numTimeBits; ++i) { m_time[i].m_bit = m_theoryOfTime.m_musicalTime.m_gate[x_numTimeBits - i]; @@ -128,8 +149,22 @@ struct TheNonagonInternal { for (size_t j = 0; j < x_voicesPerTrio; ++j) { - float percentile = m_percentileSequencer.GetVal(i, j); - input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_percentiles[j] = percentile; + if (input.m_arpInput.m_clockSelect[i] >= 0) + { + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_usePercentile[j] = false; + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_harmonic[j] = false; + IndexArp* arp = &m_indexArp.m_committedArp[i * x_voicesPerTrio + j]; + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_indexArp[j] = arp; + arp = &m_indexArp.m_arp[i * x_voicesPerTrio + j]; + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_preIndexArp[j] = arp; + } + else + { + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_usePercentile[j] = true; + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_harmonic[j] = true; + float percentile = 1.0 / 2.0 * j; + input.m_lameJuisInput.m_outputInput[i].m_coMuteInput.m_percentiles[j] = percentile; + } } } } @@ -149,7 +184,7 @@ struct TheNonagonInternal for (size_t i = 0; i < LameJuisInternal::x_numOperations; ++i) { - input.m_timbreAndMuteInput.m_on[i] = m_lameJuis.m_operations[i].m_gate; + input.m_timbreAndMuteInput.m_on[i] = m_lameJuis.m_inputs[i].m_value; } } @@ -162,7 +197,7 @@ struct TheNonagonInternal for (size_t i = 0; i < x_numTimeBits + 1; ++i) { - input.m_multiPhasorGateInput.m_phasors[i] = m_theoryOfTime.m_musicalTime.m_bits[x_numTimeBits - i].m_pos; + input.m_multiPhasorGateInput.m_phasors[i] = m_theoryOfTime.m_musicalTime.m_bits[x_numTimeBits - i].m_pos.Float(); if (i < x_numTimeBits) { for (size_t j = 0; j < x_numVoices; ++j) @@ -175,7 +210,7 @@ struct TheNonagonInternal for (size_t i = 0; i < x_numVoices; ++i) { - int voiceClock = input.m_percentileSequencerInput.m_clockSelect[i / x_voicesPerTrio]; + int voiceClock = input.m_arpInput.m_clockSelect[i / x_voicesPerTrio]; if (voiceClock >= 0) { input.m_multiPhasorGateInput.m_phasorSelector[i][voiceClock] = true; @@ -183,11 +218,11 @@ struct TheNonagonInternal } } - void SetPercentileSequencerInputs(Input& input) + void SetIndexArpInputs(Input& input) { for (size_t i = 0; i < x_numTimeBits + 1; ++i) { - input.m_percentileSequencerInput.m_clocks[i] = m_theoryOfTime.m_musicalTime.m_change[x_numTimeBits - i]; + input.m_arpInput.m_clocks[i] = m_theoryOfTime.m_musicalTime.m_change[x_numTimeBits - i]; } } @@ -207,7 +242,7 @@ struct TheNonagonInternal for (size_t j = 0; j < x_numExtraTimbres; ++j) { - m_output.m_extraTimbre[i][j] = input.m_extraTimbre[i / x_voicesPerTrio][j] * m_timbreAndMute.m_voices[i].m_preTimbre; + m_output.m_extraTimbre[i][j] = m_timbreAndMute.m_voices[i].m_preTimbre; } } else @@ -226,17 +261,51 @@ struct TheNonagonInternal m_output.m_phasor[i] = m_muted[i] ? 0 : m_multiPhasorGate.m_phasorOut[i]; } + for (size_t i = 0; i < x_numTimeBits; ++i) + { + m_output.m_totPhasors[i] = input.m_multiPhasorGateInput.m_phasors[x_numTimeBits - i]; + } + m_output.m_recording = input.m_recording; } + void ProcessTimer(float dt, Input& input) + { + if (m_timerTrig.Process(input.m_recording)) + { + m_timer = 0; + } + + m_timer += dt; + } + + float GetTimerFragment(size_t ix) + { + double tot = m_timer / (60 * 30); + if (tot < static_cast(ix) / 16) + { + return 0; + } + else if (static_cast(ix + 1) / 16 <= tot) + { + return 1; + } + else + { + return (tot - static_cast(ix) / 16) / (1.0 / 16); + } + } + void Process(float dt, Input& input) { + ProcessTimer(dt, input); SetTheoryOfTimeInput(input); m_theoryOfTime.Process(dt, input.m_theoryOfTimeInput); + m_panner.Process(dt, input.m_pannerInput); if (m_theoryOfTime.m_musicalTime.m_anyChange) { - SetPercentileSequencerInputs(input); - m_percentileSequencer.Process(input.m_percentileSequencerInput); + SetIndexArpInputs(input); + m_indexArp.Process(input.m_arpInput); SetLameJuisInput(input); m_lameJuis.Process(input.m_lameJuisInput); @@ -264,10 +333,23 @@ struct TheNonagonSmartGrid return m_stateSaver.ToJSON(); } + void SaveJSON() + { + const char* fname = "/Users/joyo/theallelectricsmartgrid/patches/nonagon_dump.json"; + json_dump_file(ToJSON(), fname, 0); + } + void SetFromJSON(json_t* jin) { m_stateSaver.SetFromJSON(jin); } + + void LoadJSON() + { + const char* fname = "/Users/joyo/theallelectricsmartgrid/patches/nonagon_dump.json"; + json_error_t error; + SetFromJSON(json_load_file(fname, 0, &error)); + } SmartGrid::Cell* TimeBitCell(size_t ix) { @@ -291,17 +373,6 @@ struct TheNonagonSmartGrid SmartGrid::StateCell::Mode::Toggle); } - SmartGrid::Cell* RecordingCell() - { - return new SmartGrid::StateCell( - SmartGrid::Color::White /*offColor*/, - SmartGrid::Color::Red /*onColor*/, - &m_state.m_recording, - true, - false, - SmartGrid::StateCell::Mode::Toggle); - } - SmartGrid::Cell* OutBitCell(size_t ix) { return new SmartGrid::StateCell( @@ -375,17 +446,18 @@ struct TheNonagonSmartGrid return VoiceColor(static_cast(absVoice / TheNonagonInternal::x_voicesPerTrio), absVoice % TheNonagonInternal::x_voicesPerTrio); } - size_t m_numPercentileSeqClockSelectsHeld[TheNonagonInternal::x_numVoices]; - size_t m_numPercentileSeqClockSelectsMaxHeld[TheNonagonInternal::x_numVoices]; + size_t m_numClockSelectsHeld[TheNonagonInternal::x_numVoices]; + size_t m_numClockSelectsMaxHeld[TheNonagonInternal::x_numVoices]; + bool m_shift; - SmartGrid::Cell* PercentileSeqClockSelectCell(Trio trio, size_t clockIx) + SmartGrid::Cell* MkClockSelectCell(Trio trio, size_t clockIx) { size_t trioIx = static_cast(trio); - return new PercentileSequencerClockSelectCell( - &m_state.m_percentileSequencerInput, + return new ClockSelectCell( + &m_state.m_arpInput, trioIx, - &m_numPercentileSeqClockSelectsHeld[trioIx], - &m_numPercentileSeqClockSelectsMaxHeld[trioIx], + &m_numClockSelectsHeld[trioIx], + &m_numClockSelectsMaxHeld[trioIx], clockIx, TrioColor(trio).Dim(), SmartGrid::Color::White, @@ -398,7 +470,7 @@ struct TheNonagonSmartGrid { size_t voiceIx = static_cast(t) * TheNonagonInternal::x_voicesPerTrio + i; int xPos = (i == 0) ? x : x + 1; - int yPos = (i < 2) ? y + 1 : y; + int yPos = (i < 2) ? y - 1 : y; grid->Put(xPos, yPos, new SmartGrid::StateCell( SmartGrid::Color::White.Dim(), VoiceColor(t, i), @@ -417,13 +489,19 @@ struct TheNonagonSmartGrid TheNonagonInternal::Input* m_state; TheNonagonInternal* m_nonagon; TheNonagonSmartGrid* m_owner; - TheoryOfTimeTopologyPage(TheNonagonSmartGrid* owner) + bool m_isPan; + MusicalTime::Input* m_timeState; + + TheoryOfTimeTopologyPage(TheNonagonSmartGrid* owner, bool isPan) : SmartGrid::CompositeGrid() , m_state(&owner->m_state) , m_nonagon(&owner->m_nonagon) , m_owner(owner) + , m_isPan(isPan) { SetColors(SmartGrid::Color::Fuscia, SmartGrid::Color::Fuscia.Dim()); + m_timeState = &m_state->m_theoryOfTimeInput.m_input; + InitGrid(); } @@ -431,54 +509,56 @@ struct TheNonagonSmartGrid { for (size_t i = 1; i < 1 + TheNonagonInternal::x_numTimeBits; ++i) { - size_t xPos = SmartGrid::x_gridSize - i - 1; + size_t xPos = SmartGrid::x_gridSize - i - 2; if (i != 1) { for (size_t mult = 2; mult <= 5; ++mult) { Put( xPos, - SmartGrid::x_gridSize - mult + 1, + mult - 2, new SmartGrid::StateCell( SmartGrid::Color::Fuscia /*offColor*/, SmartGrid::Color::White /*onColor*/, - &m_state->m_theoryOfTimeInput.m_input.m_input[i].m_mult, + &m_timeState->m_input[i].m_mult, mult, 1, SmartGrid::StateCell::Mode::Toggle)); } - - Put(xPos, 1, new SmartGrid::StateCell( + + Put(xPos, 6, new SmartGrid::StateCell( SmartGrid::Color::Ocean /*offColor*/, SmartGrid::Color::White /*onColor*/, - &m_state->m_theoryOfTimeInput.m_input.m_input[i].m_pingPong, + &m_timeState->m_input[i].m_pingPong, true, false, SmartGrid::StateCell::Mode::Toggle)); m_owner->m_stateSaver.Insert( - "TheoryOfTimeMult", i, &m_state->m_theoryOfTimeInput.m_input.m_input[i].m_mult); + "TheoryOfTimeMult", i, &m_timeState->m_input[i].m_mult); m_owner->m_stateSaver.Insert( - "TheoryOfTimePingPong", i, &m_state->m_theoryOfTimeInput.m_input.m_input[i].m_pingPong); + "TheoryOfTimePingPong", i, &m_timeState->m_input[i].m_pingPong); } - + if (2 < i) { - Put(xPos, 3, new SmartGrid::StateCell( + Put(xPos, 4, new SmartGrid::StateCell( SmartGrid::Color::Ocean /*offColor*/, SmartGrid::Color::White /*onColor*/, - &m_state->m_theoryOfTimeInput.m_input.m_input[i].m_parentIx, + &m_timeState->m_input[i].m_parentIx, i - 2, i - 1, SmartGrid::StateCell::Mode::Toggle)); m_owner->m_stateSaver.Insert( - "TheoryOfTimeParentIx", i, &m_state->m_theoryOfTimeInput.m_input.m_input[i].m_parentIx); + "TheoryOfTimeParentIx", i, &m_timeState->m_input[i].m_parentIx); } - - Put(xPos, 0, m_owner->TimeBitCell(TheNonagonInternal::x_numTimeBits - i)); + + Put(xPos, 7, m_owner->TimeBitCell(TheNonagonInternal::x_numTimeBits - i)); } - AddGrid(0, 0, new SmartGrid::Fader( + Put(6, 7, m_owner->TimeBitCell(TheNonagonInternal::x_numTimeBits)); + + AddGrid(7, 0, new SmartGrid::Fader( &m_state->m_theoryOfTimeInput.m_freq, SmartGrid::x_gridSize, SmartGrid::Color::White, @@ -488,18 +568,43 @@ struct TheNonagonSmartGrid 100 /*maxChangeSpeed*/, true /*pressureSensitive*/, SmartGrid::Fader::Structure::Exponential)); - m_owner->m_stateSaver.Insert( "TheoryOfTimeFreq", &m_state->m_theoryOfTimeInput.m_freq); + } + }; + + struct PhasorSelectorCell : public SmartGrid::Cell + { + int m_srcIx; + PhasorSwitcher* m_trg; + SmartGrid::Color m_color; - for (Trio t : {Trio::Fire, Trio::Earth, Trio::Water}) + PhasorSelectorCell(int srcIx, PhasorSwitcher* trg, SmartGrid::Color color) + { + m_srcIx = srcIx; + m_trg = trg; + m_color = color; + } + + virtual SmartGrid::Color GetColor() override + { + if (m_srcIx == m_trg->m_valIx) { - size_t muteY = 6 - static_cast(t) * 2; - m_owner->PlaceMutes(t, 6, muteY, this); + return m_color.Interpolate(SmartGrid::Color::White, m_trg->Get()); } - - Put(6, 1, m_owner->StartStopCell()); - Put(7, 1, m_owner->RecordingCell()); + else if (m_srcIx == m_trg->m_desiredIx) + { + return SmartGrid::Color::White; + } + else + { + return m_color; + } + } + + virtual void OnPress(uint8_t velocity) override + { + m_trg->Desire(m_srcIx); } }; @@ -604,11 +709,11 @@ struct TheNonagonSmartGrid { for (size_t i = 0; i < TheNonagonInternal::x_numTimeBits + 1; ++i) { - if (i < TheNonagonInternal::x_numTimeBits) + Put(i, 7, m_owner->TimeBitCell(i)); + if (i < TheNonagonInternal::x_numTimeBits - 2) { - Put(i, 0, m_owner->TimeBitCell(i)); size_t theoryIx = TheNonagonInternal::x_numTimeBits - i; - Put(i, 1, new SmartGrid::StateCell( + Put(i, 6, new SmartGrid::StateCell( SmartGrid::Color::Ocean /*offColor*/, SmartGrid::Color::White /*onColor*/, &m_state->m_theoryOfTimeInput.m_input.m_input[theoryIx].m_parentIx, @@ -621,8 +726,8 @@ struct TheNonagonSmartGrid for (Trio t : {Trio::Fire, Trio::Earth, Trio::Water}) { size_t tId = static_cast(t); - size_t coMuteY = 7 - tId * 2; - size_t seqY = coMuteY - 1; + size_t coMuteY = tId * 2; + size_t seqY = coMuteY + 1; if (i < TheNonagonInternal::x_numTimeBits) { Put(i, coMuteY, new SmartGrid::StateCell( @@ -636,14 +741,13 @@ struct TheNonagonSmartGrid "LameJuisCoMute", i, tId, &m_state->m_lameJuisInput.m_outputInput[tId].m_coMuteInput.m_coMutes[i]); } - Put(i, seqY, m_owner->PercentileSeqClockSelectCell(t, i)); + Put(i, seqY, m_owner->MkClockSelectCell(t, i)); m_owner->PlaceMutes(t, 6, seqY, this); } } - Put(6, 1, m_owner->StartStopCell()); - Put(7, 1, m_owner->RecordingCell()); + Put(7, 7, m_owner->StartStopCell()); } }; @@ -695,11 +799,11 @@ struct TheNonagonSmartGrid SmartGrid::Color::Yellow.Dim(), SmartGrid::Color::White.Dim(), SmartGrid::Color::Ocean.Dim()})); for (size_t i = 0; i < TheNonagonInternal::x_numTimeBits; ++i) { - Put(i, 1, m_owner->TimeBitCell(i)); + Put(i, 6, m_owner->TimeBitCell(i)); for (size_t j = 0; j < LameJuisInternal::x_numOperations; ++j) { - Put(i, j + 2, new SmartGrid::CycleCell( + Put(i, SmartGrid::x_gridSize - j - 3, new SmartGrid::CycleCell( dimColorScheme, colorScheme, &m_state->m_lameJuisInput.m_operationInput[j].m_elements[i], @@ -708,14 +812,11 @@ struct TheNonagonSmartGrid "LameJuisMatrixSwitch", i, j, &m_state->m_lameJuisInput.m_operationInput[j].m_elements[i]); } - Put(6, i + 2, m_owner->OutBitCell(i)); - Put(7, i + 2, m_owner->EquationOutputSwitch(i)); + Put(6, SmartGrid::x_gridSize - i - 3, m_owner->OutBitCell(i)); + Put(7, SmartGrid::x_gridSize - i - 3, m_owner->EquationOutputSwitch(i)); m_owner->m_stateSaver.Insert( "LameJuisEquationOutputSwitch", i, &m_state->m_lameJuisInput.m_operationInput[i].m_switch); } - - Put(6, 1, m_owner->StartStopCell()); - Put(7, 1, m_owner->RecordingCell()); } }; @@ -746,12 +847,13 @@ struct TheNonagonSmartGrid virtual SmartGrid::Color GetColor() override { + SmartGrid::Color c = SmartGrid::StateCell>::GetColor(); if (m_nonagon->m_lameJuis.m_operations[m_i].m_countTotal < static_cast(m_j)) { - return SmartGrid::Color::Off; + return c.Dim(); } - return SmartGrid::StateCell>::GetColor(); + return c; } }; @@ -774,16 +876,13 @@ struct TheNonagonSmartGrid { for (size_t j = 0; j < TheNonagonInternal::x_numTimeBits + 1; ++j) { - Put(j, i + 2, new Cell(i, j, &m_state->m_lameJuisInput.m_operationInput[i].m_direct[j], m_nonagon)); + Put(j, SmartGrid::x_gridSize - i - 3, new Cell(i, j, &m_state->m_lameJuisInput.m_operationInput[i].m_direct[j], m_nonagon)); m_owner->m_stateSaver.Insert( "LameJuisLHS", i, j, &m_state->m_lameJuisInput.m_operationInput[i].m_direct[j]); } - Put(7, i + 2, m_owner->EquationOutputSwitch(i)); + Put(7, SmartGrid::x_gridSize - i - 3, m_owner->EquationOutputSwitch(i)); } - - Put(6, 1, m_owner->StartStopCell()); - Put(7, 1, m_owner->RecordingCell()); } }; @@ -809,7 +908,7 @@ struct TheNonagonSmartGrid for (size_t j = 0; j < static_cast(LameJuisInternal::Accumulator::Interval::NumIntervals); ++j) { size_t xPos = 2 * i + (j == 0 || 6 < j ? 1 : 0); - size_t yPos = j == 0 ? 2 : (7 - (j - 1) % 6); + size_t yPos = j == 0 ? 5 : (j - 1) % 6; Put(xPos, yPos, new SmartGrid::StateCell( EquationColor(i), SmartGrid::Color::White, @@ -821,171 +920,289 @@ struct TheNonagonSmartGrid "LameJuisInterval", i, &m_state->m_lameJuisInput.m_accumulatorInput[i].m_interval); } } - - Put(6, 1, m_owner->StartStopCell()); - Put(7, 1, m_owner->RecordingCell()); } }; - struct PercentileSequencerSubPage : public SmartGrid::CompositeGrid + static SmartGrid::Color FadeColor(Trio trio, int ord, int ordMax) + { + if (ordMax % 2 == 1 && ord == ordMax / 2) + { + return TrioColor(trio); + } + else + { + bool low = ord < ordMax / 2; + size_t trioIx = static_cast(trio); + Trio o = static_cast((low ? trioIx + 2 : trioIx + 1) % 3); + float perc; + if (low) + { + perc = 0.5 + static_cast(ord) / ordMax; + } + else + { + perc = 1.0 - static_cast(ord) / (2 * ordMax); + } + + return TrioColor(o).Interpolate(TrioColor(trio), perc); + } + } + + struct LameJuisSeqPaletteCell : public SmartGrid::Cell { - TheNonagonInternal::Input* m_state; - TheNonagonInternal* m_nonagon; - TheNonagonSmartGrid* m_owner; Trio m_trio; - PercentileSequencerSubPage(TheNonagonSmartGrid* owner, Trio t) - : SmartGrid::CompositeGrid() - , m_state(&owner->m_state) - , m_nonagon(&owner->m_nonagon) - , m_owner(owner) - , m_trio(t) + LameJuisInternal* m_lameJuis; + LameJuisInternal::Input* m_state; + size_t m_ix; + + LameJuisSeqPaletteCell( + Trio trio, + LameJuisInternal* lameJuis, + LameJuisInternal::Input* state, + size_t ix) + : m_trio(trio) + , m_lameJuis(lameJuis) + , m_state(state) + , m_ix(ix) { - SetColors(TrioColor(m_trio), TrioColor(m_trio).Dim()); - InitGrid(); - } - - void InitGrid() + } + + virtual SmartGrid::Color GetColor() override { size_t trioIx = static_cast(m_trio); - for (size_t i = 0; i < TheNonagonInternal::x_numTimeBits + 1; ++i) + LameJuisInternal::SeqPaletteState s = m_lameJuis->GetSeqPaletteState(trioIx, m_ix, m_state->m_inputVector); + SmartGrid::Color c = BaseColor(s); + if (!s.m_isCur) { - size_t coMuteY = 1; - size_t seqY = 0; - if (i < TheNonagonInternal::x_numTimeBits) - { - Put(i, coMuteY, new SmartGrid::StateCell( - SmartGrid::Color::White /*offColor*/, - TrioColor(m_trio) /*onColor*/, - &m_state->m_lameJuisInput.m_outputInput[trioIx].m_coMuteInput.m_coMutes[i], - true, - false, - SmartGrid::StateCell::Mode::Toggle)); - } - - Put(i, seqY, m_owner->PercentileSeqClockSelectCell(m_trio, i)); + return c.AdjustBrightness(0.6); } - - for (size_t i = 0; i < PercentileSequencerInternal::x_numSteps; ++i) + else { - for (size_t j = 0; j < 2; ++j) - { - Put(i, 3 - j, new SmartGrid::StateCell>( - VoiceColor(m_trio, 2 * j) /*offColor*/, - SmartGrid::Color::Grey, - SmartGrid::Color::White, - SmartGrid::Color::White, - &m_state->m_percentileSequencerInput.m_input[trioIx].m_selectorIn[j].m_seqLen, - SmartGrid::Flash(&m_nonagon->m_percentileSequencer.m_sequencer[trioIx].m_stepSelector[j].m_curStep, i), - i, - 0, - SmartGrid::StateCell>::Mode::SetOnly)); - } - - AddGrid(i, 4, new SmartGrid::Fader( - &m_state->m_percentileSequencerInput.m_input[trioIx].m_sequence[i], - SmartGrid::x_gridSize - 4, - TrioColor(m_trio), - 0 /*min*/, - 1.0 /*max*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Linear)); - m_owner->m_stateSaver.Insert( - "SequencerValue", trioIx, i, &m_state->m_percentileSequencerInput.m_input[trioIx].m_sequence[i]); - + return c; } + } - for (size_t i = 0; i < 2; ++i) + SmartGrid::Color BaseColor(LameJuisInternal::SeqPaletteState s) + { + if (s.m_ordMax % 2 == 1 && s.m_ord == s.m_ordMax / 2) { - m_owner->m_stateSaver.Insert( - "PercentileSequenceLen", trioIx, i, &m_state->m_percentileSequencerInput.m_input[trioIx].m_selectorIn[i].m_seqLen); + return TrioColor(m_trio); } + else + { + bool low = s.m_ord < s.m_ordMax / 2; + size_t trioIx = static_cast(m_trio); + Trio o = static_cast((low ? trioIx + 2 : trioIx + 1) % 3); + float perc; + if (low) + { + perc = 0.5 + static_cast(s.m_ord) / s.m_ordMax; + } + else + { + perc = 1.0 - static_cast(s.m_ord) / (2 * s.m_ordMax); + } - m_owner->PlaceMutes(m_trio, 6, 0, this); - - m_owner->m_stateSaver.Insert( - "PercentileSequenceClockSelect", trioIx, &m_state->m_percentileSequencerInput.m_clockSelect[trioIx]); - m_owner->m_stateSaver.Insert( - "PercentileSequenceResetSelect", trioIx, &m_state->m_percentileSequencerInput.m_resetSelect[trioIx]); + return TrioColor(o).Interpolate(TrioColor(m_trio), perc); + } } }; - struct PercentileSequencerPages : public SmartGrid::GridSwitcher + struct LameJuisSeqPalettePage : public SmartGrid::Grid { TheNonagonInternal::Input* m_state; TheNonagonInternal* m_nonagon; TheNonagonSmartGrid* m_owner; - PercentileSequencerPages(TheNonagonSmartGrid* owner) - : GridSwitcher(nullptr) + Trio m_trio; + LameJuisSeqPalettePage(TheNonagonSmartGrid* owner, Trio t) + : SmartGrid::Grid() , m_state(&owner->m_state) , m_nonagon(&owner->m_nonagon) , m_owner(owner) + , m_trio(t) { - } + SetColors(TrioColor(t), TrioColor(t).Dim()); + InitGrid(); + } - virtual size_t GetGridId() override + void InitGrid() { - switch (m_owner->m_activeTrio) + for (size_t i = 0; i < SmartGrid::x_gridSize; ++i) { - case Trio::Fire: return m_owner->m_percentileSequencerFireGridId; - case Trio::Earth: return m_owner->m_percentileSequencerEarthGridId; - case Trio::Water: return m_owner->m_percentileSequencerWaterGridId; - default: return m_owner->m_percentileSequencerFireGridId; + for (size_t j = 0; j < SmartGrid::x_gridSize; ++j) + { + size_t ix = i * SmartGrid::x_gridSize + j; + Put(i, j, new LameJuisSeqPaletteCell( + m_trio, + &m_nonagon->m_lameJuis, + &m_state->m_lameJuisInput, + ix)); + } } } }; - - struct PercentileSequencerFaderPage : public SmartGrid::CompositeGrid + + struct IndexArpPage : public SmartGrid::Grid { TheNonagonInternal::Input* m_state; TheNonagonInternal* m_nonagon; - TheNonagonSmartGrid* m_owner; - PercentileSequencerFaderPage(TheNonagonSmartGrid* owner) - : SmartGrid::CompositeGrid() + TheNonagonSmartGrid* m_owner; + Trio m_trio; + IndexArpPage(TheNonagonSmartGrid* owner, Trio t) + : SmartGrid::Grid() , m_state(&owner->m_state) , m_nonagon(&owner->m_nonagon) , m_owner(owner) + , m_trio(t) { + SetColors(TrioColor(t), TrioColor(t).Dim()); InitGrid(); } + struct RhythmCell : public SmartGrid::Cell + { + IndexArp::Input* m_state; + IndexArp* m_arp; + int m_ix; + bool* m_shift; + Trio m_trio; + SmartGrid::Color m_color; + + RhythmCell( + IndexArp::Input* state, + IndexArp* arp, + int ix, + bool* shift, + Trio trio) + : m_state(state) + , m_arp(arp) + , m_ix(ix) + , m_shift(shift) + , m_trio(trio) + { + } + + virtual void OnPress(uint8_t velocity) override + { + if (*m_shift) + { + m_state->m_rhythmLength = m_ix + 1; + } + else + { + m_state->m_rhythm[m_ix] = !m_state->m_rhythm[m_ix]; + } + } + + virtual SmartGrid::Color GetColor() override + { + if (m_state->m_rhythmLength <= m_ix) + { + return SmartGrid::Color::Off; + } + + SmartGrid::Color result; + if (m_arp->m_rhythmIndex != m_ix) + { + result = SmartGrid::Color::White; + } + else + { + result = FadeColor(m_trio, m_arp->m_index, m_arp->m_size); + } + + if (!m_state->m_rhythm[m_ix]) + { + result = result.Dim(); + } + + return result; + } + }; + void InitGrid() { - for (Trio t : {Trio::Fire, Trio::Earth, Trio::Water}) + size_t tId = static_cast(m_trio); + for (size_t i = 0; i < TheNonagonInternal::x_voicesPerTrio; ++i) { - size_t tId = static_cast(t); - size_t xPos = 2 * tId; - AddGrid(xPos, 0, new SmartGrid::Fader( - &m_state->m_percentileSequencerInput.m_input[tId].m_sequenceScale, - SmartGrid::x_gridSize, - TrioColor(t), - 0 /*min*/, - 1.0 /*max*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Linear)); - AddGrid(xPos + 1, 0, new SmartGrid::Fader( - &m_state->m_percentileSequencerInput.m_input[tId].m_tenorDistance, - SmartGrid::x_gridSize, - TrioColor(t), - 0 /*min*/, - 1.0 /*max*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Linear)); + size_t voice = tId * TheNonagonInternal::x_voicesPerTrio + i; + size_t yPos = i; + + Put(0, yPos, new SmartGrid::StateCell( + TrioColor(m_trio) /*offColor*/, + SmartGrid::Color::White /*onColor*/, + &m_state->m_arpInput.m_input[voice].m_up, + true, + false, + SmartGrid::StateCell::Mode::Toggle)); + Put(1, yPos, new SmartGrid::StateCell( + TrioColor(m_trio) /*offColor*/, + SmartGrid::Color::White /*onColor*/, + &m_state->m_arpInput.m_input[voice].m_cycle, + true, + false, + SmartGrid::StateCell::Mode::Toggle)); + + for (size_t j = 0; j < 2; ++j) + { + Put(2 + j, yPos, new SmartGrid::BinaryCell( + FadeColor(m_trio, 1, 6) /*offColor*/, + FadeColor(m_trio, 1, 6).Interpolate(SmartGrid::Color::White, 0.7) /*onColor*/, + 1 - j, + &m_state->m_arpInput.m_input[voice].m_offset)); + Put(4 + j, yPos, new SmartGrid::BinaryCell( + FadeColor(m_trio, 2, 6) /*offColor*/, + FadeColor(m_trio, 2, 6).Interpolate(SmartGrid::Color::White, 0.7) /*onColor*/, + 1 - j, + &m_state->m_arpInput.m_input[voice].m_intervalSubOne)); + Put(6 + j, yPos, new SmartGrid::BinaryCell( + FadeColor(m_trio, 3, 6) /*offColor*/, + FadeColor(m_trio, 3, 6).Interpolate(SmartGrid::Color::White, 0.7) /*onColor*/, + 1 - j, + &m_state->m_arpInput.m_input[voice].m_motiveInterval)); + } + + m_owner->m_stateSaver.Insert( + "IndexArpUp", voice, &m_state->m_arpInput.m_input[voice].m_up); + m_owner->m_stateSaver.Insert( + "IndexArpCycle", voice, &m_state->m_arpInput.m_input[voice].m_cycle); m_owner->m_stateSaver.Insert( - "SequenceScale", tId, &m_state->m_percentileSequencerInput.m_input[tId].m_sequenceScale); + "IndexArpOffset", voice, &m_state->m_arpInput.m_input[voice].m_offset); m_owner->m_stateSaver.Insert( - "TenorDistance", tId, &m_state->m_percentileSequencerInput.m_input[tId].m_tenorDistance); + "IndexArpIntervalSubOne", voice, &m_state->m_arpInput.m_input[voice].m_intervalSubOne); + m_owner->m_stateSaver.Insert( + "IndexArpMotiveInterval", voice, &m_state->m_arpInput.m_input[voice].m_motiveInterval); - m_owner->PlaceMutes(t, 6, SmartGrid::x_gridSize - 2 - 2 * tId, this); + for (size_t j = 0; j < SmartGrid::x_gridSize; ++j) + { + Put(j, yPos + 3, new RhythmCell( + &m_state->m_arpInput.m_input[voice], + &m_nonagon->m_indexArp.m_arp[voice], + j, + &m_owner->m_shift, + m_trio)); + m_owner->m_stateSaver.Insert( + "IndexArpRhythm", voice, j, &m_state->m_arpInput.m_input[voice].m_rhythm[j]); + } + + m_owner->m_stateSaver.Insert( + "IndexArpRhythmLength", voice, &m_state->m_arpInput.m_input[voice].m_rhythmLength); + } - Put(6, 1, m_owner->StartStopCell()); - Put(7, 1, m_owner->RecordingCell()); + Put(7, 7, new SmartGrid::StateCell( + SmartGrid::Color::White.Dim() /*offColor*/, + SmartGrid::Color::White /*onColor*/, + &m_owner->m_shift, + true, + false, + SmartGrid::StateCell::Mode::Momentary)); + + + m_owner->m_stateSaver.Insert( + "IndexArpClockSelect", tId, &m_state->m_arpInput.m_clockSelect[tId]); + m_owner->m_stateSaver.Insert( + "IndexArpResetSelect", tId, &m_state->m_arpInput.m_resetSelect[tId]); } }; @@ -1024,7 +1241,8 @@ struct TheNonagonSmartGrid size_t trioIx = static_cast(m_trio); for (size_t i = TheNonagonInternal::x_voicesPerTrio * trioIx; i < TheNonagonInternal::x_voicesPerTrio * (trioIx + 1); ++i) { - if (m_nonagon->m_timbreAndMute.m_voices[i].m_countHigh == m_count) + if (m_nonagon->m_timbreAndMute.m_voices[i].m_countHigh == m_count && + m_nonagon->m_multiPhasorGate.m_gate[i]) { return true; } @@ -1034,20 +1252,6 @@ struct TheNonagonSmartGrid } }; - enum class FaderType - { - Timbre = 0, - SequencerRange = 1 - }; - - FaderType m_currentFader; - FaderType m_placedFader; - - std::shared_ptr m_extraTimbreFader; - std::shared_ptr m_timbreMultFader; - std::shared_ptr m_sequencerScaleFader; - std::shared_ptr m_tenorDistanceFader; - void InitGrid() { size_t trioIx = static_cast(m_trio); @@ -1057,7 +1261,7 @@ struct TheNonagonSmartGrid { size_t voiceIx = trioIx * TheNonagonInternal::x_voicesPerTrio + j; SmartGrid::Color c = VoiceColor(m_trio, j); - Put(j, i + 2, new SmartGrid::StateCell( + Put(i, j, new SmartGrid::StateCell( SmartGrid::Color::White.Dim() /*offColor*/, c /*onColor*/, SmartGrid::Color::Grey /*offFlashColor*/, @@ -1074,7 +1278,7 @@ struct TheNonagonSmartGrid for (size_t i = 0; i < LameJuisInternal::x_numOperations + 1; ++i) { - Put(5, i + 1, new SmartGrid::StateCell( + Put(i, 3, new SmartGrid::StateCell( SmartGrid::Color::White.Dim() /*offColor*/, SmartGrid::ColorScheme::Rainbow[i].Dim() /*onColor*/, SmartGrid::Color::Grey /*offFlashColor*/, @@ -1087,59 +1291,10 @@ struct TheNonagonSmartGrid m_owner->m_stateSaver.Insert( "TimbreAndMuteCountHighSelect", trioIx, i, &m_state->m_timbreAndMuteInput.m_canPassIfOn[trioIx][i]); } - - m_extraTimbreFader.reset(new SmartGrid::Fader( - &m_state->m_extraTimbre[trioIx][0], - SmartGrid::x_gridSize, - TrioColor(m_trio), - 0 /*minSlew*/, - 1.0 /*maxSlew*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Linear)); - m_timbreMultFader.reset(new SmartGrid::Fader( - &m_state->m_timbreAndMuteInput.m_timbreMult[trioIx], - SmartGrid::x_gridSize, - TrioColor(m_trio), - -1.0 /*minMult*/, - 1.0 /*maxMult*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Bipolar)); - m_sequencerScaleFader.reset(new SmartGrid::Fader( - &m_state->m_percentileSequencerInput.m_input[trioIx].m_sequenceScale, - SmartGrid::x_gridSize, - TrioColor(m_trio), - 0 /*min*/, - 1.0 /*max*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Linear)); - m_tenorDistanceFader.reset(new SmartGrid::Fader( - &m_state->m_percentileSequencerInput.m_input[trioIx].m_tenorDistance, - SmartGrid::x_gridSize, - TrioColor(m_trio), - 0 /*min*/, - 1.0 /*max*/, - 0.1 /*minChangeSpeed*/, - 100 /*maxChangeSpeed*/, - true /*pressureSensitive*/, - SmartGrid::Fader::Structure::Linear)); - - AddGrid(6, 0, m_extraTimbreFader); - AddGrid(7, 0, m_timbreMultFader); - AddGrid(m_sequencerScaleFader); - AddGrid(m_tenorDistanceFader); - - m_placedFader = FaderType::Timbre; - m_currentFader = FaderType::Timbre; for (int i = -3; i < 3; ++i) { - Put(3, 5 + i, new SmartGrid::StateCell( + Put(5 + i, 4, new SmartGrid::StateCell( TrioCompanionColor(m_trio), SmartGrid::Color::White /*onColor*/, &m_state->m_trioOctaveSwitchesInput.m_octave[trioIx], @@ -1151,7 +1306,7 @@ struct TheNonagonSmartGrid for (size_t i = 0; i < 4; ++i) { TrioOctaveSwitches::Spread spread = static_cast(i); - Put(4, 4 + i, new SmartGrid::StateCell( + Put(4 + i, 5, new SmartGrid::StateCell( TrioCompanionColor(m_trio), SmartGrid::Color::White /*onColor*/, &m_state->m_trioOctaveSwitchesInput.m_spread[trioIx], @@ -1160,56 +1315,24 @@ struct TheNonagonSmartGrid SmartGrid::StateCell::Mode::SetOnly)); } - for (size_t i = 0; i < 2; ++i) - { - FaderType ft = static_cast(i); - Put(i, 1, new SmartGrid::StateCell( - TrioCompanionColor(m_trio), - SmartGrid::Color::White /*onColor*/, - &m_currentFader, - ft, - ft, - SmartGrid::StateCell::Mode::SetOnly)); - } + SmartGrid::ColorScheme colorScheme(std::vector({ + SmartGrid::Color::White.Dim(), + TrioCompanionColor(m_trio), + SmartGrid::Color::White})); + Put(6, 6, new SmartGrid::CycleCell( + colorScheme, + &m_state->m_timbreAndMuteInput.m_monoMode[trioIx])); + + m_owner->m_stateSaver.Insert( + "MonoMode", trioIx, &m_state->m_timbreAndMuteInput.m_monoMode[trioIx]); + - m_owner->PlaceMutes(m_trio, 3, 0, this); + m_owner->PlaceMutes(m_trio, 6, 6, this); m_owner->m_stateSaver.Insert( "TrioOctave", trioIx, &m_state->m_trioOctaveSwitchesInput.m_octave[trioIx]); m_owner->m_stateSaver.Insert( "TrioSpread", trioIx, &m_state->m_trioOctaveSwitchesInput.m_spread[trioIx]); - m_owner->m_stateSaver.Insert( - "TimbreAndMuteExtraTimbre", trioIx, &m_state->m_extraTimbre[trioIx][0]); - m_owner->m_stateSaver.Insert( - "TimbreAndMuteFaderType", trioIx, &m_currentFader); - m_owner->m_stateSaver.Insert( - "TimbreAndMuteTimbreMult", trioIx, &m_state->m_timbreAndMuteInput.m_timbreMult[trioIx]); - } - - virtual void Process(float dt) override - { - if (m_currentFader != m_placedFader) - { - switch (m_currentFader) - { - case FaderType::Timbre: - { - Place(6, 0, m_extraTimbreFader.get()); - Place(7, 0, m_timbreMultFader.get()); - break; - } - case FaderType::SequencerRange: - { - Place(6, 0, m_sequencerScaleFader.get()); - Place(7, 0, m_tenorDistanceFader.get()); - break; - } - } - - m_placedFader = m_currentFader; - } - - SmartGrid::CompositeGrid::Process(dt); } }; @@ -1245,11 +1368,12 @@ struct TheNonagonSmartGrid size_t m_lameJuisMatrixGridId; size_t m_lameJuisLHSGridId; size_t m_lameJuisIntervalGridId; - size_t m_percentileSequencerFireGridId; - size_t m_percentileSequencerEarthGridId; - size_t m_percentileSequencerWaterGridId; - size_t m_percentileSequencerPagesGridId; - size_t m_percentileSequencerFaderGridId; + size_t m_indexArpFireGridId; + size_t m_indexArpEarthGridId; + size_t m_indexArpWaterGridId; + size_t m_lameJuisSeqPaletteFireGridId; + size_t m_lameJuisSeqPaletteEarthGridId; + size_t m_lameJuisSeqPaletteWaterGridId; size_t m_timbreAndMuteFireGridId; size_t m_timbreAndMuteEarthGridId; size_t m_timbreAndMuteWaterGridId; @@ -1261,7 +1385,8 @@ struct TheNonagonSmartGrid TheNonagonInternal* m_nonagon; TheNonagonSmartGrid* m_owner; TheNonagonGridSwitcher(TheNonagonSmartGrid* owner, size_t ix) - : m_state(&owner->m_state) + : SmartGrid::MenuGridSwitcher(owner->m_stateSaver) + , m_state(&owner->m_state) , m_nonagon(&owner->m_nonagon) , m_owner(owner) { @@ -1271,84 +1396,6 @@ struct TheNonagonSmartGrid void InitGrid() { - GetMenuGrid()->AddMenuRow(SmartGrid::MenuButtonRow::RowPos::Bottom); - GetMenuGrid()->AddMenuRow(SmartGrid::MenuButtonRow::RowPos::SubBottom); - GetMenuGrid()->AddMenuRow(SmartGrid::MenuButtonRow::RowPos::Right, false, 0, 3); - - // Theory Of Time - // - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::Bottom, - 0, - m_owner->m_theoryOfTimeTopologyGridId); - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::Bottom, - 2, - m_owner->m_theoryOfTimeSwingGridId); - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::Bottom, - 3, - m_owner->m_theoryOfTimeSwaggerGridId); - - // LaMeJuIS - // - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::SubBottom, - 0, - m_owner->m_lameJuisCoMuteGridId); - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::SubBottom, - 1, - m_owner->m_lameJuisMatrixGridId); - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::SubBottom, - 2, - m_owner->m_lameJuisLHSGridId); - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::SubBottom, - 3, - m_owner->m_lameJuisIntervalGridId); - - - // Sequencers - // - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::Bottom, - 4, - m_owner->m_percentileSequencerPagesGridId); - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::Bottom, - 1, - m_owner->m_percentileSequencerFaderGridId); - - // Articulation - // - GetMenuGrid()->SetGridId( - SmartGrid::MenuButtonRow::RowPos::Bottom, - 5, - m_owner->m_timbreAndMutePagesGridId); - - GetMenuGrid()->Put(SmartGrid::MenuButtonRow::RowPos::Right, 0, new SmartGrid::StateCell( - SmartGrid::Color::Blue.Dim(), - SmartGrid::Color::Blue, - &m_owner->m_activeTrio, - Trio::Water, - Trio::Water, - SmartGrid::StateCell::Mode::SetOnly)); - GetMenuGrid()->Put(SmartGrid::MenuButtonRow::RowPos::Right, 1, new SmartGrid::StateCell( - SmartGrid::Color::Green.Dim(), - SmartGrid::Color::Green, - &m_owner->m_activeTrio, - Trio::Earth, - Trio::Earth, - SmartGrid::StateCell::Mode::SetOnly)); - GetMenuGrid()->Put(SmartGrid::MenuButtonRow::RowPos::Right, 2, new SmartGrid::StateCell( - SmartGrid::Color::Red.Dim(), - SmartGrid::Color::Red, - &m_owner->m_activeTrio, - Trio::Fire, - Trio::Fire, - SmartGrid::StateCell::Mode::SetOnly)); } }; @@ -1382,8 +1429,9 @@ struct TheNonagonSmartGrid for (size_t i = 0; i < TheNonagonInternal::x_numVoices; ++i) { m_state.m_multiPhasorGateInput.m_phasorSelector[i][TheNonagonInternal::x_numTimeBits] = true; - m_numPercentileSeqClockSelectsHeld[i] = 0; - m_numPercentileSeqClockSelectsMaxHeld[i] = 0; + m_numClockSelectsHeld[i] = 0; + m_numClockSelectsMaxHeld[i] = 0; + m_shift = false; m_stateSaver.Insert("Mute", i, &m_state.m_mute[i]); } } @@ -1392,10 +1440,10 @@ struct TheNonagonSmartGrid { // TheoryOfTime // - m_theoryOfTimeTopologyGridId = m_smartGrid.AddGrid(new TheoryOfTimeTopologyPage(this)); + m_theoryOfTimeTopologyGridId = m_smartGrid.AddGrid(new TheoryOfTimeTopologyPage(this, false /*isPan*/)); m_theoryOfTimeSwingGridId = m_smartGrid.AddGrid(new TheoryOfTimeSwingAndSwaggerPage(this, true)); m_theoryOfTimeSwaggerGridId = m_smartGrid.AddGrid(new TheoryOfTimeSwingAndSwaggerPage(this, false)); - + // LaMeJuIS // m_lameJuisCoMuteGridId = m_smartGrid.AddGrid(new LameJuisCoMutePage(this)); @@ -1405,19 +1453,23 @@ struct TheNonagonSmartGrid // Sequencers // - m_percentileSequencerFireGridId = m_smartGrid.AddGrid(new PercentileSequencerSubPage(this, Trio::Fire)); - m_percentileSequencerEarthGridId = m_smartGrid.AddGrid(new PercentileSequencerSubPage(this, Trio::Earth)); - m_percentileSequencerWaterGridId = m_smartGrid.AddGrid(new PercentileSequencerSubPage(this, Trio::Water)); - m_percentileSequencerFaderGridId = m_smartGrid.AddGrid(new PercentileSequencerFaderPage(this)); - m_percentileSequencerPagesGridId = m_smartGrid.AddGrid(new PercentileSequencerPages(this)); - + m_indexArpFireGridId = m_smartGrid.AddGrid(new IndexArpPage(this, Trio::Fire)); + m_indexArpEarthGridId = m_smartGrid.AddGrid(new IndexArpPage(this, Trio::Earth)); + m_indexArpWaterGridId = m_smartGrid.AddGrid(new IndexArpPage(this, Trio::Water)); + + // Palettes + // + // m_lameJuisSeqPaletteFireGridId = m_smartGrid.AddGrid(new LameJuisSeqPalettePage(this, Trio::Fire)); + // m_lameJuisSeqPaletteEarthGridId = m_smartGrid.AddGrid(new LameJuisSeqPalettePage(this, Trio::Earth)); + // m_lameJuisSeqPaletteWaterGridId = m_smartGrid.AddGrid(new LameJuisSeqPalettePage(this, Trio::Water)); + // Articulation // m_timbreAndMuteFireGridId = m_smartGrid.AddGrid(new TimbreAndMuteSubPage(this, Trio::Fire)); m_timbreAndMuteEarthGridId = m_smartGrid.AddGrid(new TimbreAndMuteSubPage(this, Trio::Earth)); m_timbreAndMuteWaterGridId = m_smartGrid.AddGrid(new TimbreAndMuteSubPage(this, Trio::Water)); m_timbreAndMutePagesGridId = m_smartGrid.AddGrid(new TimbreAndMutePages(this)); - + m_smartGrid.AddToplevelGrid(new SmartGrid::GridSwitcher(new TheNonagonGridSwitcher(this, 0))); m_smartGrid.AddToplevelGrid(new SmartGrid::GridSwitcher(new TheNonagonGridSwitcher(this, 1))); m_stateSaver.Insert("ActiveTrio", &m_activeTrio); @@ -1438,16 +1490,26 @@ struct TheNonagonSmartGrid struct TheNonagon : Module { TheNonagonSmartGrid m_nonagon; + Trig m_saveTrig; + Trig m_loadTrig; TheNonagon() { - config(0, 0, 2 + 12 + 3 + 3, 0); + config(0, 3, 2 + 12 + 3 + 4 + 3, 0); + configInput(0, "Save"); + configInput(1, "Load"); + configInput(2, "Radius"); + configOutput(0, "VoltPerOct Output"); configOutput(1, "Gate Output"); configOutput(14, "Recording Output"); configOutput(15, "Timbre Output"); configOutput(16, "Phasor Output"); + configOutput(20, "PanX"); + configOutput(21, "PanY"); + configOutput(22, "PanZ"); + configOutput(23, "Tot Phasor"); for (size_t i = 0; i < 3; ++i) { @@ -1472,6 +1534,16 @@ struct TheNonagon : Module void process(const ProcessArgs &args) override { + if (m_saveTrig.Process(inputs[0].getVoltage())) + { + m_nonagon.SaveJSON(); + } + + if (m_loadTrig.Process(inputs[1].getVoltage())) + { + m_nonagon.LoadJSON(); + } + outputs[0].setChannels(TheNonagonInternal::x_numVoices); outputs[1].setChannels(TheNonagonInternal::x_numVoices); outputs[15].setChannels(TheNonagonInternal::x_numVoices); @@ -1479,6 +1551,10 @@ struct TheNonagon : Module outputs[17].setChannels(TheNonagonInternal::x_numVoices); outputs[18].setChannels(TheNonagonInternal::x_numVoices); outputs[19].setChannels(TheNonagonInternal::x_numVoices); + outputs[20].setChannels(TheNonagonInternal::x_numVoices); + outputs[21].setChannels(TheNonagonInternal::x_numVoices); + outputs[22].setChannels(TheNonagonInternal::x_numVoices); + outputs[23].setChannels(6); m_nonagon.Process(args.sampleTime, args.frame); @@ -1491,47 +1567,51 @@ struct TheNonagon : Module for (size_t j = 0; j < 3; ++j) { outputs[17 + j].setVoltage(m_nonagon.m_nonagon.m_output.m_extraTimbre[i][j] * 10, i); - } + outputs[20 + j].setVoltage(5 + 5 * m_nonagon.m_nonagon.m_panner.m_output.m_pos[i][j], i); + } } - outputs[2].setVoltage(m_nonagon.m_theoryOfTimeTopologyGridId); + outputs[2].setVoltage(m_nonagon.m_theoryOfTimeTopologyGridId, 0); outputs[3].setVoltage(m_nonagon.m_theoryOfTimeSwingGridId); outputs[4].setVoltage(m_nonagon.m_theoryOfTimeSwaggerGridId); - outputs[5].setVoltage(m_nonagon.m_lameJuisCoMuteGridId); + outputs[5].setVoltage(m_nonagon.m_lameJuisCoMuteGridId, 0); outputs[6].setVoltage(m_nonagon.m_lameJuisMatrixGridId); outputs[7].setVoltage(m_nonagon.m_lameJuisLHSGridId); outputs[8].setVoltage(m_nonagon.m_lameJuisIntervalGridId); - outputs[10].setVoltage(m_nonagon.m_percentileSequencerFaderGridId); - outputs[9].setChannels(9); - outputs[11].setChannels(6); - outputs[9].setVoltage(m_nonagon.m_state.m_running ? 10 : 0, 0); - for (size_t i = 0; i < 6; ++i) + // outputs[9].setChannels(2); + // outputs[9].setVoltage(m_nonagon.m_state.m_running ? 10 : 0, 0); + // float pos = m_nonagon.m_nonagon.m_theoryOfTime.m_musicalTime.m_bits[0].m_pos; + // pos *= 32 * 24; + // bool clk = pos - floor(pos) < 0.5; + + // outputs[9].setVoltage(clk ? 10 : 0, 1); + outputs[9].setChannels(16); + for (size_t i = 0; i < 16; ++i) { - float pos = m_nonagon.m_nonagon.m_theoryOfTime.m_musicalTime.m_bits[6 - i].m_pos; - outputs[11].setVoltage(pos, i); - if (i < 4) - { - bool clk = pos < 0.5; - outputs[9].setVoltage(clk ? 10 : 0, 2 * i + 1); - pos *= 3; - clk = pos - floor(pos) < 0.5; - outputs[9].setVoltage(clk ? 10 : 0, 2 * i + 2); - } + outputs[9].setVoltage(SmartGrid::Color(0, std::min(255, 256 * m_nonagon.m_nonagon.GetTimerFragment(i)), 0).ZEncodeFloat() * 10, i); } - + outputs[11].setChannels(3); outputs[12].setChannels(3); outputs[13].setChannels(3); + outputs[11].setVoltage(m_nonagon.m_lameJuisSeqPaletteFireGridId, 0); + outputs[11].setVoltage(m_nonagon.m_lameJuisSeqPaletteEarthGridId, 1); + outputs[11].setVoltage(m_nonagon.m_lameJuisSeqPaletteWaterGridId, 2); outputs[12].setVoltage(m_nonagon.m_timbreAndMuteFireGridId, 0); outputs[12].setVoltage(m_nonagon.m_timbreAndMuteEarthGridId, 1); outputs[12].setVoltage(m_nonagon.m_timbreAndMuteWaterGridId, 2); - outputs[13].setVoltage(m_nonagon.m_percentileSequencerFireGridId, 0); - outputs[13].setVoltage(m_nonagon.m_percentileSequencerEarthGridId, 1); - outputs[13].setVoltage(m_nonagon.m_percentileSequencerWaterGridId, 2); + outputs[13].setVoltage(m_nonagon.m_indexArpFireGridId, 0); + outputs[13].setVoltage(m_nonagon.m_indexArpEarthGridId, 1); + outputs[13].setVoltage(m_nonagon.m_indexArpWaterGridId, 2); outputs[14].setVoltage(m_nonagon.m_nonagon.m_output.m_recording ? 10 : 0); + + for (size_t i = 0; i < 6; ++i) + { + outputs[23].setVoltage(m_nonagon.m_nonagon.m_output.m_totPhasors[i], i); + } } }; @@ -1542,6 +1622,10 @@ struct TheNonagonWidget : ModuleWidget setModule(module); setPanel(createPanel(asset::plugin(pluginInstance, "res/TheNonagon.svg"))); + addInput(createInputCentered(Vec(250, 100), module, 0)); + addInput(createInputCentered(Vec(250, 150), module, 1)); + addInput(createInputCentered(Vec(250, 200), module, 2)); + addOutput(createOutputCentered(Vec(175, 100), module, 0)); addOutput(createOutputCentered(Vec(125, 100), module, 1)); @@ -1559,8 +1643,12 @@ struct TheNonagonWidget : ModuleWidget addOutput(createOutputCentered(Vec(175, 225), module, 16)); addOutput(createOutputCentered(Vec(125, 250), module, 17)); - addOutput(createOutputCentered(Vec(175, 250), module, 18)); - addOutput(createOutputCentered(Vec(225, 255), module, 19)); + addOutput(createOutputCentered(Vec(125, 275), module, 18)); + addOutput(createOutputCentered(Vec(125, 300), module, 19)); + addOutput(createOutputCentered(Vec(200, 100), module, 20)); + addOutput(createOutputCentered(Vec(200, 125), module, 21)); + addOutput(createOutputCentered(Vec(200, 150), module, 22)); + addOutput(createOutputCentered(Vec(200, 200), module, 23)); } }; diff --git a/private/src/TheoryOfTime.hpp b/private/src/TheoryOfTime.hpp index 1d09a0a..aba4aaf 100644 --- a/private/src/TheoryOfTime.hpp +++ b/private/src/TheoryOfTime.hpp @@ -4,21 +4,236 @@ #include #include "Trig.hpp" #include "NormGen.hpp" +#include +#include +#include - -inline float Circlize(float x) +inline uint64_t gcd(uint64_t a, uint64_t b) { - return x - floor(x); + if (b == 0) + return a; + return gcd(b, a % b); } -inline float Interpolate(float x1, float x2, float y1, float y2, float xp) +struct Fixed +{ + static constexpr uint64_t x_base = 72055526400000000; + uint64_t m_val; + + Fixed() : m_val(0) + { + } + + explicit constexpr Fixed(uint64_t num, uint64_t den) + : m_val(num * x_base / den) + { + } + + explicit constexpr Fixed(uint64_t x) + : m_val(x) + { + } + + static Fixed FromInt(uint64_t x) + { + return Fixed(x); + } + + static Fixed FromDouble(double x) + { + return Fixed(x * x_base); + } + + float Float() + { + return static_cast(m_val) / x_base; + } + + Fixed operator*(uint64_t x) + { + unsigned __int128 val = m_val; + return FromInt(val * x); + } + + // Fixed operator/(uint64_t x) + // { + // return Fixed(m_val / x); + // } + + Fixed operator+(Fixed x) + { + unsigned __int128 val = m_val; + return FromInt(val + x.m_val); + } + + Fixed Negate() + { + return Fixed(x_base - m_val); + } + + Fixed operator-(Fixed x) + { + assert(x <= (*this)); + Fixed result = FromInt(m_val - x.m_val); + return result; + } + + bool operator==(Fixed x) + { + return m_val == x.m_val; + } + + bool operator!=(Fixed x) + { + return m_val != x.m_val; + } + + bool operator<(Fixed x) + { + return m_val < x.m_val; + } + + bool operator<=(Fixed x) + { + return m_val <= x.m_val; + } + + bool operator>=(Fixed x) + { + return m_val >= x.m_val; + } + + bool operator>(Fixed x) + { + return m_val > x.m_val; + } + + Fixed Min(Fixed x) + { + return (*this) <= x ? (*this) : x; + } + + Fixed Max(Fixed x) + { + return (*this) >= x ? (*this) : x; + } + + Fixed TimesRat(Fixed num, Fixed den) + { + unsigned __int128 val = m_val; + val = val * num.m_val; + val = val / den.m_val; + Fixed result = FromInt(val); + return result; + } + + Fixed Round(uint64_t x) + { + return Fixed((m_val / x) * x); + } + + Fixed Reduce(uint64_t* integer) + { + *integer = m_val / x_base; + return Fixed(m_val % x_base); + } + + Fixed Reduce() + { + uint64_t i; + return Reduce(&i); + } + + static constexpr Fixed One() + { + return Fixed(x_base); + } + + static constexpr Fixed Half() + { + return Fixed(1, 2); + } + + bool Gate() + { + return (*this) < Half(); + } + + std::string Frac() + { + uint64_t g = gcd(x_base, m_val); + return std::to_string(m_val) + " (" + std::to_string(m_val / g) + "/" + std::to_string(x_base / g) + ")"; + } + + std::string Str() + { + return std::to_string(Float()); + } +}; + +inline Fixed Interpolate(Fixed x1, Fixed x2, Fixed y1, Fixed y2, Fixed xp) { - return y1 + (y2 - y1) * (xp - x1) / (x2 - x1); + if (x1.Float() > 1 || + x2.Float() > 1 || + y1.Float() > 1 || + y2.Float() > 1 || + xp.Float() > 1) + { + INFO("Interp %f %f %f %f %f", + x1.Float() , + x2.Float() , + y1.Float() , + y2.Float() , + xp.Float()); + assert(false); + } + + if (y2 < y1) + { + return Interpolate(x2, x1, y2, y1, xp); + } + + if ((x2 >= x1) != (xp >= x1) && xp != x1) + { + INFO("Interp %f %f %f %f %f", + x1.Float() , + x2.Float() , + y1.Float() , + y2.Float() , + xp.Float()); + INFO("Interp %s %s %s %s %s", + x1.Frac().c_str() , + x2.Frac().c_str() , + y1.Frac().c_str() , + y2.Frac().c_str() , + xp.Frac().c_str()); + assert(false); + } + + Fixed ratNum = x2 >= x1 ? xp - x1 : x1 - xp; + Fixed ratDen = x2 >= x1 ? x2 - x1 : x1 - x2; + + Fixed result = y1 + (y2 - y1).TimesRat(ratNum, ratDen); + + if (Fixed::One() < result) + { + INFO("Interp %s %s %s %s %s -> %s", + x1.Frac().c_str() , + x2.Frac().c_str() , + y1.Frac().c_str() , + y2.Frac().c_str() , + xp.Frac().c_str(), + result.Frac().c_str()); + assert(false); + } + + return result; } -inline float CircleDist(float x1, float x2) +inline Fixed CircleDist(Fixed x1, Fixed x2) { - return std::min(std::abs(x2 - x1), 1 - std::abs(x2 - x1)); + Fixed diff = x1 < x2 ? x2 - x1 : x1 - x2; + return Fixed(std::min(diff.m_val, Fixed::x_base - diff.m_val)); } struct MusicalTime; @@ -32,33 +247,33 @@ struct LinearPeice Over }; - float m_x1; - float m_x2; - float m_y1; - float m_y2; + Fixed m_x1; + Fixed m_x2; + Fixed m_y1; + Fixed m_y2; bool m_empty; LinearPeice() - : LinearPeice(0, 0, 0, 0) + : LinearPeice(Fixed(0), Fixed(0), Fixed(0), Fixed(0)) { m_empty = true; } - LinearPeice(float x1, float x2, float y1, float y2) + LinearPeice(Fixed x1, Fixed x2, Fixed y1, Fixed y2) + : m_x1(x1) + , m_x2(x2) + , m_y1(y1) + , m_y2(y2) + , m_empty(false) { - m_x1 = x1; - m_x2 = x2; - m_y1 = y1; - m_y2 = y2; - m_empty = false; } - LinearPeice SetOver(float x2, float y2) + LinearPeice SetOver(Fixed x2, Fixed y2) { return LinearPeice(m_x2, x2, m_y2, y2); } - LinearPeice SetUnder(float x1, float y1) + LinearPeice SetUnder(Fixed x1, Fixed y1) { return LinearPeice(x1, m_x1, y1, m_y1); } @@ -70,22 +285,71 @@ struct LinearPeice LinearPeice Compose(LinearPeice other) { - float x1 = ::Interpolate(0, 1, other.m_x1, other.m_x2, m_x1); - float x2 = ::Interpolate(0, 1, other.m_x1, other.m_x2, m_x2); - return LinearPeice( - x1, - x2, - Interpolate(other.Interpolate(x1)), - Interpolate(other.Interpolate(x2))); + Fixed y1 = other.m_y1 <= other.m_y2 ? m_x1.Max(other.m_y1) : m_x2.Max(other.m_y2); + Fixed y2 = other.m_y1 <= other.m_y2 ? m_x2.Min(other.m_y2) : m_x1.Min(other.m_y1); + if (y1 < other.m_y1.Min(other.m_y2) || + y2 < other.m_y1.Min(other.m_y2) || + y1 > other.m_y1.Max(other.m_y2) || + y2 > other.m_y1.Max(other.m_y2)) + { + INFO("COMPOSE %f %s, %f %s <- %s o %s", y1.Float(), y1.Frac().c_str(), y2.Float(), y2.Frac().c_str(), ToString().c_str(), other.ToString().c_str()); + INFO("C %d %d %d %d", + y1 < other.m_y1.Min(other.m_y2) , + y2 < other.m_y1.Min(other.m_y2) , + y1 > other.m_y1.Max(other.m_y2) , + y2 > other.m_y1.Max(other.m_y2)); + assert(false); + } + + Fixed x1 = other.Invert(y1); + Fixed x2 = other.Invert(y2); + if (x2 < x1 || + x1 < other.m_x1 || + other.m_x2 < x1 || + x2 < other.m_x1 || + other.m_x2 < x2) + { + INFO("COMPOSE %f -> %f, %f -> %f %s o %s", y1.Float(), x1.Float(), y2.Float(), x2.Float(),ToString().c_str(), other.ToString().c_str()); + INFO("C %d %d %d %d %d", + x2 < x1 , + x1 < other.m_x1 , + other.m_x2 < x1 , + x2 < other.m_x1 , + other.m_x2 < x2); + assert(false); + } + + Fixed z1 = other.Interpolate(x1); + Fixed z2 = other.Interpolate(x2); + + if (z1 < m_x1 || + m_x2 < z1 || + z2 < m_x1 || + m_x2 < z2 || + y1 != z1 || + y2 != z2) + { + INFO("COMPOSE %f -> %f -> %f, %f -> %f -> %f %s o %s", y1.Float(), x1.Float(), z1.Float(), y2.Float(), x2.Float(), z2.Float(), ToString().c_str(), other.ToString().c_str()); + INFO("C %d %d %d %d %d %d", + z1 < m_x1 , + m_x2 < z1 , + z2 < m_x1 , + m_x2 < z2, + y1 != z1, + y2 != z2); + assert(false); + } + + return LinearPeice(x1, x2, Interpolate(y1), Interpolate(y2)); } - BoundState Check(float x) + BoundState Check(Fixed x) { if (m_empty) { return BoundState::Under; } - else if (m_x1 <= x && x <= m_x2) + else if (m_x1 <= x && x < m_x2) { return BoundState::In; } @@ -99,17 +363,46 @@ struct LinearPeice } } - float Interpolate(float x) + Fixed Interpolate(Fixed x) { + if (x == Fixed(0) && m_x1 != Fixed(0) && m_x2 == Fixed::One()) + { + return m_y2; + } + else if (x == Fixed::One() && m_x2 != Fixed::One() && m_x1 == Fixed(0)) + { + return m_y1; + } + return ::Interpolate(m_x1, m_x2, m_y1, m_y2, x); } + Fixed Invert(Fixed y) + { + if (y == m_y1) + { + return m_x1; + } + else if (y == m_y2) + { + return m_x2; + } + else if (m_y1 <= m_y2) + { + return LinearPeice(m_y1, m_y2, m_x1, m_x2).Interpolate(y); + } + else + { + return LinearPeice(m_y2, m_y1, m_x2, m_x1).Interpolate(y); + } + } + std::string ToString() { - return "<" + std::to_string(m_x1) + ", " + - std::to_string(m_x2) + ", " + - std::to_string(m_y1) + ", " + - std::to_string(m_y2) + ">"; + return "<" + m_x1.Str() + ", " + + m_x2.Str() + ", " + + m_y1.Str() + ", " + + m_y2.Str() + ">"; } }; @@ -126,10 +419,10 @@ struct TimeBit MusicalTime* m_owner; size_t m_ix; size_t m_parentIx; - float m_swing; - float m_swagger; - float m_pos; - size_t m_parentFloor; + Fixed m_swing; + Fixed m_swagger; + Fixed m_pos; + uint64_t m_parentFloor; size_t m_mult; bool m_top; State m_state; @@ -140,19 +433,19 @@ struct TimeBit m_ix = ix; m_owner = owner; m_parentIx = ix - 1; - m_pos = 0; + m_pos = Fixed(0); m_parentFloor = 0; m_top = true; m_state = State::x_init; - m_swing = 0; - m_swagger = 0; + m_swing = Fixed::Half(); + m_swagger = Fixed::Half(); m_mult = 1; m_pingPong = false; } void Stop() { - m_pos = 0; + m_pos = Fixed(0); m_parentFloor = 0; m_top = true; m_state = State::x_init; @@ -161,51 +454,61 @@ struct TimeBit TimeBit* GetParent(); - LinearPeice MakeLP(float parentPos, size_t* parentFloor) + // std::string Rep() + // { + // std::stringstream stream; + // stream << std::fixed << std::setprecision(10) << m_pos; + // std::string s = stream.str(); + // return "(" + std::to_string(m_ix) + ", " + std::to_string(m_pos < 0.5) + ", " + s + ", " + std::to_string(m_mult) + ")"; + // } + + LinearPeice MakeLP(Fixed parentPos, uint64_t* parentFloor) { - *parentFloor = floor(parentPos * m_mult); - float pfFloat = static_cast(*parentFloor); - LinearPeice result = LinearPeice(pfFloat / m_mult, (pfFloat + 1) / m_mult, 0, 1); + (parentPos * m_mult).Reduce(parentFloor); + assert(*parentFloor < m_mult); + LinearPeice result = LinearPeice(Fixed(*parentFloor, m_mult), Fixed(*parentFloor + 1, m_mult), Fixed(0), Fixed::One()); + //INFO("Make LP %lu %s (%llu)", m_ix, result.ToString().c_str(), *parentFloor); if (m_pingPong) { + //INFO("PP %f -> %f", parentPos.Float(), result.Interpolate(parentPos).Float()); result = MakePingPongLP(result.Interpolate(parentPos)).Compose(result); + //INFO("PP %s", result.ToString().c_str()); } - - result = MakeSwingLP(result.Interpolate(parentPos)).Compose(result); + + //INFO("Swing %f -> %f", parentPos.Float(), result.Interpolate(parentPos).Float()); + if (m_mult % 2 == 0 || *parentFloor != m_mult / 2) + { + result = MakeSwingLP(result.Interpolate(parentPos)).Compose(result); + } + //INFO("Swung %s", result.ToString().c_str()); return result; } - float ApplyMult(float t) - { - float preres = m_mult * t; - return preres - floor(preres); - } - - LinearPeice MakePingPongLP(float t) + LinearPeice MakePingPongLP(Fixed t) { if (!m_pingPong) { - return LinearPeice(0, 1, 0, 1); + return LinearPeice(Fixed(0), Fixed::One(), Fixed(0), Fixed::One()); } - else if (t < 0.5) + else if (t < Fixed::Half()) { - return LinearPeice(0, 0.5, 0, 1); + return LinearPeice(Fixed(0), Fixed::Half(), Fixed(0), Fixed::One()); } else { - return LinearPeice(0.5, 1, 1, 0); + return LinearPeice(Fixed::Half(), Fixed::One(), Fixed::One(), Fixed(0)); } } - LinearPeice MakeSwingLP(float t) + LinearPeice MakeSwingLP(Fixed t) { - if (t < m_swing / 2 + 0.5) + if (t < m_swing) { - return LinearPeice(0, m_swing / 2 + 0.5, 0, m_swagger / 2 + 0.5); + return LinearPeice(Fixed(0), m_swing, Fixed(0), m_swagger); } else { - return LinearPeice(m_swing / 2 + 0.5, 1, m_swagger / 2 + 0.5, 1); + return LinearPeice(m_swing, Fixed::One(), m_swagger, Fixed::One()); } } @@ -241,7 +544,7 @@ struct TimeBit else if (m_parentIx != input.m_parentIx) { m_top = true; - m_pos = 0; + m_pos = Fixed(0); m_state = State::x_waiting; } @@ -260,8 +563,13 @@ struct TimeBit { float rand = input.m_rand ? *input.m_rand : 0; float globalHomo = input.m_globalHomotopy ? *input.m_globalHomotopy : 1; - m_swing = globalHomo * ((1 - rand) * input.m_swing + rand * input.m_swing * input.m_gen.UniGen()); - m_swagger = globalHomo * ((1 - rand) * input.m_swagger + rand * input.m_swagger * input.m_gen.UniGen()); + float swingFloat = globalHomo * ((1 - rand) * input.m_swing + rand * input.m_swing * input.m_gen.UniGen()); + float swaggerFloat = globalHomo * ((1 - rand) * input.m_swagger + rand * input.m_swagger * input.m_gen.UniGen()); + m_swing = Fixed::FromDouble(swingFloat / 2.5 + 0.5); + m_swagger = Fixed::FromDouble(swaggerFloat / 2.5 + 0.5); + + size_t effectiveMult = m_pingPong ? 2 * m_mult : m_mult; + m_swing = m_swing.Round(effectiveMult); } void Process(Input& input) @@ -295,10 +603,10 @@ struct TimeBit } TimeBit* parent = GetParent(); - float inT = parent->m_pos; - if (m_lp.Check(inT) != LinearPeice::BoundState::In) + Fixed inT = parent->m_pos; + if (parent->m_top || m_lp.Check(inT) != LinearPeice::BoundState::In) { - size_t newParentFloor; + uint64_t newParentFloor; m_lp = MakeLP(inT, &newParentFloor); if (newParentFloor != m_parentFloor) { @@ -308,17 +616,27 @@ struct TimeBit } m_pos = m_lp.Interpolate(inT); + if (Fixed::One() < m_pos) + { + INFO("Big pos %f, %lu %f", m_pos.Float(), m_ix, inT.Float()); + assert(false); + } + + if (m_pos == Fixed::One()) + { + m_pos = Fixed(0); + } } void SetDirectly(float t) { m_top = false; - if (std::abs(t - m_pos) > 0.5) + if (std::abs(t - m_pos.Float()) > 0.5) { m_top = true; } - m_pos = t; + m_pos = Fixed::FromDouble(t); } }; @@ -341,6 +659,17 @@ struct MusicalTime m_change[i] = false; } } + + // std::string Rep() + // { + // std::string result = "<"; + // for (size_t i = 0; i < x_numBits; ++i) + // { + // result += m_bits[i].Rep() + " "; + // } + + // return result + ">"; + // } struct Input { @@ -416,7 +745,7 @@ struct MusicalTime float GetPos(size_t ix) { - return m_bits[ix].m_pos; + return m_bits[ix].m_pos.Float(); } bool GetGate(size_t ix) @@ -434,6 +763,8 @@ struct MusicalTimeWithClock { MusicalTime m_musicalTime; float m_phasor; + std::string m_lastChange; + float m_lastChangeTime; struct Input { @@ -445,8 +776,14 @@ struct MusicalTimeWithClock float m_freq; }; + MusicalTimeWithClock() + : m_phasor(0), m_lastChangeTime(0) + { + } + void Process(float dt, Input& input) { + m_lastChangeTime += dt; if (input.m_input.m_running) { float dx = dt * input.m_freq; @@ -460,6 +797,173 @@ struct MusicalTimeWithClock input.m_input.m_t = m_phasor; m_musicalTime.Process(input.m_input); + + if (m_musicalTime.m_anyChange) + { + if (m_lastChangeTime < 0.001) + { + INFO("Change time %f", m_lastChangeTime); + // INFO("BEFORE: %s", m_lastChange.c_str()); + // INFO("AFTER: %s", m_musicalTime.Rep().c_str()); + } + + m_lastChangeTime = 0; + // m_lastChange = m_musicalTime.Rep(); + } + } +}; + +struct GreggInternal +{ + struct Input + { + size_t m_numSteps; + int m_offsetStep; + size_t m_mainTBIx; + bool m_jumpAtTop[MusicalTime::x_numBits]; + int m_sectionIx; + + Input() + : m_numSteps(16) + , m_offsetStep(-1) + , m_mainTBIx(0) + , m_sectionIx(-1) + { + for (size_t i = 0; i < MusicalTime::x_numBits; ++i) + { + m_jumpAtTop[i] = false; + } + } + }; + + struct Output + { + float m_out; + }; + + GreggInternal(MusicalTime* time) + : m_time(time) + , m_offsetStep(-1) + , m_offsetFromOffsetStep(0) + , m_step(0) + , m_outStep(0) + , m_sectionStart(0) + , m_sectionEnd(0) + , m_sectionStartIx(-1) + , m_sectionEndIx(-1) + { + for (size_t i = 0; i < MusicalTime::x_numBits; ++i) + { + m_jumpAtTop[i] = false; + m_offsetFromJumpAtTop[i] = 0; + m_startFromJumpAtTop[i] = 0; + m_lastTop[i] = 0; + } + } + + MusicalTime* m_time; + Output m_output; + int m_offsetStep; + float m_offsetFromOffsetStep; + int m_step; + int m_outStep; + bool m_jumpAtTop[MusicalTime::x_numBits]; + float m_startFromJumpAtTop[MusicalTime::x_numBits]; + float m_offsetFromJumpAtTop[MusicalTime::x_numBits]; + float m_lastTop[MusicalTime::x_numBits]; + float m_sectionStart; + float m_sectionEnd; + int m_sectionStartIx; + int m_sectionEndIx; + + void Process(Input& input) + { + float mainPhasor = m_time->m_bits[input.m_mainTBIx].m_pos.Float(); + + int step = static_cast(mainPhasor * input.m_numSteps) % input.m_numSteps; + if (step != m_step) + { + if (m_offsetStep != input.m_offsetStep) + { + if (input.m_offsetStep >= 0) + { + int stepsToOffset = input.m_offsetStep - step; + m_offsetFromOffsetStep = static_cast(stepsToOffset) / input.m_numSteps; + } + else + { + m_offsetFromOffsetStep = 0; + } + + m_offsetStep = input.m_offsetStep; + } + + for (size_t i = 0; i < MusicalTime::x_numBits; ++i) + { + if (!m_jumpAtTop[i] && input.m_jumpAtTop[i]) + { + m_jumpAtTop[i] = true; + m_startFromJumpAtTop[i] = mainPhasor; + m_offsetFromJumpAtTop[i] = 0; + } + else if (m_jumpAtTop[i] && !input.m_jumpAtTop[i]) + { + m_jumpAtTop[i] = false; + m_offsetFromJumpAtTop[i] = 0; + } + } + + m_step = step; + } + + for (size_t i = 0; i < MusicalTime::x_numBits; ++i) + { + if (m_time->m_bits[i].m_top) + { + m_lastTop[i] = mainPhasor; + } + } + + if (input.m_sectionIx == -1) + { + m_sectionStartIx = -1; + m_sectionEndIx = -1; + } + else if (input.m_sectionIx != m_sectionStartIx) + { + m_sectionStartIx = input.m_sectionIx; + m_sectionStart = m_lastTop[m_sectionStartIx]; + } + else if (m_sectionEndIx == -1 && m_time->m_bits[m_sectionStartIx].m_top) + { + m_sectionEndIx = input.m_sectionIx; + m_sectionEnd = m_lastTop[m_sectionStartIx]; + } + + float out = mainPhasor; + if (m_sectionEndIx != -1) + { + float sec = m_time->m_bits[m_sectionEndIx].m_pos.Float(); + out = m_sectionStart + (m_sectionEnd - m_sectionStart) * sec; + } + + out += m_offsetFromOffsetStep; + for (size_t i = 0; i < MusicalTime::x_numBits; ++i) + { + if (m_jumpAtTop[i]) + { + if (m_time->m_bits[i].m_top) + { + m_offsetFromJumpAtTop[i] = mainPhasor - m_startFromJumpAtTop[i]; + } + + out += m_offsetFromJumpAtTop[i]; + } + } + + out = out - floor(out); + m_outStep = static_cast(out * input.m_numSteps) % input.m_numSteps; + m_output.m_out = out; } }; diff --git a/private/src/TimbreAndMutes.hpp b/private/src/TimbreAndMutes.hpp index 4ba166a..0cf3184 100644 --- a/private/src/TimbreAndMutes.hpp +++ b/private/src/TimbreAndMutes.hpp @@ -6,6 +6,13 @@ struct TimbreAndMute static constexpr size_t x_voicesPerTrio = 3; static constexpr size_t x_numTrios = 3; static constexpr size_t x_numInBits = 6; + + enum class MonoMode : int + { + Poly = 0, + Trio = 1, + Global = 2 + }; struct TimbreAndMuteSingleVoice { @@ -27,13 +34,11 @@ struct TimbreAndMute bool m_armed[x_numInBits]; bool* m_on; bool* m_canPassIfOn; - float* m_timbreMult; bool m_trigIn; Input() : m_on(nullptr) , m_canPassIfOn(nullptr) - , m_timbreMult(nullptr) , m_trigIn(false) { for (size_t i = 0; i < x_numInBits; ++i) @@ -76,7 +81,7 @@ struct TimbreAndMute } m_preTimbre = static_cast(onAndArmed) / static_cast(armed); - m_timbre = (*input.m_timbreMult) * m_preTimbre; + m_timbre = m_preTimbre; m_countHigh = onAndArmed; } else @@ -84,6 +89,12 @@ struct TimbreAndMute m_muted = true; } } + + void UnTrig() + { + m_trig = false; + m_muted = true; + } bool m_armed[x_numInBits]; bool m_on[x_numInBits]; @@ -101,15 +112,16 @@ struct TimbreAndMute TimbreAndMuteSingleVoice::Input m_input[x_numVoices]; bool m_on[x_numInBits]; bool m_canPassIfOn[x_numTrios][x_numInBits + 1]; - float m_timbreMult[x_numTrios]; + MonoMode m_monoMode[x_numTrios]; + bool* m_mutes; - Input() + Input(bool* mutes) + : m_mutes(mutes) { for (size_t i = 0; i < x_numVoices; ++i) { m_input[i].m_on = m_on; m_input[i].m_canPassIfOn = m_canPassIfOn[i / x_voicesPerTrio]; - m_input[i].m_timbreMult = &m_timbreMult[i / x_voicesPerTrio]; } for (size_t i = 0; i < x_numInBits; ++i) @@ -127,16 +139,36 @@ struct TimbreAndMute for (size_t i = 0; i < x_numTrios; ++i) { - m_timbreMult[i] = 0; + m_monoMode[i] = MonoMode::Poly; } } }; void Process(Input& input) { - for (size_t i = 0; i < x_numVoices; ++i) + bool globalTrig = false; + for (int i = x_numTrios - 1; i >= 0; --i) { - m_voices[i].Process(input.m_input[i]); + bool trioTrig = false; + for (size_t j = 0; j < x_voicesPerTrio; ++j) + { + size_t ix = i * x_voicesPerTrio + j; + if ((trioTrig && input.m_monoMode[i] == MonoMode::Trio) || + (globalTrig && input.m_monoMode[i] == MonoMode::Global)) + { + input.m_input[ix].m_trigIn = false; + } + + m_voices[ix].Process(input.m_input[ix]); + if (m_voices[ix].m_trig && !input.m_mutes[ix]) + { + trioTrig = true; + if (input.m_monoMode[i] == MonoMode::Global) + { + globalTrig = true; + } + } + } } } }; diff --git a/private/src/VoiceAllocator.hpp b/private/src/VoiceAllocator.hpp new file mode 100644 index 0000000..943351b --- /dev/null +++ b/private/src/VoiceAllocator.hpp @@ -0,0 +1,140 @@ + +template +struct VoiceAllocator +{ + static constexpr size_t x_maxVoices = 16; + + size_t m_maxPolyphony = 1; + int64_t m_ix = 0; + size_t m_numActive = 0; + T m_voices[x_maxVoices]; + + void Allocate(T voice) + { + if (m_numActive == m_maxPolyphony) + { + DeAllocate(m_ix); + } + + assert(m_numActive < m_maxPolyphony); + + while (m_voices[m_ix].m_gate && *m_voices[m_ix].m_gate) + { + m_ix = (m_ix + 1) % m_maxPolyphony; + } + + m_voices[m_ix] = voice; + m_ix = (m_ix + 1) % m_maxPolyphony; + *voice.m_gate = true; + ++m_numActive; + } + + void DeAllocate(int64_t index) + { + if (m_voices[index].m_gate && *m_voices[index].m_gate) + { + *m_voices[index].m_gate = false; + --m_numActive; + } + } + + void DeAllocate(T voice) + { + for (size_t i = 0; i < m_maxPolyphony; ++i) + { + if (m_voices[i] == voice) + { + DeAllocate(i); + } + } + } + + void Clear() + { + for (size_t i = 0; i < x_maxVoices; ++i) + { + if (m_voices[i].m_gate) + { + *m_voices[i].m_gate = false; + } + } + + m_ix = 0; + m_numActive = 0; + } + + void SetPolyphony(size_t polyphony) + { + m_maxPolyphony = polyphony; + Clear(); + } + + struct iterator + { + VoiceAllocator* m_allocator; + int64_t m_index; + + iterator(VoiceAllocator* allocator, int64_t index) + { + m_allocator = allocator; + m_index = index; + } + + iterator& operator++() + { + m_index++; + while (*this != m_allocator->end() && !(**this).m_gate && !*(**this).m_gate) + { + m_index++; + } + + return *this; + } + + T& operator*() + { + return m_allocator->m_voices[m_index]; + } + + bool operator!=(const iterator& other) + { + return m_index != other.m_index; + } + }; + + iterator begin() + { + return iterator(this, 0); + } + + iterator end() + { + return iterator(this, m_maxPolyphony); + } +}; + +struct CellVoice +{ + bool* m_gate; + int m_x; + int m_y; + + CellVoice() + { + m_gate = nullptr; + m_x = 0; + m_y = 0; + } + + CellVoice(bool* gate, int x, int y) + { + m_gate = gate; + m_x = x; + m_y = y; + } + + bool operator==(const CellVoice& other) + { + return m_x == other.m_x && m_y == other.m_y; + } +}; diff --git a/private/src/ZCurve.hpp b/private/src/ZCurve.hpp new file mode 100644 index 0000000..6192ee9 --- /dev/null +++ b/private/src/ZCurve.hpp @@ -0,0 +1,27 @@ +namespace SmartGrid +{ + +size_t ZEncode(size_t r, size_t g, size_t b) +{ + size_t result = 0; + for (size_t i = 0; i < 8; ++i) + { + result |= static_cast((r >> i) & 1) << (3 * i); + result |= static_cast((g >> i) & 1) << (3 * i + 1); + result |= static_cast((b >> i) & 1) << (3 * i + 2); + } + + return result; +} + +void ZDecode(size_t x, uint8_t* r, uint8_t* g, uint8_t* b) +{ + for (size_t i = 0; i < 8; ++i) + { + *r |= ((x >> (3 * i)) & 1) << i; + *g |= ((x >> (3 * i + 1)) & 1) << i; + *b |= ((x >> (3 * i + 2)) & 1) << i; + } +} + +} diff --git a/private/src/plugin.cpp b/private/src/plugin.cpp index e69f2f3..21f329b 100644 --- a/private/src/plugin.cpp +++ b/private/src/plugin.cpp @@ -4,6 +4,13 @@ #include "PhasorEnvelope.hpp" #include "GridJnct.hpp" #include "FaderBank.hpp" +#include "MxDJ.hpp" +#include "SampleRateDivider.hpp" +#include "ColorHelper.hpp" +#include "ButtonBank.hpp" +#include "MasterSwitch.hpp" +#include "PolyCC.hpp" +#include "SmartCanvas.hpp" Plugin* pluginInstance; @@ -13,6 +20,13 @@ Model* modelPhasorEnvelope = createModel(" Model* modelGridJnctLPP3 = createModel("GridJnctLPP3"); Model* modelGridCnct = createModel("GridCnct"); Model* modelFaderBank = createModel("FaderBank"); +Model* modelMxDJ = createModel("MxDJ"); +Model* modelSampleRateDivider = createModel("SampleRateDivider"); +Model* modelColorHelper = createModel("ColorHelper"); +Model* modelButtonBank = createModel("ButtonBank"); +Model* modelMasterSwitch = createModel("MasterSwitch"); +Model* modelSmartCanvas = createModel("SmartCanvas"); +Model* modelPolyCC = createModel("PolyCC"); void init(Plugin* p) { @@ -25,4 +39,11 @@ void init(Plugin* p) { p->addModel(modelGridJnctLPP3); p->addModel(modelGridCnct); p->addModel(modelFaderBank); + p->addModel(modelMxDJ); + p->addModel(modelSampleRateDivider); + p->addModel(modelColorHelper); + p->addModel(modelButtonBank); + p->addModel(modelMasterSwitch); + p->addModel(modelPolyCC); + p->addModel(modelSmartCanvas); } diff --git a/private/src/plugin.hpp b/private/src/plugin.hpp index 92b2dea..0370327 100644 --- a/private/src/plugin.hpp +++ b/private/src/plugin.hpp @@ -14,3 +14,9 @@ extern Model* modelGridJnctLPP3; extern Model* modelPhasorEnvelope; extern Model* modelGridCnct; extern Model* modelFaderBank; +extern Model* modelMxDJ; +extern Model* modelColorHelper; +extern Model* modelButtonBank; +extern Model* modelMasterSwitch; +extern Model* modelSmartCanvas; +extern Model* modelPolyCC;