Re: [Finale] Dynamic Parts in Finale - multi-file solution?

2005-07-08 Thread Darcy James Argue

On 07 Jul 2005, at 7:18 PM, David W. Fenton wrote:


No, it wouldn't.


Yes, I knew you'd object. I'm actually pretty sympathetic to your view, 
but I also have good reason to believe a multi-file equivalent to 
Dynamic Parts (perhaps implemented by plug-ins -- e.g., Update score 
based on this part and Update parts based on this score) is vastly 
more likely to be implemented than a single-file solution, at least in 
the short term.


So, for the moment, can we put aside the issue of technical hurdles?  
It's the harmonizing potential conflicts aspect that I'm more 
interested in.


Let's put it another way -- let's say you *had* to come up with a 
multi-file, manually synchronized plugin equivalent to Sibelius's 
Dynamic Parts.  What would that look like?  How would you want it to 
resolve discrepancies between score and parts?


- Darcy
-
[EMAIL PROTECTED]
Brooklyn, NY



___
Finale mailing list
Finale@shsu.edu
http://lists.shsu.edu/mailman/listinfo/finale


Re: [Finale] Dynamic Parts in Finale - multi-file solution?

2005-07-08 Thread David W. Fenton

On 8 Jul 2005 at 3:42, Darcy James Argue wrote:

 On 07 Jul 2005, at 7:18 PM, David W. Fenton wrote:
 
  No, it wouldn't.
 
 Yes, I knew you'd object. I'm actually pretty sympathetic to your
 view, but I also have good reason to believe a multi-file equivalent
 to Dynamic Parts (perhaps implemented by plug-ins -- e.g., Update
 score based on this part and Update parts based on this score) is
 vastly more likely to be implemented than a single-file solution, at
 least in the short term.

I think you're dreaming. The complexities of synchronizing files are 
an order of magnitude greater than those of relating data structures 
within a single file.

Now, if they separated the data structure from the layout files, then 
it could work. That is, every Finale file would have two files, one 
the database, and one the file you worked with to edit and format the 
data (this is the way it's done in properly-designed Access database 
applications -- your data tables are in one file, while the forms and 
reports, etc., that you use to interact with your data are in another 
file, linked to the data file). Then, to create a part, you'd simply 
create a new layout file, linked to the same data store.

Now, another way of implementing that might be to have the data stay 
in the score file, and then have the parts be separate files that 
have no actual frame data in them, and, instead, link back to the 
data in the score file. This would be not much more complicated than 
implementing it all within one file, and if you like the idea of 
having separate files (I *don't* like this idea), then that would be 
an easy way to implement it that wouldn't be very different from 
implementing it the way I've suggested.

 So, for the moment, can we put aside the issue of technical hurdles? 
 It's the harmonizing potential conflicts aspect that I'm more
 interested in.
 
 Let's put it another way -- let's say you *had* to come up with a
 multi-file, manually synchronized plugin equivalent to Sibelius's
 Dynamic Parts.  What would that look like?  How would you want it to
 resolve discrepancies between score and parts?

[what follows was written *before* I wrote most of what is above, so 
it pre-dates my idea of having a Score file with data in it and part 
files with no data, just layout information]

I would want to avoid the problem. Seriously.

In a multi-user database, if two people edit the same record, you 
have some choices for what to do:

1. lock the record as soon as user1 edits it so user2 can't start an 
edit. Problem: inconvenient to user2, especially if user1 starts and 
edit and goes to lunch.

2. don't lock but keep track of who is editing. If user1 starts an 
edit, allow user2 to start an edit of the same record. If either of 
the users save the record, you have to inform the other user when 
*they* save the record that somebody else has edited the record and 
then you give them a choice of what to do:

  1. overwrite the other user's changes with mine

  2. drop my changes and use the other user's changes

  3. show me the differences so I can resolve them somehow

Now, all of this is a huge user interface challenge. First off, a 
dialog that gives you these 3 choices is very hard to understand -- 
most users won't know what the hell it means. You could skip it all 
and just do #3, but designing a user interface for that is very 
difficult, too.

Of course, what you're suggesting is not multi-user editing, but it 
kind of comes down to the same thing. This is the scenario that is 
basically the same:

1. you have a SCORE.

2. you have PART1 and PART2.

3. you edit PART1.

4. you edit PART2.

5. you tell Finale to update the score with the changes you made to 
PART1.

6. you tell Finale to update the score with the changes you made to 
PART2.

Now, what if you made mutually contradictory changes in PART1 and 
PART2 (and let's leave aside changes that shouldn't cascade back to 
the score)? Perhaps there aren't any linked changes that would 
overlap, but my bet is that there would be.

Take, for instance, inserting a measure into a part. Say you insert 
it at measure 20. And you do it in both the parts. Finale has to be 
smart enough to know that you've done the same thing twice, not made 
two independent insertions. Now, from a common-sense perspective, 
that sounds simple, but from a computer point of view, it's rather 
complicated. If you think of it as FRAMES, and each FRAME is assigned 
a unique ID, somehow Finale has to translate from the FrameIDs of the 
part (which, since it's a separate, newly created file, independent 
of the score, will be different from the score) to the FrameIDs of 
the score. I don't know how this would be managed. A lookup table? 
Or, creating the parts using the same FrameIDs as the score? Again, I 
don't know, since there are drawbacks to both (the second is actually 
an attractive alternative, since then you'd have an exact match back 
to the original data; but I don't know if 

Re: [Finale] Dynamic Parts in Finale - multi-file solution?

2005-07-07 Thread David W. Fenton
On 7 Jul 2005 at 17:50, Darcy James Argue wrote:

 Robert Patterson and Johannes Gebauer have raised some excellent
 points about the feasibility of a single-file solution for Dynamic
 Parts in Finale.  There is also the issue of a possible additional
 performance hit if Finale were to implement live updating as
 Sibelius does.
 
 What about a multi-file solution with manual updates -- after 
 extracting parts, an option to update parts based on score or
 update score based on parts?  Would that be a more feasible
 solution? . . .

No, it wouldn't.

It would vastly increase the complexity of implementing dynamic 
parts, because it would require duplicating all the data in other 
files, and then creating mechanisms that harmonize changes to the 
data in the different files. 

As a database programmer who creates replicated applications for my 
clients, I can tell you that this is not a simple thing.

What happens when changes in two different parts cause a collision 
when pushed up to the score? This can't happen with a single-file 
part view approach, since the changes occur sequentially, and are 
passed up to the score view as they are made. With separate files, 
you either have to queue them with a time stamp (a transaction-based 
approach) or figure out some way to harmonize potential conflicts.

I spend all my time working with these issues in databases and I can 
tell you: it's much easier to have all the changes taking place in a 
single database than it is to try to synchronized changes in multiple 
related databases.

 . . . Is there any way such a solution could duplicate all of the
 functionality of Sibelius's Dynamic Parts -- just without the
 auto-updating?  Would this be the poor man's version, or could it
 actually be a *better* solution than SIb's single-file solution, if it
 was properly implemented?

It could duplicate it, but:

1. it would be vastly more complex to implement, AND

2. it would be much more prone to breaking, both internally 
(improperly resolved conflicting edits) and externally (intervention 
via the file system, or any other method outside Finale).

Coordinating multiple independent files is just a terrible idea 
compared to the single-file with views alternative.

-- 
David W. Fentonhttp://www.bway.net/~dfenton
David Fenton Associateshttp://www.bway.net/~dfassoc

___
Finale mailing list
Finale@shsu.edu
http://lists.shsu.edu/mailman/listinfo/finale