From 703d41aec84d9f0f9f66ab2820b0c7637a3dd3d6 Mon Sep 17 00:00:00 2001
From: Michael Sippel <micha@fragmental.art>
Date: Thu, 20 Feb 2025 16:36:10 +0100
Subject: [PATCH] add .clang-format file & format all

---
 .clang-format | 274 ++++++++++++++++++++++++++++++++++++++++++++++++++
 controller.c  | 149 ++++++++++++++-------------
 guitfx.c      |  22 ++--
 guitfx.h      |   2 +-
 4 files changed, 359 insertions(+), 88 deletions(-)
 create mode 100644 .clang-format

diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..76e5a44
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,274 @@
+---
+Language:        Cpp
+AccessModifierOffset: -4
+AlignAfterOpenBracket: DontAlign
+AlignArrayOfStructures: None
+AlignConsecutiveAssignments:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    true
+AlignConsecutiveBitFields:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    false
+AlignConsecutiveDeclarations:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    false
+AlignConsecutiveMacros:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    false
+AlignConsecutiveShortCaseStatements:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCaseArrows: false
+  AlignCaseColons: false
+AlignConsecutiveTableGenBreakingDAGArgColons:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    false
+AlignConsecutiveTableGenCondOperatorColons:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    false
+AlignConsecutiveTableGenDefinitionColons:
+  Enabled:         false
+  AcrossEmptyLines: false
+  AcrossComments:  false
+  AlignCompound:   false
+  AlignFunctionPointers: false
+  PadOperators:    false
+AlignEscapedNewlines: Right
+AlignOperands:   DontAlign
+AlignTrailingComments:
+  Kind:            Never
+  OverEmptyLines:  0
+AllowAllArgumentsOnNextLine: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowBreakBeforeNoexceptSpecifier: Never
+AllowShortBlocksOnASingleLine: Empty
+AllowShortCaseExpressionOnASingleLine: true
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortCompoundRequirementOnASingleLine: true
+AllowShortEnumsOnASingleLine: true
+AllowShortFunctionsOnASingleLine: All
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLambdasOnASingleLine: All
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AttributeMacros:
+  - __capability
+BinPackArguments: true
+BinPackParameters: true
+BitFieldColonSpacing: Both
+BraceWrapping:
+  AfterCaseLabel:  false
+  AfterClass:      false
+  AfterControlStatement: Never
+  AfterEnum:       false
+  AfterExternBlock: false
+  AfterFunction:   true
+  AfterNamespace:  false
+  AfterObjCDeclaration: false
+  AfterStruct:     false
+  AfterUnion:      false
+  BeforeCatch:     false
+  BeforeElse:      false
+  BeforeLambdaBody: false
+  BeforeWhile:     false
+  IndentBraces:    false
+  SplitEmptyFunction: true
+  SplitEmptyRecord: true
+  SplitEmptyNamespace: true
+BreakAdjacentStringLiterals: true
+BreakAfterAttributes: Leave
+BreakAfterJavaFieldAnnotations: false
+BreakAfterReturnType: None
+BreakArrays:     true
+BreakBeforeBinaryOperators: All
+BreakBeforeConceptDeclarations: Always
+BreakBeforeBraces: WebKit
+BreakBeforeInlineASMColon: OnlyMultiline
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializers: BeforeComma
+BreakFunctionDefinitionParameters: false
+BreakInheritanceList: BeforeColon
+BreakStringLiterals: true
+BreakTemplateDeclarations: MultiLine
+ColumnLimit:     0
+CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: false
+DerivePointerAlignment: false
+DisableFormat:   false
+EmptyLineAfterAccessModifier: Never
+EmptyLineBeforeAccessModifier: LogicalBlock
+ExperimentalAutoDetectBinPacking: false
+FixNamespaceComments: false
+ForEachMacros:
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IfMacros:
+  - KJ_IF_MAYBE
+IncludeBlocks:   Preserve
+IncludeCategories:
+  - Regex:           '^"(llvm|llvm-c|clang|clang-c)/'
+    Priority:        2
+    SortPriority:    0
+    CaseSensitive:   false
+  - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
+    Priority:        3
+    SortPriority:    0
+    CaseSensitive:   false
+  - Regex:           '.*'
+    Priority:        1
+    SortPriority:    0
+    CaseSensitive:   false
+IncludeIsMainRegex: '(Test)?$'
+IncludeIsMainSourceRegex: ''
+IndentAccessModifiers: false
+IndentCaseBlocks: false
+IndentCaseLabels: false
+IndentExternBlock: AfterExternBlock
+IndentGotoLabels: true
+IndentPPDirectives: None
+IndentRequiresClause: true
+IndentWidth:     4
+IndentWrappedFunctionNames: false
+InsertBraces:    false
+InsertNewlineAtEOF: false
+InsertTrailingCommas: None
+IntegerLiteralSeparator:
+  Binary:          0
+  BinaryMinDigits: 0
+  Decimal:         0
+  DecimalMinDigits: 0
+  Hex:             0
+  HexMinDigits:    0
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
+KeepEmptyLines:
+  AtEndOfFile:     false
+  AtStartOfBlock:  true
+  AtStartOfFile:   true
+LambdaBodyIndentation: Signature
+LineEnding:      DeriveLF
+MacroBlockBegin: ''
+MacroBlockEnd:   ''
+MainIncludeChar: Quote
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: Inner
+ObjCBinPackProtocolList: Auto
+ObjCBlockIndentWidth: 4
+ObjCBreakBeforeNestedBlockParam: true
+ObjCSpaceAfterProperty: true
+ObjCSpaceBeforeProtocolList: true
+PackConstructorInitializers: BinPack
+PenaltyBreakAssignment: 2
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 300
+PenaltyBreakFirstLessLess: 120
+PenaltyBreakOpenParenthesis: 0
+PenaltyBreakScopeResolution: 500
+PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
+PenaltyExcessCharacter: 1000000
+PenaltyIndentedWhitespace: 0
+PenaltyReturnTypeOnItsOwnLine: 60
+PointerAlignment: Left
+PPIndentWidth:   -1
+QualifierAlignment: Leave
+ReferenceAlignment: Pointer
+ReflowComments:  true
+RemoveBracesLLVM: false
+RemoveParentheses: Leave
+RemoveSemicolon: false
+RequiresClausePosition: OwnLine
+RequiresExpressionIndentation: OuterScope
+SeparateDefinitionBlocks: Leave
+ShortNamespaceLines: 1
+SkipMacroDefinitionBody: false
+SortIncludes:    CaseSensitive
+SortJavaStaticImport: Before
+SortUsingDeclarations: LexicographicNumeric
+SpaceAfterCStyleCast: false
+SpaceAfterLogicalNot: false
+SpaceAfterTemplateKeyword: true
+SpaceAroundPointerQualifiers: Default
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeCaseColon: false
+SpaceBeforeCpp11BracedList: true
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
+SpaceBeforeJsonColon: false
+SpaceBeforeParens: ControlStatements
+SpaceBeforeParensOptions:
+  AfterControlStatements: true
+  AfterForeachMacros: true
+  AfterFunctionDefinitionName: false
+  AfterFunctionDeclarationName: false
+  AfterIfMacros:   true
+  AfterOverloadedOperator: false
+  AfterPlacementOperator: true
+  AfterRequiresInClause: false
+  AfterRequiresInExpression: false
+  BeforeNonEmptyParentheses: false
+SpaceBeforeRangeBasedForLoopColon: true
+SpaceBeforeSquareBrackets: false
+SpaceInEmptyBlock: true
+SpacesBeforeTrailingComments: 1
+SpacesInAngles:  Never
+SpacesInContainerLiterals: true
+SpacesInLineCommentPrefix:
+  Minimum:         1
+  Maximum:         -1
+SpacesInParens:  Never
+SpacesInParensOptions:
+  ExceptDoubleParentheses: false
+  InCStyleCasts:   false
+  InConditionalStatements: false
+  InEmptyParentheses: false
+  Other:           false
+SpacesInSquareBrackets: false
+Standard:        Latest
+StatementAttributeLikeMacros:
+  - Q_EMIT
+StatementMacros:
+  - Q_UNUSED
+  - QT_REQUIRE_VERSION
+TableGenBreakInsideDAGArg: DontBreak
+TabWidth:        8
+UseTab:          Never
+VerilogBreakBetweenInstancePorts: true
+WhitespaceSensitiveMacros:
+  - BOOST_PP_STRINGIZE
+  - CF_SWIFT_NAME
+  - NS_SWIFT_NAME
+  - PP_STRINGIZE
+  - STRINGIZE
+...
+
diff --git a/controller.c b/controller.c
index 76e38b7..9de156a 100644
--- a/controller.c
+++ b/controller.c
@@ -13,98 +13,97 @@
 #include <pipewire/filter.h>
 #include <pipewire/pipewire.h>
 
