Эх сурвалжийг харах

Add clang format. Update panel SVG alot. Begin grouping components.

Jonatan Gezelius 2 жил өмнө
parent
commit
26eb8717b5
4 өөрчлөгдсөн 508 нэмэгдсэн , 479 устгасан
  1. 149 0
      .clang-format
  2. 75 1
      .vscode/settings.json
  3. 36 237
      res/SSI2164-Mixer1.svg
  4. 248 241
      src/SSI2164-Mixer1.cpp

+ 149 - 0
.clang-format

@@ -0,0 +1,149 @@
+---
+Language:        Cpp
+# BasedOnStyle:  LLVM
+AccessModifierOffset: -2
+AlignAfterOpenBracket: AlwaysBreak #Align
+AlignConsecutiveMacros: false
+AlignConsecutiveAssignments: false
+AlignConsecutiveBitFields: false
+AlignConsecutiveDeclarations: false
+AlignEscapedNewlines: Right
+AlignOperands:   Align
+AlignTrailingComments: true
+AllowAllArgumentsOnNextLine: true
+AllowAllConstructorInitializersOnNextLine: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortEnumsOnASingleLine: true
+AllowShortBlocksOnASingleLine: Never
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: All
+AllowShortLambdasOnASingleLine: All
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: MultiLine
+BinPackArguments: false #true
+BinPackParameters: false #true
+BraceWrapping:
+  AfterCaseLabel:  false
+  AfterClass:      false
+  AfterControlStatement: Never
+  AfterEnum:       false
+  AfterFunction:   false
+  AfterNamespace:  false
+  AfterObjCDeclaration: false
+  AfterStruct:     false
+  AfterUnion:      false
+  AfterExternBlock: false
+  BeforeCatch:     false
+  BeforeElse:      false
+  BeforeLambdaBody: false
+  BeforeWhile:     false
+  IndentBraces:    false
+  SplitEmptyFunction: true
+  SplitEmptyRecord: true
+  SplitEmptyNamespace: true
+BreakBeforeBinaryOperators: None
+BreakBeforeBraces: Attach
+BreakBeforeInheritanceComma: false
+BreakInheritanceList: BeforeColon
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeColon
+BreakAfterJavaFieldAnnotations: false
+BreakStringLiterals: true
+ColumnLimit:     80
+CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
+DeriveLineEnding: true
+DerivePointerAlignment: false
+DisableFormat:   false
+ExperimentalAutoDetectBinPacking: false
+FixNamespaceComments: true
+ForEachMacros:
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IncludeBlocks:   Preserve
+IncludeCategories:
+  - Regex:           '^"(llvm|llvm-c|clang|clang-c)/'
+    Priority:        2
+    SortPriority:    0
+  - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
+    Priority:        3
+    SortPriority:    0
+  - Regex:           '.*'
+    Priority:        1
+    SortPriority:    0
+IncludeIsMainRegex: '(Test)?$'
+IncludeIsMainSourceRegex: ''
+IndentCaseLabels: false
+IndentCaseBlocks: false
+IndentGotoLabels: true
+IndentPPDirectives: None
+IndentExternBlock: AfterExternBlock
+IndentWidth:     4
+IndentWrappedFunctionNames: false
+InsertTrailingCommas: None
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
+KeepEmptyLinesAtTheStartOfBlocks: true
+MacroBlockBegin: ''
+MacroBlockEnd:   ''
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCBinPackProtocolList: Auto
+ObjCBlockIndentWidth: 2
+ObjCBreakBeforeNestedBlockParam: true
+ObjCSpaceAfterProperty: false
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakAssignment: 2
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 300
+PenaltyBreakFirstLessLess: 120
+PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
+PenaltyExcessCharacter: 1000000
+PenaltyReturnTypeOnItsOwnLine: 60
+PointerAlignment: Right
+ReflowComments:  true
+SortIncludes:    true
+SortUsingDeclarations: true
+SpaceAfterCStyleCast: false
+SpaceAfterLogicalNot: false
+SpaceAfterTemplateKeyword: true
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
+SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
+SpaceInEmptyBlock: false
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles:  false
+SpacesInConditionalStatement: false
+SpacesInContainerLiterals: true
+SpacesInCStyleCastParentheses: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+SpaceBeforeSquareBrackets: false
+Standard:        Latest
+StatementMacros:
+  - Q_UNUSED
+  - QT_REQUIRE_VERSION
+TabWidth:        8
+UseCRLF:         false
+UseTab:          Never
+WhitespaceSensitiveMacros:
+  - STRINGIZE
+  - PP_STRINGIZE
+  - BOOST_PP_STRINGIZE
+...
+

