Hi everyone,
I am currently working on a sound engine utilizing the 16 voice Programmable Sound Generator (PSG). Later I would like to add a way to compose music with it. I have thought a lot on what is the best format for such a program. Mainly, I can't decide between the piano roll vs tracker approaches, because they both have their strengths.
Tracker
Example:
Basically, you have a table with all the "tracks" in the columns, and every row represents either a 16th or a 32th note. When playing back the song, the player moves from row to row and executes all the commands it finds in each row. Often, the tracks represent the channels of the hardware (e.g. the original Amiga trackers had 4 tracks for the 4 hardware channels. AdLib trackers have 9 channels for the 9 FM voices etc.), but it doesn't necessarily have to be that way.
Each cell can contain commands like play a note of instrument X at pitch Y and volume Z, or stop the note currently playing in this channel.
Additionally, each cell can contain an additional command, called "effect", which is used to control volume slides, pitch slides, vibrato, tremolo and various other things.
In a track, there can only be one note playing at a time.
Pros:
Nice direct control over every voice, even if several voices of the same instrument are playing (like 3 violinists, but every one can have individual vibrato)
More hardware-friendly and easier to implement.
Everything that is happening in the song at a given time is there in a single view.
Piano Roll
Examples:
https://youtu.be/AfDuZ2vHkUQ?t=384
https://www.youtube.com/watch?v=_8PbvMxkIhg
Here, there is also a table. This time, time increases from left to right. And pitch increases from bottom to top. Notes are displayed as bars stretching horizontally from note-on to note-off.
Additional control like pitch bending, volume control etc. need to be done outside of this view. Often, there is an additional area where one can edit the note's velocities and other things.
Pros:
The ability to "see" the pitch, and to see chords.
The ability to adjust the timing very precisely (as opposed to a very rigid grid in the trackers).
The ability to drag and drop (although this would be doable in a tracker, too)
I was thinking of maybe combining the pros of those two options. I can live without the visual representation of pitch, but I am not willing to sacrifice freedom of timing. And I really want the freedom to modulate individual voices, because that is one of the few ways you can give expressiveness to chiptune.
So I could try to find a way to make the tracker approach more flexible with timing.
I am thinking out loud. Anyway, your thoughts, ideas, experiences etc. are welcome ?
Have a nice day!