musescore / musescore/MuseScore

Add Mixer API to Plugin system

Open
#31,072 0 comments 3 reactions 1 assignee View on GitHub

@igorkorsukov is already working on this.

Since Nov 18, 2025.

needs review plugins
Dominant language
C++
Stars
15.1k
Forks
3.3k
Avg merge
2d 2h
Merged PRs (30d)
91

Description

Your idea

Add a Mixer API to the Plugin system that exposes programmatic control over mixer settings: volume, balance, mute, solo, sound selection, and MIDI configuration.

Proposed API:

var mixer = part.mixerChannel;

// Audio controls
mixer.volume = 4.0;        // dB range: -60 to +12
mixer.balance = 0.2;       // Pan: -1.0 (left) to 1.0 (right)
mixer.muted = false;
mixer.solo = true;

// Sound selection
var sounds = mixer.availableSounds();
mixer.setSound(sounds[0].id);

// MIDI configuration (for SoundFonts)
mixer.setMidiBank(20);
mixer.setMidiProgram(40);
Problem to be solved

Plugins cannot programmatically configure mixer settings. Users must manually adjust volume, balance, and sound assignments for every part.

Use cases:

  • Auto-configure instruments (e.g., detect "bandurria" → assign correct SoundFont preset + optimal volume)
  • Apply mixing templates ("Orchestra Balance", "Jazz Combo") with one click
  • Batch migrate scores between sound libraries (MS Basic → Muse Sounds)
Prior art

Modern DAWs (Reaper, Logic, Ableton) expose full mixer control to scripting APIs.

Additional context
  • Requires async/sync bridge pattern since audio system is async but plugins are sync.
  • Should use dB scale for volume to match UI
Checklist
  • This request follows the guidelines for reporting issues
  • I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.