+ 75 - 1
.vscode/settings.json

@@ -1,4 +1,78 @@
 {
     "editor.formatOnSave": false,
-    "editor.formatOnPaste": false
+    "editor.formatOnPaste": false,
+    "files.associations": {
+        "any": "cpp",
+        "array": "cpp",
+        "atomic": "cpp",
+        "bit": "cpp",
+        "*.tcc": "cpp",
+        "bitset": "cpp",
+        "cctype": "cpp",
+        "cfenv": "cpp",
+        "charconv": "cpp",
+        "chrono": "cpp",
+        "cinttypes": "cpp",
+        "clocale": "cpp",
+        "cmath": "cpp",
+        "codecvt": "cpp",
+        "compare": "cpp",
+        "complex": "cpp",
+        "concepts": "cpp",
+        "condition_variable": "cpp",
+        "csignal": "cpp",
+        "cstdarg": "cpp",
+        "cstddef": "cpp",
+        "cstdint": "cpp",
+        "cstdio": "cpp",
+        "cstdlib": "cpp",
+        "cstring": "cpp",
+        "ctime": "cpp",
+        "cwchar": "cpp",
+        "cwctype": "cpp",
+        "deque": "cpp",
+        "list": "cpp",
+        "map": "cpp",
+        "set": "cpp",
+        "string": "cpp",
+        "unordered_map": "cpp",
+        "vector": "cpp",
+        "exception": "cpp",
+        "algorithm": "cpp",
+        "functional": "cpp",
+        "iterator": "cpp",
+        "memory": "cpp",
+        "memory_resource": "cpp",
+        "numeric": "cpp",
+        "optional": "cpp",
+        "random": "cpp",
+        "ratio": "cpp",
+        "source_location": "cpp",
+        "string_view": "cpp",
+        "system_error": "cpp",
+        "tuple": "cpp",
+        "type_traits": "cpp",
+        "utility": "cpp",
+        "format": "cpp",
+        "initializer_list": "cpp",
+        "iomanip": "cpp",
+        "iosfwd": "cpp",
+        "iostream": "cpp",
+        "istream": "cpp",
+        "limits": "cpp",
+        "mutex": "cpp",
+        "new": "cpp",
+        "numbers": "cpp",
+        "ostream": "cpp",
+        "semaphore": "cpp",
+        "span": "cpp",
+        "sstream": "cpp",
+        "stdexcept": "cpp",
+        "stop_token": "cpp",
+        "streambuf": "cpp",
+        "thread": "cpp",
+        "typeindex": "cpp",
+        "typeinfo": "cpp",
+        "variant": "cpp"
+    }
 }

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 36 - 237
res/SSI2164-Mixer1.svg


+ 248 - 241
src/SSI2164-Mixer1.cpp

@@ -5,262 +5,269 @@
 #define MIN_ATT 1.85
 #define SILENT_ATT 1.8
 
