[jmsl] Bug report: Transcriber

jmsl at music.columbia.edu jmsl at music.columbia.edu
Sat Jan 19 14:29:30 EST 2008


Hi Peter

I believe I've fixed it this problem.  I will send it to you offlist, 
and if your testing confirms that it works OK for this and other 
transcribing applications, I will release a new build

Thanks!
Nick Didkovsky

jmsl at music.columbia.edu wrote:
> Hi Nick,
>
>> I noticed that the rest is properly transcribed when the first 
>> measure is set to 2/4
>
> It doesn't seem to have a problem with a full measure of rests.  I 
> would be curious as to the order the rests are added.  (which is the 
> first rest added, and the second)
>
> Here's a slightly tweaked version of the last file adding indices to 
> the notes on the 5th dimension.  With either 2/4 or 4/4 the rest is 
> not duplicated in the final score, so there's no way to tell which was 
> the first rest and which one the transcriber added (after or before?).
>
> This makes sense, in that the transcriber doesn't preserve rests, I'm 
> assuming?  (more for my own understanding of how things are working)
>
> Peter McCulloch
>
>
> package jmsltestsuite;
>
> import java.util.Vector;
>
> import com.softsynth.jmsl.JMSL;
> import com.softsynth.jmsl.MusicShape;
> import com.softsynth.jmsl.score.*;
> import com.softsynth.jmsl.score.transcribe.*;
> import com.softsynth.jmsl.util.TimeSignature;
>
> /**
>  * JMSL's com.softsynth.jmsl.score.transcribe package enables the 
> transcription
>  * of arbitrary MusicShape data into common music notation.
>  *
>  * This test changes tempo in measure 2 and then changes it back in 
> measure 3.
>  * So note events that would normally get transcribed as eighths are 
> transcribed
>  * as quarters, with a tempo change.
>  *
>  * @author Nick Didkovsky, (c) 2002 Nick Didkovsky, All Rights reserved.
>  */
>
> public class TranscribeScore3 {
>
>     public static void main(String args[]) {
>         JMSL.clock.setAdvance(0.1);
>         BeatDivisionSchemeList.defaultSetup();
>
>         MusicShape source = new MusicShape(5);
>         source.add(1.0, 0, 0.5, 1, 1); // This rest is not properly 
> transcribed
>         source.add(1.0, 61, 0.5, 1.0, 2);
>         source.add(0.5, 62, 0.5, 0.5, 3);
>         source.add(0.5, 63, 0.5, 0.5, 4);
>         source.add(1.0, 64, 0.5, 1.0, 5);
>         source.add(1.0, 65, 0.5, 1.0, 6);
>         source.add(1.0, 0, 0.5, 1.0, 7); // This rest is properly 
> transcribed
>                                             // because tempo = 60.
>         source.add(1.0, 65, 0.5, 1.0, 8);
>
>         source.integrate(0);
>         source.print();
>
>         // 2 staves, width, height
>         Score score = new Score(2, 1024, 800);
>         score.addMeasure();
>         score.getMeasure(0).getStaff(1).setClef(Clef.BASS_CLEF);
>
>         Transcriber transcriber = new Transcriber();
>         transcriber.setScore(score);
>         transcriber.setSourceMusicShape(source);
>
>         Vector tsVector = new Vector();
>
>         tsVector.addElement(new TempoTimeSignatureHolder(new 
> Tempo(120), new TimeSignature(4, 4)));
>         tsVector.addElement(new TempoTimeSignatureHolder(new 
> Tempo(120), new TimeSignature(2, 4)));
>         tsVector.addElement(new TempoTimeSignatureHolder(new 
> Tempo(60), new TimeSignature(2, 4)));
>
>         transcriber.setTempoTimeSignatures(tsVector);
>
>         try {
>             score.setCurrentStaffNumber(0);
>             transcriber.transcribe();
>         } catch (ElementMissedException e) {
>             e.printStackTrace();
>             System.out.println("ERROR: " + e);
>             System.exit(0);
>         } catch (SearchPathListExpansionException e) {
>             e.printStackTrace();
>             System.out.println("ERROR: " + e);
>             System.exit(0);
>         }
>
>         final ScoreFrame f = new ScoreFrame();
>         f.addScore(score);
>         score.getMeasure(0).setMeasureText("I should start with a rest");
>         score.getMeasure(3).setMeasureText("Transcribed correctly");
>         Score.setInstrumentNamesVisible(false);
>         Score.setStaffNumbersVisible(false);
>         // f.loadPrefs();
>         f.addWindowListener(new java.awt.event.WindowAdapter() {
>             public void windowClosing(java.awt.event.WindowEvent e) {
>                 f.quit();
>             }
>         });
>
>         f.setVisible(true);
>
>     }
>
> }
>
> _______________________________________________
> jmsl mailing list
> jmsl at music.columbia.edu
> http://music.columbia.edu/mailman/listinfo/jmsl


More information about the jmsl mailing list