Skip to content

Commit

Permalink
v2 upgrade (#21)
Browse files Browse the repository at this point in the history
* Update to work with v2 API

* Update config options to include new right-click menus for modules

 - Also clean up some inconsistencies with indentation using astyle

* Apply additional style autoformatting
  • Loading branch information
sumpygump authored Nov 7, 2021
1 parent 0f6b9e0 commit 21220ec
Show file tree
Hide file tree
Showing 29 changed files with 2,001 additions and 1,915 deletions.
2 changes: 1 addition & 1 deletion plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"slug": "TinyTricks",
"name": "Tiny Tricks",
"brand": "Tiny Tricks",
"version": "1.5.0",
"version": "2.5.0",
"license": "GPL-3.0-only",
"author": "Thomas René Sidor",
"authorEmail": "mail@thomassidor.com",
Expand Down
41 changes: 27 additions & 14 deletions src/arithmetic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,29 +33,42 @@ struct TTA : TinyTricksModule {

TTA() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
configInput(A_INPUT, "A");
configInput(B_INPUT, "B");
configOutput(APLUSB_OUTPUT, "A+B");
configOutput(AVGAB_OUTPUT, "Average");
configOutput(AMINUSB_OUTPUT, "A-B");
configOutput(BMINUSA_OUTPUT, "B-A");
configOutput(ADIVB_OUTPUT, "A/B");
configOutput(BDIVA_OUTPUT, "B/A");
configOutput(AMULB_OUTPUT, "A*B");
configOutput(AEXPB_OUTPUT, "A^B");
configOutput(ONEOVERA_OUTPUT, "1/A");
configOutput(ONEOVERB_OUTPUT, "1/B");
configOutput(MINUSA_OUTPUT, "-A");
configOutput(MINUSB_OUTPUT, "-B");
}

void process(const ProcessArgs &args) override {
int nChan = std::max(1, inputs[A_INPUT].getChannels());
for( int op=APLUSB_OUTPUT; op < NUM_OUTPUTS; op++ )
outputs[op].setChannels(nChan);
for (int op = APLUSB_OUTPUT; op < NUM_OUTPUTS; op++)
outputs[op].setChannels(nChan);

for( auto c=0; c<nChan; ++c )
{
for (auto c = 0; c < nChan; ++c) {
if (inputs[A_INPUT].isConnected() && inputs[B_INPUT].isConnected()) {
float a = inputs[A_INPUT].getVoltage(c);
float b = inputs[B_INPUT].getPolyVoltage(c);

outputs[APLUSB_OUTPUT].setVoltage(a+b, c);
outputs[AVGAB_OUTPUT].setVoltage((a+b)/2, c);
outputs[AMINUSB_OUTPUT].setVoltage(a-b, c);
outputs[BMINUSA_OUTPUT].setVoltage(b-a, c);
outputs[ADIVB_OUTPUT].setVoltage((b==0.f?0.f:a/b), c);
outputs[BDIVA_OUTPUT].setVoltage((a==0.f?0.f:b/a), c);
outputs[AMULB_OUTPUT].setVoltage(a*b, c);
outputs[AEXPB_OUTPUT].setVoltage(pow(a,b), c);
outputs[ONEOVERA_OUTPUT].setVoltage((a==0.f?0.f:1/a), c);
outputs[ONEOVERB_OUTPUT].setVoltage((b==0.f?0.f:1/b), c);
outputs[APLUSB_OUTPUT].setVoltage(a + b, c);
outputs[AVGAB_OUTPUT].setVoltage((a + b) / 2, c);
outputs[AMINUSB_OUTPUT].setVoltage(a - b, c);
outputs[BMINUSA_OUTPUT].setVoltage(b - a, c);
outputs[ADIVB_OUTPUT].setVoltage((b == 0.f ? 0.f : a / b), c);
outputs[BDIVA_OUTPUT].setVoltage((a == 0.f ? 0.f : b / a), c);
outputs[AMULB_OUTPUT].setVoltage(a * b, c);
outputs[AEXPB_OUTPUT].setVoltage(pow(a, b), c);
outputs[ONEOVERA_OUTPUT].setVoltage((a == 0.f ? 0.f : 1 / a), c);
outputs[ONEOVERB_OUTPUT].setVoltage((b == 0.f ? 0.f : 1 / b), c);
outputs[MINUSA_OUTPUT].setVoltage(-a, c);
outputs[MINUSB_OUTPUT].setVoltage(-b, c);
}
Expand Down
8 changes: 6 additions & 2 deletions src/attenuator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ struct A8 : TinyTricksModule {
A8() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
configParam(LEVEL_PARAM, 0.f, 1.f, 1.f, "Attenuation level");
for (int i = 0; i < NUM_CHANNELS; i++) {
configInput(ATT_INPUT + i, string::f("Channel %d", i + 1));
configOutput(ATT_OUTPUT + i, string::f("Channel %d", i + 1));
}
}


Expand All @@ -35,7 +39,7 @@ struct A8 : TinyTricksModule {
if (inputs[ATT_INPUT + i].isConnected() && outputs[ATT_OUTPUT + i].isConnected())
outputs[ATT_OUTPUT + i].setVoltage(inputs[ATT_INPUT + i].getVoltage() * level);
}
}
}
};


Expand All @@ -47,7 +51,7 @@ struct A8Widget : TinyTricksModuleWidget {
setModule(module);


addParam(createParam<RoundBlackKnob>(mm2px(Vec(7.7f,11.055f)), module, A8::LEVEL_PARAM));
addParam(createParam<RoundBlackKnob>(mm2px(Vec(7.7f, 11.055f)), module, A8::LEVEL_PARAM));

for (int i = 0; i < NUM_CHANNELS; i++)
addInput(createInput<TinyTricksPort>(mm2px(Vec(3.131f, 29.859f + 11.5f * i)), module, A8::ATT_INPUT + i));
Expand Down
63 changes: 38 additions & 25 deletions src/logic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,35 +33,48 @@ struct TTL : TinyTricksModule {

TTL() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
configInput(A_INPUT, "A");
configInput(B_INPUT, "B");
configOutput(AND_OUTPUT, "AND");
configOutput(OR_OUTPUT, "OR");
configOutput(XOR_OUTPUT, "XOR");
configOutput(NOR_OUTPUT, "NOR");
configOutput(ALTB_OUTPUT, "A<B");
configOutput(AGTB_OUTPUT, "A>B");
configOutput(ALTEB_OUTPUT, "A<=B");
configOutput(AGTEB_OUTPUT, "A>=B");
configOutput(AISB_OUTPUT, "A=B");
configOutput(AISNOTB_OUTPUT, "A!=B");
configOutput(NOTA_OUTPUT, "¬A");
configOutput(NOTB_OUTPUT, "¬B");
}

void process(const ProcessArgs &args) override {
int nChan = std::max(1, inputs[A_INPUT].getChannels());
for( int op=AND_OUTPUT; op < NUM_OUTPUTS; op++ )
outputs[op].setChannels(nChan);

for( auto c=0; c<nChan; ++c )
{
if (inputs[A_INPUT].isConnected() && inputs[B_INPUT].isConnected()) {
float a = inputs[A_INPUT].getVoltage(c);
float b = inputs[B_INPUT].getPolyVoltage(c);

bool isA = (a!=0.f);
bool isB = (b!=0.f);

outputs[AND_OUTPUT].setVoltage((isA && isB?10.f:0.f), c);
outputs[OR_OUTPUT].setVoltage((isA || isB?10.f:0.f), c);
outputs[XOR_OUTPUT].setVoltage((isA != isB?10.f:0.f), c);
outputs[NOR_OUTPUT].setVoltage((!(a || b)?10.f:0.f), c);
outputs[ALTB_OUTPUT].setVoltage((a<b?10.f:0.f), c);
outputs[AGTB_OUTPUT].setVoltage((a>b?10.f:0.f), c);
outputs[ALTEB_OUTPUT].setVoltage((a<=b?10.f:0.f), c);
outputs[AGTEB_OUTPUT].setVoltage((a>=b?10.f:0.f), c);
outputs[AISB_OUTPUT].setVoltage((a==b?10.f:0.f), c);
outputs[AISNOTB_OUTPUT].setVoltage((a!=b?10.f:0.f), c);
outputs[NOTA_OUTPUT].setVoltage(!a, c);
outputs[NOTB_OUTPUT].setVoltage(!b, c);
}
for (int op = AND_OUTPUT; op < NUM_OUTPUTS; op++)
outputs[op].setChannels(nChan);

for (auto c = 0; c < nChan; ++c) {
if (inputs[A_INPUT].isConnected() && inputs[B_INPUT].isConnected()) {
float a = inputs[A_INPUT].getVoltage(c);
float b = inputs[B_INPUT].getPolyVoltage(c);

bool isA = (a != 0.f);
bool isB = (b != 0.f);

outputs[AND_OUTPUT].setVoltage((isA && isB ? 10.f : 0.f), c);
outputs[OR_OUTPUT].setVoltage((isA || isB ? 10.f : 0.f), c);
outputs[XOR_OUTPUT].setVoltage((isA != isB ? 10.f : 0.f), c);
outputs[NOR_OUTPUT].setVoltage((!(a || b) ? 10.f : 0.f), c);
outputs[ALTB_OUTPUT].setVoltage((a < b ? 10.f : 0.f), c);
outputs[AGTB_OUTPUT].setVoltage((a > b ? 10.f : 0.f), c);
outputs[ALTEB_OUTPUT].setVoltage((a <= b ? 10.f : 0.f), c);
outputs[AGTEB_OUTPUT].setVoltage((a >= b ? 10.f : 0.f), c);
outputs[AISB_OUTPUT].setVoltage((a == b ? 10.f : 0.f), c);
outputs[AISNOTB_OUTPUT].setVoltage((a != b ? 10.f : 0.f), c);
outputs[NOTA_OUTPUT].setVoltage(!a, c);
outputs[NOTB_OUTPUT].setVoltage(!b, c);
}
}
}
};
Expand Down
Loading

0 comments on commit 21220ec

Please sign in to comment.