Skip to content

Add: parallel amp blend graph preset#214

Closed
arywk40-hue wants to merge 4 commits into
sudip-mondal-2002:mainfrom
arywk40-hue:codex/parallel-amp-blend-preset
Closed

Add: parallel amp blend graph preset#214
arywk40-hue wants to merge 4 commits into
sudip-mondal-2002:mainfrom
arywk40-hue:codex/parallel-amp-blend-preset

Conversation

@arywk40-hue

@arywk40-hue arywk40-hue commented May 24, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds a new graph-format preset, 06_Parallel_Amp_Blend, showcasing parallel amp routing with a Splitter and Mixer. The preset blends a dirty British Crunch path with a clean American path at a default 50/50 mix, then sends the merged signal into shared Reverb.

This PR also adds graph preset loading support, Mixer input gain handling, readable saved canvas positions, documentation, and focused tests.

Related Issue

Fixes #153

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • ♻️ Refactor / code cleanup
  • 📝 Documentation
  • ✅ Tests
  • 🔧 Build / CI / Configuration

How Was This Tested?

  • Platform(s) tested on: macOS
  • Test command run: python3 -m json.tool presets/06_Parallel_Amp_Blend.json
  • Additional validation:
    • git diff --check
    • Custom Python validation for graph node/link references
    • Verified Mixer default gains are 0.5 / 0.5
    • Verified Mixer feeds shared Reverb after both amp paths merge
  • Manual test steps (if applicable):
    • Native app testing was not run locally because cmake is not installed in this environment.

Checklist

  • Code compiles and builds successfully on my platform
  • All existing tests pass (./amplitron-tests)
  • New tests added for new functionality (if applicable)
  • Documentation updated (README, code comments) if applicable
  • No blocking calls on the audio thread (no std::mutex::lock() on the hot path)
  • Tested on: macOS, JSON/static validation only

Screenshots / Demo

The UI change adds Mixer A/B gain sliders so users can adjust the clean/dirty blend directly from the Mixer node.

<img width="1440" height="900" alt="Screenshot 2026-05-24 at 11 39 41 AM" src="https://github.com/user-attachments/assets/82907e80-b778-4b64-8181-90ff7fb4f9f8" />


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Added "06 Parallel Amp Blend" preset (parallel dirty/clean amp blend).
  * Mixer nodes expose per-input Blend sliders in the UI with immediate apply.
  * App can load full graph-style presets including per-input gains.

* **UI Improvements**
  * Node positions restored from saved coordinates when available.
  * Output-pin wire controls show only when outputs exist and node isn't the graph output.

* **Documentation**
  * Presets doc updated with preset details, signal-flow diagram, and Blend/Gain tips.

* **Chores**
  * New preset file included.

* **Tests**
  * New tests cover graph preset loading and mixer input-gain blending.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/sudip-mondal-2002/Amplitron/pull/214?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Copilot AI review requested due to automatic review settings May 24, 2026 06:11
@coderabbitai

coderabbitai Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

Adds per-input mixer gains with UI sliders and executor support, graph-format preset IO with a bundled "06 Parallel Amp Blend" preset, an AudioEngine graph-replacement API, and tests verifying mixer gain persistence and weighted blending.

Changes

Graph Preset Loading and Mixer Gain Blending

