Skip to content

Autonomous audio plugin company simulation - #2

Open
lrhodin wants to merge 1 commit into
mainfrom
cursor/autonomous-audio-plugin-company-simulation-60ff
Open

lrhodin wants to merge 1 commit into
mainfrom
cursor/autonomous-audio-plugin-company-simulation-60ff

Conversation

@lrhodin

@lrhodin lrhodin commented Oct 21, 2025

Copy link
Copy Markdown
Owner

Implement the 'Spectral Eel Simulator' audio plugin to complete Cycle 1 of the Autonomous Orchestra protocol and demonstrate autonomous product delivery.


Open in Cursor Open in Web

Co-authored-by: rhodin.ludvig <rhodin.ludvig@gmail.com>
@cursor

cursor Bot commented Oct 21, 2025

Copy link
Copy Markdown

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@lrhodin
lrhodin marked this pull request as ready for review October 21, 2025 08:02

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on November 12

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

Comment thread src/lib.rs
.with_smoother(SmoothingStyle::Linear(50.0))
.with_unit(" x")
.with_value_to_string(formatters::v2s_f32_rounded(1))
.with_string_to_value(formatters::s2v_f32_gain_to_db()),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Incorrect Formatter for Speed Parameter

The eel_speed parameter, a linear speed multiplier (0.1-2.0x), incorrectly uses formatters::s2v_f32_gain_to_db() for string-to-value conversion. This formatter is designed for dB-to-gain conversion, leading to incorrect parsing of user input and automation values for speed.

Fix in Cursor Fix in Web

Comment thread src/lib.rs

// Copy processed samples back
for (sample, &processed) in channel_samples.iter_mut().zip(output.iter()) {
*sample = processed;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Real-Time Audio Thread Allocation Violation

The process function allocates new Vec objects and resizes them on the real-time audio thread. This violates real-time audio constraints, potentially causing dropouts or glitches, and will panic in debug builds when assert_process_allocs is enabled.

Fix in Cursor Fix in Web

Comment thread src/lib.rs
if self.params.reset.value() {
self.reset();
return ProcessStatus::Normal;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Reset Parameter Persistence Bug

The reset parameter is not cleared after triggering, causing the plugin to continuously reset its state on every process() call and preventing normal operation.

Fix in Cursor Fix in Web

Comment thread src/lib.rs

// Mix original and processed
let processed = spectrum[self.position];
output[i] = sample * (1.0 - mix) + processed * mix;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Spectral Processing Without FFT

The SpectralProcessor::process method passes a time-domain audio buffer directly to eel_engine.process_spectrum. The eel_engine then applies frequency-domain algorithms to this time-domain data without performing any FFT analysis. This means the "spectral" processing does not genuinely operate in the frequency domain, leading to incorrect audio effects.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants