package jmsltestsuite; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Vector; import com.softsynth.jmsl.MusicShape; import com.softsynth.jmsl.score.Score; import com.softsynth.jmsl.score.ScoreFrame; import com.softsynth.jmsl.score.transcribe.BeatDivisionScheme; import com.softsynth.jmsl.score.transcribe.BeatDivisionSchemeList; import com.softsynth.jmsl.score.transcribe.ElementMissedException; import com.softsynth.jmsl.score.transcribe.SearchPathListExpansionException; import com.softsynth.jmsl.score.transcribe.Transcriber; import com.softsynth.jmsl.util.TimeSignature; /** Use 32nds if you use small durations and want to avoid chords where 32nds bump up to the nearest 16th */ public class TranscribeScore13 { MusicShape musicShape; void buildMusicShape() { // test shape provided by Larry Polansky musicShape = new MusicShape(4); musicShape.add(0.0, 0.0, 1.0, 1.0); musicShape.add(0.25, 0.0, 1.0, 1.0); musicShape.add(0.375, 0.0, 1.0, 1.0); musicShape.add(0.625, 0.0, 1.0, 1.0); musicShape.add(0.75, 0.0, 1.0, 1.0); musicShape.add(1.0, 0.0, 1.0, 1.0); musicShape.add(1.125, 0.0, 1.0, 1.0); musicShape.add(1.375, 0.0, 1.0, 1.0); musicShape.add(1.5, 67.0, 1.0, 1.0); musicShape.add(1.75, 71.0, 1.0, 1.0); musicShape.add(1.875, 0.0, 1.0, 1.0); musicShape.add(2.125, 0.0, 1.0, 1.0); musicShape.add(2.25, 74.0, 1.0, 1.0); musicShape.add(2.5, 0.0, 1.0, 1.0); musicShape.add(2.625, 0.0, 1.0, 1.0); musicShape.add(2.875, 0.0, 1.0, 1.0); musicShape.add(3.0, 0.0, 1.0, 1.0); musicShape.add(3.25, 0.0, 1.0, 1.0); musicShape.add(3.375, 0.0, 1.0, 1.0); musicShape.add(3.625, 0.0, 1.0, 1.0); musicShape.add(3.75, 0.0, 1.0, 1.0); musicShape.add(4.0, 0.0, 1.0, 1.0); musicShape.add(4.125, 0.0, 1.0, 1.0); musicShape.add(4.375, 0.0, 1.0, 1.0); musicShape.add(4.5, 0.0, 1.0, 1.0); musicShape.add(4.75, 67.0, 1.0, 1.0); musicShape.add(4.875, 0.0, 1.0, 1.0); musicShape.add(5.125, 0.0, 1.0, 1.0); musicShape.add(5.25, 64.0, 1.0, 1.0); musicShape.add(5.5, 0.0, 1.0, 1.0); musicShape.add(5.625, 71.0, 1.0, 1.0); musicShape.add(5.875, 0.0, 1.0, 1.0); musicShape.add(6.0, 0.0, 1.0, 1.0); musicShape.add(6.25, 0.0, 1.0, 1.0); musicShape.add(6.375, 0.0, 1.0, 1.0); musicShape.add(6.625, 0.0, 1.0, 1.0); musicShape.add(6.75, 74.0, 1.0, 1.0); musicShape.add(7.0, 0.0, 1.0, 1.0); musicShape.add(7.125, 0.0, 1.0, 1.0); musicShape.add(7.375, 0.0, 1.0, 1.0); musicShape.add(7.5, 0.0, 1.0, 1.0); musicShape.add(7.75, 0.0, 1.0, 1.0); musicShape.add(7.875, 64.0, 1.0, 1.0); musicShape.add(8.125, 0.0, 1.0, 1.0); musicShape.add(8.25, 0.0, 1.0, 1.0); musicShape.add(8.5, 67.0, 1.0, 1.0); musicShape.add(8.625, 0.0, 1.0, 1.0); musicShape.add(8.875, 0.0, 1.0, 1.0); musicShape.add(9.0, 0.0, 1.0, 1.0); musicShape.add(9.25, 0.0, 1.0, 1.0); musicShape.add(9.375, 0.0, 1.0, 1.0); musicShape.add(9.625, 0.0, 1.0, 1.0); musicShape.add(9.75, 0.0, 1.0, 1.0); musicShape.add(10.0, 0.0, 1.0, 1.0); musicShape.add(10.125, 0.0, 1.0, 1.0); musicShape.add(10.375, 74.0, 1.0, 1.0); musicShape.add(10.5, 0.0, 1.0, 1.0); musicShape.add(10.75, 71.0, 1.0, 1.0); musicShape.add(10.875, 0.0, 1.0, 1.0); musicShape.add(11.125, 0.0, 1.0, 1.0); musicShape.add(11.25, 0.0, 1.0, 1.0); musicShape.add(11.5, 0.0, 1.0, 1.0); musicShape.add(11.625, 0.0, 1.0, 1.0); musicShape.add(11.875, 0.0, 1.0, 1.0); musicShape.add(12.0, 0.0, 1.0, 1.0); musicShape.add(12.25, 0.0, 1.0, 1.0); musicShape.add(12.375, 64.0, 1.0, 1.0); musicShape.add(12.625, 0.0, 1.0, 1.0); musicShape.add(12.75, 0.0, 1.0, 1.0); musicShape.add(13.0, 0.0, 1.0, 1.0); musicShape.add(13.125, 67.0, 1.0, 1.0); musicShape.add(13.375, 0.0, 1.0, 1.0); musicShape.add(13.5, 0.0, 1.0, 1.0); musicShape.add(13.75, 71.0, 1.0, 1.0); musicShape.add(13.875, 0.0, 1.0, 1.0); musicShape.add(14.125, 0.0, 1.0, 1.0); musicShape.add(14.25, 0.0, 1.0, 1.0); musicShape.add(14.5, 0.0, 1.0, 1.0); musicShape.add(14.625, 0.0, 1.0, 1.0); musicShape.add(14.875, 74.0, 1.0, 1.0); musicShape.add(15.0, 0.0, 1.0, 1.0); musicShape.add(15.25, 0.0, 1.0, 1.0); musicShape.add(15.375, 0.0, 1.0, 1.0); musicShape.add(15.625, 0.0, 1.0, 1.0); musicShape.add(15.75, 0.0, 1.0, 1.0); musicShape.add(16.0, 0.0, 1.0, 1.0); musicShape.add(16.125, 0.0, 1.0, 1.0); musicShape.add(16.375, 67.0, 1.0, 1.0); musicShape.add(16.5, 64.0, 1.0, 1.0); musicShape.add(16.75, 0.0, 1.0, 1.0); musicShape.add(16.875, 0.0, 1.0, 1.0); musicShape.add(17.125, 0.0, 1.0, 1.0); musicShape.add(17.25, 0.0, 1.0, 1.0); musicShape.add(17.5, 0.0, 1.0, 1.0); musicShape.add(17.625, 71.0, 1.0, 1.0); musicShape.add(17.875, 0.0, 1.0, 1.0); musicShape.add(18.0, 0.0, 1.0, 1.0); musicShape.add(18.25, 0.0, 1.0, 1.0); musicShape.add(18.375, 0.0, 1.0, 1.0); musicShape.add(18.625, 74.0, 1.0, 1.0); musicShape.add(18.75, 0.0, 1.0, 1.0); musicShape.add(19.0, 0.0, 1.0, 1.0); musicShape.add(19.125, 0.0, 1.0, 1.0); musicShape.add(19.375, 0.0, 1.0, 1.0); musicShape.add(19.5, 67.0, 1.0, 1.0); musicShape.add(19.75, 0.0, 1.0, 1.0); musicShape.add(19.875, 0.0, 1.0, 1.0); musicShape.add(20.125, 0.0, 1.0, 1.0); musicShape.add(20.25, 64.0, 1.0, 1.0); musicShape.add(20.5, 0.0, 1.0, 1.0); musicShape.add(20.625, 0.0, 1.0, 1.0); musicShape.add(20.875, 0.0, 1.0, 1.0); musicShape.add(21.0, 0.0, 1.0, 1.0); musicShape.add(21.25, 0.0, 1.0, 1.0); musicShape.add(21.375, 0.0, 1.0, 1.0); musicShape.add(21.625, 0.0, 1.0, 1.0); musicShape.add(21.75, 0.0, 1.0, 1.0); musicShape.add(22.0, 0.0, 1.0, 1.0); musicShape.add(22.125, 71.0, 1.0, 1.0); musicShape.add(22.375, 0.0, 1.0, 1.0); musicShape.add(22.5, 74.0, 1.0, 1.0); musicShape.add(22.75, 0.0, 1.0, 1.0); musicShape.add(22.875, 0.0, 1.0, 1.0); musicShape.add(23.125, 0.0, 1.0, 1.0); musicShape.add(23.25, 0.0, 1.0, 1.0); musicShape.add(23.5, 0.0, 1.0, 1.0); musicShape.add(23.625, 0.0, 1.0, 1.0); musicShape.add(23.875, 67.0, 1.0, 1.0); musicShape.add(24.0, 64.0, 1.0, 1.0); musicShape.add(24.25, 0.0, 1.0, 1.0); musicShape.add(24.375, 0.0, 1.0, 1.0); musicShape.add(24.625, 0.0, 1.0, 1.0); musicShape.add(24.75, 0.0, 1.0, 1.0); musicShape.add(25.0, 0.0, 1.0, 1.0); musicShape.add(25.125, 0.0, 1.0, 1.0); musicShape.add(25.375, 0.0, 1.0, 1.0); musicShape.add(25.5, 71.0, 1.0, 1.0); musicShape.add(25.75, 0.0, 1.0, 1.0); musicShape.add(25.875, 0.0, 1.0, 1.0); musicShape.add(26.125, 0.0, 1.0, 1.0); musicShape.add(26.25, 74.0, 1.0, 1.0); musicShape.add(26.5, 0.0, 1.0, 1.0); musicShape.add(26.625, 0.0, 1.0, 1.0); musicShape.add(26.875, 0.0, 1.0, 1.0); musicShape.add(27.0, 0.0, 1.0, 1.0); musicShape.add(27.25, 0.0, 1.0, 1.0); musicShape.add(27.375, 67.0, 1.0, 1.0); musicShape.add(27.625, 0.0, 1.0, 1.0); musicShape.add(27.75, 0.0, 1.0, 1.0); musicShape.add(28.0, 0.0, 1.0, 1.0); musicShape.add(28.125, 0.0, 1.0, 1.0); musicShape.add(28.375, 64.0, 1.0, 1.0); musicShape.add(28.5, 0.0, 1.0, 1.0); musicShape.add(28.75, 0.0, 1.0, 1.0); musicShape.add(28.875, 0.0, 1.0, 1.0); musicShape.add(29.125, 0.0, 1.0, 1.0); musicShape.add(29.25, 0.0, 1.0, 1.0); musicShape.add(29.5, 74.0, 1.0, 1.0); musicShape.add(29.625, 71.0, 1.0, 1.0); musicShape.add(29.875, 0.0, 1.0, 1.0); musicShape.add(30.0, 0.0, 1.0, 1.0); musicShape.add(30.25, 0.0, 1.0, 1.0); musicShape.add(30.375, 0.0, 1.0, 1.0); musicShape.add(30.625, 0.0, 1.0, 1.0); musicShape.add(30.75, 0.0, 1.0, 1.0); musicShape.add(31.0, 67.0, 1.0, 1.0); musicShape.add(31.125, 0.0, 1.0, 1.0); musicShape.add(31.375, 0.0, 1.0, 1.0); musicShape.add(31.5, 0.0, 1.0, 1.0); musicShape.add(31.75, 0.0, 1.0, 1.0); musicShape.add(31.875, 0.0, 1.0, 1.0); musicShape.add(32.125, 64.0, 1.0, 1.0); musicShape.add(32.25, 0.0, 1.0, 1.0); musicShape.add(32.5, 0.0, 1.0, 1.0); musicShape.add(32.625, 0.0, 1.0, 1.0); musicShape.add(32.875, 0.0, 1.0, 1.0); musicShape.add(33.0, 0.0, 1.0, 1.0); musicShape.add(33.25, 74.0, 1.0, 1.0); musicShape.add(33.375, 0.0, 1.0, 1.0); musicShape.add(33.625, 71.0, 1.0, 1.0); musicShape.add(33.75, 0.0, 1.0, 1.0); musicShape.add(34.0, 0.0, 1.0, 1.0); musicShape.add(34.125, 0.0, 1.0, 1.0); musicShape.add(34.375, 0.0, 1.0, 1.0); musicShape.add(34.5, 0.0, 1.0, 1.0); musicShape.add(34.75, 0.0, 1.0, 1.0); musicShape.add(34.875, 67.0, 1.0, 1.0); musicShape.add(35.125, 0.0, 1.0, 1.0); musicShape.add(35.25, 64.0, 1.0, 1.0); musicShape.add(35.5, 0.0, 1.0, 1.0); musicShape.add(35.625, 0.0, 1.0, 1.0); musicShape.add(35.875, 0.0, 1.0, 1.0); musicShape.add(36.0, 0.0, 1.0, 1.0); musicShape.add(36.25, 0.0, 1.0, 1.0); musicShape.add(36.375, 0.0, 1.0, 1.0); musicShape.add(36.625, 74.0, 1.0, 1.0); musicShape.add(36.75, 0.0, 1.0, 1.0); musicShape.add(37.0, 0.0, 1.0, 1.0); musicShape.add(37.125, 0.0, 1.0, 1.0); musicShape.add(37.375, 0.0, 1.0, 1.0); musicShape.add(37.5, 0.0, 1.0, 1.0); musicShape.add(37.75, 0.0, 1.0, 1.0); musicShape.add(37.875, 71.0, 1.0, 1.0); musicShape.add(38.125, 0.0, 1.0, 1.0); musicShape.add(38.25, 0.0, 1.0, 1.0); musicShape.add(38.5, 0.0, 1.0, 1.0); musicShape.add(38.625, 67.0, 1.0, 1.0); musicShape.add(38.875, 0.0, 1.0, 1.0); musicShape.add(39.0, 64.0, 1.0, 1.0); musicShape.add(39.25, 0.0, 1.0, 1.0); musicShape.add(39.375, 0.0, 1.0, 1.0); musicShape.add(39.625, 0.0, 1.0, 1.0); musicShape.add(39.75, 0.0, 1.0, 1.0); musicShape.add(40.0, 0.0, 1.0, 1.0); musicShape.add(40.125, 0.0, 1.0, 1.0); musicShape.add(40.375, 0.0, 1.0, 1.0); musicShape.add(40.5, 0.0, 1.0, 1.0); musicShape.add(40.75, 0.0, 1.0, 1.0); musicShape.add(40.875, 0.0, 1.0, 1.0); musicShape.add(41.125, 74.0, 1.0, 1.0); musicShape.add(41.25, 0.0, 1.0, 1.0); musicShape.add(41.5, 71.0, 1.0, 1.0); musicShape.add(41.625, 0.0, 1.0, 1.0); musicShape.add(41.875, 0.0, 1.0, 1.0); musicShape.add(42.0, 0.0, 1.0, 1.0); musicShape.add(42.25, 0.0, 1.0, 1.0); musicShape.add(42.375, 64.0, 1.0, 1.0); musicShape.add(42.625, 0.0, 1.0, 1.0); musicShape.add(42.75, 0.0, 1.0, 1.0); musicShape.add(43.0, 67.0, 1.0, 1.0); musicShape.add(43.125, 0.0, 1.0, 1.0); musicShape.add(43.375, 0.0, 1.0, 1.0); musicShape.add(43.5, 0.0, 1.0, 1.0); musicShape.add(43.75, 0.0, 1.0, 1.0); musicShape.add(43.875, 0.0, 1.0, 1.0); musicShape.add(44.125, 0.0, 1.0, 1.0); musicShape.add(44.25, 0.0, 1.0, 1.0); musicShape.add(44.5, 74.0, 1.0, 1.0); musicShape.add(44.625, 0.0, 1.0, 1.0); musicShape.add(44.875, 71.0, 1.0, 1.0); musicShape.add(45.0, 0.0, 1.0, 1.0); musicShape.add(45.25, 0.0, 1.0, 1.0); musicShape.add(45.375, 0.0, 1.0, 1.0); musicShape.add(45.625, 0.0, 1.0, 1.0); musicShape.add(45.75, 0.0, 1.0, 1.0); musicShape.add(46.0, 0.0, 1.0, 1.0); musicShape.add(46.125, 64.0, 1.0, 1.0); musicShape.add(46.375, 0.0, 1.0, 1.0); musicShape.add(46.5, 0.0, 1.0, 1.0); musicShape.add(46.75, 67.0, 1.0, 1.0); musicShape.add(46.875, 0.0, 1.0, 1.0); musicShape.add(47.125, 0.0, 1.0, 1.0); musicShape.add(47.25, 0.0, 1.0, 1.0); musicShape.add(47.5, 0.0, 1.0, 1.0); musicShape.add(47.625, 0.0, 1.0, 1.0); musicShape.add(47.875, 0.0, 1.0, 1.0); musicShape.add(48.0, 0.0, 1.0, 1.0); musicShape.add(48.25, 74.0, 1.0, 1.0); musicShape.add(48.375, 0.0, 1.0, 1.0); musicShape.add(48.625, 0.0, 1.0, 1.0); musicShape.add(48.75, 0.0, 1.0, 1.0); musicShape.add(49.0, 0.0, 1.0, 1.0); musicShape.add(49.125, 71.0, 1.0, 1.0); musicShape.add(49.375, 0.0, 1.0, 1.0); musicShape.add(49.5, 64.0, 1.0, 1.0); musicShape.add(49.75, 0.0, 1.0, 1.0); musicShape.add(49.875, 0.0, 1.0, 1.0); musicShape.add(50.125, 0.0, 1.0, 1.0); musicShape.add(50.25, 0.0, 1.0, 1.0); musicShape.add(50.5, 0.0, 1.0, 1.0); musicShape.add(50.625, 0.0, 1.0, 1.0); musicShape.add(50.875, 0.0, 1.0, 1.0); musicShape.add(51.0, 0.0, 1.0, 1.0); musicShape.add(51.25, 67.0, 1.0, 1.0); musicShape.add(51.375, 0.0, 1.0, 1.0); musicShape.add(51.625, 0.0, 1.0, 1.0); musicShape.add(51.75, 0.0, 1.0, 1.0); musicShape.add(52.0, 74.0, 1.0, 1.0); musicShape.add(52.125, 0.0, 1.0, 1.0); musicShape.add(52.375, 0.0, 1.0, 1.0); musicShape.add(52.5, 0.0, 1.0, 1.0); musicShape.add(52.75, 64.0, 1.0, 1.0); musicShape.add(52.875, 0.0, 1.0, 1.0); musicShape.add(53.125, 0.0, 1.0, 1.0); musicShape.add(53.25, 71.0, 1.0, 1.0); musicShape.add(53.5, 0.0, 1.0, 1.0); musicShape.add(53.625, 0.0, 1.0, 1.0); musicShape.add(53.875, 0.0, 1.0, 1.0); musicShape.add(54.0, 0.0, 1.0, 1.0); musicShape.add(54.25, 0.0, 1.0, 1.0); musicShape.add(54.375, 0.0, 1.0, 1.0); musicShape.add(54.625, 0.0, 1.0, 1.0); musicShape.add(54.75, 0.0, 1.0, 1.0); musicShape.add(55.0, 0.0, 1.0, 1.0); musicShape.add(55.125, 67.0, 1.0, 1.0); musicShape.add(55.375, 0.0, 1.0, 1.0); musicShape.add(55.5, 74.0, 1.0, 1.0); musicShape.add(55.75, 0.0, 1.0, 1.0); musicShape.add(55.875, 0.0, 1.0, 1.0); musicShape.add(56.125, 0.0, 1.0, 1.0); musicShape.add(56.25, 0.0, 1.0, 1.0); musicShape.add(56.5, 64.0, 1.0, 1.0); musicShape.add(56.625, 0.0, 1.0, 1.0); musicShape.add(56.875, 71.0, 1.0, 1.0); musicShape.add(57.0, 0.0, 1.0, 1.0); musicShape.add(57.25, 0.0, 1.0, 1.0); musicShape.add(57.375, 0.0, 1.0, 1.0); musicShape.add(57.625, 0.0, 1.0, 1.0); musicShape.add(57.75, 0.0, 1.0, 1.0); musicShape.add(58.0, 0.0, 1.0, 1.0); musicShape.add(58.125, 0.0, 1.0, 1.0); musicShape.add(58.375, 0.0, 1.0, 1.0); musicShape.add(58.5, 0.0, 1.0, 1.0); musicShape.add(58.75, 0.0, 1.0, 1.0); musicShape.add(58.875, 0.0, 1.0, 1.0); musicShape.add(59.125, 74.0, 1.0, 1.0); musicShape.add(59.25, 67.0, 1.0, 1.0); musicShape.add(59.5, 0.0, 1.0, 1.0); musicShape.add(59.625, 0.0, 1.0, 1.0); musicShape.add(59.875, 0.0, 1.0, 1.0); musicShape.add(60.0, 0.0, 1.0, 1.0); musicShape.add(60.25, 64.0, 1.0, 1.0); musicShape.add(60.375, 0.0, 1.0, 1.0); musicShape.add(60.625, 0.0, 1.0, 1.0); musicShape.add(60.75, 71.0, 1.0, 1.0); musicShape.add(61.0, 0.0, 1.0, 1.0); musicShape.add(61.125, 0.0, 1.0, 1.0); musicShape.add(61.375, 0.0, 1.0, 1.0); musicShape.add(61.5, 0.0, 1.0, 1.0); musicShape.add(61.75, 0.0, 1.0, 1.0); musicShape.add(61.875, 0.0, 1.0, 1.0); musicShape.add(62.125, 0.0, 1.0, 1.0); musicShape.add(62.25, 0.0, 1.0, 1.0); musicShape.add(62.5, 0.0, 1.0, 1.0); musicShape.add(62.625, 0.0, 1.0, 1.0); musicShape.add(62.875, 74.0, 1.0, 1.0); musicShape.add(63.0, 67.0, 1.0, 1.0); musicShape.add(63.25, 0.0, 1.0, 1.0); musicShape.add(63.375, 0.0, 1.0, 1.0); musicShape.add(63.625, 0.0, 1.0, 1.0); } void doit() { buildMusicShape(); Score score = new Score(1, 800, 600); Transcriber transcriber = new Transcriber(); transcriber.setScore(score); // Set up time signatures. Only need to give it one 4/4 bar and transcriber will continue // with 4/4 throughout TimeSignature ts = new TimeSignature(4, 4); Vector tsVector = new Vector(); tsVector.addElement(ts); transcriber.setTimeSignatures(tsVector); try { score.setCurrentStaffNumber(0); score.rewind(); transcriber.setSourceMusicShape(musicShape); transcriber.transcribe(); } catch (ElementMissedException e) { e.printStackTrace(); System.out.println("ERROR: " + e); } catch (SearchPathListExpansionException e) { e.printStackTrace(); System.out.println("ERROR: " + e); } ScoreFrame scoreFrame = new ScoreFrame(); scoreFrame.addScore(score); scoreFrame.setVisible(true); scoreFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent arg0) { super.windowClosing(arg0); System.exit(0); } }); } public static void main(String[] args) { boolean WANT_TO_USE_32NDS = true; BeatDivisionSchemeList.defaultSetup(); if (WANT_TO_USE_32NDS) { BeatDivisionScheme b = new BeatDivisionScheme(); b.setTimeSpan(1.0); b.setMinTimeSpan(0.125); b.setMinRequired(0); b.setNumberOfDivisions(8); b.setMinTimeSpan(0.125); b.setConformToBeat(true); BeatDivisionSchemeList.addBeatDivisionScheme(b); } TranscribeScore13 test = new TranscribeScore13(); test.doit(); } }