-struct SSI2164_Mixer1 : Module
-{
-  float disp[NUM_DISPLAYS];
-  enum ParamId
-  {
-    CH1_AUX1_PARAM,
-    CH1_AUX2_PARAM,
-    CH1_PAN_PARAM,
-    CH1_MUTE_PARAM,
-    CH1_FAD_PARAM,
-    PARAMS_LEN
-  };
-  enum InputId
-  {
-    CH1_IN_INPUT,
-    CH1_PAN_INPUT,
-    AUX2_RETURN_R_INPUT,
-    AUX2_RETURN_L_INPUT,
-    AUX1_RETURN_INPUT,
-    INPUTS_LEN
-  };
-  enum OutputId
-  {
-    AUX2_SEND_L_OUTPUT,
-    AUX1_SEND_OUTPUT,
-    AUX2_SEND_R_OUTPUT,
-    MASTER_OUT_L_OUTPUT,
-    MASTER_OUT_R_OUTPUT,
-    OUTPUTS_LEN
-  };
-  enum LightId
-  {
-    CH1_LEVEL_LIGHT,
-    MASTER_LED_L_LIGHT,
-    MASTER_LED_R_LIGHT,
-    LIGHTS_LEN
-  };
-
-  SSI2164_Mixer1()
-  {
-    config(PARAMS_LEN, INPUTS_LEN, OUTPUTS_LEN, LIGHTS_LEN);
-    configParam(CH1_AUX1_PARAM, 0.f, 1.f, 0.f, "Aux 1");
-    configParam(CH1_AUX2_PARAM, 0.f, 1.f, 0.f, "Aux 2");
-    configParam(CH1_PAN_PARAM, -1.f, 1.f, .0f, "Pan");
-    configParam(CH1_MUTE_PARAM, 0.f, 1.f, 0.f, "Mute");
-    configParam(CH1_FAD_PARAM, 0.f, 1.f, 0.f, "Fader");
-    configInput(CH1_IN_INPUT, "Ch1");
-    configInput(CH1_PAN_INPUT, "Ch1 Pan CV");
-
-    configOutput(AUX1_SEND_OUTPUT, "Aux 1 Send");
-    configInput(AUX1_RETURN_INPUT, "Aux 1 Return");
-
-    configOutput(AUX2_SEND_L_OUTPUT, "Aux 2 Send L");
-    configOutput(AUX2_SEND_R_OUTPUT, "Aux 2 Send R");
-    configInput(AUX2_RETURN_L_INPUT, "Aux 2 Return L");
-    configInput(AUX2_RETURN_R_INPUT, "Aux 2 Return R");
-
-    configOutput(MASTER_OUT_L_OUTPUT, "Master L");
-    configOutput(MASTER_OUT_R_OUTPUT, "Master R");
-  }
-
-  float ssi2164_conversion(float iin, float cv)
-  {
-    cv = fmax(0, cv);
-    if (cv < SILENT_ATT)
-      return iin * pow(2, -5.0505 * cv);
-    else
-      return 0;
-  }
-
-  void process(const ProcessArgs &args) override
-  {
-    float aux1_cv, aux2_l_cv, aux2_r_cv, master_l_cv, master_r_cv;
-    float aux1_control, aux2_control, pan_control, pan_cv_in, fad_control, mute_control;
-
-    float pan_cv, pan_l_control, pan_r_control;
-
-    aux1_control = (1 - params[CH1_AUX1_PARAM].getValue()) * MIN_ATT;
-    aux2_control = (1 - params[CH1_AUX2_PARAM].getValue()) * MIN_ATT;
-    pan_control = params[CH1_PAN_PARAM].getValue();
-    pan_cv_in = inputs[CH1_PAN_INPUT].getVoltage();
-    fad_control = (1 - params[CH1_FAD_PARAM].getValue()) * MIN_ATT;
-    mute_control = params[CH1_MUTE_PARAM].getValue();
-
-    // Normalize pan voltages to +-1 and do calculations based on that
-    pan_cv = (pan_control + pan_cv_in / 5);
-    pan_l_control = fmax(.0f, pan_cv * (MIN_ATT) + 0.033);
-    pan_r_control = fmax(.0f, pan_cv * (-MIN_ATT) + 0.033);
-
-    disp[0] = pan_cv;
-    disp[1] = pan_l_control;
-    disp[2] = pan_r_control;
-    disp[3] = fad_control;
-    disp[4] = aux1_control;
-    disp[5] = aux2_control;
-
-    aux1_cv = fad_control + aux1_control;
-    aux2_l_cv = fad_control + pan_l_control + aux2_control;
-    aux2_r_cv = fad_control + pan_r_control + aux2_control;
-    master_l_cv = fad_control + pan_l_control;
-    master_r_cv = fad_control + pan_r_control;
-
-    disp[6] = aux1_cv;
-    disp[7] = aux2_l_cv;
-    disp[8] = aux2_r_cv;
-    disp[9] = master_l_cv;
-    disp[10] = master_r_cv;
-    disp[11] = mute_control;
-
-    float ch1_in = 0;
-    if (mute_control < 0.1)
-      ch1_in = inputs[CH1_IN_INPUT].getVoltage();
-
-    // https://www.dr-lex.be/info-stuff/volumecontrols.html
-    outputs[AUX1_SEND_OUTPUT].setVoltage(ssi2164_conversion(ch1_in, aux1_cv));
-
-    outputs[AUX2_SEND_L_OUTPUT].setVoltage(ssi2164_conversion(ch1_in, aux2_l_cv));
-    outputs[AUX2_SEND_R_OUTPUT].setVoltage(ssi2164_conversion(ch1_in, aux2_r_cv));
-
-    outputs[MASTER_OUT_L_OUTPUT].setVoltage(ssi2164_conversion(ch1_in, master_l_cv));
-    outputs[MASTER_OUT_R_OUTPUT].setVoltage(ssi2164_conversion(ch1_in, master_r_cv));
-  }
+struct SSI2164_Mixer1 : Module {
+    float disp[NUM_DISPLAYS];
+    enum ParamId {
+        CH1_AUX1_PARAM,
+        CH1_AUX2_PARAM,
+        CH1_PAN_PARAM,
+        CH1_MUTE_PARAM,
+        CH1_FAD_PARAM,
+        PARAMS_LEN
+    };
+    enum InputId {
+        CH1_IN_INPUT,
+        CH1_PAN_INPUT,
+        AUX2_RETURN_R_INPUT,
+        AUX2_RETURN_L_INPUT,
+        AUX1_RETURN_INPUT,
+        INPUTS_LEN
+    };
+    enum OutputId {
+        AUX2_SEND_L_OUTPUT,
+        AUX1_SEND_OUTPUT,
+        AUX2_SEND_R_OUTPUT,
+        MASTER_OUT_L_OUTPUT,
+        MASTER_OUT_R_OUTPUT,
+        OUTPUTS_LEN
+    };
+    enum LightId {
+        CH1_LEVEL_LIGHT,
+        MASTER_LED_L_LIGHT,
+        MASTER_LED_R_LIGHT,
+        LIGHTS_LEN
+    };
+
+    SSI2164_Mixer1() {
+        config(PARAMS_LEN, INPUTS_LEN, OUTPUTS_LEN, LIGHTS_LEN);
+        configParam(CH1_AUX1_PARAM, 0.f, 1.f, 0.f, "Aux 1");
+        configParam(CH1_AUX2_PARAM, 0.f, 1.f, 0.f, "Aux 2");
+        configParam(CH1_PAN_PARAM, -1.f, 1.f, .0f, "Pan");
+        configParam(CH1_MUTE_PARAM, 0.f, 1.f, 0.f, "Mute");
+        configParam(CH1_FAD_PARAM, 0.f, 1.f, 0.f, "Fader");
+        configInput(CH1_IN_INPUT, "Ch1");
+        configInput(CH1_PAN_INPUT, "Ch1 Pan CV");
+
+        configOutput(AUX1_SEND_OUTPUT, "Aux 1 Send");
+        configInput(AUX1_RETURN_INPUT, "Aux 1 Return");
+
+        configOutput(AUX2_SEND_L_OUTPUT, "Aux 2 Send L");
+        configOutput(AUX2_SEND_R_OUTPUT, "Aux 2 Send R");
+        configInput(AUX2_RETURN_L_INPUT, "Aux 2 Return L");
+        configInput(AUX2_RETURN_R_INPUT, "Aux 2 Return R");
+
+        configOutput(MASTER_OUT_L_OUTPUT, "Master L");
+        configOutput(MASTER_OUT_R_OUTPUT, "Master R");
+    }
+
+    float ssi2164_conversion(float iin, float cv) {
+        cv = fmax(0, cv);
+        if (cv < SILENT_ATT)
+            return iin * pow(2, -5.0505 * cv);
+        else
+            return 0;
+    }
+
+    void process(const ProcessArgs &args) override {
+        float aux1_cv, aux2_l_cv, aux2_r_cv, master_l_cv, master_r_cv;
+        float aux1_control, aux2_control, pan_control, pan_cv_in, fad_control,
+            mute_control;
+
+        float pan_cv, pan_l_control, pan_r_control;
+
+        aux1_control = (1 - params[CH1_AUX1_PARAM].getValue()) * MIN_ATT;
+        aux2_control = (1 - params[CH1_AUX2_PARAM].getValue()) * MIN_ATT;
+        pan_control = params[CH1_PAN_PARAM].getValue();
+        pan_cv_in = inputs[CH1_PAN_INPUT].getVoltage();
+        fad_control = (1 - params[CH1_FAD_PARAM].getValue()) * MIN_ATT;
+        mute_control = params[CH1_MUTE_PARAM].getValue();
+
+        // Normalize pan voltages to +-1 and do
+        // calculations based on that
+        pan_cv = (pan_control + pan_cv_in / 5);
+        pan_l_control = fmax(.0f, pan_cv * (MIN_ATT) + 0.033);
+        pan_r_control = fmax(.0f, pan_cv * (-MIN_ATT) + 0.033);
+
+        disp[0] = pan_cv;
+        disp[1] = pan_l_control;
+        disp[2] = pan_r_control;
+        disp[3] = fad_control;
+        disp[4] = aux1_control;
+        disp[5] = aux2_control;
+
+        aux1_cv = fad_control + aux1_control;
+        aux2_l_cv = fad_control + pan_l_control + aux2_control;
+        aux2_r_cv = fad_control + pan_r_control + aux2_control;
+        master_l_cv = fad_control + pan_l_control;
+        master_r_cv = fad_control + pan_r_control;
+
+        disp[6] = aux1_cv;
+        disp[7] = aux2_l_cv;
+        disp[8] = aux2_r_cv;
+        disp[9] = master_l_cv;
+        disp[10] = master_r_cv;
+        disp[11] = mute_control;
+
+        float ch1_in = 0;
+        if (mute_control < 0.1)
+            ch1_in = inputs[CH1_IN_INPUT].getVoltage();
+
+        // https://www.dr-lex.be/info-stuff/volumecontrols.html
+        outputs[AUX1_SEND_OUTPUT].setVoltage(
+            ssi2164_conversion(ch1_in, aux1_cv));
+
+        outputs[AUX2_SEND_L_OUTPUT].setVoltage(
+            ssi2164_conversion(ch1_in, aux2_l_cv));
+        outputs[AUX2_SEND_R_OUTPUT].setVoltage(
+            ssi2164_conversion(ch1_in, aux2_r_cv));
+
+        outputs[MASTER_OUT_L_OUTPUT].setVoltage(
+            ssi2164_conversion(ch1_in, master_l_cv));
+        outputs[MASTER_OUT_R_OUTPUT].setVoltage(
+            ssi2164_conversion(ch1_in, master_r_cv));
+    }
 };
 
-struct KnobPenis : RoundKnob
-{
-  KnobPenis()
-  {
-    setSvg(contextGet()->window->loadSvg(
-        asset::plugin(pluginInstance, "res/KnobPenis.svg")));
-    box.size = Vec(19, 19);
-  }
+struct KnobPenis : RoundKnob {
+    KnobPenis() {
+        setSvg(contextGet()->window->loadSvg(
+            asset::plugin(pluginInstance, "res/KnobPenis.svg")));
+        box.size = Vec(19, 19);
+    }
 };
 
-struct numberBox : TransparentWidget
-{
-  float *val[NUM_DISPLAYS];
+struct KnobPenis2 : RoundKnob {
+    KnobPenis2() {
+        setSvg(contextGet()->window->loadSvg(
+            asset::plugin(pluginInstance, "res/KnobPenis.svg")));
+        box.size = Vec(44, 44);
+    }
+};
 
-  numberBox() : TransparentWidget()
-  {
-    for (int i = 0; i < NUM_DISPLAYS; i++)
+struct testGroup : OpaqueWidget {
+    testGroup(Module *module)
     {
-      val[i] = nullptr;
+        
     }
-    box.size.y = 20 * NUM_DISPLAYS;
-    box.size.x = 100;
-  }
-
-  void draw(const DrawArgs &args) override
-  {
-    nvgFillColor(args.vg, nvgRGBf(0.0, 0.0, 0.0));
-    nvgBeginPath(args.vg);
-    nvgRect(args.vg, 0.0, 0.0, box.size.x, box.size.y);
-    nvgFill(args.vg);
-  }
-
-  void drawLayer(const DrawArgs &args, int layer) override
-  {
-    if (layer == 1)
-    {
-      std::string fontPath = asset::system("res/fonts/DejaVuSans.ttf");
-      std::shared_ptr<Font> font = APP->window->loadFont(fontPath);
-
-      if (font)
-      {
-        std::string texts[NUM_DISPLAYS];
-
-        for (int i = 0; i < NUM_DISPLAYS; i++)
-        {
-          if (val[i] != nullptr)
-          {
-            texts[i] = string::f("%6.2f V", *val[i]);
-          }
+
+    struct testGroupData {
+        float *nums[NUM_DISPLAYS];
+    };
+};
+
+struct numberBox : TransparentWidget {
+    float *val[NUM_DISPLAYS];
+
+    numberBox() : TransparentWidget() {
+        for (int i = 0; i < NUM_DISPLAYS; i++) {
+            val[i] = nullptr;
         }
+        box.size.y = 20 * NUM_DISPLAYS;
+        box.size.x = 100;
+    }
 
-        // text1 = "Yoman!";
+    void draw(const DrawArgs &args) override {
+        nvgFillColor(args.vg, nvgRGBf(0.0, 0.0, 0.0));
+        nvgBeginPath(args.vg);
+        nvgRect(args.vg, 0.0, 0.0, box.size.x, box.size.y);
+        nvgFill(args.vg);
+    }
 
-        NVGcolor textColor = nvgRGB(0xf0, 0x00, 0x00);
-        nvgFillColor(args.vg, textColor);
-        for (int i = 0; i < NUM_DISPLAYS; i++)
-        {
-          nvgText(args.vg, 0, 15 + i * 20, texts[i].c_str(), NULL);
+    void drawLayer(const DrawArgs &args, int layer) override {
+        if (layer == 1) {
+            std::string fontPath = asset::system("res/fonts/DejaVuSans.ttf");
+            std::shared_ptr<Font> font = APP->window->loadFont(fontPath);
+
+            if (font) {
+                std::string texts[NUM_DISPLAYS];
+
+                for (int i = 0; i < NUM_DISPLAYS; i++) {
+                    if (val[i] != nullptr) {
+                        texts[i] = string::f("%6.2f V", *val[i]);
+                    }
+                }
+
+                // text1 =
+                // "Yoman!";
+
+                NVGcolor textColor = nvgRGB(0xf0, 0x00, 0x00);
+                nvgFillColor(args.vg, textColor);
+                for (int i = 0; i < NUM_DISPLAYS; i++) {
+                    nvgText(args.vg, 0, 15 + i * 20, texts[i].c_str(), NULL);
+                }
+            }
         }
-      }
     }
-  }
 };
 
-struct SSI2164_Mixer1Widget : ModuleWidget
-{
-  SSI2164_Mixer1Widget(SSI2164_Mixer1 *module)
-  {
-    setModule(module);
-    setPanel(
-        createPanel(asset::plugin(pluginInstance, "res/SSI2164-Mixer1.svg")));
-
-    addChild(createWidget<ThemedScrew>(Vec(RACK_GRID_WIDTH, 0)));
-    addChild(
-        createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
-    addChild(createWidget<ThemedScrew>(
-        Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
-    addChild(createWidget<ScrewSilver>(Vec(
-        box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
-
-    addInput(createInputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(12, 17)), module, SSI2164_Mixer1::CH1_IN_INPUT));
-    addInput(createInputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(12, 28)), module, SSI2164_Mixer1::CH1_PAN_INPUT));
-    addParam(createParamCentered<KnobPenis>(mm2px(Vec(12, 38)), module,
-                                            SSI2164_Mixer1::CH1_AUX1_PARAM));
-    addParam(createParamCentered<KnobPenis>(mm2px(Vec(12, 49)), module,
-                                            SSI2164_Mixer1::CH1_AUX2_PARAM));
-    addParam(createParamCentered<KnobPenis>(mm2px(Vec(12, 59)), module,
-                                            SSI2164_Mixer1::CH1_PAN_PARAM));
-    addParam(createParamCentered<VCVLatch>(mm2px(Vec(12, 68)), module,
-                                           SSI2164_Mixer1::CH1_MUTE_PARAM));
-    addChild(createLightCentered<MediumLight<RedLight>>(
-        mm2px(Vec(12, 77)), module, SSI2164_Mixer1::CH1_LEVEL_LIGHT));
-    addParam(createParamCentered<VCVSlider>(mm2px(Vec(12, 101)), module,
-                                            SSI2164_Mixer1::CH1_FAD_PARAM));
-
-    if (module)
-    {
-      numberBox *myDisp = new numberBox;
-      myDisp->box.pos = Vec(80, 50);
-      for (int i = 0; i < NUM_DISPLAYS; i++)
-      {
-        myDisp->val[i] = &module->disp[i];
-      }
-      addChild(myDisp);
-    }
+struct SSI2164_Mixer1Widget : ModuleWidget {
+    SSI2164_Mixer1Widget(SSI2164_Mixer1 *module) {
+        setModule(module);
+        setPanel(createPanel(
+            asset::plugin(pluginInstance, "res/SSI2164-Mixer1.svg")));
+
+        addChild(createWidget<ThemedScrew>(Vec(RACK_GRID_WIDTH, 0)));
+        addChild(createWidget<ScrewSilver>(
+            Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
+        addChild(createWidget<ThemedScrew>(
+            Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
+        addChild(createWidget<ScrewSilver>(
+            Vec(box.size.x - 2 * RACK_GRID_WIDTH,
+                RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
+
+        addInput(createInputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(12, 17)), module, SSI2164_Mixer1::CH1_IN_INPUT));
+        addInput(createInputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(12, 28)), module, SSI2164_Mixer1::CH1_PAN_INPUT));
+        addParam(createParamCentered<KnobPenis>(
+            mm2px(Vec(12, 38)), module, SSI2164_Mixer1::CH1_AUX1_PARAM));
+        addParam(createParamCentered<KnobPenis>(
+            mm2px(Vec(12, 49)), module, SSI2164_Mixer1::CH1_AUX2_PARAM));
+        addParam(createParamCentered<KnobPenis2>(
+            mm2px(Vec(12, 59)), module, SSI2164_Mixer1::CH1_PAN_PARAM));
+        addParam(createParamCentered<VCVLatch>(
+            mm2px(Vec(12, 68)), module, SSI2164_Mixer1::CH1_MUTE_PARAM));
+        addChild(createLightCentered<MediumLight<RedLight>>(
+            mm2px(Vec(12, 77)), module, SSI2164_Mixer1::CH1_LEVEL_LIGHT));
+        addParam(createParamCentered<VCVSlider>(
+            mm2px(Vec(12, 101)), module, SSI2164_Mixer1::CH1_FAD_PARAM));
+
+        if (module) {
+            numberBox *myDisp = new numberBox;
+            myDisp->box.pos = Vec(80, 50);
+            for (int i = 0; i < NUM_DISPLAYS; i++) {
+                myDisp->val[i] = &module->disp[i];
+            }
+            addChild(myDisp);
+        }
 
-    addOutput(createOutputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(141, 13)), module, SSI2164_Mixer1::AUX1_SEND_OUTPUT));
-    addInput(createInputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(141, 27)), module, SSI2164_Mixer1::AUX1_RETURN_INPUT));
-
-    addInput(createInputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(160, 27)), module, SSI2164_Mixer1::AUX2_RETURN_L_INPUT));
-    addInput(createInputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(172, 27)), module, SSI2164_Mixer1::AUX2_RETURN_R_INPUT));
-    addOutput(createOutputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(160, 13)), module, SSI2164_Mixer1::AUX2_SEND_L_OUTPUT));
-    addOutput(createOutputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(172, 13)), module, SSI2164_Mixer1::AUX2_SEND_R_OUTPUT));
-
-    addOutput(createOutputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(160, 113)), module, SSI2164_Mixer1::MASTER_OUT_L_OUTPUT));
-    addOutput(createOutputCentered<ThemedPJ301MPort>(
-        mm2px(Vec(172, 113)), module, SSI2164_Mixer1::MASTER_OUT_R_OUTPUT));
-
-    addChild(createLightCentered<MediumLight<RedLight>>(
-        mm2px(Vec(160, 77)), module, SSI2164_Mixer1::MASTER_LED_L_LIGHT));
-    addChild(createLightCentered<MediumLight<RedLight>>(
-        mm2px(Vec(172, 77)), module, SSI2164_Mixer1::MASTER_LED_R_LIGHT));
-  }
+        addParam(createParamCentered<KnobPenis>(
+            mm2px(Vec(110, 38)), module, SSI2164_Mixer1::CH1_AUX1_PARAM));
+
+        addOutput(createOutputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(141, 13)), module, SSI2164_Mixer1::AUX1_SEND_OUTPUT));
+        addInput(createInputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(141, 27)), module, SSI2164_Mixer1::AUX1_RETURN_INPUT));
+
+        addInput(createInputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(160, 27)), module, SSI2164_Mixer1::AUX2_RETURN_L_INPUT));
+        addInput(createInputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(172, 27)), module, SSI2164_Mixer1::AUX2_RETURN_R_INPUT));
+        addOutput(createOutputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(160, 13)), module, SSI2164_Mixer1::AUX2_SEND_L_OUTPUT));
+        addOutput(createOutputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(172, 13)), module, SSI2164_Mixer1::AUX2_SEND_R_OUTPUT));
+
+        addOutput(createOutputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(160, 113)), module, SSI2164_Mixer1::MASTER_OUT_L_OUTPUT));
+        addOutput(createOutputCentered<ThemedPJ301MPort>(
+            mm2px(Vec(172, 113)), module, SSI2164_Mixer1::MASTER_OUT_R_OUTPUT));
+
+        addChild(createLightCentered<MediumLight<RedLight>>(
+            mm2px(Vec(160, 77)), module, SSI2164_Mixer1::MASTER_LED_L_LIGHT));
+        addChild(createLightCentered<MediumLight<RedLight>>(
+            mm2px(Vec(172, 77)), module, SSI2164_Mixer1::MASTER_LED_R_LIGHT));
+    }
 };
 
 Model *modelSSI2164_Mixer1 =

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно