TuneSage progress update 4

It’s already been two weeks since the previous update? Bleh, I program too slowly. The undo / redo system was a bit tricky to implement, as was exporting MIDI files. The saving and loading pieces from a MongoDB database is also tricky, but that’s mostly because I’m having to reacquaint myself with how it works. It should only take about another day’s worth of work to finish that up, I hope.

I’ve added just one more thing to the list that I want to finish before I start focusing more on the back-end, and that’s implementing chord markers. The first thing I’ll implement on the back-end is a chord progression generator, since that’s pretty easy (and hardly innovative), so of course I’ll need a way to display them.

After chords, I can move on to melodies and accompaniment, which is where I hope things will get more interesting.

  • Playing features
    • Play from a selected position 
    • Play or loop a selection (skip!)
    • Show play location in minutes / seconds (skip!)
    • Pause play (saves play position) 
    • Show / hide measure numbers 
  • Move / create tempos (or tempo groups for accelerandos?) (skip!)
  • Note editing
    • Move / create / delete / edit notes or note groups (skip!)
    • Copy / paste notes or note groups (skip!)
    • Edit note velocities (skip!)
  • Measure editing
    • Delete / create / edit measures 
    • Delete / create / edit sections (measure groups)
  • Track editing
    • Load track instrument from MIDI file 
    • Edit track instrument 
    • Edit track volume / stereo positions (skip!)
    • Auto-color tracks differently (skip!)
  • Chords
    • Create / delete chord marks (only triads and 7ths for now)
    • Color lines by chord voice
  • Load / display / edit key signatures (skip!)
  • MIDI loading
    • Load note velocities from MIDI 
    • Fix MIDI loading bug: Extra note at end of file (skip!)
  • Saving / exporting
    • Save / load music pieces to / from personal database
    • Import / Export MIDI files
    • Export music to WAV or MP3 (skip!)
  • Bookmark sections of a piece (skip!)
  • Zoom in and out (horizontally) 
  • Undo / redo support (Ctrl+Z) ✓
  • Import soundfonts from computer (low priority) (skip!)
  • Account
    • Confirm email (if necessary) (skip!)
    • Log in / out / reset password (skip!)
    • Edit optional personal info (skip!)
    • Usage stats (skip!)
  • Final design pass (make everything look good) (skip!)

TuneSage progress update 3

A few more things checked off the list. Added a couple “measure editing” tasks. Quite a few tasks I think can probably be skipped for now, as I’d like to get back to working on the back-end so I can then work on integrating the back-end with the front-end. Most of the skipped items should not be overly difficult anyway (though difficulty is always easy to underestimate). Excluding the skipped items leaves the items in bold: measure editing, save / load / export stuff, and an “undo” system, which I guess will be better to tackle earlier than later.

I still need to have a good think about what features the back-end should include at launch; that is, what specific music-generating features would be most useful. I’ll do that in another post a bit later, I suppose.

  • Playing features
    • Play from a selected position 
    • Play or loop a selection (skip!)
    • Show play location in minutes / seconds (skip!)
    • Pause play (saves play position) 
    • Show / hide measure numbers 
  • Move / create tempos (or tempo groups for accelerandos?) (skip!)
  • Note editing
    • Move / create / delete / edit notes or note groups (skip!)
    • Copy / paste notes or note groups (skip!)
    • Edit note velocities (skip!)
  • Measure editing
    • Delete / create / edit measures
    • Delete / create / edit sections (measure groups)
  • Track editing
    • Load track instrument from MIDI file 
    • Edit track instrument 
    • Edit track volume / stereo positions (skip!)
    • Auto-color tracks differently (skip!)
  • Load / display / edit key signatures (skip!)
  • MIDI loading
    • Load note velocities from MIDI 
    • Fix MIDI loading bug: Extra note at end of file (skip!)
  • Saving / exporting
    • Save / load music pieces to / from personal database
    • Export music to MIDI
    • Export music to WAV or MP3 (skip!)
  • Bookmark sections of a piece (skip!)
  • Zoom in and out (horizontally) 
  • Undo / redo support (Ctrl+Z)
  • Import soundfonts from computer (low priority) (skip!)
  • Account
    • Confirm email (if necessary) (skip!)
    • Log in / out / reset password (skip!)
    • Edit optional personal info (skip!)
    • Usage stats (skip!)
  • Final design pass (make everything look good) (skip!)