Layer / File(s) Summary
Mixer input gain data structure
src/audio/audio_graph.h, src/audio/audio_graph.cpp
DSPNode adds input_gains vector and AudioGraph::set_node_input_gain(node_id, input_index, gain) updates per-input gain (clamped). Mixer nodes initialize default input gains (0.5 each).
Executor per-connection gain routing and mixing
src/audio/audio_graph_executor.h, src/audio/audio_graph_executor.cpp
InputSource gains a gain field (default 1.0). AudioGraphExecutor::compile() records per-input gains (reads Mixer input_gains per input index), and process() multiplies each source buffer by that gain when summing.
AudioEngine graph replacement mechanism
src/audio/audio_engine.h, src/audio/audio_engine_chain.cpp
Adds AudioEngine::replace_graph(AudioGraph, std::vector<std::shared_ptr<Effect>>) which initializes effects with the current sample rate, swaps main_graph_/dummy_effects_ under effect_mutex_, and calls commit_graph_changes().
Graph preset JSON deserialization and loading
src/preset_manager_io.cpp
New load_graph_preset() validates nodes/links, instantiates nodes and effects via EffectFactory (maps "IR Cabinet""Cabinet" and loads IR metadata), remaps pin ids, rebuilds topology, applies IO gains, clears MIDI mappings, replaces engine graph, and reports errors. PresetManager::load_preset() now detects and routes graph-format presets.
Mixer gain slider UI controls
src/gui/pedal_board_chain.cpp
Renders per-input gain sliders for Mixer nodes (labels A, B, …) and calls audio_graph.set_node_input_gain() + engine_.commit_graph_changes() on edit. Mixer nodes receive special sizing and respect backend node coordinates for placement.
Parallel Amp Blend preset and documentation
presets/06_Parallel_Amp_Blend.json, .gitignore, docs/PRESETS.md
Adds bundled graph preset (input → gate → comp → splitter → two amp/cab chains → mixer with input_gains: [0.5,0.5] → reverb → output), un-ignores the file in .gitignore, and documents usage/tuning in PRESETS.md.
Graph preset and mixer gain test coverage
tests/test_audio_graph.cpp, tests/test_preset_manager.cpp
Test helpers now serialize/deserialize input_gains. Adds DSP test validating mixer-weighted blend and two PresetManager tests: one for inline graph persistence and one that loads the bundled 06_Parallel_Amp_Blend.json, asserting mixer gains and mixer→reverb connectivity.

Sequence Diagram(s)

sequenceDiagram
  participant User as User/UI
  participant PresetMgr as PresetManager
  participant EffectFac as EffectFactory
  participant Engine as AudioEngine
  participant Graph as AudioGraph
  participant Exec as AudioGraphExecutor

  User->>PresetMgr: open/load JSON preset file
  PresetMgr->>PresetMgr: parse JSON, detect graph-format
  PresetMgr->>EffectFac: create Effect instances per node
  PresetMgr->>Graph: create nodes, pins, set input_gains/positions
  PresetMgr->>Graph: add links (using remapped pin ids)
  PresetMgr->>Engine: replace_graph(Graph, effects)
  Engine->>Engine: initialize effects, swap graphs under mutex
  Engine->>Exec: commit_graph_changes() -> rebuild execution plan (reads input_gains)
  Exec->>Exec: use recorded per-connection gains during processing
  PresetMgr->>User: report success / error
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related issues

Possibly related PRs

Suggested labels

gssoc:approved, type:testing, type:refactor

Suggested reviewers

  • sudip-mondal-2002

Poem

🐇 I stitched two amps with wires and cheer,
Sliders A and B let the tones appear.
A splitter hops, the mixer finds the blend,
Preset saved, docs sing—my work's at end.
Rabbit nods, and plays that perfect bend.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.34% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add: parallel amp blend graph preset' directly and concisely describes the main change: introducing a new graph-format preset that demonstrates parallel amp blending via Splitter/Mixer nodes.
Linked Issues check ✅ Passed The PR successfully implements all coding objectives from issue #153: delivers 06_Parallel_Amp_Blend.json preset with parallel routing (dirty British Crunch + clean American paths via Splitter/Mixer), updates PRESETS.md documentation with description/diagram, adds Mixer input gain support, enables graph preset loading, and includes validation tests.
Out of Scope Changes check ✅ Passed All changes are directly related to issue #153 requirements: preset file addition, graph preset loading infrastructure (AudioEngine/AudioGraph methods), Mixer gain control implementation, preset manager updates, documentation, and comprehensive test coverage. No unrelated changes detected.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR adds per-input gain (blend) support for Mixer nodes in the audio graph, persists those gains in the v2 graph preset format, and exposes them in the GUI along with a new example preset.

Changes:

  • Add input_gains to DSPNode, apply gains during graph execution, and provide an API to set them.
  • Extend graph preset load/save to roundtrip mixer input_gains, and add tests validating correct behavior.
  • Add a new “Parallel Amp Blend” graph preset and document it.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
