Improve procedural mix + role mapping clarity
Hi! First of all, thanks for this great project. It is very fun to use and it produces a lot of good sounding music.
I noticed that in procedural mode, some MIDI files (especially simple/game-style files) can sound:
- too low/muddy
- missing clear lead notes
- flatter than expected
I tested a few focused changes locally that improved this a lot.
What seems to cause it
-
Role overwrite in synthesis setup
When multiple assignments share the same role, later assignments can overwrite earlier ones.
-
No melody fallback in some mappings
Some files end up mostly as texture (or with weak lead presence), so the main tune is not clear.
-
Mix balance favors low/soft layers
Bass/texture can dominate while melody is too soft/dull.
Suggested fixes
-
Merge same-role assignments in src/synthesis/SynthesisEngine.ts before layer setup
(combine events/chords instead of last-write-wins).
-
Add melody safeguard in src/core/RoleMapper.ts
If no melody is assigned but tracks exist, promote the best melody candidate above a threshold.
-
Rebalance synth mix in src/synthesis/SynthesisEngine.ts
Slightly reduce bass dominance and make melody more present/bright.
Result (local testing)
- Better melody clarity
- Less “missing notes” feeling
- More consistent depth across mixed MIDI quality
Improve procedural mix + role mapping clarity
Hi! First of all, thanks for this great project. It is very fun to use and it produces a lot of good sounding music.
I noticed that in procedural mode, some MIDI files (especially simple/game-style files) can sound:
I tested a few focused changes locally that improved this a lot.
What seems to cause it
Role overwrite in synthesis setup
When multiple assignments share the same role, later assignments can overwrite earlier ones.
No melody fallback in some mappings
Some files end up mostly as
texture(or with weak lead presence), so the main tune is not clear.Mix balance favors low/soft layers
Bass/texture can dominate while melody is too soft/dull.
Suggested fixes
Merge same-role assignments in
src/synthesis/SynthesisEngine.tsbefore layer setup(combine events/chords instead of last-write-wins).
Add melody safeguard in
src/core/RoleMapper.tsIf no melody is assigned but tracks exist, promote the best melody candidate above a threshold.
Rebalance synth mix in
src/synthesis/SynthesisEngine.tsSlightly reduce bass dominance and make melody more present/bright.
Result (local testing)