TuneSage progress update 2

It’s been five days and, judging by the to-do list, it doesn’t look like I’ve done much. I actually spent a bunch of time fixing various bugs.

Also I added a few new things to the to-do list; “auto-color tracks differently” will be easy; that’s just a matter of cycling through hues when a MIDI is loaded, the same sort of thing I did in the Java-based MIDI animator.

I also want to allow the user to import their own soundfont from their computer. (Although honestly that’s probably a feature that can wait until after launch, so that one’s iffy.)

Finally, we’ll need an “undo / redo” feature so that when the user presses Ctrl+Z, it will undo the last change. Not really sure of the best way to implement that, but we’ll figure it out.

  • Playing features
    • Play from a selected position 
    • Play or loop a selection
    • Show play location in minutes / seconds
    • Pause play (saves play position) 
    • Show / hide measure numbers 
  • Move / create tempos (or tempo groups for accelerandos?)
  • Note editing
    • Move / create / delete / edit notes or note groups
    • Copy / paste notes or note groups
    • Edit note velocities
  • Track editing
    • Load track instrument from MIDI file 
    • Edit track instrument
    • Edit track volume / stereo positions
    • Auto-color tracks differently
  • Load / display / edit key signatures
  • MIDI loading
    • Load note velocities from MIDI
    • Fix MIDI loading bug: Extra note at end of file
  • Saving / exporting
    • Save / load music pieces to / from personal database
    • Export music to MIDI
    • Export music to WAV or MP3
  • Bookmark sections of a piece
  • Zoom in and out (horizontally)
  • Undo / redo support (Ctrl+Z)
  • Import soundfonts from computer (low priority)
  • Account
    • Confirm email (if necessary)
    • Log in / out / reset password
    • Edit optional personal info
    • Usage stats
  • Final design pass (make everything look good)

TuneSage progress update 1

There’s still lots of work to do on TuneSage. I’m hoping if I regularly blog some short progress updates, it may encourage productivity, as it did last year with Trovedex.1

Right now I’m working on the front-end. As always, it’s a bit of a balancing act deciding what features need to be included and what features can wait to be added after launch. So far, the completed features include:

  • Load a MIDI from file
  • Mute / solo tracks
  • Change track colors
  • Show / hide tempo marks (from MIDI)
  • Edit / delete tempos
  • Show / hide measure lines
  • Show / hide pitch lines
  • Play MIDI

Features on the to-do list:

  • Playing features
    • Play from a selected position
    • Play or loop a selection
    • Show play location in minutes / seconds
    • Pause play (saves play position)
  • Move / create tempos (or tempo groups for accelerandos?)
  • Note editing
    • Move / create / delete / edit notes or note groups
    • Copy / paste notes or note groups
    • Edit note velocities
  • Track editing
    • Load track instrument from MIDI file
    • Edit track instrument
    • Edit track volume / stereo positions
  • Load / display / edit key signatures
  • MIDI loading
    • Load note velocities from MIDI
    • Fix MIDI loading bug: Extra note at end of file
  • Saving / exporting
    • Save / load music pieces to / from personal database
    • Export music to MIDI
    • Export music to WAV or MP3
  • Bookmark sections of a piece
  • Zoom in and out (horizontally)
  • Account
    • Confirm email (if necessary)
    • Log in / out / reset password
    • Edit optional personal info
    • Usage stats
  • Final design pass (make everything look good)

That’s not counting the further work of integrating the back-end with the front-end.

Anyway, my goal is to finish all the above before the end of this month (April 2021), and then I can move on to integrating the back-end (which still needs a good bit of work itself).

Feel free to suggest any features you’d like; though, like I said, I’m only trying to do the minimum needed to launch.