On Wednesday 02 February 2005 12:30 pm, Chris Cannam wrote:
> Beats per hour is used for storing tempo. (A bad choice -- we should
> have used something like 1/10000s of a quarter-note per minute. We may
> yet switch -- obviously retaining file format compatibility.)
>
> > You could have a time class that converts from seconds to beats.
>
> The Composition class does this, in getElapsedRealTime,
> getElapsedTimeForRealTime and getRealTimeDifference. Note that the
> Rosegarden sequencer process actually already deals only with real time
> in nanoseconds -- the GUI process and basic event storage deal with
> these in musical time. There is also base/RealTime.[Ch] which can
> translate between real time and audio frame counts.
If the sequencer works with seconds, why not change the gui and event storage
to also use seconds? Fundamentally using music time seems to be a liability.
> > interested in adding support for different tunings. My thought is
> > that just as instruments are abstractions, the note number should be
> > an abstraction that maps to a value in a tuning file. Changing the
> > number of notes in an octave could be very hard, but just allowing
> > different temperaments shouldn't be that difficult. Notes in the .rg
> > file get mapped to MIDI notes +/- some pitchbend.
>
> Pitch bend is a bit inadequate when you have chords, but there is also
> the MIDI Tuning standard and some soft synths may support other tuning
> methods. Lots of people have opinions about this -- my personal
> interest is in the ideal of tuning being a property of the key rather
> than (or as well as) a property of individual notes.
Yeah, I can see that. The pitch bend will affect everything on the channel.
So how does Cakewalk (Sonar) accomplish different tunings?
> There is an abstract class called Staff (in base/Staff.[Ch]). The main
> subclass is LinedStaff (gui/linedstaff.{cpp,h}) which represents staffs
> that have one or more horizontal lines representing pitch. Current
> examples are NotationStaff and MatrixStaff, and I intend a
> PercussionStaff pretty soon.
>
> Likewise there are horizontal and vertical layout engine abstractions
> that handle layout for staffs that have different layout requirements.
> Like the LinedStaff abstraction, these abstractions are largely
> academic when dealing with notation versus matrix, as they have so
> little in common -- this base class gives us nothing much except a
> potential nice box on a class diagram.
I was thinking that the difficulty would be in holding the actual tablature
data. There isn't a 1-1 mapping between the staff position (note number) and
the tablature value. The fingering needs to be stored with the note event.
When graphically editing the tab staff, it has a significant amount of new
behavior over the regular staff, unless everything is done via clicking on
the note in the musical staff portion and bringing up a dialog box. But this
would be tedious and time-consuming when trying to tab out a guitar solo. In
PowerTab (popular windows-based guitar tablature editor) you click on the
string and type in the fret number. For subsequent notes, you can move around
the tab staff with the arrow keys. Having this sort of behavior along with
the normal note entry behavior could be tricky. Maybe the solution is to have
a "tablature edit mode", wherein you could only enter notes via the tab
staff. Switching it off, you enter notes normally, but there would have to be
some sort of dialog asking which string to put the note on. Though maybe the
program could guess the fingering, and you could have a right mouse click
thing for the dialog that's only needed if it guesses wrong.
> > Does the CVS source include a project file? It looks like KDevelop
> > was used. Is that so?
>
> Only to create the initial Makefile and stuff. We all use text editors
> to write the code.
>
> We did have a Doxygen dump updated daily at
> http://rosegarden.sourceforge.net/code_doc, but it seems to have
> disappeared. Perhaps Guillaume (who is away this week) might know
> what's happened to it.
Since you're using the autoconf/automake stuff, I was able to import the
source code into KDevelop. It was able build the project, tag the files, and
spit out the documentation with Doxygen. I was rather impressed. It was a lot
easier than I thought.
-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel