gsharp-cvs
Threads by month
- ----- 2025 -----
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
November 2005
- 2 participants
- 76 discussions

21 Nov '05
Update of /project/gsharp/cvsroot/gsharp/Scores
In directory common-lisp.net:/tmp/cvs-serv16314
Modified Files:
rapsoden-sjunger.gsh
Log Message:
Adjust rapsoden-sjunger to cope with the new semibreve rest. (Make some
other minor changes to rest vertical positions: I don't know whether the
original positions were meant to reflect some notated score, but the
ones I've put in look better to me...)
Date: Mon Nov 21 13:19:44 2005
Author: crhodes
Index: gsharp/Scores/rapsoden-sjunger.gsh
diff -u gsharp/Scores/rapsoden-sjunger.gsh:1.3 gsharp/Scores/rapsoden-sjunger.gsh:1.4
--- gsharp/Scores/rapsoden-sjunger.gsh:1.3 Thu Aug 5 07:54:36 2004
+++ gsharp/Scores/rapsoden-sjunger.gsh Mon Nov 21 13:19:44 2005
@@ -1,369 +1,3 @@
G#V3
-[B :staves (#1=[= :name "two" :clef [K :name :TREBLE :lineno 2 ] :keysig #(:FLAT
- :FLAT
- :FLAT
- :NATURAL
- :FLAT
- :FLAT
- :FLAT) ]
- #2=[= :name "one" :clef [K :name :BASS :lineno 6 ] :keysig #(:FLAT
- :FLAT
- :FLAT
- :NATURAL
- :FLAT
- :FLAT
- :FLAT) ] ) :segments ([S :layers ([_ :name "one" :staves (#1#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 43 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 45 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 44 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 43 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 42 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 42 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 36 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 23 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ]
- [_ :name "two" :staves (#1#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -4 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -4 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos 0 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -2 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -2 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos 0 ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -4 ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -2 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 29 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -4 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -6 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -12 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #1# :head :HALF :accidentals :FLAT :dots 0 ]
- [N :pitch 27 :staff #1# :head :HALF :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -4 ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -6 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -6 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #1# :staff-pos -4 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ]
- [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ]
- [_ :name "three" :staves (#2#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 29 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 31 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 30 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 29 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 28 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 28 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 14 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 13 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :AUTO :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 13 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 14 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 14 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 4 ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ]
- [% :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :xoffset 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ]
- [_ :name "four" :staves (#2#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 2 ] ) ]
- [| :elements ([- :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 4 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 2 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 2 ] ) ]
- [| :elements ([- :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset -3 :stem-direction :AUTO :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ]
- [% :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset -3 :stem-direction :AUTO :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ]
- [N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements NIL ]
- [| :elements ([- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ]
- [% :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :stem-direction :DOWN :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ]
- [- :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ]
- [| :elements ([- :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :xoffset 0 :staff #2# :staff-pos 0 ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ] ) ] ) :min-width 17 :spacing-style 0.4 :right-edge 700 :left-offset 30 :left-margin 20 ]
+[B :staves (#1=[= :name "two" :clef [K :name :TREBLE :lineno 2 ] :keysig #(:FLAT :FLAT :FLAT :NATURAL :FLAT :FLAT :FLAT) ] #2=[= :name "one" :clef [K :name :BASS :lineno 6 ] :keysig #(:FLAT :FLAT :FLAT :NATURAL :FLAT :FLAT :FLAT) ] ) :segments ([S :layers ([_ :name "one" :staves (#1#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :AUTO :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :AUTO :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :AUTO :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 43 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 45 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 44 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 43 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :AUTO :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :AUTO :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :AUTO :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 42 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 42 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 35 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 36 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 41 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 40 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 39 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 38 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 37 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 36 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :AUTO :notes ([N :pitch 23 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 33 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 29 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ] [_ :name "two" :staves (#1#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -2 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -4 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -4 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos 0 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 34 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 32 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -2 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -2 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos 0 ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 31 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -4 ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -2 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 29 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 27 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -4 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -6 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -12 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #1# :head :HALF :accidentals :FLAT :dots 0 ] [N :pitch 27 :staff #1# :head :HALF :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -4 ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 30 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -6 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 28 :staff #1# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -6 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #1# :staff-pos -4 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] [N :pitch 28 :staff #1# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ] [_ :name "three" :staves (#2#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 29 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 31 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 30 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 29 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 28 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 28 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 14 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 13 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 13 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 14 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 21 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 14 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 17 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :staff #2# :staff-pos 4 ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 18 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 27 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 26 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 1 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 22 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :DOWN :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 1 :lbeams 0 :dots 0 :stem-direction :UP :notes ([N :pitch 24 :staff #2# :head :FILLED :accidentals :NATURAL :dots 0 ] ) ] [% :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 1 :dots 0 :stem-direction :UP :notes ([N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ] [_ :name "four" :staves (#2#) :head [/ :bars ([| :elements NIL ] ) ] :body [/ :bars ([| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 16 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 20 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 23 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] [% :xoffset -3 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] [% :xoffset -3 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :stem-direction :AUTO :notes ([N :pitch 25 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] ) ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 15 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] [N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements NIL ] [| :elements ([- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] [% :xoffset 0 :notehead :HALF :rbeams 0 :lbeams 0 :dots 0 :stem-direction :DOWN :notes ([N :pitch 19 :staff #2# :head :FILLED :accidentals :FLAT :dots 0 ] ) ] [- :xoffset 0 :notehead :FILLED :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] [| :elements ([- :xoffset 0 :notehead :WHOLE :rbeams 0 :lbeams 0 :dots 0 :staff #2# :staff-pos 0 ] ) ] ) ] :tail [/ :bars ([| :elements NIL ] ) ] ] ) ] ) :min-width 17 :spacing-style 0.4 :right-edge 700 :left-offset 30 :left-margin 20 ]
1
0

[gsharp-cvs] CVS update: gsharp/drawing.lisp gsharp/measure.lisp gsharp/packages.lisp
by rstrandh@common-lisp.net 21 Nov '05
by rstrandh@common-lisp.net 21 Nov '05
21 Nov '05
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv1737
Modified Files:
drawing.lisp measure.lisp packages.lisp
Log Message:
moved computation of final stem direction from drawing.lisp to measure.lisp
Date: Mon Nov 21 03:11:09 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.30 gsharp/drawing.lisp:1.31
--- gsharp/drawing.lisp:1.30 Mon Nov 21 01:45:14 2005
+++ gsharp/drawing.lisp Mon Nov 21 03:11:08 2005
@@ -196,9 +196,6 @@
(bot-note-staff-yoffset :accessor bot-note-staff-yoffset)
(final-absolute-xoffset :accessor final-absolute-element-xoffset)))
-(define-added-mixin vcluster () cluster
- ((final-stem-direction :accessor final-stem-direction)))
-
(define-added-mixin welement () lyrics-element
((final-absolute-xoffset :accessor final-absolute-element-xoffset)))
@@ -216,20 +213,6 @@
(top-note-staff-yoffset element) 0
(bot-note-staff-yoffset element) 0)))
-;;; Given a non-empty cluster that is not beamed together with any
-;;; other clusters, compute and store its final stem direction.
-(defun compute-final-stem-direction (cluster)
- (assert (non-empty-cluster-p cluster))
- (setf (final-stem-direction cluster)
- (if (or (eq (stem-direction cluster) :up) (eq (stem-direction cluster) :down))
- (stem-direction cluster)
- (let ((top-note-pos (top-note-pos cluster))
- (bot-note-pos (bot-note-pos cluster)))
- (if (>= (- top-note-pos 4)
- (- 4 bot-note-pos))
- :down
- :up)))))
-
(defun compute-stem-length (element)
(let* ((top-note-pos (top-note-pos element))
(bot-note-pos (bot-note-pos element))
@@ -290,25 +273,6 @@
(incf start-time (duration element)))
(elements bar))))
-;;; Given a beam group containing at least two nonempty clusters,
-;;; compute and store the final stem directions of all the non-empty
-;;; clusters in the group
-(defun compute-final-stem-directions (elements)
- (let ((stem-direction (if (not (eq (stem-direction (car elements)) :auto))
- (stem-direction (car elements))
- (let ((top-note-pos
- (loop for element in elements
- when (non-empty-cluster-p element)
- maximize (top-note-pos element)))
- (bot-note-pos
- (loop for element in elements
- when (non-empty-cluster-p element)
- minimize (top-note-pos element))))
- (if (>= (- top-note-pos 4) (- 4 bot-note-pos)) :down :up)))))
- (loop for element in elements
- when (non-empty-cluster-p element)
- do (setf (final-stem-direction element) stem-direction))))
-
;;; the dominating note among a bunch of notes is the
;;; one that is closest to the beam, i.e. the one
;;; the one that is closest to the end of the stem that
@@ -330,25 +294,12 @@
(if (< (pitch n1) (pitch n2)) n1 n2))))))
notes))
-;;; Given a beam group, for each nonempty element, compute the top and
-;;; bottom note position, and the final stem direction.
-(defun compute-positions-and-stem-direction (elements)
-;; (loop for element in elements
-;; when (non-empty-cluster-p element)
-;; do (compute-top-bot-pos element))
- (if (null (cdr elements))
- (let ((element (car elements)))
- (when (non-empty-cluster-p element)
- (compute-final-stem-direction element)))
- (compute-final-stem-directions elements)))
-
(defun draw-beam-group (pane elements)
(mapc #'compute-top-bot-yoffset elements)
(if (null (cdr elements))
(let ((element (car elements)))
(when (or (typep element 'rest) (notes element))
(when (non-empty-cluster-p element)
- (compute-final-stem-direction element)
(compute-stem-length element))
(draw-element pane element (final-absolute-element-xoffset element))))
(let* ((stem-direction (final-stem-direction (car elements)))
@@ -402,43 +353,10 @@
(defun draw-cursor (pane x)
(draw-line* pane x (- (score-pane:staff-step -4)) x (- (score-pane:staff-step 12)) :ink +red+))
-;;; Given a list of the elements of a bar, return a list of beam
-;;; groups. A beam group is defined to be either a singleton list or
-;;; a list with more than one element. In the case of a singleton,
-;;; the element is either a non-cluster, an empty cluster, a cluster
-;;; that does not beam to the right, or a cluster that does beam to
-;;; the right, but either it is the last cluster in the bar, or the
-;;; first following cluster in the bar does not beam to the left. In
-;;; the case of a list with more than one element, the first element
-;;; is a cluster that beams to the right, the last element is a
-;;; cluster that beams to the left, and all other clusters in the list
-;;; beam both to the left and to the right. Notice that in the last
-;;; case, elements other than the first and the last can be
-;;; non-clusters, or empty clusters.
-(defun beam-groups (elements)
- (let ((group '()))
- (loop until (null elements) do
- (setf group (list (car elements))
- elements (cdr elements))
- (when (and (non-empty-cluster-p (car group))
- (plusp (rbeams (car group))))
- (loop while (and (not (null elements))
- (or (not (typep (car elements) 'cluster))
- (null (notes (car elements)))
- (plusp (lbeams (car elements)))))
- do (push (pop elements) group)
- until (and (non-empty-cluster-p (car group))
- (zerop (rbeams (car group)))))
- ;; pop off trailing unbeamable objects
- (loop until (non-empty-cluster-p (car group))
- do (push (pop group) elements)))
- collect (nreverse group))))
-
(defmethod draw-bar (pane (bar melody-bar) x width time-alist draw-cursor)
(compute-element-x-positions bar x time-alist)
(loop for group in (beam-groups (elements bar))
- do (compute-positions-and-stem-direction group)
- (draw-beam-group pane group))
+ do (draw-beam-group pane group))
(when (eq (cursor-bar *cursor*) bar)
(let ((elements (elements bar)))
(if (null (cursor-element *cursor*))
Index: gsharp/measure.lisp
diff -u gsharp/measure.lisp:1.10 gsharp/measure.lisp:1.11
--- gsharp/measure.lisp:1.10 Mon Nov 21 01:45:18 2005
+++ gsharp/measure.lisp Mon Nov 21 03:11:08 2005
@@ -102,7 +102,8 @@
;;; Cluster
(define-added-mixin rcluster () cluster
- (;; the position, in staff steps, of the top not in the element.
+ ((final-stem-direction :accessor final-stem-direction)
+ ;; the position, in staff steps, of the top not in the element.
(top-note-pos :accessor top-note-pos)
;; the position, in staff steps, of the bottom note in the element.
(bot-note-pos :accessor bot-note-pos)))
@@ -128,6 +129,39 @@
(when (cluster note)
(mark-modified (cluster note))))
+;;; Given a non-empty cluster that is not beamed together with any
+;;; other clusters, compute and store its final stem direction.
+(defun compute-final-stem-direction (cluster)
+ (assert (non-empty-cluster-p cluster))
+ (setf (final-stem-direction cluster)
+ (if (or (eq (stem-direction cluster) :up) (eq (stem-direction cluster) :down))
+ (stem-direction cluster)
+ (let ((top-note-pos (top-note-pos cluster))
+ (bot-note-pos (bot-note-pos cluster)))
+ (if (>= (- top-note-pos 4)
+ (- 4 bot-note-pos))
+ :down
+ :up)))))
+
+;;; Given a beam group containing at least two nonempty clusters,
+;;; compute and store the final stem directions of all the non-empty
+;;; clusters in the group
+(defun compute-final-stem-directions (elements)
+ (let ((stem-direction (if (not (eq (stem-direction (car elements)) :auto))
+ (stem-direction (car elements))
+ (let ((top-note-pos
+ (loop for element in elements
+ when (non-empty-cluster-p element)
+ maximize (top-note-pos element)))
+ (bot-note-pos
+ (loop for element in elements
+ when (non-empty-cluster-p element)
+ minimize (top-note-pos element))))
+ (if (>= (- top-note-pos 4) (- 4 bot-note-pos)) :down :up)))))
+ (loop for element in elements
+ when (non-empty-cluster-p element)
+ do (setf (final-stem-direction element) stem-direction))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Rest
@@ -318,12 +352,60 @@
(when (non-empty-cluster-p element)
(compute-top-bot-pos element)))
+(defun compute-beam-group-parameters (elements)
+ (let ((any-element-modified nil))
+ (loop for element in elements
+ do (when (modified-p element)
+ (compute-element-parameters element)
+ (setf any-element-modified t)
+ (setf (modified-p element) nil)))
+ (when any-element-modified
+ (if (null (cdr elements))
+ (when (non-empty-cluster-p (car elements))
+ (compute-final-stem-direction (car elements)))
+ (compute-final-stem-directions elements)))))
+
+;;; Given a list of the elements of a bar, return a list of beam
+;;; groups. A beam group is defined to be either a singleton list or
+;;; a list with more than one element. In the case of a singleton,
+;;; the element is either a non-cluster, an empty cluster, a cluster
+;;; that does not beam to the right, or a cluster that does beam to
+;;; the right, but either it is the last cluster in the bar, or the
+;;; first following cluster in the bar does not beam to the left. In
+;;; the case of a list with more than one element, the first element
+;;; is a cluster that beams to the right, the last element is a
+;;; cluster that beams to the left, and all other clusters in the list
+;;; beam both to the left and to the right. Notice that in the last
+;;; case, elements other than the first and the last can be
+;;; non-clusters, or empty clusters.
+(defun beam-groups (elements)
+ (let ((group '()))
+ (loop until (null elements) do
+ (setf group (list (car elements))
+ elements (cdr elements))
+ (when (and (non-empty-cluster-p (car group))
+ (plusp (rbeams (car group))))
+ (loop while (and (not (null elements))
+ (or (not (typep (car elements) 'cluster))
+ (null (notes (car elements)))
+ (plusp (lbeams (car elements)))))
+ do (push (pop elements) group)
+ until (and (non-empty-cluster-p (car group))
+ (zerop (rbeams (car group)))))
+ ;; pop off trailing unbeamable objects
+ (loop until (non-empty-cluster-p (car group))
+ do (push (pop group) elements)))
+ collect (nreverse group))))
+
;;; compute some important parameters of a bar
-(defun compute-bar-parameters (bar)
- (loop for element in (elements bar)
- do (when (modified-p element)
- (compute-element-parameters element)
- (setf (modified-p element) nil))))
+(defgeneric compute-bar-parameters (bar))
+
+(defmethod compute-bar-parameter (bar)
+ nil)
+
+(defmethod compute-bar-parameters ((bar melody-bar))
+ (loop for group in (beam-groups (elements bar))
+ do (compute-beam-group-parameters group)))
;;; From a list of simultaneous bars (and some other stuff), create a
;;; measure. The `other stuff' is the spacing style, which is neded
Index: gsharp/packages.lisp
diff -u gsharp/packages.lisp:1.30 gsharp/packages.lisp:1.31
--- gsharp/packages.lisp:1.30 Mon Nov 21 01:45:18 2005
+++ gsharp/packages.lisp Mon Nov 21 03:11:08 2005
@@ -103,7 +103,8 @@
#:reduced-width #:natural-width #:compress-factor
#:measure-seq-cost
#:note-position #:non-empty-cluster-p
- #:top-note #:bot-note #:top-note-pos #:bot-note-pos))
+ #:top-note #:bot-note #:top-note-pos #:bot-note-pos
+ #:beam-groups #:final-stem-direction))
(defpackage :gsharp-postscript
(:use :clim :clim-lisp)
1
0

[gsharp-cvs] CVS update: gsharp/drawing.lisp gsharp/measure.lisp gsharp/packages.lisp
by rstrandh@common-lisp.net 21 Nov '05
by rstrandh@common-lisp.net 21 Nov '05
21 Nov '05
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv27569
Modified Files:
drawing.lisp measure.lisp packages.lisp
Log Message:
Moved some more code from drawing.lisp to measure.lisp
Date: Mon Nov 21 01:45:22 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.29 gsharp/drawing.lisp:1.30
--- gsharp/drawing.lisp:1.29 Sat Nov 19 23:59:59 2005
+++ gsharp/drawing.lisp Mon Nov 21 01:45:14 2005
@@ -197,26 +197,11 @@
(final-absolute-xoffset :accessor final-absolute-element-xoffset)))
(define-added-mixin vcluster () cluster
- ((final-stem-direction :accessor final-stem-direction)
- ;; the position, in staff steps, of the top not in the element.
- (top-note-pos :accessor top-note-pos)
- ;; the position, in staff steps, of the bottom note in the element.
- (bot-note-pos :accessor bot-note-pos)))
+ ((final-stem-direction :accessor final-stem-direction)))
(define-added-mixin welement () lyrics-element
((final-absolute-xoffset :accessor final-absolute-element-xoffset)))
-;;; Compute and store some important information about a non-empty
-;;; cluster:
-;;; * the position, in staff steps of the top note.
-;;; * the position, in staff steps of the bottom note.
-(defun compute-top-bot-pos (cluster)
- (assert (non-empty-cluster-p cluster))
- (let ((top-note (top-note (notes cluster)))
- (bot-note (bot-note (notes cluster))))
- (setf (top-note-pos cluster) (note-position top-note)
- (bot-note-pos cluster) (note-position bot-note))))
-
;;; Compute and store several important pieces of information
;;; about an element:
;;; * the y-offset of the staff containing the top note.
@@ -305,11 +290,6 @@
(incf start-time (duration element)))
(elements bar))))
-;;; Return true if and only if the element is a non-empty cluster
-(defun non-empty-cluster-p (element)
- (and (typep element 'cluster)
- (not (null (notes element)))))
-
;;; Given a beam group containing at least two nonempty clusters,
;;; compute and store the final stem directions of all the non-empty
;;; clusters in the group
@@ -353,9 +333,9 @@
;;; Given a beam group, for each nonempty element, compute the top and
;;; bottom note position, and the final stem direction.
(defun compute-positions-and-stem-direction (elements)
- (loop for element in elements
- when (non-empty-cluster-p element)
- do (compute-top-bot-pos element))
+;; (loop for element in elements
+;; when (non-empty-cluster-p element)
+;; do (compute-top-bot-pos element))
(if (null (cdr elements))
(let ((element (car elements)))
(when (non-empty-cluster-p element)
Index: gsharp/measure.lisp
diff -u gsharp/measure.lisp:1.9 gsharp/measure.lisp:1.10
--- gsharp/measure.lisp:1.9 Sat Nov 19 06:16:28 2005
+++ gsharp/measure.lisp Mon Nov 21 01:45:18 2005
@@ -101,6 +101,26 @@
;;;
;;; Cluster
+(define-added-mixin rcluster () cluster
+ (;; the position, in staff steps, of the top not in the element.
+ (top-note-pos :accessor top-note-pos)
+ ;; the position, in staff steps, of the bottom note in the element.
+ (bot-note-pos :accessor bot-note-pos)))
+
+;;; Return true if and only if the element is a non-empty cluster
+(defun non-empty-cluster-p (element)
+ (and (typep element 'cluster)
+ (not (null (notes element)))))
+
+;;; Compute and store some important information about a non-empty
+;;; cluster:
+;;; * the position, in staff steps of the top note.
+;;; * the position, in staff steps of the bottom note.
+(defun compute-top-bot-pos (cluster)
+ (assert (non-empty-cluster-p cluster))
+ (setf (top-note-pos cluster) (note-position (top-note (notes cluster)))
+ (bot-note-pos cluster) (note-position (bot-note (notes cluster)))))
+
(defmethod add-note :after ((element relement) (note note))
(mark-modified element))
@@ -288,6 +308,23 @@
(append (merge 'list (butlast bar1) (butlast bar2) #'<)
(list (max (car (last bar1)) (car (last bar2))))))
+;;; compute some important parameters of an element
+(defgeneric compute-element-parameters (element))
+
+(defmethod compute-element-parameters (element)
+ nil)
+
+(defmethod compute-element-parameters ((element cluster))
+ (when (non-empty-cluster-p element)
+ (compute-top-bot-pos element)))
+
+;;; compute some important parameters of a bar
+(defun compute-bar-parameters (bar)
+ (loop for element in (elements bar)
+ do (when (modified-p element)
+ (compute-element-parameters element)
+ (setf (modified-p element) nil))))
+
;;; From a list of simultaneous bars (and some other stuff), create a
;;; measure. The `other stuff' is the spacing style, which is neded
;;; in order to compute the coefficient of the measure, the position
@@ -297,6 +334,10 @@
;;; to indicate the position of the measure in the sequence of all
;;; measures of the buffer.
(defun compute-measure (bars spacing-style seg-pos bar-pos)
+ (loop for bar in bars
+ do (when (modified-p bar)
+ (compute-bar-parameters bar)
+ (setf (modified-p bar) nil)))
(let* ((start-times (remove-duplicates
(reduce #'combine-bars
(mapcar #'start-times bars))))
Index: gsharp/packages.lisp
diff -u gsharp/packages.lisp:1.29 gsharp/packages.lisp:1.30
--- gsharp/packages.lisp:1.29 Sun Nov 20 20:17:22 2005
+++ gsharp/packages.lisp Mon Nov 21 01:45:18 2005
@@ -102,8 +102,8 @@
#:buffer-cost-method
#:reduced-width #:natural-width #:compress-factor
#:measure-seq-cost
- #:note-position
- #:top-note #:bot-note))
+ #:note-position #:non-empty-cluster-p
+ #:top-note #:bot-note #:top-note-pos #:bot-note-pos))
(defpackage :gsharp-postscript
(:use :clim :clim-lisp)
1
0

[gsharp-cvs] CVS update: gsharp/buffer.lisp gsharp/gui.lisp gsharp/packages.lisp
by rstrandh@common-lisp.net 20 Nov '05
by rstrandh@common-lisp.net 20 Nov '05
20 Nov '05
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv3313
Modified Files:
buffer.lisp gui.lisp packages.lisp
Log Message:
Patch to allow the current note to be deleted.
(thanks to Robert J. Macomber)
Date: Sun Nov 20 20:17:22 2005
Author: rstrandh
Index: gsharp/buffer.lisp
diff -u gsharp/buffer.lisp:1.26 gsharp/buffer.lisp:1.27
--- gsharp/buffer.lisp:1.26 Wed Nov 16 02:27:34 2005
+++ gsharp/buffer.lisp Sun Nov 20 20:17:22 2005
@@ -352,6 +352,24 @@
(setf notes (delete note notes :test #'eq)))
(setf cluster nil)))
+(defun lower-bound (bound list &key (test #'<))
+ "Return the `largest' element in the sorted list LIST such that
+\(TEST element BOUND) is true."
+ (let ((last nil))
+ (dolist (item list)
+ (unless (funcall test item bound)
+ (return-from lower-bound last))
+ (setf last item))
+ last))
+
+(defmethod cluster-lower-bound ((cluster cluster) (bound note))
+ (with-slots (notes) cluster
+ (lower-bound bound notes :test #'note-less)))
+
+(defmethod cluster-upper-bound ((cluster cluster) (bound note))
+ (with-slots (notes) cluster
+ (lower-bound bound (reverse notes) :test (complement #'note-less))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Rest
Index: gsharp/gui.lisp
diff -u gsharp/gui.lisp:1.43 gsharp/gui.lisp:1.44
--- gsharp/gui.lisp:1.43 Mon Nov 14 21:26:14 2005
+++ gsharp/gui.lisp Sun Nov 20 20:17:22 2005
@@ -812,6 +812,19 @@
(add-note cluster new-note)
(setf *current-note* new-note)))
+(define-gsharp-command com-remove-current-note ()
+ (let ((cluster (cur-cluster))
+ (note (cur-note)))
+ (when note
+ (remove-note note)
+ ;; try to set current-note to the highest note lower than the
+ ;; removed note. If that fails, to the lowest note higher than
+ ;; it.
+ (setf *current-note* (or (cluster-lower-bound cluster note)
+ (cluster-upper-bound cluster note)))
+ (unless *current-note*
+ (com-erase-element)))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; motion by element
Index: gsharp/packages.lisp
diff -u gsharp/packages.lisp:1.28 gsharp/packages.lisp:1.29
--- gsharp/packages.lisp:1.28 Sat Nov 19 06:16:28 2005
+++ gsharp/packages.lisp Sun Nov 20 20:17:22 2005
@@ -45,6 +45,7 @@
#:notehead #:rbeams #:lbeams #:dots #:element
#:melody-element #:notes
#:add-note #:find-note #:remove-note
+ #:cluster-upper-bound #:cluster-lower-bound
#:cluster #:make-cluster
#:rest #:make-rest
#:lyrics-element #:make-lyrics-element
1
0
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv10771
Modified Files:
drawing.lisp
Log Message:
Moved final stem direction and final top- and bottom positions to a
cluster mixin.
Renamed some parameters to correspond to a more specific type.
Added asserts for documentation and to simplify debugging.
Fixed spelling errors, most of which were caused by automatic completion.
Date: Sat Nov 19 23:59:59 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.28 gsharp/drawing.lisp:1.29
--- gsharp/drawing.lisp:1.28 Sat Nov 19 22:59:25 2005
+++ gsharp/drawing.lisp Sat Nov 19 23:59:59 2005
@@ -181,42 +181,41 @@
buffer)))))
(define-added-mixin velement () melody-element
- ((final-stem-direction :accessor final-stem-direction)
- ;; the position, in staff steps, of the end of the stem
+ (;; the position, in staff steps, of the end of the stem
;; that is not attached to a note, independent of the
;; staff on which it is located
(final-stem-position :accessor final-stem-position)
;; the yoffset of the staff relative to which the end of the
;; stem is located
(final-stem-yoffset :initform 0 :accessor final-stem-yoffset)
- ;; the position, in staff steps, of the bottom note in the element.
- (bot-note-pos :accessor bot-note-pos)
;; the yoffset of the staff that contains the top note of
;; the element
(top-note-staff-yoffset :accessor top-note-staff-yoffset)
- ;; the position, in staff steps, of the top not in the element.
- (top-note-pos :accessor top-note-pos)
;; the yoffset of the staff that contains the bottom note of
;; the element
(bot-note-staff-yoffset :accessor bot-note-staff-yoffset)
(final-absolute-xoffset :accessor final-absolute-element-xoffset)))
+(define-added-mixin vcluster () cluster
+ ((final-stem-direction :accessor final-stem-direction)
+ ;; the position, in staff steps, of the top not in the element.
+ (top-note-pos :accessor top-note-pos)
+ ;; the position, in staff steps, of the bottom note in the element.
+ (bot-note-pos :accessor bot-note-pos)))
+
(define-added-mixin welement () lyrics-element
((final-absolute-xoffset :accessor final-absolute-element-xoffset)))
-;;; Compute and store several important pieces of information
-;;; about an element:
+;;; Compute and store some important information about a non-empty
+;;; cluster:
;;; * the position, in staff steps of the top note.
;;; * the position, in staff steps of the bottom note.
-(defun compute-top-bot-pos (element)
- (if (and (typep element 'cluster) (notes element))
- (let ((top-note (top-note (notes element)))
- (bot-note (bot-note (notes element))))
- (setf (top-note-pos element) (note-position top-note)
- (bot-note-pos element) (note-position bot-note)))
-;; (setf (top-note-pos element) 4
-;; (bot-note-pos element) 4)
- ))
+(defun compute-top-bot-pos (cluster)
+ (assert (non-empty-cluster-p cluster))
+ (let ((top-note (top-note (notes cluster)))
+ (bot-note (bot-note (notes cluster))))
+ (setf (top-note-pos cluster) (note-position top-note)
+ (bot-note-pos cluster) (note-position bot-note))))
;;; Compute and store several important pieces of information
;;; about an element:
@@ -232,14 +231,15 @@
(top-note-staff-yoffset element) 0
(bot-note-staff-yoffset element) 0)))
-;;; Compute and store the final stem direction of an element that is
-;;; not beamed together with any other elements.
-(defun compute-final-stem-direction (element)
- (setf (final-stem-direction element)
- (if (or (eq (stem-direction element) :up) (eq (stem-direction element) :down))
- (stem-direction element)
- (let ((top-note-pos (top-note-pos element))
- (bot-note-pos (bot-note-pos element)))
+;;; Given a non-empty cluster that is not beamed together with any
+;;; other clusters, compute and store its final stem direction.
+(defun compute-final-stem-direction (cluster)
+ (assert (non-empty-cluster-p cluster))
+ (setf (final-stem-direction cluster)
+ (if (or (eq (stem-direction cluster) :up) (eq (stem-direction cluster) :down))
+ (stem-direction cluster)
+ (let ((top-note-pos (top-note-pos cluster))
+ (bot-note-pos (bot-note-pos cluster)))
(if (>= (- top-note-pos 4)
(- 4 bot-note-pos))
:down
@@ -306,25 +306,27 @@
(elements bar))))
;;; Return true if and only if the element is a non-empty cluster
-(defun non-empty-custer-p (element)
+(defun non-empty-cluster-p (element)
(and (typep element 'cluster)
(not (null (notes element)))))
-;;; Compute and store the final stem directions of all the elements of
-;;; a beam group with at least two elements in it.
+;;; Given a beam group containing at least two nonempty clusters,
+;;; compute and store the final stem directions of all the non-empty
+;;; clusters in the group
(defun compute-final-stem-directions (elements)
(let ((stem-direction (if (not (eq (stem-direction (car elements)) :auto))
(stem-direction (car elements))
(let ((top-note-pos
(loop for element in elements
- when (non-empty-custer-p element)
+ when (non-empty-cluster-p element)
maximize (top-note-pos element)))
(bot-note-pos
(loop for element in elements
- when (non-empty-custer-p element)
+ when (non-empty-cluster-p element)
minimize (top-note-pos element))))
(if (>= (- top-note-pos 4) (- 4 bot-note-pos)) :down :up)))))
(loop for element in elements
+ when (non-empty-cluster-p element)
do (setf (final-stem-direction element) stem-direction))))
;;; the dominating note among a bunch of notes is the
@@ -348,16 +350,16 @@
(if (< (pitch n1) (pitch n2)) n1 n2))))))
notes))
-;;; Given a list of elements to be beamed together, for each element,
-;;; compute the top and bottom note position, and the final stem
-;;; direction.
+;;; Given a beam group, for each nonempty element, compute the top and
+;;; bottom note position, and the final stem direction.
(defun compute-positions-and-stem-direction (elements)
- (mapc #'compute-top-bot-pos elements)
+ (loop for element in elements
+ when (non-empty-cluster-p element)
+ do (compute-top-bot-pos element))
(if (null (cdr elements))
(let ((element (car elements)))
- (when (or (typep element 'rest) (notes element))
- (when (typep element 'cluster)
- (compute-final-stem-direction element))))
+ (when (non-empty-cluster-p element)
+ (compute-final-stem-direction element)))
(compute-final-stem-directions elements)))
(defun draw-beam-group (pane elements)
@@ -365,14 +367,14 @@
(if (null (cdr elements))
(let ((element (car elements)))
(when (or (typep element 'rest) (notes element))
- (when (typep element 'cluster)
+ (when (non-empty-cluster-p element)
(compute-final-stem-direction element)
(compute-stem-length element))
(draw-element pane element (final-absolute-element-xoffset element))))
(let* ((stem-direction (final-stem-direction (car elements)))
(dominating-notes
(loop for element in elements
- when (non-empty-custer-p element)
+ when (non-empty-cluster-p element)
collect (dominating-note (notes element) stem-direction)))
(dominating-staff
(staff (dominating-note dominating-notes stem-direction)))
@@ -438,17 +440,17 @@
(loop until (null elements) do
(setf group (list (car elements))
elements (cdr elements))
- (when (and (non-empty-custer-p (car group))
+ (when (and (non-empty-cluster-p (car group))
(plusp (rbeams (car group))))
(loop while (and (not (null elements))
(or (not (typep (car elements) 'cluster))
(null (notes (car elements)))
(plusp (lbeams (car elements)))))
do (push (pop elements) group)
- until (and (non-empty-custer-p (car group))
+ until (and (non-empty-cluster-p (car group))
(zerop (rbeams (car group)))))
;; pop off trailing unbeamable objects
- (loop until (non-empty-custer-p (car group))
+ (loop until (non-empty-cluster-p (car group))
do (push (pop group) elements)))
collect (nreverse group))))
@@ -730,7 +732,7 @@
;;; 6. If necessary, draw ledger lines for notes in a group
;;; 7. Draw the stem, if any
(defmethod draw-element (pane (element cluster) x &optional (flags t))
- (when (notes element)
+ (unless (null (notes element))
(let ((direction (final-stem-direction element))
(stem-pos (final-stem-position element))
(stem-yoffset (final-stem-yoffset element))
1
0
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv6376
Modified Files:
drawing.lisp
Log Message:
Be more precise when computing beam groups.
It is now possible to have a rest or an empty cluster in the middle
of a beam group.
Date: Sat Nov 19 22:59:26 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.27 gsharp/drawing.lisp:1.28
--- gsharp/drawing.lisp:1.27 Sat Nov 19 06:16:28 2005
+++ gsharp/drawing.lisp Sat Nov 19 22:59:25 2005
@@ -214,8 +214,9 @@
(bot-note (bot-note (notes element))))
(setf (top-note-pos element) (note-position top-note)
(bot-note-pos element) (note-position bot-note)))
- (setf (top-note-pos element) 4
- (bot-note-pos element) 4)))
+;; (setf (top-note-pos element) 4
+;; (bot-note-pos element) 4)
+ ))
;;; Compute and store several important pieces of information
;;; about an element:
@@ -304,13 +305,24 @@
(incf start-time (duration element)))
(elements bar))))
+;;; Return true if and only if the element is a non-empty cluster
+(defun non-empty-custer-p (element)
+ (and (typep element 'cluster)
+ (not (null (notes element)))))
+
;;; Compute and store the final stem directions of all the elements of
;;; a beam group with at least two elements in it.
(defun compute-final-stem-directions (elements)
(let ((stem-direction (if (not (eq (stem-direction (car elements)) :auto))
(stem-direction (car elements))
- (let ((top-note-pos (reduce #'max elements :key #'top-note-pos))
- (bot-note-pos (reduce #'min elements :key #'bot-note-pos)))
+ (let ((top-note-pos
+ (loop for element in elements
+ when (non-empty-custer-p element)
+ maximize (top-note-pos element)))
+ (bot-note-pos
+ (loop for element in elements
+ when (non-empty-custer-p element)
+ minimize (top-note-pos element))))
(if (>= (- top-note-pos 4) (- 4 bot-note-pos)) :down :up)))))
(loop for element in elements
do (setf (final-stem-direction element) stem-direction))))
@@ -359,8 +371,9 @@
(draw-element pane element (final-absolute-element-xoffset element))))
(let* ((stem-direction (final-stem-direction (car elements)))
(dominating-notes
- (mapcar (lambda (e) (dominating-note (notes e) stem-direction))
- elements))
+ (loop for element in elements
+ when (non-empty-custer-p element)
+ collect (dominating-note (notes element) stem-direction)))
(dominating-staff
(staff (dominating-note dominating-notes stem-direction)))
(positions (mapcar (lambda (n)
@@ -408,17 +421,35 @@
(draw-line* pane x (- (score-pane:staff-step -4)) x (- (score-pane:staff-step 12)) :ink +red+))
;;; Given a list of the elements of a bar, return a list of beam
-;;; groups, where each beam group is a list of elements that are
-;;; beamed together
+;;; groups. A beam group is defined to be either a singleton list or
+;;; a list with more than one element. In the case of a singleton,
+;;; the element is either a non-cluster, an empty cluster, a cluster
+;;; that does not beam to the right, or a cluster that does beam to
+;;; the right, but either it is the last cluster in the bar, or the
+;;; first following cluster in the bar does not beam to the left. In
+;;; the case of a list with more than one element, the first element
+;;; is a cluster that beams to the right, the last element is a
+;;; cluster that beams to the left, and all other clusters in the list
+;;; beam both to the left and to the right. Notice that in the last
+;;; case, elements other than the first and the last can be
+;;; non-clusters, or empty clusters.
(defun beam-groups (elements)
(let ((group '()))
- (loop while (not (null elements)) do
- (setf group '())
- (push (pop elements) group)
- (loop while (and (not (null elements))
- (> (rbeams (car group)) 0)
- (> (lbeams (car elements)) 0))
- do (push (pop elements) group))
+ (loop until (null elements) do
+ (setf group (list (car elements))
+ elements (cdr elements))
+ (when (and (non-empty-custer-p (car group))
+ (plusp (rbeams (car group))))
+ (loop while (and (not (null elements))
+ (or (not (typep (car elements) 'cluster))
+ (null (notes (car elements)))
+ (plusp (lbeams (car elements)))))
+ do (push (pop elements) group)
+ until (and (non-empty-custer-p (car group))
+ (zerop (rbeams (car group)))))
+ ;; pop off trailing unbeamable objects
+ (loop until (non-empty-custer-p (car group))
+ do (push (pop group) elements)))
collect (nreverse group))))
(defmethod draw-bar (pane (bar melody-bar) x width time-alist draw-cursor)
1
0

[gsharp-cvs] CVS update: gsharp/drawing.lisp gsharp/measure.lisp gsharp/packages.lisp
by rstrandh@common-lisp.net 19 Nov '05
by rstrandh@common-lisp.net 19 Nov '05
19 Nov '05
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv30117
Modified Files:
drawing.lisp measure.lisp packages.lisp
Log Message:
Started moving code from drawing.lisp to measure.lisp in order to
prepare for computing physical widths earlier.
Date: Sat Nov 19 06:16:28 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.26 gsharp/drawing.lisp:1.27
--- gsharp/drawing.lisp:1.26 Fri Nov 18 20:41:44 2005
+++ gsharp/drawing.lisp Sat Nov 19 06:16:28 2005
@@ -204,36 +204,6 @@
(define-added-mixin welement () lyrics-element
((final-absolute-xoffset :accessor final-absolute-element-xoffset)))
-;;; given a list of notes, return the one that is at the top
-(defun top-note (notes)
- (reduce (lambda (n1 n2)
- (cond ((< (staff-yoffset (staff n1))
- (staff-yoffset (staff n2)))
- n1)
- ((> (staff-yoffset (staff n1))
- (staff-yoffset (staff n2)))
- n2)
- ((> (note-position n1)
- (note-position n2))
- n1)
- (t n2)))
- notes))
-
-;;; given a list of notes, return the one that is at the bottom
-(defun bot-note (notes)
- (reduce (lambda (n1 n2)
- (cond ((> (staff-yoffset (staff n1))
- (staff-yoffset (staff n2)))
- n1)
- ((< (staff-yoffset (staff n1))
- (staff-yoffset (staff n2)))
- n2)
- ((< (note-position n1)
- (note-position n2))
- n1)
- (t n2)))
- notes))
-
;;; Compute and store several important pieces of information
;;; about an element:
;;; * the position, in staff steps of the top note.
@@ -492,12 +462,6 @@
(defmethod note-difference ((note1 note) (note2 note))
(- (pitch note1) (pitch note2)))
-
-(defmethod note-position ((note note))
- (let ((clef (clef (staff note))))
- (+ (- (pitch note)
- (ecase (name clef) (:treble 32) (:bass 24) (:c 35)))
- (lineno clef))))
(defun draw-ledger-lines (pane x notes)
(score-pane:with-vertical-score-position (pane (staff-yoffset (staff (car notes))))
Index: gsharp/measure.lisp
diff -u gsharp/measure.lisp:1.8 gsharp/measure.lisp:1.9
--- gsharp/measure.lisp:1.8 Fri Nov 18 02:59:27 2005
+++ gsharp/measure.lisp Sat Nov 19 06:16:28 2005
@@ -8,6 +8,13 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
+;;; Staff
+
+(define-added-mixin rstaff () staff
+ ((rank :accessor staff-rank)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;
;;; Note
(defrclass rnote note
@@ -54,6 +61,42 @@
(declare (ignore dots))
(mark-modified element))
+(defmethod note-position ((note note))
+ (let ((clef (clef (staff note))))
+ (+ (- (pitch note)
+ (ecase (name clef) (:treble 32) (:bass 24) (:c 35)))
+ (lineno clef))))
+
+;;; given a list of notes, return the one that is at the top
+(defun top-note (notes)
+ (reduce (lambda (n1 n2)
+ (cond ((< (staff-rank (staff n1))
+ (staff-rank (staff n2)))
+ n1)
+ ((> (staff-rank (staff n1))
+ (staff-rank (staff n2)))
+ n2)
+ ((> (note-position n1)
+ (note-position n2))
+ n1)
+ (t n2)))
+ notes))
+
+;;; given a list of notes, return the one that is at the bottom
+(defun bot-note (notes)
+ (reduce (lambda (n1 n2)
+ (cond ((> (staff-rank (staff n1))
+ (staff-rank (staff n2)))
+ n1)
+ ((< (staff-rank (staff n1))
+ (staff-rank (staff n2)))
+ n2)
+ ((< (note-position n1)
+ (note-position n2))
+ n1)
+ (t n2)))
+ notes))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Cluster
@@ -369,6 +412,10 @@
(defmethod recompute-measures ((buffer rbuffer))
(when (modified-p buffer)
+ ;; number the staves
+ (loop for staff in (staves buffer)
+ for i from 0
+ do (setf (staff-rank staff) i))
;; for now, invalidate everything
(mapc #'adjust-lowpos-highpos (segments buffer))
;; initialize cost method from buffer-specific style parameters
Index: gsharp/packages.lisp
diff -u gsharp/packages.lisp:1.27 gsharp/packages.lisp:1.28
--- gsharp/packages.lisp:1.27 Mon Nov 14 15:27:32 2005
+++ gsharp/packages.lisp Sat Nov 19 06:16:28 2005
@@ -100,7 +100,9 @@
#:recompute-measures #:measure-cost-method #:make-measure-cost-method
#:buffer-cost-method
#:reduced-width #:natural-width #:compress-factor
- #:measure-seq-cost))
+ #:measure-seq-cost
+ #:note-position
+ #:top-note #:bot-note))
(defpackage :gsharp-postscript
(:use :clim :clim-lisp)
1
0
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv18752
Modified Files:
drawing.lisp
Log Message:
mostly renaming
Date: Fri Nov 18 20:41:44 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.25 gsharp/drawing.lisp:1.26
--- gsharp/drawing.lisp:1.25 Fri Nov 18 18:53:40 2005
+++ gsharp/drawing.lisp Fri Nov 18 20:41:44 2005
@@ -66,14 +66,14 @@
;;; computed from the x offset of the cluster of the note and the
;;; relative x offset of the note with respect to the cluster.
(defun final-absolute-note-xoffset (note)
- (+ (element-xpos (cluster note)) (final-relative-note-xoffset note)))
+ (+ (final-absolute-element-xoffset (cluster note)) (final-relative-note-xoffset note)))
;;; Return the final absolute x offset of the accidental of a note.
;;; This value is computed from the x offset of the cluster of the
;;; note and the relative x offset of the accidental of the note with
;;; respect to the cluster.
(defun final-absolute-accidental-xoffset (note)
- (+ (element-xpos (cluster note)) (final-relative-accidental-xoffset note)))
+ (+ (final-absolute-element-xoffset (cluster note)) (final-relative-accidental-xoffset note)))
(defun line-cost (measures method)
(reduce (lambda (x y) (combine-cost method x y)) measures :initial-value nil))
@@ -199,10 +199,10 @@
;; the yoffset of the staff that contains the bottom note of
;; the element
(bot-note-staff-yoffset :accessor bot-note-staff-yoffset)
- (xpos :accessor element-xpos)))
+ (final-absolute-xoffset :accessor final-absolute-element-xoffset)))
(define-added-mixin welement () lyrics-element
- ((xpos :accessor element-xpos)))
+ ((final-absolute-xoffset :accessor final-absolute-element-xoffset)))
;;; given a list of notes, return the one that is at the top
(defun top-note (notes)
@@ -263,7 +263,7 @@
;;; Compute and store the final stem direction of an element that is
;;; not beamed together with any other elements.
-(defun compute-stem-direction (element)
+(defun compute-final-stem-direction (element)
(setf (final-stem-direction element)
(if (or (eq (stem-direction element) :up) (eq (stem-direction element) :down))
(stem-direction element)
@@ -327,7 +327,7 @@
(let (;;(time-alist (time-alist bar))
(start-time 0))
(mapc (lambda (element)
- (setf (element-xpos element)
+ (setf (final-absolute-element-xoffset element)
(round (+ x
(score-pane:staff-step (xoffset element))
(cdr (assoc start-time time-alist)))))
@@ -336,7 +336,7 @@
;;; Compute and store the final stem directions of all the elements of
;;; a beam group with at least two elements in it.
-(defun compute-stem-directions (elements)
+(defun compute-final-stem-directions (elements)
(let ((stem-direction (if (not (eq (stem-direction (car elements)) :auto))
(stem-direction (car elements))
(let ((top-note-pos (reduce #'max elements :key #'top-note-pos))
@@ -375,8 +375,8 @@
(let ((element (car elements)))
(when (or (typep element 'rest) (notes element))
(when (typep element 'cluster)
- (compute-stem-direction element))))
- (compute-stem-directions elements)))
+ (compute-final-stem-direction element))))
+ (compute-final-stem-directions elements)))
(defun draw-beam-group (pane elements)
(mapc #'compute-top-bot-yoffset elements)
@@ -384,9 +384,9 @@
(let ((element (car elements)))
(when (or (typep element 'rest) (notes element))
(when (typep element 'cluster)
- (compute-stem-direction element)
+ (compute-final-stem-direction element)
(compute-stem-length element))
- (draw-element pane element (element-xpos element))))
+ (draw-element pane element (final-absolute-element-xoffset element))))
(let* ((stem-direction (final-stem-direction (car elements)))
(dominating-notes
(mapcar (lambda (e) (dominating-note (notes e) stem-direction))
@@ -399,24 +399,24 @@
(if (eq stem-direction :up) -1000 1000)))
dominating-notes))
(x-positions (mapcar (lambda (element)
- (/ (element-xpos element) (score-pane:staff-step 1)))
+ (/ (final-absolute-element-xoffset element) (score-pane:staff-step 1)))
elements))
(beaming (beaming-single (mapcar #'list positions x-positions) stem-direction)))
(destructuring-bind ((ss1 . offset1) (ss2 . offset2)) beaming
(let* ((y1 (+ ss1 (* 1/2 offset1)))
(y2 (+ ss2 (* 1/2 offset2)))
- (x1 (element-xpos (car elements)))
- (x2 (element-xpos (car (last elements))))
+ (x1 (final-absolute-element-xoffset (car elements)))
+ (x2 (final-absolute-element-xoffset (car (last elements))))
(slope (/ (- y2 y1) (- x2 x1))))
(if (eq stem-direction :up)
(loop for element in elements do
(setf (final-stem-position element)
- (+ y1 (* slope (- (element-xpos element) x1))))
+ (+ y1 (* slope (- (final-absolute-element-xoffset element) x1))))
(setf (final-stem-yoffset element)
(staff-yoffset dominating-staff)))
(loop for element in elements do
(setf (final-stem-position element)
- (+ y1 (* slope (- (element-xpos element) x1))))
+ (+ y1 (* slope (- (final-absolute-element-xoffset element) x1))))
(setf (final-stem-yoffset element)
(staff-yoffset dominating-staff)))))
(score-pane:with-vertical-score-position (pane (staff-yoffset dominating-staff))
@@ -424,15 +424,15 @@
(score-pane:with-notehead-right-offsets (right up)
(declare (ignore up))
(score-pane:draw-beam pane
- (+ (element-xpos (car elements)) right) ss1 offset1
- (+ (element-xpos (car (last elements))) right) ss2 offset2))
+ (+ (final-absolute-element-xoffset (car elements)) right) ss1 offset1
+ (+ (final-absolute-element-xoffset (car (last elements))) right) ss2 offset2))
(score-pane:with-notehead-left-offsets (left down)
(declare (ignore down))
(score-pane:draw-beam pane
- (+ (element-xpos (car elements)) left) ss1 offset1
- (+ (element-xpos (car (last elements))) left) ss2 offset2))))
+ (+ (final-absolute-element-xoffset (car elements)) left) ss1 offset1
+ (+ (final-absolute-element-xoffset (car (last elements))) left) ss2 offset2))))
(loop for element in elements do
- (draw-element pane element (element-xpos element) nil))))))
+ (draw-element pane element (final-absolute-element-xoffset element) nil))))))
(defun draw-cursor (pane x)
(draw-line* pane x (- (score-pane:staff-step -4)) x (- (score-pane:staff-step 12)) :ink +red+))
@@ -461,28 +461,28 @@
(if (null (cursor-element *cursor*))
(funcall draw-cursor (/ (+ (if (null elements)
x
- (element-xpos (car (last elements))))
+ (final-absolute-element-xoffset (car (last elements))))
x width) 2))
(loop for element in elements
- and xx = x then (element-xpos element) do
+ and xx = x then (final-absolute-element-xoffset element) do
(when (eq (cursor-element *cursor*) element)
- (funcall draw-cursor (/ (+ xx (element-xpos element)) 2))))))))
+ (funcall draw-cursor (/ (+ xx (final-absolute-element-xoffset element)) 2))))))))
(defmethod draw-bar (pane (bar lyrics-bar) x width time-alist draw-cursor)
(compute-element-x-positions bar x time-alist)
(let ((elements (elements bar)))
(loop for element in elements
- do (draw-element pane element (element-xpos element)))
+ do (draw-element pane element (final-absolute-element-xoffset element)))
(when (eq (cursor-bar *cursor*) bar)
(if (null (cursor-element *cursor*))
(funcall draw-cursor (/ (+ (if (null elements)
x
- (element-xpos (car (last elements))))
+ (final-absolute-element-xoffset (car (last elements))))
x width) 2))
(loop for element in elements
- and xx = x then (element-xpos element) do
+ and xx = x then (final-absolute-element-xoffset element) do
(when (eq (cursor-element *cursor*) element)
- (funcall draw-cursor (/ (+ xx (element-xpos element)) 2))))))))
+ (funcall draw-cursor (/ (+ xx (final-absolute-element-xoffset element)) 2))))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
1
0
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv11018
Modified Files:
drawing.lisp
Log Message:
Accidentals are now placed relative to the cluster.
Also, more renaming to improve maintainability.
Date: Fri Nov 18 18:53:41 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.24 gsharp/drawing.lisp:1.25
--- gsharp/drawing.lisp:1.24 Fri Nov 18 18:36:36 2005
+++ gsharp/drawing.lisp Fri Nov 18 18:53:40 2005
@@ -5,10 +5,13 @@
(define-added-mixin dnote () note
(;; the relative x offset of the note with respect to the cluster
- (final-relative-xoffset :accessor final-relative-xoffset)
+ (final-relative-note-xoffset :accessor final-relative-note-xoffset)
(final-accidental :initform nil :accessor final-accidental)
- ;; nil indicates that accidental has not been placed yet
- (accidental-position :initform nil :accessor accidental-position)))
+ ;; The relative x offset of the accidental of the note with respect
+ ;; to the cluster. A value of nil indicates that accidental has
+ ;; not been placed yet
+ (final-relative-accidental-xoffset :initform nil
+ :accessor final-relative-accidental-xoffset)))
(define-presentation-method present
(object (type score-pane:clef) stream (view textual-view) &key)
@@ -59,18 +62,18 @@
:x1 ,x1 :x2 ,x2)
:stream pane))
-;;; Return the final x offset of a note. This value is computed from
-;;; the x offset of the cluster of the note and the relative x offset
-;;; of the note with respect to the cluster.
-(defun final-note-xoffset (note)
- (+ (element-xpos (cluster note)) (final-relative-xoffset note)))
-
-;;; Return the final x offset of the accidental of a note. This value
-;;; is computed from the x offset of the cluster of the note and the
-;;; relative x offset of the accidental of the note with respect to
-;;; the cluster.
-(defun final-accidental-xoffset (note)
- (+ (element-xpos (cluster note)) (accidental-position note)))
+;;; Return the final absolute x offset of a note. This value is
+;;; computed from the x offset of the cluster of the note and the
+;;; relative x offset of the note with respect to the cluster.
+(defun final-absolute-note-xoffset (note)
+ (+ (element-xpos (cluster note)) (final-relative-note-xoffset note)))
+
+;;; Return the final absolute x offset of the accidental of a note.
+;;; This value is computed from the x offset of the cluster of the
+;;; note and the relative x offset of the accidental of the note with
+;;; respect to the cluster.
+(defun final-absolute-accidental-xoffset (note)
+ (+ (element-xpos (cluster note)) (final-relative-accidental-xoffset note)))
(defun line-cost (measures method)
(reduce (lambda (x y) (combine-cost method x y)) measures :initial-value nil))
@@ -528,12 +531,12 @@
(score-pane:with-vertical-score-position (pane (staff-yoffset (staff note)))
(score-pane:draw-notehead pane notehead x pos)
(when (final-accidental note)
- (score-pane:draw-accidental pane (final-accidental note) (accidental-position note) pos))
+ (score-pane:draw-accidental pane (final-accidental note) (final-absolute-accidental-xoffset note) pos))
(draw-dots pane nb-dots x pos)))
(defun draw-notes (pane notes dots notehead)
(loop for note in notes do
- (draw-note pane note notehead dots (final-note-xoffset note) (note-position note))))
+ (draw-note pane note notehead dots (final-absolute-note-xoffset note) (note-position note))))
;;; given a group of notes (i.e. a list of notes, all displayed on the
;;; same staff, compute their final x offsets. This is a question of
@@ -541,14 +544,14 @@
;;; the stem. The head-note of the stem goes to the left of an
;;; up-stem and to the right of a down-stem. The x offset of a cluster
;;; gives the x position of the head-note.
-(defun compute-final-relative-xoffsets (group direction)
+(defun compute-final-relative-note-xoffsets (group direction)
(setf group (sort (copy-list group)
(if (eq direction :up)
(lambda (x y) (< (note-position x) (note-position y)))
(lambda (x y) (> (note-position x) (note-position y))))))
(score-pane:with-suspended-note-offset offset
;; the first element of the group is the head-note
- (setf (final-relative-xoffset (car group)) 0)
+ (setf (final-relative-note-xoffset (car group)) 0)
;; OFFSET is a positive quantity that determines the
;; absolute difference between the x offset of a suspended
;; note and that of a normally positioned note.
@@ -560,7 +563,7 @@
;; if adjacent notes are just one staff step apart,
;; then one must be suspended.
(dx (if (= (abs (- pos old-pos)) 1) offset 0)))
- (setf (final-relative-xoffset note) dx)
+ (setf (final-relative-note-xoffset note) dx)
;; go back to ordinary offset
(when (= (abs (- pos old-pos)) 1)
(setf note old-note))))))
@@ -577,7 +580,7 @@
(accidentals note)))))
(defun element-has-suspended-notes (element)
- (not (apply #'= (mapcar #'final-relative-xoffset (notes element)))))
+ (not (apply #'= (mapcar #'final-relative-note-xoffset (notes element)))))
;;; table of x offsets (in staff steps) of accendentals.
;;; The first index represents a notehead or a type of accidental.
@@ -653,16 +656,16 @@
;;; of the accidental of the first note. If the second note has
;;; an accidental, but that has not been given a final x offset, then
;;; use the x offset of the notehead instead.
-(defun accidental-xoffset (note1 note2 staff-step)
+(defun accidental-relative-xoffset (note1 note2 staff-step)
(let* ((acc1 (final-accidental note1))
(pos1 (note-position note1))
(acc2 (if (and (final-accidental note2)
- (accidental-position note2))
+ (final-relative-accidental-xoffset note2))
(final-accidental note2)
:notehead))
(pos2 (note-position note2))
- (xpos2 (or (accidental-position note2)
- (final-note-xoffset note2))))
+ (xpos2 (or (final-relative-accidental-xoffset note2)
+ (final-relative-note-xoffset note2))))
(- xpos2 (* staff-step (accidental-distance acc1 pos1 acc2 pos2)))))
;;; given a note and a list of notes, compute x offset of the accidental
@@ -670,7 +673,7 @@
;;; for the accidental of the note not to overlap any of the others,
;;; we must use the minimum of all the x offsets thus computed.
(defun accidental-min-xoffset (note1 notes staff-step)
- (reduce #'min notes :key (lambda (note) (accidental-xoffset note1 note staff-step))))
+ (reduce #'min notes :key (lambda (note) (accidental-relative-xoffset note1 note staff-step))))
;;; given a list of notes that have accidentals to place, and a list of
;;; notes that either have no accidentals or with already-placed accidentals,
@@ -684,32 +687,32 @@
notes-with-accidentals))
;;; for each note in a list of notes, if it has an accidental, compute
-;;; the position of that accidental and store it in the note.
-(defun compute-final-accidental-positions (notes x final-stem-direction)
+;;; the final relative x offset of that accidental and store it in the note.
+(defun compute-final-relative-accidental-xoffset (notes x final-stem-direction)
(let* ((staff-step (score-pane:staff-step 1))
;; sort the notes from top to bottom
(notes (sort (copy-list notes)
(lambda (x y) (> (note-position x) (note-position y)))))
(notes-with-accidentals (remove-if-not #'final-accidental notes)))
;; initially, no accidental has been placed
- (loop for note in notes do (setf (accidental-position note) nil))
+ (loop for note in notes do (setf (final-relative-accidental-xoffset note) nil))
(when (eq final-stem-direction :up)
;; when the stem direction is :up and there is a suspended note
;; i.e., one to the right of the stem, then the accidental of the topmost
;; suspended note is placed first.
(let ((first-suspended-note
- (find x notes-with-accidentals :test #'/= :key #'final-relative-xoffset)))
+ (find x notes-with-accidentals :test #'/= :key #'final-relative-note-xoffset)))
(when first-suspended-note
(setf notes-with-accidentals
(remove first-suspended-note notes-with-accidentals))
- (setf (accidental-position first-suspended-note)
+ (setf (final-relative-accidental-xoffset first-suspended-note)
(accidental-min-xoffset first-suspended-note notes staff-step)))))
;; place remaining accidentals
(loop while notes-with-accidentals
do (let ((choice (best-accidental notes-with-accidentals notes staff-step)))
(setf notes-with-accidentals
(remove choice notes-with-accidentals))
- (setf (accidental-position choice)
+ (setf (final-relative-accidental-xoffset choice)
(accidental-min-xoffset choice notes staff-step))))))
;;; given a list of notes, group them so that every note in the group
@@ -741,9 +744,9 @@
(score-pane:with-vertical-score-position (pane stem-yoffset)
(draw-flags pane element x direction stem-pos)))
(loop for group in groups do
- (compute-final-relative-xoffsets group direction)
+ (compute-final-relative-note-xoffsets group direction)
(compute-final-accidentals group)
- (compute-final-accidental-positions group x direction)
+ (compute-final-relative-accidental-xoffset group x direction)
(draw-notes pane group (dots element) (notehead element))
(draw-ledger-lines pane x group))
(unless (eq (notehead element) :whole)
1
0
Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv9841
Modified Files:
drawing.lisp
Log Message:
renaming, mostly.
Date: Fri Nov 18 18:36:37 2005
Author: rstrandh
Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.23 gsharp/drawing.lisp:1.24
--- gsharp/drawing.lisp:1.23 Fri Nov 18 17:59:53 2005
+++ gsharp/drawing.lisp Fri Nov 18 18:36:36 2005
@@ -62,9 +62,16 @@
;;; Return the final x offset of a note. This value is computed from
;;; the x offset of the cluster of the note and the relative x offset
;;; of the note with respect to the cluster.
-(defun final-xoffset (note)
+(defun final-note-xoffset (note)
(+ (element-xpos (cluster note)) (final-relative-xoffset note)))
+;;; Return the final x offset of the accidental of a note. This value
+;;; is computed from the x offset of the cluster of the note and the
+;;; relative x offset of the accidental of the note with respect to
+;;; the cluster.
+(defun final-accidental-xoffset (note)
+ (+ (element-xpos (cluster note)) (accidental-position note)))
+
(defun line-cost (measures method)
(reduce (lambda (x y) (combine-cost method x y)) measures :initial-value nil))
@@ -526,7 +533,7 @@
(defun draw-notes (pane notes dots notehead)
(loop for note in notes do
- (draw-note pane note notehead dots (final-xoffset note) (note-position note))))
+ (draw-note pane note notehead dots (final-note-xoffset note) (note-position note))))
;;; given a group of notes (i.e. a list of notes, all displayed on the
;;; same staff, compute their final x offsets. This is a question of
@@ -646,8 +653,7 @@
;;; of the accidental of the first note. If the second note has
;;; an accidental, but that has not been given a final x offset, then
;;; use the x offset of the notehead instead.
-;;; (this funtction should probably be renamed accidental-xoffset)
-(defun accidental-xpos (note1 note2 staff-step)
+(defun accidental-xoffset (note1 note2 staff-step)
(let* ((acc1 (final-accidental note1))
(pos1 (note-position note1))
(acc2 (if (and (final-accidental note2)
@@ -656,24 +662,23 @@
:notehead))
(pos2 (note-position note2))
(xpos2 (or (accidental-position note2)
- (final-xoffset note2))))
+ (final-note-xoffset note2))))
(- xpos2 (* staff-step (accidental-distance acc1 pos1 acc2 pos2)))))
;;; given a note and a list of notes, compute x offset of the accidental
;;; of the note as required by each of the notes in the list. In order
;;; for the accidental of the note not to overlap any of the others,
;;; we must use the minimum of all the x offsets thus computed.
-;;; (this function shoudl probably be renamed accidental-min-xoffset)
-(defun accidental-min-xpos (note1 notes staff-step)
- (reduce #'min notes :key (lambda (note) (accidental-xpos note1 note staff-step))))
+(defun accidental-min-xoffset (note1 notes staff-step)
+ (reduce #'min notes :key (lambda (note) (accidental-xoffset note1 note staff-step))))
;;; given a list of notes that have accidentals to place, and a list of
;;; notes that either have no accidentals or with already-placed accidentals,
;;; compute the note in the first list that can be placed as far to the right
;;; as possible.
(defun best-accidental (notes-with-accidentals notes staff-step)
- (reduce (lambda (note1 note2) (if (>= (accidental-min-xpos note1 notes staff-step)
- (accidental-min-xpos note2 notes staff-step))
+ (reduce (lambda (note1 note2) (if (>= (accidental-min-xoffset note1 notes staff-step)
+ (accidental-min-xoffset note2 notes staff-step))
note1
note2))
notes-with-accidentals))
@@ -698,14 +703,14 @@
(setf notes-with-accidentals
(remove first-suspended-note notes-with-accidentals))
(setf (accidental-position first-suspended-note)
- (accidental-min-xpos first-suspended-note notes staff-step)))))
+ (accidental-min-xoffset first-suspended-note notes staff-step)))))
;; place remaining accidentals
(loop while notes-with-accidentals
do (let ((choice (best-accidental notes-with-accidentals notes staff-step)))
(setf notes-with-accidentals
(remove choice notes-with-accidentals))
(setf (accidental-position choice)
- (accidental-min-xpos choice notes staff-step))))))
+ (accidental-min-xoffset choice notes staff-step))))))
;;; given a list of notes, group them so that every note in the group
;;; is displayed on the same staff. Return the list of groups.
1
0