|
From: Patrick E. <pa...@pa...> - 2004-03-27 07:20:16
|
On Friday 26 March 2004 06:16, Dave Fancella wrote:
> Yes, there'd be a file for each track in the song, and you won't
> have to manage each track, jazz would manage it for you.
I meant managing the files on my file system. They could all be
placed in a single directory, but if you wanted to stick a song on a
web page or something, you'd need to tar them up.
I'd rather have a little dialog that allows you to copy segments
between projects. Could be as easy as dragging them around. Select
one song on one side, another song on the other side, drag the
appropriate segements. If you don't copy the segment, you might even
accidentally change a segment that was used in another song. Having
to think about all those independent segments doesn't sound like a
lot of fun to me.
In the dialog approach, it would be helpful to have a "play" button to
see which segment you're dealing with. I don't really want to have
to come up with memorable names for all the little pieces of my
music. In fact, I rarely want to come up with names for any of my
music. :)
> We still have to deal with mixing, but this setup allows us
> cascading-style volume and pan controls, volume and pan envelopes
> (since the blockfiles wouldn't necessarily contain that
> information), and other things I haven't even thought of.
> Surround-sound? In each of these cases, it's just a matter of
> making entries in the xml file that describes the project and the
> underlying midi data doesn't get affected in any way. One place
> where RoseGarden specifically is very weak is in handling
> track-level pan and volume, and then dealing with segment-level pan
> and volume (mostly it looks like UI issues, but there's so many
> bugs in that program it's hard to distinguish what they intended to
> happen from what is happening). In this fashion we'd define
> track-level pan and volume as applicable for the whole track, and
> changes would be notated by position in the song and independent of
> song layout.
I like the idea of having segments that can do relative volume
adjustments, loops, and whatnot. However, I still don't believe each
segment deserves its own file.
> We also get some added stability, or at least recovery from error.
> Currently, it seems that midi sequencers just load all the midi
> data into memory, which is fine because it's so small that it's
> reasonable to do so. Then, if the program crashes, or the power
> goes out, or something, you lose *everything* since your last save.
> Autosave deals with this to some extent, but autosave is built-in
> to the blockfile approach. Since we push onto the history queue
> after every change, recovery from error is just a matter of
> checking the timestamp on the project file and reading the history
> queue after that timestamp to rebuild the project in-memory. We've
> now spread our dependence out over several files.
How are history storage, journaling, and block files not orthogonal
issues? I don't really see the advantage of many small files unless
you write a poor history system and it crashes in the middle of
writing to the large file.
> And, of course, in the long-term we get interoperability with
> Audacity, and there is a fair amount of complaining going on that
> there's no free as in speech midi sequencer/audio editor while all
> the proprietary offerings are combining midi sequencing and audio
> editing.
I don't think many midi segment files are needed to be interoperable
with Audacity. I personally don't even think that Audacity's track
handling extends well to the midi world.
> But I think the system is inherently more extensible and more
> powerful than any single-file format we could design, and I'd
> prefer to build knowing that what I'm building will allow many
> additions in features to the program with very little change in the
> backend storage facility. Hell, the code I write in the next few
> weeks might go untouched for years (ha!).
I'd say a good XML format would be easier to manipulate and more
extensible than either a dir full of files or an archived set of
files. There's nothing tricky about sticking a bunch of <segment>
things in a midi file. XML also allows recursion, so nesting isn't a
problem. Segments could even be given names, just like in the file
system. If somebody wanted to manipulate the file, they wouldn't
have to find an archiver or read a directory listing of files along
with another project file. They could use a tool as simple as a text
editor or as complex as XSL.
Patrick
|