/* subprogramm for Notes.pprx */

signal on halt
signal on break_c
signal on break_e
signal on break_d
call ppm_SetStyle(N)
call ppm_SetMagMode(180)
call ppm_UpdateScreen()

noteneingabe:
    /* smallest notedistance */

    sysart = "notesystem:2"
    systemart = ppm_Getform("Please repeat your choice of the notesystems... (2, 1v oder 1b)", 3, sysart)
    select
    when systemart == '2' then zdist = 4
    when systemart == '1v' then zdist = 2
    when systemart == '1b' then zdist = 2
    otherwise noteneingabe()
    end
    zdist2 = zdist-2
    xgrdform = "(1,2,4,8 oder 16)"
    xgrd = ppm_GetForm("Pleace give in the smallest note distance ...(nothing=Break!)", 3, xgrdform)
    if xgrd == '' then exit_msg("Break")
    select
     when xgrd == '1' then xg =0.7
     when xgrd == '2' then xg =1.4
     when xgrd == '4' then xg =2.8
     when xgrd == '8' then xg =5.6
     when xgrd == '16' then xg =11.2
     otherwise noteneingabe()
    end

   /* pointmessure of the notes */
   notepkt = 26
   call ppm_SetJustification(0)

   zz = 0 /* linecounter (german=Zeilenz�hler) */
   notex = 2.5
   page = ppm_CurrentPage()

pfad:
   do
           choose=ppm_Inform(2,"Please choose the notefile or break ...", "Break","File")
           if choose == 0 then exit_msg("Break!")
           eingabe = ppm_GetFileName("Pleace choose the notescriptfile  ...", "Notes:")
           res = OPEN(notenfile, eingabe, 'R')
           if res == 0 then
             do
                 call ppm_inform(1,"There was an error, or the file doesn't exists!!!","OK")
                 pfad()
             end
           call ppm_ShowStatus("OK, I'm working ...")
           auslesen(notenfile)
   end

    /* x-distance of the notes  */
auslesen:
        do
          parse arg file
          noten = READCH(file, 4000)
          i=1
          do forever
            nw = word(noten, i)
            nn = word(noten, i+1)
            al = word(noten, i+2)
            if nw == 'P' then nw = 'p'
            if nw == 'D' then nw = 'd'
            if nw == 'C' then nw = 'c'
            if nw == 'L' then nw = 'l'
            if nn == 'L' then nn = 'l'
            if nw == 'J' then nw = 'j'
            if nw == 'END' then nw = 'end'
            select
              when al == (X2C(4e0a)) then al = 'n'
              when al == (X2C(6e0a)) then al = 'n'
              when al == (X2C(300a)) then al = '0'
              otherwise exit_msg("There was an error!")
            end

            select
              when nn=='DB1' then nn = 'Db1'
              when nn=='GB1' then nn = 'Gb1'
              when nn=='BB1' then nn = 'Bb1'
              when nn=='AB1' then nn = 'Ab1'
              when nn=='DB2' then nn = 'Db2'
              when nn=='EB2' then nn = 'Eb2'
              when nn=='BB2' then nn = 'Bb2'
              when nn=='GB2' then nn = 'Gb2'
              when nn=='AB2' then nn = 'Ab2'
              when nn=='DB3' then nn = 'Db3'
              when nn=='EB3' then nn = 'Eb3'
              when nn=='BB3' then nn = 'Bb3'
              when nn=='GB3' then nn = 'Gb3'
              when nn=='AB3' then nn = 'Ab3'
              otherwise NOP
            end

            call auswahl()
            i=i+3
          end
        end

