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