GSoC 2016 Workproduct - Playback
Workproduct GSoC 2016 - MuseScore Playback improvement
Overview
My progress during GSoC 2016 has been documented in this very Blog.
Code that has been merged into the Project
The following code has been merged into the master branch
This includes the following features:
- Added metric modulation see - Wikipedia: Metric modulation
- Zerberus (sfz synthesizer)
- Round robin
- Loop support
- Sfz v1 envelopes
- Load multiple sfz at once
- Play random
- on_hiCC/on_loCC
- more robust sfz parsing
- Sfz control structure
- Preprocessor (#define, #include) + global structure
- ampeg_vel2* opcodes
- Rt_decay
- gain_cc/gain_oncc opcode
- MidiAction fixes
- Fluidsynth
- Sample based volume
Things that are not yet merged
Open PRs
- PR 2722 - MidiSpanner/Soundbanks
- Midi Spanners + Soundbanks
- Big PR
- Almost ready - maybe video to demonstrate usage
- Foundation for single note crescendo and legato
- supersedes PR 2655 - Single Note Crescendo
- This also contains vel2vol (similar to sfz amp_veltrack opcode) for fluidsynth - but is probably not needed
- Add play note to MidiActions
- Offset for MidiAction
- PR 2782 - SamplePool/Disk Streaming
- Zerberus sample pool
- Samples are just loaded once + streaming support
- Work in progress
- Still needs some performance improvements
- Probably supersedes PR 2700 - load sfz in background
- PR 2737 - Zerberus mtests
- mtests for Zerberus
- Just foundation - test zerberus parsing, maybe also add some
audio and test if it is generated in the right way
- PR 2451 - fix tempo text oddities
- fixes #78416: Tempo text oddities in score with linked parts until save/reopen
- Very first PR to musescore - maybe after having some better knowledge have a look into that after GSoC if that is really the best fix and the source of the problem
Work done but no PR yet:
- My fork of MuseScore - legatotest branch and My fork of MuseScore - legatotest experimental branch
- Test legato for Fluidsynth
- maybe after merging MidiSpanners
- add CC68 to Fluidsynth to skip the attack phase (probably based on things learned in these branches)
- see blog posts status legato and more on legato
- “Sliding” into the note (portamento - Wikipedia: Portamento) needs more experimenting to sound good
- add CC68 to Fluidsynth to skip the attack phase (probably based on things learned in these branches)
Improvements that could be done in the future
I plan to add these features after GSoC!
Short time goals:
- Zerberus opcodes
- Trigger legato and first
- sw_lokey, sw_hikey, sw_last, sw_down, sw_up, sw_previous, sw_vel
- Stereo: width, pan, position
- MidiSpanner/MidiAction
- multiple events on one spanner (trigger two different CCs on
one spanner) - Offset for MidiSpanner events
- Add play notes/program changes to MidiSpanner
- multiple events on one spanner (trigger two different CCs on
- Soundbanks
- describe overwrite articulations
- legato gate time
- Profile changes to Fluidsynth (performance)
Long time goals:
- Zerberus
- Pitch opcodes (envelopes, lfos, …)
- LFOs
- Filter infrastructure
- Effects
- Standalone?
- Midi
- improve/fix ornaments