auswahl:
do
    select
      when nw == 'j' then do
                          zz = 0   /* linecounter */
                          notex = 2.5
                          return
                          end
      when nw == 'end' then
        do
            call ppm_ClearStatus()
            exit_msg("Ready!")
        end
      when nw == 's' then
          do
          xw = xg/16
          nw='x'
          yv = 0
          end
      when nw  == 'S' then
          do
          xw = xg/16
          nw='X'
          yv = 0.47
          end
      when nw == 'e' then
          do
          xw = xg/8
          nw='e'
          yv = 0
          end
      when nw == 'E' then
          do
          xw = xg/8
          nw='E'
          yv = 0.47
          end
      when nw == 'q' then
          do
          xw = xg/4
          nw='q'
          yv = 0
          end
      when nw == 'Q' then
          do
          xw = xg/4
          nw='Q'
          yv = 0.47
          end
      when nw == 'h' then
          do
          xw = xg/2
          yv = 0
          end
      when nw == 'H' then
          do
          xw = xg/2
          yv = 0.47
          end
      when nw == 'w' then
          do
          xw = xg
          nw='w'
          yv = 0
          end
      when nw == 'W' then
          do
          xw = xg
          nw='W'
          yv = 0.47
          end

      when nw == 'pt' then
          do
            if notex < 3 then
            do
              notex = bakx
              zz = zz - zdist
              call ppm_SetSize(25)
              box#id = ppm_CreateBox(notex+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
              call ppm_SetSize(20)
              call ppm_TextIntoBox(box#id, 'd')
            end
            else
            do
              call ppm_SetSize(25)
              box#id = ppm_CreateBox(notex-xw+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
              call ppm_SetSize(20)
              call ppm_TextIntoBox(box#id, 'd')
            end
             select
                 when nn == '1' then
                 do
                  xw = xg
                  notex = notex+xw
                 end
                 when nn == '2' then
                 do
                  xw = xg/2
                  notex = notex+xw
                 end
                 when nn == '4' then
                 do
                  xw = xg/4
                  notex = notex+xw
                 end
                 when nn == '8' then
                 do
                  xw = xg/8
                  notex = notex+xw
                 end
                 when nn == '16' then
                 do
                  xw  = xg/16
                  notex = notex+xw
                 end
                 when nn == 'l' then
                 do
                  xw  = 0.2
                  notex = notex+xw
                 end
                 otherwise
                  do
                   call ppm_ClearStatus()
                   exit_msg("There was an error")
                  end
             end
           if notex >=18.7 then
               do
                 notex = 2.5
                 zz = zz + zdist
               end
           return
          end

      when nw == 'PT' then
          do
            if notex < 3 then
            do
              notex = bakx
              zz = zz - zdist
              call ppm_SetSize(25)
              box#id = ppm_CreateBox(notex+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
              call ppm_SetSize(20)
              call ppm_TextIntoBox(box#id, 'd')
            end
            else
            do
              call ppm_SetSize(25)
              box#id = ppm_CreateBox(notex-xw+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
              call ppm_SetSize(20)
              call ppm_TextIntoBox(box#id, 'd')
            end
           select
               when nn == '1' then
                do
                 xw = xg
                 notex = notex+xw
                end
               when nn == '2' then
                do
                 xw = xg/2
                 notex = notex+xw
                end
               when nn == '4' then
                do
                 xw = xg/4
                 notex = notex+xw
                end
               when nn == '8' then
                do
                 xw = xg/8
                 notex = notex+xw
                end
               when nn == '16' then
                do
                 xw  = xg/16
                 notex = notex+xw
                end
               when nn == 'l' then
                do
                 xw  = 0.2
                 notex = notex+xw
                end
               otherwise
               do
                call ppm_ClearStatus()
                exit_msg("There was an error")
               end
           end
           if notex >=18.7 then
             do
               notex = 2.5
               zz = zz + zdist
             end
           return
          end


      /* barline */
      when nw == 'l' then
          do
           call ppm_SetLineWeight(0.25)
           call ppm_DrawLine(notex, 2+zz+zdist2, notex, zdist2+2.8+zz)
           notex = notex+0.2
           return
          end


      when nw == 'p' | when nw == 'P' then
      do
pausenwert:
        x = notex
        select
            when nn == '1' then do

                y = zdist2+2.29+zz
                call ppm_SetLineWeight(4)
                call ppm_DrawLine(x, y, x+0.4, y)
                call ppm_SetLineWeight(0.25)
                xw = xg
                notex = notex+xw
            end

            when nn == '2' then do

                y = zdist2+2.33+zz
                call ppm_SetLineWeight(4)
                call ppm_DrawLine(x, y, x+0.4, y)
                call ppm_SetLineWeight(0.25)
                xw = xg/2
                notex = notex+xw
            end

            when nn == '4' then do

                y = zdist2+2.07+zz
                Pbox = ppm_CreateBox(x, y, 0.59, 0.86, 0)
                boxnm = ppm_DocNextBox(Pbox)
                call ppm_DeleteContents(boxnm)
                call ppm_ImportGraphic(boxnm, 'Genies:note_pause/quarterpause', pause)
                xw = xg/4
                notex = notex+xw
            end

            when nn == '8' then do

                y = zdist2+2.21+zz
                Pbox = ppm_CreateBox(x, y, 0.27, 0.42, 0)
                boxnm = ppm_DocNextBox(Pbox)
                call ppm_DeleteContents(boxnm)
                call ppm_ImportGraphic(boxnm, 'Genies:note_pause/eighthpause', pause)
                xw = xg/8
                notex = notex+xw
            end

            when nn == '16' then do

                y = zdist2+2.21+zz
                Pbox = ppm_CreateBox(x, y, 0.27, 0.42, 0)
                boxnm = ppm_DocNextBox(Pbox)
                call ppm_DeleteContents(boxnm)
                call ppm_ImportGraphic(boxnm, 'Genies:note_pause/sixteenthpause', pause)
                xw = xg/16
                notex = notex+xw
            end
        otherwise
               do
                call ppm_ClearStatus()
                exit_msg("There was an error")
               end
        end
        if notex >=18.7 then
          do
            notex = 2.5
            zz = zz + zdist
          end
        return
      end

    /* spaces */

      when nw == 'c' then
        do
           select
               when nn == '1' then
               do
                xw = xg
                notex = notex+xw
               end
               when nn == '2' then
               do
                xw = xg/2
                notex = notex+xw
               end
               when nn == '4' then
               do
                xw = xg/4
                notex = notex+xw
               end
               when nn == '8' then
               do
                xw = xg/8
                notex = notex+xw
               end
               when nn == '16' then
               do
                xw  = xg/16
                notex = notex+xw
               end
               when nn == 'l' then
               do
                xw  = 0.2
                notex = notex+xw
               end
               when nn == 0 then do
               end
               otherwise
               do
                call ppm_ClearStatus()
                exit_msg("There was an error")
               end
           end
           if notex >=18.7 then
             do
               notex = 2.5
               zz = zz + zdist
             end
           return
        end
      otherwise
               do
                call ppm_ClearStatus()
                exit_msg("There was an error")
               end
    end

        /* y-distance of the notes - notestems to up */

    call ppm_SetLineWeight(0.25)

    select
        when nn=='g#3'  then
        do
            yw = 0.745 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
            call ppm_DrawLine(notex, zz+zdist2+1.4, (notex+0.4), zz+zdist2+1.4)
        end

        when nn=='g3'  then
        do
            yw = 0.745 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
            call ppm_DrawLine(notex, zz+zdist2+1.4, (notex+0.4), zz+zdist2+1.4)
        end

        when nn=='gb3' then
        do
            yw = 0.745 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
            call ppm_DrawLine(notex, zz+zdist2+1.4, (notex+0.4), zz+zdist2+1.4)
        end

        when nn=='f#3'  then
        do
            yw = 0.845 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='f3'  then
        do
            yw = 0.845 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='e#3'  then
        do
            yw = 0.945 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='e3'  then
        do
            yw = 0.945 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='eb3' then
        do
            yw = 0.945 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='d#3'  then
        do
            yw = 1.045 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='d3' then
        do
            yw = 1.045 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='db3'    then
        do
            yw = 1.045 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='c#3'    then
        do
            yw = 1.145 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='c3'     then
        do
            yw = 1.145 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='b2'     then
        do
            yw = 1.245 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='bb2'     then
        do
            yw = 1.245 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='a#2'    then
        do
            yw = 1.345 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='a2'     then
        do
            yw = 1.345 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='ab2'    then
        do
            yw = 1.345 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='g#2'    then
        do
            yw = 1.445 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='g2'     then
        do
            yw = 1.445 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='gb2'    then
        do
            yw = 1.445 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='f#2'    then
        do
            yw = 1.545 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='f2' then
        do
            yw = 1.545 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='e#2'  then
        do
            yw = 1.645 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end
        when nn=='e2'     then
        do
            yw = 1.645 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='eb2'    then
        do
            yw = 1.645 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='d#2'    then
        do
            yw = 1.745 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='d2'     then
        do
            yw = 1.745 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='db2'    then
        do
            yw = 1.745 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='c#2'    then
        do
            yw = 1.845 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='c2'     then
        do
            yw = 1.845 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='b1'     then
        do
            yw = 1.945 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='bb1'     then
        do
            yw = 1.945 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='a#1'    then
        do
            yw = 2.045 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='a1'     then
        do
            yw = 2.045 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='ab1'    then
        do
            yw = 2.045 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='g#1'    then
        do
            yw = 2.145 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='g1'     then
        do
            yw = 2.145 + zdist2
            if al == 'n' then call auflhoch()
        end
        when nn=='gb1'    then
        do
            yw = 2.145 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='f#1'    then
        do
            yw = 2.245 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='f1'     then
        do
            yw = 2.245 + zdist2
            if al == 'n' then call auflhoch()
        end

        when nn=='e#1'  then
        do
            yw = 2.345 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end
        when nn=='e1' then
        do
            yw = 2.345 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='eb1'  then
        do
            yw = 2.345 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='d#1'  then
        do
            yw = 2.445 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='d1'  then
        do
            yw = 2.445 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='db1' then
        do
            yw = 2.445 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.21, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='c#1'  then
        do
            yw = 2.545 + zdist2
            box#id = ppm_CreateBox(notex-0.22, yw+zz+zdist2+0.32, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
            call ppm_DrawLine(notex, zz+zdist2+3.2, (notex+0.4), zz+zdist2+3.2)
        end

        when nn=='c1'  then
        do
            yw = 2.545 + zdist2
            if al == 'n' then call auflhoch()
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
            call ppm_DrawLine(notex, zz+zdist2+3.2, (notex+0.4), zz+zdist2+3.2)
        end

    /* y-distance of the notes - notenstems to down */

        when nn=='G#3'  then
        do
            yw = 1.22 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
            call ppm_DrawLine(notex, zz+zdist2+1.4, (notex+0.4), zz+zdist2+1.4)
        end

        when nn=='G3'  then
        do
            yw = 1.22 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
            call ppm_DrawLine(notex, zz+zdist2+1.4, (notex+0.4), zz+zdist2+1.4)
        end

        when nn=='Gb3' then
        do
            yw = 1.22 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
            call ppm_DrawLine(notex, zz+zdist2+1.4, (notex+0.4), zz+zdist2+1.4)
        end

        when nn=='F#3'  then
        do
            yw = 1.32 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='F3'  then
        do
            yw = 1.32 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='E#3'  then
        do
            yw = 1.42 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='E3'  then
        do
            yw = 1.42 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='Eb3' then
        do
            yw = 1.42 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
            call ppm_DrawLine(notex, zz+zdist2+1.6, (notex+0.4), zz+zdist2+1.6)
        end

        when nn=='D#3'  then
        do
            yw = 1.52 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='D3' then
        do
            yw = 1.52 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='Db3' then
        do
            yw = 1.52 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='C#3'    then
        do
            yw = 1.62 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='C3'     then
        do
            yw = 1.62 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+1.8, (notex+0.4), zz+zdist2+1.8)
        end

        when nn=='B2'     then
        do
            yw = 1.72 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='Bb2'     then
        do
            yw = 1.72 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='A#2'    then
        do
            yw = 1.82 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='A2'     then
        do
            yw = 1.82 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='AB2'    then nn = 'Ab2'
        when nn=='Ab2'    then
        do
            yw = 1.82 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='G#2'    then
        do
            yw = 1.92 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='G2'     then
        do
            yw = 1.92 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='Gb2'    then
        do
            yw = 1.92 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='F#2'    then
        do
            yw = 2.02 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='F2'     then
        do
            yw = 2.02 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='E#2'    then
        do
            yw = 2.12 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='E2'     then
        do
            yw = 2.12 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='Eb2'    then
        do
            yw = 2.12 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='D#2'    then
        do
            yw = 2.22 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='D2'     then
        do
            yw = 2.22 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='Db2'    then
        do
            yw = 2.22 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='C#2'    then
        do
            yw = 2.32 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='C2'     then
        do
            yw = 2.32 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='B1'     then yw = 2.42 + zdist2
        when nn=='Bb1'     then
        do
            yw = 2.42 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='A#1'    then
        do
            yw = 2.52 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='A1'     then
        do
            yw = 2.52 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='Ab1'    then
        do
            yw = 2.52 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='G#1'    then
        do
            yw = 2.62 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='G1'     then
        do
            yw = 2.62 + zdist2
            if al == 'n' then call aufltief()
        end
        when nn=='Gb1'    then
        do
            yw = 2.62 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
        end

        when nn=='F#1'    then
        do
            yw = 2.72 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
        end

        when nn=='F1'     then
        do
            yw = 2.72 + zdist2
            if al == 'n' then call aufltief()
        end

        when nn=='E#1'    then
        do
            yw = 2.82 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='E1' then
        do
            yw = 2.82 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='Eb1'  then
        do
            yw = 2.82 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='D#1'  then
        do
            yw = 2.92 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='D1'  then
        do
            yw = 2.92 + zdist2
            if al == 'n' then call aufltief()
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='Db1' then
        do
            yw = 2.92 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.27, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 'f')
            call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
        end

        when nn=='C#1'  then
        do
          yw = 3.02 + zdist2
            box#id = ppm_CreateBox(notex-0.24, yw+zz-0.15, 0.35, 0.75, 0)
            call ppm_SetSize(20)
            call ppm_TextIntoBox(box#id, 's')
          call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
          call ppm_DrawLine(notex, zz+zdist2+3.2, (notex+0.4), zz+zdist2+3.2)
        end

        when nn=='C1'  then
        do
          yw = 3.02 + zdist2
            if al == 'n' then call aufltief()
          call ppm_DrawLine(notex, zz+zdist2+3, (notex+0.4), zz+zdist2+3)
          call ppm_DrawLine(notex, zz+zdist2+3.2, (notex+0.4), zz+zdist2+3.2)
        end
        otherwise
               do
                call ppm_ClearStatus()
                exit_msg("There was an error")
               end
    end

        /* gr��e einer Notenbox */

        notewidht = 0.64
        noteheight = 0.97


        boxid = ppm_CreateBox(notex, yw+zz, notewidht, noteheight, 0)
        call ppm_SetSize(notepkt)
        call ppm_TextIntoBox(boxid, nw)
        bakx = notex
        notex = (notex + xw)
        if notex >=18.7 then
            do
              notex = 2.5
              zz = zz + zdist
            end
     return
end
exit

auflhoch:
do
  Pbox = ppm_CreateBox(notex-0.34, yw+zz+0.07, 0.6, 1.2, 0)
  boxnm = ppm_DocNextBox(Pbox)
  call ppm_DeleteContents(boxnm)
  call ppm_ImportGraphic(boxnm, 'Genies:note_pause/naturalsng', Zeichen)
  return
end

aufltief:
do
  Pbox = ppm_CreateBox(notex-0.34, yw+zz-0.4, 0.6, 1.2, 0)
  boxnm = ppm_DocNextBox(Pbox)
  call ppm_DeleteContents(boxnm)
  call ppm_ImportGraphic(boxnm, 'Genies:note_pause/naturalsng', Zeichen)
  return
end

break_d:
break_e:
break_c:
halt:
    call exit_msg("User aborted Genie!")

exit_msg: procedure
do
    parse arg message

    if message ~= '' then
    call ppm_Inform(1,message,)

    call ppm_ClearStatus()
    call ppm_AutoUpdate(1)
    exit
end