dipzza / ultrastar-song2txt

Tools that automate parts of making a song in the ultrastar txt format
GNU Affero General Public License v3.0
1 stars 0 forks source link

Design decision for data structure for song project #48

Closed dipzza closed 1 year ago

dipzza commented 2 years ago

Related to https://github.com/dipzza/ultrastar-song2txt/issues/37 we need a data structure to save all data related to a song project for karaoke videogames, this is useful for pitch estimation tasks related to https://github.com/dipzza/ultrastar-song2txt/issues/7 and for writing automatically obtained metadata for https://github.com/dipzza/ultrastar-song2txt/issues/8.

Individual fragments of data have been modeled in #46 and #47. To represent all this information combined in just one object we should make a class which contains metadata and an ordered list of song description data (called "SongLines"). Same design decisions as the ones in #46 and #47 should be used, making a dataclass which can validate data and generate text using the functionality provided by the other classes.

Additionally, as we need to access all notes to modify them, and notes and lists are mutable, this class should also be mutable and it would be useful to provide a convenience method to obtain a list of references to the notes in the project.