-#include "guitfx.h"
 #include "delay.h"
-#include "sust.h"
 #include "gate.h"
+#include "guitfx.h"
+#include "sust.h"
 
 void midi_control(
-		  struct FxData * data,
+    struct FxData* data,
 
-		  uint64_t frame,
-		  uint64_t offset,
-		  unsigned sec,
-		  unsigned midi_size,
-		  uint8_t * midi_data,
-		  struct spa_io_position* position
-) {
-  printf("[%d] MIDI message (%d bytes) : %x, %x, %x\n", sec, midi_size,
-	 midi_data[0], midi_data[1], midi_data[2]);
+    uint64_t frame,
+    uint64_t offset,
+    unsigned sec,
+    unsigned midi_size,
+    uint8_t* midi_data,
+    struct spa_io_position* position)
+{
+    printf("[%d] MIDI message (%d bytes) : %x, %x, %x\n", sec, midi_size,
+        midi_data[0], midi_data[1], midi_data[2]);
 
-                        switch (midi_data[0] & 0xff) {
-                        case 0xb0:
-                            switch (midi_data[1]) {
-                            case 0x0b:
-                                // expr pedal
-                                float val_f = ((float)midi_data[2]) / 128.0;
+    switch (midi_data[0] & 0xff) {
+    case 0xb0:
+        switch (midi_data[1]) {
+        case 0x0b:
+            // expr pedal
+            float val_f = ((float)midi_data[2]) / 128.0;
 
-                                float thres = 0.5;
+            float thres = 0.5;
 
-                                if (val_f > thres) {
-                                    float expr_mix = (val_f - thres) / (1.0 - thres);
-                                    printf("Expr Pedal %f\n", expr_mix);
+            if (val_f > thres) {
+                float expr_mix = (val_f - thres) / (1.0 - thres);
+                printf("Expr Pedal %f\n", expr_mix);
 
-                                    data->delay.mix = expr_mix;
-                                } else {
-                                    data->delay.mix = 0.0;
-                                }
-                                break;
+                data->delay.mix = expr_mix;
+            } else {
+                data->delay.mix = 0.0;
+            }
+            break;
 
-                            case 0x42:
+        case 0x42:
 
-                                // noise gate calibration
-                                if (data->prog == 2) {
-                                    if (midi_data[2] >= 64) {
-                                        data->gate.threshold = data->gate.cur_block_sum * 0.8;
-                                        printf("calibrate noise gate: threshold = %f\n",
-                                            data->gate.threshold);
-                                    }
-                                }
+            // noise gate calibration
+            if (data->prog == 2) {
+                if (midi_data[2] >= 64) {
+                    data->gate.threshold = data->gate.cur_block_sum * 0.8;
+                    printf("calibrate noise gate: threshold = %f\n",
+                        data->gate.threshold);
+                }
+            }
 
-                                // sust pedal
-                                if (data->prog == 1) {
-                                    if (midi_data[2] >= 64) {
-                                        sust_swap(&data->sust);
-                                        data->sust.playing = true;
+            // sust pedal
+            if (data->prog == 1) {
+                if (midi_data[2] >= 64) {
+                    sust_swap(&data->sust);
+                    data->sust.playing = true;
 
-                                        data->sust.start_idx = data->sust.idx;
-                                        data->sust.idx = 0;
-                                    } else {
-                                        data->sust.playing = false;
-                                    }
-                                }
+                    data->sust.start_idx = data->sust.idx;
+                    data->sust.idx = 0;
+                } else {
+                    data->sust.playing = false;
+                }
+            }
 
-                                // tap tempo
-                                if (data->prog == 0) {
-                                    uint64_t cur_tap = frame + offset;
-                                    uint64_t duration = cur_tap - data->last_tap;
-                                    data->last_tap = cur_tap;
-                                    if (duration < (4 * position->clock.rate.denom)) {
-                                        delay_set_time(&data->delay, duration);
-                                    }
+            // tap tempo
+            if (data->prog == 0) {
+                uint64_t cur_tap = frame + offset;
+                uint64_t duration = cur_tap - data->last_tap;
+                data->last_tap = cur_tap;
+                if (duration < (4 * position->clock.rate.denom)) {
+                    delay_set_time(&data->delay, duration);
+                }
 
-                                    sust_resize(&data->sust, duration);
-                                }
+                sust_resize(&data->sust, duration);
+            }
 
-                                break;
-                            }
+            break;
+        }
 
-                            break;
+        break;
 
-                        case 0xc0:
-                            // program change
-                            if (midi_data[2] >= 64) {
-                                sust_swap(&data->sust);
-                                data->sust.playing = true;
+    case 0xc0:
+        // program change
+        if (midi_data[2] >= 64) {
+            sust_swap(&data->sust);
+            data->sust.playing = true;
 
-                                data->sust.start_idx = data->sust.idx;
-                                data->sust.idx = 0;
-                            } else {
-                                data->sust.playing = false;
-                            }
-                            printf("program change: %u\n", midi_data[1]);
-                            data->prog = midi_data[1];
-                            break;
-                        }
+            data->sust.start_idx = data->sust.idx;
+            data->sust.idx = 0;
+        } else {
+            data->sust.playing = false;
+        }
+        printf("program change: %u\n", midi_data[1]);
+        data->prog = midi_data[1];
+        break;
+    }
 }
