I've been spending far more time that I'd have liked debugging what I thought would be a fairly simple task - adding more feature to the basic class system I'd already put together for Lua.
But I've got a basic class system up and running, with optional undo management.
The data structure for a song is fairly straight-forward.
The top-level structure is a Project
consists of one or more Tracks
. Each Track
contains a group of Notes,
a Timeline
, and multiple Lanes
with automation values., Each Note
has a set of attributes.
The GUI, on the other hand, is a bit more complex. Most of the programs that I've seen (Vocaloid, UTAU, SynthesizerV) all have similar UIs. The main interface is a DAW-like piano roll, with the Timeline
placed on top, the automation Lanes
on the bottom, and the Piano Roll
in the center.
I've got a simple Piano Roll
pane, but no Timeline
or Lane Automation
widgets yet.
So the next steps will be:
- Update the widget toolkit with the new class system;
- Build additional controls for the
Timeline
and Automation
; - Add some basic editing functionality; and
- Read and write a simple
json
file format
Once a basic editor is in place, I can start plugging it into the synthesizer code to get it singing.
No comments:
Post a Comment