home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 251-275 / apd269 / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1991-05-05  |  15KB  |  545 lines

  1. '+-------------------------------------------------------------------+ 
  2. '|                                                                   | 
  3. '|                    S K E T C H - A - T U N E                      | 
  4. '|                                                                   | 
  5. '|                        By  Colin Naylar                           | 
  6. '|                                                                   | 
  7. '+-------------------------------------------------------------------+ 
  8. '
  9. Dim MUSIK(200)
  10. Global SF,SFN,SPEED,V,POS,STAVELENGTH,MUSIK(),STAFF,OFFSET,A,B,S1,S2,S3,S4
  11. BEGSCN
  12. INSTSCN
  13. INFOSCRN
  14. '----initial settings for samples----
  15. S1=3 : S2=3 : S3=4 : S4=4
  16. Sample S1 To 1
  17. Sample S2 To 2
  18. Sample S3 To 4
  19. Sample S4 To 8
  20. MAINBODY
  21. End 
  22. Procedure MAINBODY
  23.    Shared HOWFAR
  24.    Screen Open 1,320,200,16,Lowres
  25.    Hide On : Flash Off : Curs Off 
  26.    Screen Open 3,320,200,16,Lowres
  27.    Hide : Flash Off : Curs Off 
  28.    Colour 2,$FFA : Colour 5,$AA0 : Colour 7,$AAA
  29.    Colour 15,$0 : Colour 9,$AEE
  30.    Cls 2
  31.    SPEED=7 : STAVELENGTH=48 : OFFSET=0 : STAFF=0 : HOWFAR=0
  32.    'Load "df1:5instru2.abk" 
  33.    INIT
  34.    Screen Copy 3 To 1
  35.    CLEARARRAY
  36.    MKSTAF
  37.    X Mouse=X Hard(100) : Y Mouse=Y Hard(20)
  38.      Do 
  39.       Screen 3
  40.      Wait Vbl 
  41.          X1=X Hard(12)
  42.          Y1=Y Hard(4+OFFSET)
  43.          X2=X Hard(10+STAVELENGTH*6)
  44.          Y2=Y Hard(48+OFFSET)
  45.      Wait Vbl : Limit Mouse X1,Y1 To X2,Y2
  46.      Do 
  47.          A$=""
  48.          A$=Upper$(Inkey$)
  49.          If A$="P" Then HEAR[1]
  50.          If A$="O" Then HEAR[0]
  51.          If A$="R" Then DELETE
  52.          If A$="X" Then EXTRACT
  53.          If A$="I" Then INSERT
  54.          If A$="S" Then SAVIT : Screen Copy 1 To 3 : MKSTAF : POKIT
  55.          If A$="F" Then SAVIFF
  56.          If A$="V" Then SWP_SAMP : Exit 
  57.          If A$="T" Then ALTERSPEED
  58.          If A$="L" Then Screen Copy 1 To 3 : MKSTAF : LODIT : POKIT
  59.          If A$="N" Then Screen Copy 1 To 3 : MKSTAF : CLEARARRAY : HOWFAR=1
  60.          If A$="D" Then STAFF=STAFF+1 : Exit 
  61.          If A$="U" Then STAFF=STAFF-1 : Exit 
  62.          A=X Screen(X Mouse) : A=(A-A mod 6)
  63.          B=Y Screen(Y Mouse) : B=(B-B mod 3)
  64.          POS=((A-6)/6)+STAVELENGTH*STAFF
  65.          '
  66.          If Mouse Key=1 and MUSIK(POS)=0
  67.             PLACE
  68.          End If 
  69.          '
  70.          P=Point(A,B+1)
  71.          If Mouse Key=2 and(P=15 or P=5 or P=6)
  72.             RUBOUT
  73.          End If 
  74.          Wait Vbl 
  75.          '
  76.          Get Bob 1,A-1,B-1 To A+4,B+4
  77.          Wait Vbl 
  78.          Ink 6 : Box A-1,B-1 To A+3,B+3
  79.          Wait Vbl 
  80.          Paste Bob A-1,B-1,1
  81.       Loop 
  82.       If STAFF>3 Then STAFF=3
  83.       If STAFF<0 Then STAFF=0
  84.       OFFSET=STAFF*48
  85.       MKSTAF
  86.    Loop 
  87. End Proc
  88. Procedure MKSTAF
  89.    Pen 0 : Paper 2 : Locate 38,SF*6+2 : Print " ";
  90.    Locate 38,STAFF*6+2 : Print Chr$(171);
  91.    SF=STAFF
  92. End Proc
  93. Procedure PLACE
  94.    Shared C,HOWFAR,POS
  95.    K=15 : SFN=0
  96.    If Key State(91) Then K=5 : SFN=1
  97.    If Key State(90) Then K=6 : SFN=-1
  98.    C=26+(OFFSET/3)-B/3
  99.    '   If C<15 Then Ink 7 : Draw A-2,40+OFFSET To A+4,40+OFFSET 
  100.    '   If C>23 Then Ink 7 : Draw A-2,4+OFFSET To A+4,4+OFFSET 
  101.    Ink K
  102.    Circle A+1,B+1,2 : Bar A,B To A+2,B+2
  103.    '   POS=((A-6)/6)+OFFSET 
  104.    If C<19
  105.       Draw A+3,B-10 To A+3,B+2
  106.    Else 
  107.       Draw A-1,B To A-1,B+12
  108.    End If 
  109.    HOWFAR=Max(HOWFAR,POS)
  110.    STORE
  111.    Play 15,V+24+SFN,0
  112. End Proc
  113. Procedure RUBOUT
  114.    Shared C,HOWFAR,POS,MUSIK()
  115.    C=26+(OFFSET/3)-B/3
  116.    '  If C<15 Then Ink 2 : Draw A-2,40+OFFSET To A+4,40+OFFSET
  117.    '  If C>23 Then Ink 2 : Draw A-2,4+OFFSET To A+4,4+OFFSET
  118.    Ink 2
  119.    Circle A+1,B+1,2 : Bar A,B To A+2,B+2
  120.    POS=((A-6)/6)+OFFSET
  121.    If C<19
  122.       Draw A+3,B-10 To A+3,B+2
  123.    Else 
  124.       Draw A-1,B To A-1,B+12
  125.    End If 
  126.    Ink 7
  127.    For N=10+OFFSET To 34+OFFSET Step 6
  128.       Draw A-1,N To A+3,N
  129.    Next 
  130.    HOWFAR=Max(HOWFAR,POS)
  131.    MUSIK(POS)=0
  132. End Proc
  133. Procedure STORE
  134.    Shared C,POS,MUSIK()
  135.    If C=10 Then V=8
  136.    If C=11 Then V=10
  137.    If C=12 Then V=12
  138.    If C=13 Then V=13
  139.    If C=14 Then V=15
  140.    If C=15 Then V=17
  141.    If C=16 Then V=18
  142.    If C=17 Then V=20
  143.    If C=18 Then V=22
  144.    If C=19 Then V=24
  145.    If C=20 Then V=25
  146.    If C=21 Then V=27
  147.    If C=22 Then V=29
  148.    If C=23 Then V=30
  149.    If C=24 Then V=32
  150.    If C=25 Then V=34
  151.    If C=26 Then V=36
  152.    MUSIK(POS)=V+SFN
  153. End Proc
  154. Procedure HEAR[Q]
  155.    Shared MUSIK(),HOWFAR
  156.    If Q=1 Then V=1 Else V=POS
  157.    Ink 15
  158.    For N=V To HOWFAR
  159.       Exit If Inkey$<>""
  160.       XP=N mod STAVELENGTH : YP=Int(N/STAVELENGTH)
  161.       Bob 2,(N mod STAVELENGTH)*6+11,YP*48+44,2
  162.       If MUSIK(N)=0 Then Goto MISS
  163.       Play 15,MUSIK(N)+24,0
  164.       MISS:
  165.       Wait SPEED
  166.    Next 
  167.    Bob Off 2
  168. End Proc
  169. Procedure STAVE[YY]
  170.    Ink 9
  171.    For N=10 To 10+STAVELENGTH*6 Step 6
  172.       Draw N,10+YY To N,34+YY
  173.       Ink 7 : Plot N,YY+4 : Plot N,YY+40 : Plot N,YY+46 : Ink 9
  174.    Next 
  175.    Ink 7
  176.    For N=10+YY To 34+YY Step 6
  177.       Draw 10,N To 10+STAVELENGTH*6,N
  178.    Next 
  179.    Ink 8
  180.    For N=10 To 10+STAVELENGTH*6 Step 48
  181.       Draw N,6+YY To N,38+YY
  182.    Next 
  183. End Proc
  184. Procedure INFOSCRN
  185.    Screen Open 2,640,48,8,Hires
  186.    Screen Display 2,140,252,,
  187.    Screen To Front 2
  188.    Colour 2,$FFA : Curs Off : Cls 2 : Flash Off 
  189.    Ink 6,2 : Box 1,1 To 638,38
  190.    Text 10,10,"LEFT BUTTON  - Put Note    D - Down a Stave   S - Save Music   L - Load Music"
  191.    Text 10,18,"RIGHT BUTTON - Erase Note  U - Up a Stave     N - New Music    V - Swap Voice"
  192.    Text 10,26,"P - Play from Start        I - Insert Note    F - Save Screen  X - Note Values"
  193.    Text 10,34,"O - Play from Cursor       R - Remove Note    T - Tempo"
  194.    Ink 1
  195.    Text 514,35,"TEMPO:"
  196.    Text 558,35,Str$(40-SPEED)
  197. End Proc
  198. Procedure SAVIT
  199.    Shared MUSIK(),HOWFAR,S
  200.    Show On 
  201.    FL$=Fsel$("*.mus","","Save a Music File","")
  202.    If FL$="" Then Hide : Pop Proc
  203.    Open Out 1,FL$
  204.    Print #1,HOWFAR
  205.    Print #1,SPEED
  206.    Print #1,S1
  207.    Print #1,S2
  208.    Print #1,S3
  209.    Print #1,S4
  210.    For N=1 To HOWFAR
  211.       Print #1,MUSIK(N)
  212.    Next 
  213.    Close 1
  214.    Hide 
  215. End Proc
  216. Procedure LODIT
  217.    Show On 
  218.    Shared MUSIK(),HOWFAR,S
  219.    FL$=Fsel$("*.mus","","Load a Music File","")
  220.    If FL$="" Then Hide : Pop Proc
  221.    Open In 1,FL$
  222.    Input #1,HOWFAR
  223.    Input #1,SPEED
  224.    Input #1,S1
  225.    Input #1,S2
  226.    Input #1,S3
  227.    Input #1,S4
  228.    For N=1 To HOWFAR
  229.       Input #1,MUSIK(N)
  230.    Next 
  231.    Close 1
  232.    Hide 
  233.    Text 558,35,Str$(40-SPEED)
  234.    Sample S1 To 1
  235.    Sample S2 To 2
  236.    Sample S3 To 4
  237.    Sample S4 To 8
  238. End Proc
  239. Procedure POKIT
  240.    Shared MUSIK(),HOWFAR
  241.    Screen 3
  242.    For N=1 To HOWFAR
  243.       C=MUSIK(N)
  244.       If C=0 Then Goto MIS
  245.       Gosub FIND
  246.       Ink SFN
  247.       A=(((N-1)*6) mod 6*STAVELENGTH)+12 : B=78-V*3
  248.       If N>STAVELENGTH Then B=B+48
  249.       If N>STAVELENGTH*2 Then B=B+48
  250.       If N>STAVELENGTH*3 Then B=B+48
  251.       Circle A+1,B+1,2 : Bar A,B To A+2,B+2
  252.       If C<23
  253.          Draw A+3,B-10 To A+3,B+2
  254.       Else 
  255.          Draw A-1,B To A-1,B+12
  256.       End If 
  257.       MIS:
  258.    Next 
  259.    Pop Proc
  260.    FIND:
  261.    If C=8 Then V=10 : SFN=15
  262.    If C=9 Then V=10 : SFN=5
  263.    If C=10 Then V=11 : SFN=15
  264.    If C=11 Then V=11 : SFN=5
  265.    If C=12 Then V=12 : SFN=15
  266.    If C=13 Then V=13 : SFN=15
  267.    If C=14 Then V=13 : SFN=5
  268.    If C=15 Then V=14 : SFN=15
  269.    If C=16 Then V=14 : SFN=5
  270.    If C=17 Then V=15 : SFN=15
  271.    If C=18 Then V=16 : SFN=15
  272.    If C=19 Then V=16 : SFN=5
  273.    If C=20 Then V=17 : SFN=15
  274.    If C=21 Then V=17 : SFN=5
  275.    If C=22 Then V=18 : SFN=15
  276.    If C=23 Then V=18 : SFN=5
  277.    If C=24 Then V=19 : SFN=15
  278.    If C=25 Then V=20 : SFN=15
  279.    If C=26 Then V=20 : SFN=5
  280.    If C=27 Then V=21 : SFN=15
  281.    If C=28 Then V=21 : SFN=5
  282.    If C=29 Then V=22 : SFN=15
  283.    If C=30 Then V=23 : SFN=15
  284.    If C=31 Then V=23 : SFN=5
  285.    If C=32 Then V=24 : SFN=15
  286.    If C=33 Then V=24 : SFN=5
  287.    If C=34 Then V=25 : SFN=15
  288.    If C=35 Then V=25 : SFN=5
  289.    If C=36 Then V=26 : SFN=15
  290.    Return 
  291. End Proc
  292. Procedure INSERT
  293.    Shared HOWFAR,MUSIK()
  294.    HOWFAR=HOWFAR+1
  295.    If HOWFAR>192 Then HOWFAR=192
  296.    For N=HOWFAR To POS Step -1
  297.       MUSIK(N)=MUSIK(N-1)
  298.    Next N
  299.    MUSIK(POS)=0
  300.    Screen Copy 1 To 3
  301.    POKIT
  302. End Proc
  303. Procedure DELETE
  304.    Shared HOWFAR,MUSIK()
  305.    For N=POS To HOWFAR
  306.       MUSIK(N)=MUSIK(N+1)
  307.    Next N
  308.    MUSIK(HOWFAR)=0
  309.    HOWFAR=HOWFAR-1
  310.    Screen Copy 1 To 3
  311.    POKIT
  312. End Proc
  313. Procedure INIT
  314.    Screen 3
  315.    Cls 2
  316.    'For N=0 To 15 
  317.    '   Ink N
  318.    '   Bar N*20,220 To N*20+20,240
  319.    'Next  
  320.    Cls 2
  321.    Ink 6
  322.    Bar 0,0 To 4,2
  323.    Get Bob 2,0,0 To 4,2
  324.    Cls 2
  325.    Ink 5
  326.    Bar 0,0 To 4,2
  327.    Get Bob 3,0,0 To 4,2
  328.    Cls 2
  329.    STAVE[0]
  330.    STAVE[48]
  331.    STAVE[96]
  332.    STAVE[144]
  333.    Ink 6 : Box 1,1 To 318,198
  334. End Proc
  335. Procedure CLEARARRAY
  336.    Shared MUSIK()
  337.    For N=1 To 200 : MUSIK(N)=0 : Next 
  338. End Proc
  339. Procedure SWP_SAMP
  340.    Reserve Zone 9
  341.    Set Zone 1,207,66 To 215,73
  342.    Set Zone 2,239,66 To 247,73
  343.    Set Zone 3,207,74 To 215,81
  344.    Set Zone 4,239,74 To 247,81
  345.    Set Zone 5,207,82 To 215,89
  346.    Set Zone 6,239,82 To 247,89
  347.    Set Zone 7,207,90 To 215,97
  348.    Set Zone 8,239,90 To 247,97
  349.    Set Zone 9,230,120 To 265,128
  350.    Wind Save 
  351.    Wind Open 1,50,50,28,11,10
  352.    Curs Off : Paper 0 : Pen 7 : Clw 
  353.    Show On : 
  354.    Limit Mouse X Hard(200),Y Hard(60) To X Hard(274),Y Hard(130)
  355.    Locate 1,1 : Print "Voice 1 = Sample <";S1;" >"
  356.    Locate 1,2 : Print "Voice 2 = Sample <";S2;" >"
  357.    Locate 1,3 : Print "Voice 3 = Sample <";S3;" >"
  358.    Locate 1,4 : Print "Voice 4 = Sample <";S4;" >"
  359.    Locate 1,6 : Print "Click on < & > to change"
  360.    Locate 21,8 : Print "EXIT";
  361.    Do 
  362.       Repeat 
  363.          Z=Zone(X Screen(X Mouse),Y Screen(Y Mouse))
  364.       Until Mouse Click=1
  365.       If Z=9 Then Exit 
  366.       If Z=1 Then Add S1,-1,1 To 5 : Locate 19,1 : Print S1;
  367.       If Z=2 Then Add S1,1,1 To 5 : Locate 19,1 : Print S1;
  368.       If Z=3 Then Add S2,-1,1 To 5 : Locate 19,2 : Print S2;
  369.       If Z=4 Then Add S2,1,1 To 5 : Locate 19,2 : Print S2;
  370.       If Z=5 Then Add S3,-1,1 To 5 : Locate 19,3 : Print S3;
  371.       If Z=6 Then Add S3,1,1 To 5 : Locate 19,3 : Print S3;
  372.       If Z=7 Then Add S4,-1,1 To 5 : Locate 19,4 : Print S4;
  373.       If Z=8 Then Add S4,1,1 To 5 : Locate 19,4 : Print S4;
  374.    Loop 
  375.    Sample S1 To 1
  376.    Sample S2 To 2
  377.    Sample S3 To 4
  378.    Sample S4 To 8
  379.    While Mouse Key=1 : Wend 
  380.    Wind Close 
  381.    Hide 
  382. End Proc
  383. Procedure SAVIFF
  384.    Shared MUSIK(),HOWFAR
  385.    Show 
  386.    FL$=Fsel$("","","Save the Screen","")
  387.    If FL$="" Then Hide : Pop Proc
  388.    Save Iff FL$,0
  389.    Hide 
  390. End Proc
  391. Procedure ALTERSPEED
  392.    Bell 
  393.    Screen 2
  394.    Ink 1,2
  395.    Text 514,35,"TEMPO:"
  396.    Do 
  397.       If Key State(77) Then SPEED=SPEED+1 : Wait 5
  398.       If Key State(76) Then SPEED=SPEED-1 : Wait 5
  399.       If SPEED<1 Then SPEED=1
  400.       If SPEED>30 Then SPEED=30
  401.       Text 558,35,Str$(40-SPEED)
  402.       Q$=Upper$(Inkey$)
  403.       Exit If Q$=Chr$(13)
  404.    Loop 
  405.    Screen 3
  406.    Bell 
  407. End Proc
  408. Procedure EXTRACT
  409.    Shared HOWFAR,MUSIK()
  410.    Screen 2 : Cls 2
  411.    Paper 3
  412.    For N=1 To HOWFAR
  413.       C=MUSIK(N)
  414.       Gosub LOOK
  415.       Print C$;
  416.    Next 
  417.    Locate 64,4 : Print "(P)rinter/(Q)uit";
  418.    Repeat 
  419.       Q$=Upper$(Inkey$)
  420.    Until Q$<>""
  421.    If Q$="P"
  422.       For N=1 To HOWFAR
  423.          C=MUSIK(N)
  424.          Gosub LOOK
  425.          Lprint C$;
  426.       Next 
  427.       Lprint Chr$(13)
  428.    End If 
  429.    Screen Close 2
  430.    INFOSCRN
  431.    Screen 3
  432.    Pop Proc
  433.    LOOK:
  434.    If C=0 Then C$="<>" : Pen 2
  435.    If C=8 Then C$="G0" : Pen 2
  436.    If C=9 Then C$="G0" : Pen 5
  437.    If C=10 Then C$="A0" : Pen 2
  438.    If C=11 Then C$="A0" : Pen 5
  439.    If C=12 Then C$="B1" : Pen 2
  440.    If C=13 Then C$="C1" : Pen 2
  441.    If C=14 Then C$="C1" : Pen 5
  442.    If C=15 Then C$="D1" : Pen 2
  443.    If C=16 Then C$="D1" : Pen 5
  444.    If C=17 Then C$="E1" : Pen 2
  445.    If C=18 Then C$="F1" : Pen 2
  446.    If C=19 Then C$="F1" : Pen 5
  447.    If C=20 Then C$="G1" : Pen 2
  448.    If C=21 Then C$="G1" : Pen 5
  449.    If C=22 Then C$="A1" : Pen 2
  450.    If C=23 Then C$="A1" : Pen 5
  451.    If C=24 Then C$="B2" : Pen 2
  452.    If C=25 Then C$="C2" : Pen 2
  453.    If C=26 Then C$="C2" : Pen 5
  454.    If C=27 Then C$="D2" : Pen 2
  455.    If C=28 Then C$="D2" : Pen 5
  456.    If C=29 Then C$="E2" : Pen 2
  457.    If C=30 Then C$="F2" : Pen 2
  458.    If C=31 Then C$="F2" : Pen 5
  459.    If C=32 Then C$="G2" : Pen 2
  460.    If C=33 Then C$="G2" : Pen 5
  461.    If C=34 Then C$="A2" : Pen 2
  462.    If C=35 Then C$="A2" : Pen 5
  463.    If C=36 Then C$="B2" : Pen 2
  464.    Return 
  465. End Proc
  466. Procedure INSTSCN
  467.    Screen Open 1,640,256,4,Hires : Colour 1,$FFA : Cls 1
  468.    Hide : Flash Off : Curs Off 
  469.    Screen To Front 1
  470.    Colour 0,$0 : Colour 2,$33F
  471.    Cls 1 : Hide 
  472.    Pen 2 : Paper 1
  473.    Print "                     SKETCH A TUNE  By Colin Naylar."
  474.    Print ""
  475.    Pen 0
  476.    Print "      Notes are entered on a representation of a Musical Stave, which is easy"
  477.    Print "   to follow. There are 24 bars on the screen with eight notes in each bar."
  478.    Print "   There are on-screen reminders, but Notes are simply entered on the staves"
  479.    Print "   with the left Mouse button and deleted with the Right Mouse Button. All the"
  480.    Print "   controls are via the Keyboard. A very useful feature is the O key which "
  481.    Print "   plays the tune from the cursor, P plays from the start of the music."
  482.    Print "   Sharps & Flats are entered by pressing '(' and ')' on the numeric keyboard"
  483.    Print "   at the same time as the mouse button. Sharps are shown yellow, flats blue."
  484.    Print "   One of five Samples is allocated individually to each of the Four Voices"
  485.    Print "   These may be altered by pressing the S key, eg. The same sample can be set"
  486.    Print "   on each channel for simplicity, or each channel can sound a different sample."
  487.    Print "   The S key saves the notes,tempo & Samples used, L reloads them."
  488.    Print ""
  489.    Print "   The F key will save the screen as an IFF file."
  490.    Print ""
  491.    Print "   The I Key inserts a gap in the music wherever the square cursor is, and"
  492.    Print ""
  493.    Print "   The R Key removes a Note and shifts the following Notes back one place."
  494.    Print ""
  495.    Print "   To change Tempo - Press T, then the Up or Down Arrow Keys then Enter. "
  496.    Print ""
  497.    Print "   Use the U & D keys to change the Stave you are working on."
  498.    Print ""
  499.    Print "   N clears all Music. P plays your Tune. Any Key stops Play. V changes Voice"
  500.    Print ""
  501.    Print "   X prints the note names to the screen or printer for Soundtracker transfer."
  502.    Print "   Once again sharps are shown in yellow (all flats are converted to sharps)."
  503.    Pen 2
  504.    Print ""
  505.    Print "                            PRESS A MOUSE KEY";
  506.    Repeat 
  507.    Until Inkey$<>"" or Mouse Key<>0
  508.    View 
  509.    Screen Close 1
  510. End Proc
  511. Procedure BEGSCN
  512.    Screen Open 1,320,256,16,Lowres
  513.    Cls 0
  514.    Flash Off : Curs Off : Hide 
  515.    Unpack 7 To 0
  516.    TITLEMUSIC
  517.    Cls 0
  518.    Screen Close 1
  519. End Proc
  520. Procedure TITLEMUSIC
  521.    Shared MUSIK(),HOWFAR,S
  522.    Open In 1,"Sketch_a_Tune:fiddle.mus"
  523.    Input #1,HOWFAR
  524.    Input #1,SPEED
  525.    Input #1,S1
  526.    Input #1,S2
  527.    Input #1,S3
  528.    Input #1,S4
  529.    For N=1 To HOWFAR
  530.       Input #1,MUSIK(N)
  531.    Next 
  532.    Close 1
  533.    Sample S1 To 1
  534.    Sample S2 To 2
  535.    Sample S3 To 4
  536.    Sample S4 To 8
  537. '
  538.    For N=V To HOWFAR
  539.       Exit If(Inkey$<>"" or Mouse Key<>0)
  540.       If MUSIK(N)=0 Then Goto ISS
  541.       Play 15,MUSIK(N)+24,0
  542.       ISS:
  543.       Wait SPEED
  544.    Next 
  545. End Proc