-
diff --git a/guitfx.c b/guitfx.c
index 82b53ca..f9afddd 100644
--- a/guitfx.c
+++ b/guitfx.c
@@ -15,8 +15,8 @@
 
 #include "delay.h"
 #include "gate.h"
-#include "sust.h"
 #include "guitfx.h"
+#include "sust.h"
 
 float envelope(float x);
 
@@ -27,15 +27,14 @@ struct port {
 };
 
 void midi_control(
-		  struct FxData * data,
-
-		  uint64_t frame,
-		  uint64_t offset,
-		  unsigned sec,
-		  unsigned midi_size,
-		  uint8_t * midi_data,
-		  struct spa_io_position* position);
+    struct FxData* data,
 
+    uint64_t frame,
+    uint64_t offset,
+    unsigned sec,
+    unsigned midi_size,
+    uint8_t* midi_data,
+    struct spa_io_position* position);
 
 struct data {
     struct pw_main_loop* loop;
@@ -79,10 +78,9 @@ static void on_process(void* userdata, struct spa_io_position* position)
                         char* midi_data = SPA_POD_BODY(&c->value);
                         unsigned midi_size = SPA_POD_BODY_SIZE(&c->value);
 
-			midi_control( &data->fx_data, frame, c->offset, sec, midi_size, midi_data, position );
+                        midi_control(&data->fx_data, frame, c->offset, sec, midi_size, midi_data, position);
                     } else {
-
-		      printf("on_process(): non midi-control\n");
+                        printf("on_process(): non midi-control\n");
                     }
                 }
             } else {
diff --git a/guitfx.h b/guitfx.h
index 4dedcdd..8c3cb7e 100644
--- a/guitfx.h
+++ b/guitfx.h
@@ -1,7 +1,7 @@
 
 #include "delay.h"
-#include "sust.h"
 #include "gate.h"
+#include "sust.h"
 
 struct FxData {
     uint64_t last_tap;