Guess I can’t keep away.
I started on a rudimentary NCurses interface to print out column and row data, and added volume and panning updates when the channel row state is updated. I also added the ability to control the tempo and master volume with the keyboard. Still much to be done. It still doesn’t allow any actual pattern editing at run-time, only from the source code, and I’ll probably have to do some reading on sample pitching.
I uploaded some test audio here. There is high potential for pops and clicks when a channel changes samples, as you can see from this Audacity recording of the test output:
A quick look at the audio output of MilkyTracker reveals that it cross-fades between the old and new samples for a very short period, in the range of about 175 sample points. When switching from no note to playing a sample, it fades in from silence. I wondered why certain percussion samples in Milky would lose their initial “bap” if I clipped too much leading silence, and I guess this is the reason why. Is it bad that I kind of like the popping? Don’t get me wrong: cross-fading seems like the right answer for the vast majority of cases, but maybe I could add some kind of override. I guess I’ve been conditioned by Sunsoft music?
I scribbled down some notes about PDCurses under Windows 10 a few years ago, and have been using it as a quick reference for this project. On Windows, the COLS and LINES values didn’t update when the window dimensions were resized, but they appear to update immediately with NCurses and GNOME Terminal. So for NCurses at least, I could anchor a single-line status bar to the bottom of the terminal.