[jmsl] Articulation request
jmsl at music.columbia.edu
jmsl at music.columbia.edu
Sun Jul 13 15:14:53 EDT 2008
Hi Peter
Looks like we can use UserBeans as a convenient place to put these
NoteOrnament objects. UserBeans already save and load properly to/from
a Score file. At render time, I can have NoteRenderer iterate through
the Note's UserBeans, check if they are subclasses of NoteOrnament and
if so, call its draw() method. Note that the draw() method is passed the
zoom so your drawing can scale up and down.
The abstract superclass already has an x and y offset which can be used
to position the ornament relative to the note.
Here's an example of a NoteOrnament that draws an oval below a Note.
public class DrippyNoteOrnament extends NoteOrnament {
public DrippyNoteOrnament() {
setName("DrippyNoteOrnament");
}
public void draw(Graphics g, double zoom, Note n) {
int x = n.getDrawingAnchor().x + (int) (getXoffset() * zoom);
int y = n.getDrawingAnchor().y + (int) (getYoffset() * zoom);
g.setColor(Color.blue);
g.drawOval(x, y, (int) (10 * zoom), (int) (80 * zoom));
g.setColor(Color.black);
}
}
Programmatically you can assign it to a Note like this:
DrippyNoteOrnament drippyNoteOrnament = new DrippyNoteOrnament();
drippyNoteOrnament.setYoffset(12);
note.addUserBean(drippyNoteOrnament);
I am writing the plug-in scanner so that NoteOrnaments will show up in a
hierarchical menu like other plug-ins.
More soon
Nick
jmsl at music.columbia.edu wrote:
> Hi Peter
>
> jmsl at music.columbia.edu wrote:
>> - What about the possibility of multiple marks on a single
>> note? (for example, a note with an accent, a fermata and a breath
>> mark) Otherwise, to get around this, it's a question of generating
>> combinations of marks.
> I think the idea might be that a Note would have a Vector of custom
> mark/ornament classes. It would iterate through and each would draw
> itself. So you could have both a squiggle and a twiddle on one note.
>> - Would it be possible for the definitions of the marks
>> themselves to contain information on how they were to ornament a
>> note? (and that that is called from within getPerformanceData() )
> Hmmm... maybe we could use DataTranslator here and avoid adding yet
> another new class.
>>
>> One other custom drawing thing that could be very, very cool: the
>> ability to do things like breakpoint functions on the score. This
>> wouldn't export to SCORE, etc. but would be really fantastic as a
>> compositional tool. It also gets around the paradigm of all events
>> being attached to notes. I can imagine a lot of things with CC
>> messages, etc. that happen over the course of a note, and this seems
>> like an interesting idea that might be possible with a custom score
>> renderer?
> Not exactly sure what you mean here. You mean continuous control of
> musical stuff during Score playback? Like a Note being played and
> spawning a MusicJob that does some arbitrary updates on its data? You
> could do that now with PlayLurkers. Check out
> http://www.punosmusic.com/pages/sabbathbride/sabbathbride.html
>>
>> I'm definitely hoping to make JMSL my main compositional software,
>> though I'll probably continue to use Finale, etc. for publishing.
>> The more that JMSL can express, the more powerful it becomes, though
>> I definitely agree with limiting layout and positioning overhead.
> JMSL has made important advances from your use of it; your feedback
> and your suggestions.
>
> Thanks
> Nick
> _______________________________________________
> jmsl mailing list
> jmsl at music.columbia.edu
> http://music.columbia.edu/mailman/listinfo/jmsl
More information about the jmsl
mailing list