[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