Tracker view for Piano Roll
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
Every now and then for the past 10 years I'm looking for a (modern) tracker. I just can't get used to the horizontal visual style of composing melodies. In my experience, it's easier to be creative in a tracker.
LMMS has a beautiful sound engine and awesome instruments/synths. Every other thing is well designed. The biggest leap forward right now would be a Tracker mode for Piano Roll.
I have made some attempts in the past, but C++ just isn't my forte, although it is what makes LMMS so strong.
_[SchismTracker](https://github.com/schismtracker/schismtracker), an Impulse Tracker clone_

There are some limitations of course in the structure of a Tracker view compared to Piano Roll.
The most obvious problem is that note based technology doesn't lend itself for all the sample-based functionality like sample cutoff and offsets, at least not in a way that could realistically fit in the LMMS data structure without reimplementing things. The (ancient) _Impulse Tracker_ midi-only clone _[zTracker](https://github.com/cmicali/ztracker/tree/master/src)_ solved this by simply removing all sample-based features, and implementing note-off rather than cut-off.
The second problem is that trackers store the position of a note inside a pattern on a specific channel, and LMMS has no concept of channels in the same way, as the entire pattern could be one channel. The piano roll is a "bag of notes" with no concept of on what channel the note was stored. A solution would be to allow one instrument per pattern, like the piano roll. Although this would only fix the problem of mixed instruments that would make the pattern incompatible with a piano roll, the spatial placement of notes over channels is still incompatible.
For that reason, it could make sense to have a Tracker View that is _backward compatible_ with (can be converted to) a Piano Roll, but not the other way around. This would also solve the problem that Piano Roll has tick based precision, while a Tracker view has only row-based precision (depending on speed/tempo), for things like volume corrections. This is similar to the Bassline Editor compared to the Piano Roll.
I.e. a non-Piano-Roll-bassline from the Bassline Editor can be converted to a Tracker View. A Tracker View pattern can be converted to a Piano Roll. Both steps increase the precision, so there is no converting back.
Bassline Editor < Tracker View < Piano Roll
Note that this is not a complete Tracker, just a Tracker-like alternative to the Piano Roll. I'm sure a lot of creative folks from a certain era would love this.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin by locating the existing Piano Roll and Bassline Editor implementations and understanding their data models and conversion behavior. Done would require a scoped Tracker View design that addresses row-based notes, channels, sample-based limitations, and conversion to Piano Roll.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100