1; Splits the current chord/note to several others of the same pitch. Their sum equals the original duration. Will create tuplets if necessary
2; So far only (assuming quarter) 8th, 8th-triplet, 16th, 16-fifthlet, 16th-sextlet, 16th-Seventhlet, 32th and 32th-ninthlet
3; TODO: What about if someone tries to divide too small? The score will get broken.
4
5(define* (SplitChord #:optional (howmany #f))
6(define  (split-divide)
7	(duration::ChangeNoteDurationInTicks (/ (duration::GetBaseDurationInTicks) 2) (d-GetDots)))
8
9(if (Note?) ; DuplicateChord only works ON notes, not in the appending position.
10
11(begin
12(if (not howmany)
13	(begin
14		 (set! howmany (d-GetUserInput "Split in how many notes?" "Enter the number of notes to split into:" "2" ) )
15		 (if howmany (set! howmany (string->number howmany)) #f))) ; If the user pressed "Abort" or Esc howmany will be #f which must be caught here
16
17(case howmany
18	((1) #t) ; Already original duration in one note.
19	((2) (begin  ;8th
20		 (split-divide)
21		 (d-DuplicateChord)
22		 (d-MoveCursorRight)
23		 #t))
24	((3) 	(if (= 1 (d-GetDots))
25		    (begin
26		      (d-RemoveDot)
27		      (d-Diminish)
28		      (d-DuplicateChord)
29		      (d-DuplicateChord)
30		      (d-MoveCursorRight)
31		      #t)
32		    (begin ;8th-triplet
33		      (d-StartTriplet)
34		      (split-divide)
35		      (d-DuplicateChord)
36		      (d-DuplicateChord)
37		      (d-MoveCursorRight)
38		      (d-EndTuplet)
39		      #t)))
40	((4) (begin  ;16th
41		 (split-divide)
42		 (split-divide)
43		 (d-DuplicateChord)
44		 (d-DuplicateChord)
45		 (d-DuplicateChord)
46		 (d-MoveCursorRight)
47		 #t))
48
49	((5) (begin  ;16-fifthlet
50		 (split-divide)
51		 (split-divide)
52	 	 (d-StartTriplet)
53		 (d-MoveCursorLeft)
54		 (d-SetTuplet "4/5")
55	 	 (d-MoveCursorRight)
56		 (d-DuplicateChord)
57		 (d-DuplicateChord)
58		 (d-DuplicateChord)
59		 (d-DuplicateChord)
60		 (d-MoveCursorRight)
61		 (d-EndTuplet)
62		 #t))
63
64	((6) (begin  ;16th-sextlet,
65		 (split-divide)
66		 (split-divide)
67	 	 (d-StartTriplet)
68		 (d-DuplicateChord)
69		 (d-DuplicateChord)
70 		 (d-DuplicateChord)
71		 (d-DuplicateChord)
72		 (d-DuplicateChord)
73 		 (d-MoveCursorRight)
74		 (d-EndTuplet)
75		 #t))
76
77	((7) (begin  ;16-Seventhlet
78		 (split-divide)
79		 (split-divide)
80	 	 (d-StartTriplet)
81		 (d-MoveCursorLeft)
82		 (d-SetTuplet "4/7")
83	 	 (d-MoveCursorRight)
84		 (d-DuplicateChord)
85 		 (d-DuplicateChord)
86 		 (d-DuplicateChord)
87		 (d-DuplicateChord)
88		 (d-DuplicateChord)
89		 (d-DuplicateChord)
90		 (d-MoveCursorRight)
91		 (d-EndTuplet)
92		 #t))
93
94	((8) (begin  ;32th
95		 (split-divide)
96		 (split-divide)
97 		 (split-divide)
98		 (d-DuplicateChord)
99 		 (d-DuplicateChord)
100 		 (d-DuplicateChord)
101		 (d-DuplicateChord)
102		 (d-DuplicateChord)
103		 (d-DuplicateChord)
104		 (d-DuplicateChord)
105		 (d-MoveCursorRight)
106		 #t))
107
108	((9) (begin  ;32th-ninthlet
109		 (split-divide)
110		 (split-divide)
111 		 (split-divide)
112	 	 (d-StartTriplet)
113		 (d-MoveCursorLeft)
114		 (d-SetTuplet "8/9")
115	 	 (d-MoveCursorRight)
116		 (d-DuplicateChord)
117 		 (d-DuplicateChord)
118 		 (d-DuplicateChord)
119		 (d-DuplicateChord)
120		 (d-DuplicateChord)
121		 (d-DuplicateChord)
122		 (d-DuplicateChord)
123		 (d-DuplicateChord)
124		 (d-MoveCursorRight)
125		 (d-EndTuplet)
126		 #t))
127
128	(else #f); out of range
129))
130 #f ; it was no note
131 ))
132