tests/test_preset_manager.cpp Adds preset loading tests to verify mixer gains and example preset integrity
tests/test_audio_graph.cpp Updates mock graph load/save for input_gains and adds DSP processing test for mixer blend
src/preset_manager_io.cpp Implements v2 graph preset loading (nodes/links/effects) including input_gains
src/gui/pedal_board_chain.cpp Restores node positions from presets and adds mixer gain sliders in the graph UI
src/audio/audio_graph_executor.h Adds per-input gain to executor input sources
src/audio/audio_graph_executor.cpp Applies mixer input gains during summing
src/audio/audio_graph.h Adds input_gains to nodes and a setter API
src/audio/audio_graph.cpp Initializes mixer gains and implements set_node_input_gain
src/audio/audio_engine_chain.cpp Adds AudioEngine::replace_graph to swap in a loaded graph/effects
src/audio/audio_engine.h Declares replace_graph
presets/06_Parallel_Amp_Blend.json Adds a new example graph preset exercising splitter/mixer blend
docs/PRESETS.md Documents the new graph preset and usage tips
.gitignore Un-ignores the new preset file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/preset_manager_io.cpp
Comment thread src/preset_manager_io.cpp Outdated
Comment thread src/preset_manager_io.cpp
Comment thread tests/test_preset_manager.cpp
Comment thread tests/test_preset_manager.cpp
Comment thread tests/test_preset_manager.cpp
Comment thread docs/PRESETS.md
Comment thread docs/PRESETS.md
Comment thread tests/test_audio_graph.cpp

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
src/audio/audio_graph_executor.cpp (1)

89-92: ⚡ Quick win

Clamp mixer gains when building execution input sources.

input_gains is consumed directly here. Clamping at this boundary keeps execution behavior safe even if graph data was populated from external/legacy sources.

