File: CreateIntro.scm

package info (click to toggle)
denemo 2.6.49-0.2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 66,916 kB
  • sloc: ansic: 94,587; lisp: 38,713; xml: 22,675; python: 1,930; sh: 1,239; makefile: 642; yacc: 288; sed: 93
file content (58 lines) | stat: -rw-r--r-- 2,284 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
;;;;;;;;;;CreateIntro
(let ( (position (GetPosition)) (timesig (d-InitialTimeSig "query=timesigname")) (numerator #f)(denominator #f))
  (define (createIntroStaff)
    (d-NewStructuredStaff 'initial)
    (d-InitialClef "Treble")
    (d-StaffHidden #t)
    (d-StaffProperties "midi_channel=9")
     (d-DirectivePut-clef-graphic "DrumClef" "DrumClef")
    (d-DirectivePut-clef-override "DrumClef" DENEMO_OVERRIDE_GRAPHIC)
    (d-NonPrintingStaff 'set)
    (d-StaffProperties "denemo_name=Intro"))
  
  (define (writeIntroBar numerator denominator)
                ;;;write an intro bar
    (let loop ((count (string->number numerator)))
      (if (positive? count)
      (begin
        (eval-string (string-append "(d-" (number->string (duration::lilypond->denemo (string->number denominator))) ")"))
        (loop (- count 1)))))
     (d-MuteStaff "unmute"))
  
  (define (deleteToEnd)
    (d-SetMark)
    (d-GoToEnd)
    (d-Cut))
  
  (define firstmeasure #t)
  (define measurenum (list-ref position 2))
  
  (while (d-MoveToStaffUp))
     
  (if (equal? "Intro" (d-StaffProperties "query=denemo_name"))
    (begin
              (set! firstmeasure #f);;we will not need to add an initial intro measure, as there will be one already
              (if (not (None?))
              (if  (equal? (_ "y") (d-GetUserInput (_ "Non Empty Intro staff") (_ "Remove the previous transcription from this measure on?") (_ "y")))
                   (deleteToEnd)
                   (set! firstmeasure 'abort))))
    (begin
        (createIntroStaff)))
      
  (if (not (eq? firstmeasure 'abort))
      (begin    
        (if firstmeasure
            (begin  
              (d-GoToBeginning)
              (set! measurenum (+ 1 measurenum))
              (d-InsertMeasure)
              (set! numerator (car (string-split   timesig #\/)))
              (set! denominator (cadr (string-split  timesig #\/)))
              (writeIntroBar numerator denominator)))      
        (while (d-MoveToStaffDown)
            (if (EmptyMeasure?)
                (begin
                    (d-DirectivePut-standalone-graphic "Blank" "\nBlank\nDenemo\n20")
                    (d-SetDurationInTicks (* 1536 (GetPrevailingTimeSig #t))))))
        (d-GoToPosition #f #f  measurenum (list-ref position 3)))))