[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