It's a cool little tracker, and if I understand it, this sound engine plays realtime in pixelbox.js, which is a plus. I'm feeling some DAW sensibilities mixed back into the tracker formula. But the GUI definitely feels a bit unfinished.
Criticisms / Suggestions
- A glaring omission is the ability to import/export instruments. If I wanted a previous version of an instrument, I'm screwed because presets cannot be saved.
- FM edit/compare buffer - the DX series of keyboards had a feature that let you swap and ABx between two sounds, to see if any changes were good, but still able to revert to the original. Could be a useful feature in Patatracker.
- The way to access the instrument editor is a bit awkward; a dedicated "open instrument panel" button would be better. I've been accidentally adding instruments on empty rows just to access the instrument editor.
- A dB meter for each channel and clipping detection would be helpful for proper mixing and avoiding distortion. A master amplifier would be useful to increase the volume of the final mix when a user keeps the channel volumes low.
- Amplifier/Compressor for Sampler - Drum samples get drowned out even when they've been normalized. So a way to increase the volume of sampler instruments would be very helpful.
- Ability to automate parameters (such as when using the FM synth). Automating certain FM parameters is a mainstay and adds expressive potential.
- More duty cycles (Not entirely sure, but it uses NES duty cycles, with the redundant 25% and 75%?). You can't have a chiptune synth without PWM, even the VRC6 had more pulse widths than the NES.
- Parameterized Wavetable Generator - generate waveforms and modify the timbres with precise controls.
- Easier way to add patterns to the sequence. Fill the entire width with empty cells. Add a scrollbar. Song ends at the last fully empty column. Let the user just manually type in pattern numbers without having to create/increment them it first. Especially useful when quickly porting songs with already known pattern orders.
- Polyphonic instrument preview/keyjazz when using MIDI device.
- ASIO support for lower latency and less crackling audio.
Of course, these are just suggestions and some may be out of the scope of the project, and that adding/changes to the synth engine itself might not be feasible. But I liked the tracker and just wanted to collect my thoughts on ways it can be improved.
Also a bug: When playing from a sequence that isn't the first, it doesn't change the patterns when going to the next sequence. Here's a song I did that exhibits the bug. The tracker display doesn't ever show the melody when it comes in:
Edit: There is also a bug where muted channels unmute themselves when loading a new file, but keep the [M] state, requiring two clicks to restore the proper state of the channel.
Edit2: I noticed a bug where the sound stops working when changing the buffer size. I had to close the program and reopen.