Proposed fix
-                        if (it->routing_type == NodeRoutingType::Mixer &&
-                            input_index < it->input_gains.size()) {
-                            gain = it->input_gains[input_index];
+                        if (it->routing_type == NodeRoutingType::Mixer &&
+                            input_index < it->input_gains.size()) {
+                            gain = std::clamp(it->input_gains[input_index], 0.0f, 1.0f);
                         }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/audio/audio_graph_executor.cpp` around lines 89 - 92, When pulling mixer
gain values in the execution-source build (the block checking it->routing_type
== NodeRoutingType::Mixer and reading it->input_gains[input_index] into gain),
clamp the retrieved value to a safe range (e.g., 0.0f–1.0f) before assigning to
gain (use std::clamp or equivalent) so malformed/legacy graph data cannot
produce out-of-range gains; update the assignment that reads
it->input_gains[input_index] to apply the clamp.
src/gui/pedal_board_chain.cpp (1)

203-206: ⚡ Quick win

Avoid committing graph topology on every slider delta.

Calling engine_.commit_graph_changes() for each drag step can cause unnecessary graph recompiles while the user is moving a mixer gain. Stage gain updates continuously, then commit once after edit completion.

Proposed change pattern
-                    if (ImGui::SliderFloat(slider_id.c_str(), &gain, 0.0f, 1.0f, "%.2f")) {
-                        audio_graph.set_node_input_gain(node.id, gain_index, gain);
-                        engine_.commit_graph_changes();
-                    }
+                    if (ImGui::SliderFloat(slider_id.c_str(), &gain, 0.0f, 1.0f, "%.2f")) {
+                        audio_graph.set_node_input_gain(node.id, gain_index, gain);
+                    }
+                    if (ImGui::IsItemDeactivatedAfterEdit()) {
+                        engine_.commit_graph_changes();
+                    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/gui/pedal_board_chain.cpp` around lines 203 - 206, SliderFloat currently
calls engine_.commit_graph_changes() on every drag step causing repeated graph
recompiles; instead call audio_graph.set_node_input_gain(...) continuously as
the slider moves, but defer engine_.commit_graph_changes() until the user
finishes the edit by checking ImGui item state (e.g. use
ImGui::IsItemDeactivatedAfterEdit() or detect transition from
ImGui::IsItemActive() to inactive). Concretely: keep the ImGui::SliderFloat and
audio_graph.set_node_input_gain(node.id, gain_index, gain) inside the slider
block, remove the immediate engine_.commit_graph_changes() call there, and add a
one-time commit trigger that runs engine_.commit_graph_changes() when the slider
item is deactivated after edit (reference SliderFloat, slider_id,
audio_graph.set_node_input_gain, engine_.commit_graph_changes).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/audio/audio_engine_chain.cpp`:
- Around line 103-115: The loop that calls fx->set_sample_rate(sample_rate_) and
fx->reset() in AudioEngine::replace_graph mutates Effect instances outside the
effect_mutex_ and can race with the running graph; move the entire for (const
auto& fx : effects) { if (fx) { fx->set_sample_rate(...); fx->reset(); } } loop
inside the same std::lock_guard<std::mutex> lock(effect_mutex_) block that
assigns dummy_effects_ = std::move(effects) and main_graph_ = std::move(graph)
so all effect mutations and the swap occur under effect_mutex_ protection.

In `@src/audio/audio_graph.cpp`:
- Around line 20-21: The mixer node default input gains are set too high
(node.input_gains.push_back(1.0f) twice) causing level doubling; change the
initialization in the mixer node setup to push 0.5f for each input so new mixer
nodes default to a 0.5/0.5 blend (update the code that constructs mixer nodes
where node.input_gains is populated to use 0.5f values instead of 1.0f).

---

Nitpick comments:
In `@src/audio/audio_graph_executor.cpp`:
- Around line 89-92: When pulling mixer gain values in the execution-source
build (the block checking it->routing_type == NodeRoutingType::Mixer and reading
it->input_gains[input_index] into gain), clamp the retrieved value to a safe
range (e.g., 0.0f–1.0f) before assigning to gain (use std::clamp or equivalent)
so malformed/legacy graph data cannot produce out-of-range gains; update the
assignment that reads it->input_gains[input_index] to apply the clamp.

In `@src/gui/pedal_board_chain.cpp`:
- Around line 203-206: SliderFloat currently calls
engine_.commit_graph_changes() on every drag step causing repeated graph
recompiles; instead call audio_graph.set_node_input_gain(...) continuously as
the slider moves, but defer engine_.commit_graph_changes() until the user
finishes the edit by checking ImGui item state (e.g. use
ImGui::IsItemDeactivatedAfterEdit() or detect transition from
ImGui::IsItemActive() to inactive). Concretely: keep the ImGui::SliderFloat and
audio_graph.set_node_input_gain(node.id, gain_index, gain) inside the slider
block, remove the immediate engine_.commit_graph_changes() call there, and add a
one-time commit trigger that runs engine_.commit_graph_changes() when the slider
item is deactivated after edit (reference SliderFloat, slider_id,
audio_graph.set_node_input_gain, engine_.commit_graph_changes).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c84c0324-aa72-4396-bc51-f73b70873aa5

📥 Commits

Reviewing files that changed from the base of the PR and between 8b197e1 and 66924ce.

📒 Files selected for processing (13)
  • .gitignore
  • docs/PRESETS.md
  • presets/06_Parallel_Amp_Blend.json
  • src/audio/audio_engine.h
  • src/audio/audio_engine_chain.cpp
  • src/audio/audio_graph.cpp
  • src/audio/audio_graph.h
  • src/audio/audio_graph_executor.cpp
  • src/audio/audio_graph_executor.h
  • src/gui/pedal_board_chain.cpp
  • src/preset_manager_io.cpp
  • tests/test_audio_graph.cpp
  • tests/test_preset_manager.cpp

Comment thread src/audio/audio_engine_chain.cpp
Comment thread src/audio/audio_graph.cpp Outdated
@arywk40-hue arywk40-hue force-pushed the codex/parallel-amp-blend-preset branch from 66924ce to b55bd2d Compare May 24, 2026 10:36

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
tests/test_audio_graph.cpp (1)

289-320: ⚡ Quick win

Assert the full processed buffer in the blend test.

Line 319 checks only sample 0, so per-sample indexing bugs could still pass this test.

Suggested patch
-  ASSERT_TRUE(std::abs(output_audio[0] - 0.75f) < 0.0001f);
+  for (size_t i = 0; i < output_audio.size(); ++i) {
+    ASSERT_TRUE(std::abs(output_audio[i] - 0.75f) < 0.0001f);
+  }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_audio_graph.cpp` around lines 289 - 320, The test
audio_graph_mixer_input_gains_control_blend currently asserts only
output_audio[0], which can miss per-sample errors; modify the test after
executor.process(...) to check every sample in output_audio (size 64) equals
0.75f within the same tolerance (e.g., loop for i in 0..63 and
ASSERT_NEAR(output_audio[i], 0.75f, 0.0001f) or equivalent) so that the entire
processed buffer is validated rather than a single sample; reference the test
function name, the output_audio vector and executor.process call to locate where
to add the loop-based assertions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/PRESETS.md`:
- Line 60: The presets list has a numbering conflict: the new preset file
"06_Parallel_Amp_Blend.json" occupies slot 06 while the heading "06 Jet Flanger"
still uses 06; update the heading "06 Jet Flanger" in PRESETS.md to "07 Jet
Flanger" (and adjust any following preset numbers if the file inserts shifted
the sequence) so each preset number is unique and matches the corresponding file
names.

In `@src/gui/pedal_board_chain.cpp`:
- Line 380: Change the condition that enables output-pin drag so graph output
(sink) nodes cannot start drags: where the code currently checks "if
(!node.output_pin_ids.empty())" add a guard that excludes graph-output nodes
(e.g. "&& !node.is_graph_output()" or "&& node.type != NodeType::GraphOutput"
depending on your node API). In other words, detect the graph-output node
identity (use the existing node flag/method that indicates an output/sink node)
and only allow the output-pin drag behavior when the node is not a graph output.

In `@src/preset_manager_io.cpp`:
- Around line 73-77: The code currently static_casts an integer from node_j into
NodeRoutingType without validation; before calling graph.add_node, read the
integer (e.g., int rt = node_j.value("routing_type", 0)), validate it is one of
the defined NodeRoutingType values (either by checking against the explicit enum
members or via a small helper like is_valid_routing_type(int) using
std::underlying_type), and if invalid either log/throw a clear error and
skip/fail node creation; then only perform the static_cast<NodeRoutingType>(rt)
and call graph.add_node(node_name, routing_type, effect). Ensure references to
NodeRoutingType, routing_type, node_j, node_name, and graph.add_node are used to
locate and fix the code.
- Around line 101-110: When remapping serialized pin IDs into pin_map
(processing node_j["input_pin_ids"] and node_j["output_pin_ids"]), detect
duplicates before assignment: for each old_id = old_pins[i].get<int>(), check if
pin_map already contains old_id (using pin_map.find(old_id) or count) and if so
reject the preset remap (throw/return an error or log and abort) instead of
overwriting; otherwise insert the mapping pin_map[old_id] =
new_node->input_pin_ids[i] (or output_pin_ids[i]). Ensure the same
duplicate-check logic is applied in both loops handling new_node->input_pin_ids
and new_node->output_pin_ids so malformed presets cannot silently overwrite
existing entries.

---

Nitpick comments:
In `@tests/test_audio_graph.cpp`:
- Around line 289-320: The test audio_graph_mixer_input_gains_control_blend
currently asserts only output_audio[0], which can miss per-sample errors; modify
the test after executor.process(...) to check every sample in output_audio (size
64) equals 0.75f within the same tolerance (e.g., loop for i in 0..63 and
ASSERT_NEAR(output_audio[i], 0.75f, 0.0001f) or equivalent) so that the entire
processed buffer is validated rather than a single sample; reference the test
function name, the output_audio vector and executor.process call to locate where
to add the loop-based assertions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c1e3269f-a079-473b-b5a6-5c80224c5abf

📥 Commits

Reviewing files that changed from the base of the PR and between 66924ce and b55bd2d.

📒 Files selected for processing (13)
  • .gitignore
  • docs/PRESETS.md
  • presets/06_Parallel_Amp_Blend.json
  • src/audio/audio_engine.h
  • src/audio/audio_engine_chain.cpp
  • src/audio/audio_graph.cpp
  • src/audio/audio_graph.h
  • src/audio/audio_graph_executor.cpp
  • src/audio/audio_graph_executor.h
  • src/gui/pedal_board_chain.cpp
  • src/preset_manager_io.cpp
  • tests/test_audio_graph.cpp
  • tests/test_preset_manager.cpp
✅ Files skipped from review due to trivial changes (2)
  • src/audio/audio_engine.h
  • .gitignore

Comment thread docs/PRESETS.md
Comment thread src/gui/pedal_board_chain.cpp Outdated
Comment thread src/preset_manager_io.cpp Outdated
Comment thread src/preset_manager_io.cpp Outdated
@arywk40-hue

Copy link
Copy Markdown
Contributor Author

@sudip-mondal-2002 hey can u kindly have a look upon my pull request!!

@sudip-mondal-2002 sudip-mondal-2002 added type:feature New feature or request good first issue Good for newcomers Audio Processing Related to DSP, effects, or signal processing level:beginner Easy task · 10 GSSoC points DAG Related to DAG-based modular signal routing architecture labels May 24, 2026

@sudip-mondal-2002 sudip-mondal-2002 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check CI, everything is failing

@arywk40-hue arywk40-hue force-pushed the codex/parallel-amp-blend-preset branch 4 times, most recently from ba2c159 to 0a9ea68 Compare May 24, 2026 12:20
@github-actions

github-actions Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Report 📊

Line Coverage: 78.9%

✅ Coverage meets threshold: 78.9% >= 60%

Full Coverage Summary
Summary coverage rate:
  lines......: 78.9% (3436 of 4356 lines)
  functions..: 89.6% (476 of 531 functions)
  branches...: no data found

@github-actions

github-actions Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

PR Preview Removed

The GitHub Pages preview for this PR has been removed because the PR was closed.

Comment thread tests/test_preset_manager.cpp Outdated
Comment on lines +140 to +172
const char* json = R"JSON(
{
"format_version": 2,
"name": "Graph Load Test",
"input_gain": 0.6,
"output_gain": 0.7,
"nodes": [
{
"id": 1,
"name": "Input",
"routing_type": 0,
"is_graph_input": true,
"is_graph_output": false,
"x": 40.0,
"y": 120.0,
"input_pin_ids": [2],
"output_pin_ids": [3]
},
{
"id": 4,
"name": "Splitter",
"routing_type": 1,
"is_graph_input": false,
"is_graph_output": false,
"x": 240.0,
"y": 120.0,
"input_pin_ids": [5],
"output_pin_ids": [6, 7]
},
{
"id": 8,
"name": "Mixer",
"routing_type": 2,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we using JSON strings? there is a proper JSON handler framework we use please use that

@arywk40-hue arywk40-hue force-pushed the codex/parallel-amp-blend-preset branch from 0a9ea68 to fe94fbd Compare May 24, 2026 12:59
@arywk40-hue

Copy link
Copy Markdown
Contributor Author

@sudip-mondal-2002 now can u check once more
all the checks have passed and used the proper jasonframework

@MohitBareja16

Copy link
Copy Markdown
Collaborator

@arywk40-hue Send screenshots/video that 6th preset is working properly

@MohitBareja16 MohitBareja16 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI SLOP, close it asap

github-actions Bot added a commit that referenced this pull request May 25, 2026
@arywk40-hue arywk40-hue deleted the codex/parallel-amp-blend-preset branch May 25, 2026 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Audio Processing Related to DSP, effects, or signal processing DAG Related to DAG-based modular signal routing architecture good first issue Good for newcomers level:beginner Easy task · 10 GSSoC points type:feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Add "Parallel Amp Blending" example preset — two amp models via Splitter/Mixer

4 participants