10 '************************
20 '**                    **
30 '**  PROGRAME-MUSIQUE  **
40 '**         --         **
50 '**    DANJOU-Noel     **
60 '**                    **
70 '**          &         **
80 '**                    **
90 '**  DOUCIN-Dominique  **
100 '*                    **
110 '***********************
120 SYMBOL AFTER 49
130 CLEAR:RESTORE:n=1
140 PEN 1
150 MODE 0:INK 1,0:INK 0,26:BORDER 16
160 GOSUB 1860
170 GOSUB 1190
180 '************************
190 '** SAISIE DES TOUCHES **
200 '************************
210 MODE 2:RESTORE:GOSUB 760:dur=30:vol=0:oc1=0:oc2=1:oc3=2:evl1=0:evl2=0:evl3=0
220 ENV 1,1,20,10,1,-7,10,1,-9,10,1,-11,10,1,-9,24:ENV 2,50,20,2: ENV 3,1,-15,10,1,4,10,1,1,10,1,6,20,1,15,20:ENV 4,1,5,7,2,5,3,15,-1,3:ENV 5,1,2,10,1,6,10,1,10,10,1,-10,10,1,-6,10:ENV 6,1,0,10,1,-6,10,1,11,10,1,-11,10,1,11,10:ENV 8,100,-2,2
230 ENV 9,1,-10,5,1,25,5,1,-5,10,1,-7,10,1,-3,16:ENV 10,1,23,15,1,-10,15,1,-11,15,1,-13,1,1,34,1:ENV 11,1,0,26,1,22,0:ENV 12,1,14,50,1,-22,0:ENV 12,1,18,20,1,-36,0,1,19,20,1,-19,0,1,36,20:ENV 13,1,6,20,1,-23,3,1,30,7,1,-13,3,1,4,26
240 ENV 14,1,0,20,1,-11,12,1,2,12,1,7,12,1,10,8:ENV 15,1,20,30,1,-20,30,1,0,30,1,2,30,1,14,30
250 a$=INKEY$:a=VAL(a$)
260 i=0:j=0:k=0:h=0
270 IF a$="ç" THEN 1190
280 IF a=7 THEN oc1=oc1-1:oc2=oc2-1:oc3=oc3-1
290 IF a=8 THEN oc1=oc1+1:oc2=oc2+1:oc3=oc3+1
300 IF a=4 THEN evl1=evl1+1:IF evl1>15 THEN evl1=0
310 IF a=1 THEN evl1=evl1-1:IF evl1<0 THEN evl1=15
320 IF a=5 THEN evl2=evl2+1:IF evl2>15 THEN evl2=0
330 IF a=2 THEN evl2=evl2-1:IF evl2<0 THEN evl2=15
340 IF a=6 THEN evl3=evl3+1:IF evl3>15 THEN evl3=0
350 IF a=3 THEN evl3=evl3-1:IF evl3<0 THEN evl3=15
360 IF a$="[" THEN GOSUB 1140
370 IF a$="]" THEN GOSUB 1150
380 IF a$="à" THEN GOSUB 1170
390 IF a$=";" THEN GOSUB 1180
400 IF a$=CHR$(243) THEN dur=dur+5
410 IF a$=CHR$(241) THEN vol=vol-1:IF vol<=0 THEN vol=0
420 IF a$=CHR$(240) THEN vol=vol+1:IF vol>=15 THEN vol=15
430 IF a$=CHR$(242) THEN dur=dur-5:IF dur<=5 THEN dur=5
440 per1=per1+(478 AND a$="q")+(451 AND a$="Q"):IF a$="q" THEN note$="DO   " ELSE IF a$="Q" THEN note$="DO # "
450 per1=per1+(426 AND a$="w")+(402 AND a$="W"):IF a$="w" THEN note$="RE   " ELSE IF a$="W" THEN note$="MI b "
460 per1=per1+(379 AND a$="e")+(358 AND a$="r"):IF a$="e" THEN note$="MI   " ELSE IF a$="r" THEN note$="FA   "
470 per1=per1+(338 AND a$="R")+(319 AND a$="t"):IF a$="R" THEN note$="FA # " ELSE IF a$="t" THEN note$="SOL  "
480 per1=per1+(301 AND a$="T")+(284 AND a$="y"):IF a$="T" THEN note$="SOL #" ELSE IF a$="y" THEN note$="LA   "
490 per1=per1+(268 AND a$="Y")+(253 AND a$="u"):IF a$="Y" THEN note$="SI b " ELSE IF a$="u" THEN note$="SI   "
500 per2=per2+(478 AND a$="i")+(451 AND a$="I"):IF a$="i" THEN note$="DO    " ELSE IF a$="I" THEN note$="DO # "
510 per2=per2+(426 AND a$="o")+(402 AND a$="O"):IF a$="o" THEN note$="RE   " ELSE IF a$="O" THEN note$="MI b "
520 per2=per2+(379 AND a$="p")+(358 AND a$="a"):IF a$="p" THEN note$="MI   " ELSE IF a$="a" THEN note$="FA   "
530 per2=per2+(338 AND a$="A")+(319 AND a$="s"):IF a$="A" THEN note$="FA # " ELSE IF a$="s" THEN note$="SOL  "
540 per2=per2+(301 AND a$="S")+(284 AND a$="d"):IF a$="S" THEN note$="SOL #" ELSE IF a$="d" THEN note$="LA   "
550 per2=per2+(268 AND a$="D")+(253 AND a$="f"):IF a$="D" THEN note$="SI b " ELSE IF a$="f" THEN note$="SI   "
560 per3=per3+(478 AND a$="g")+(451 AND a$="G"):IF a$="g" THEN note$="DO    " ELSE IF a$="G" THEN note$="DO # "
570 per3=per3+(426 AND a$="h")+(402 AND a$="H"):IF a$="h" THEN note$="RE   " ELSE IF a$="H" THEN note$="MI b "
580 per3=per3+(379 AND a$="j")+(358 AND a$="k"):IF a$="j" THEN note$="MI   " ELSE IF a$="k" THEN note$="FA   " 
590 per3=per3+(338 AND a$="K")+(319 AND a$="l"):IF a$="K" THEN note$="FA # " ELSE IF a$="I" THEN note$="SOL  "
600 per3=per3+(301 AND a$="L")+(284 AND a$="z"):IF a$="L" THEN note$="SOL #" ELSE IF a$="z" THEN note$="LA   "
610 per3=per3+(268 AND a$="Z")+(253 AND a$="x"):IF a$="Z" THEN note$="SI b " ELSE IF a$="x" THEN note$="SI   "
620 IF a$="" THEN per1=0:per2=0:per3=0:LOCATE 12,9:PRINT"     ":LOCATE 12,8:PRINT"     ":LOCATE 12,10:PRINT"     ":GOTO 220
630 '*****************
640 '**    SOUND    **
650 '*****************
660 WINDOW#2,12,16,8,10:CLS#2:FOR t=1 TO 20:NEXT:IF oc3>=4 THEN oc3=4:oc2=3:oc1=2
670 IF oc1<=-3 THEN oc1=-3:oc2=-2:oc3=-1
680 per1=INT(per1/2^oc1):per2=INT(per2/2^oc2):per3=INT(per3/2^oc3)
690 IF per1=0 THEN 700 ELSE SOUND 1,per1,dur,vol,evl1:can=1
700 IF per2=0 THEN 710 ELSE SOUND 2,per2,dur,vol,evl2:can=2
710 IF per3=0 THEN 720 ELSE SOUND 4,per3,dur,vol,evl3:can=4
720 LOCATE 12,8:PRINT per1:LOCATE 39,8:PRINT note$:LOCATE 40,10:PRINT can:LOCATE 54,8:PRINT dur:LOCATE 55,10:PRINT vol
730 LOCATE 12,9:PRINT per2:LOCATE 26,8:PRINT oc1:LOCATE 26,9:PRINT oc2:LOCATE 26,10:PRINT oc3:LOCATE 12,10:PRINT per3:LOCATE 77,8:PRINT evl1:LOCATE 77,9:PRINT evl2:LOCATE 77,10:PRINT evl3:PLOT 638,450:DRAW 638,200
740 per1=0:per2=9:per3=0:IF ASC(a$)<65 OR ASC(a$)>122 THEN 250 ELSE n=n+1
750 GOTO 250
760 '***********************
770 '** DESSIN DU CLAVIER **
780 '***********************
790 GOSUB 950
800 LOCATE 2,8:PRINT"PERIODE 1:":LOCATE 2,9:PRINT"PERIODE 2:":LOCATE 2,10:PRINT"PERIODE 3:"
810 LOCATE 19,10:PRINT"OCT.3:":LOCATE 33,8:PRINT"NOTE :":LOCATE 33,10:PRINT"CANAL:":LOCATE 47,8:PRINT"DUREE :":LOCATE 47,10:PRINT"VOLUME:":LOCATE 60,8:PRINT"EFFET :":LOCATE 72,8:PRINT"ENV1:":LOCATE 72,9:PRINT"ENV2:":LOCATE 72,10:PRINT"ENV3:"
820 LOCATE 19,9:PRINT"OCT.2:":LOCATE 19,8:PRINT"OCT.1:"
830 LOCATE 10,21:PRINT "DO RE MI FA SO LA SI DO RE MI FA SO LA SI DO RE MI FA SO LA SI":LOCATE 11,24:PRINT"Q  W  E  R  T  Y  U  I  O  P  A  S  D  F  G  H  J  K  L  Z  X"
840 LOCATE 15,12:PRINT"main Gauche":LOCATE 45,12:PRINT"main Droite"
850 FOR t=1 TO 22:READ x:PLOT x,46:DRAW x,172:NEXT
860 PLOT 68,175:DRAW 572,175:PLOT 68,45:DRAW 572,45
870 FOR t=1 TO 15:READ z,y:FOR x=z TO y:PLOT x,174:DRAW x,104:NEXT x:NEXT t
880 FOR q=1 TO 10:READ a,b,c,d:PLOT a,b:DRAW c,d:NEXT q
890 FOR q=1 TO 13:READ a,b,c,d:PLOT a,b:DRAW c,d:NEXT q
900 DATA 68,92,116,140,164,188,212,236,260,284,308,332,356,380,404,428,452,476,500,524,548,572
910 DATA 84,100,108,124,156,172,180,196,204,220,252,268,276,292,324,340,348,364,372,388,420,436,444,460,492,508,516,532,540,556
920 DATA 68,194,234,194,238,194,572,194,68,194,68,184,234,194,234,184,238,194,238,184,572,194,572,184,68,37,572,37,68,15,572,15,68,15,68,37,572,37,572,15,2,1,638,1,638,398,638,398,2,398,2,1,2,235,638,235,250,265,465,265,140,235,140,295,250,235,250
930 DATA 295,2,295,638,295,360,235,360,295,465,235,465,295,638,1,638,398,638,398,2,398,560,235,560,295
940 RETURN
950 SYMBOL 49,1,3,7,15,31,63,127,255
960 SYMBOL 50,128,192,224,240,248,252,254,255
970 SYMBOL 51,255,255,255,255,255,255,255,255
980 SYMBOL 52,255,127,63,31,15,7,3,1
990 SYMBOL 53,255,254,252,248,240,224,192,128
1000 SYMBOL 54,0,0,0,0,0,0,0,0
1010 a$="66121266666666616666666666666613262666"
1020 b$="66333366666666665666666666666636363666"
1030 c$="66345362626135612613561356132636663366"
1040 d$="66366363636432633636664326363633663666"
1050 e$="66566564136135633643261356435636664326"
1060 LOCATE 21,2:PRINT a$:LOCATE 21,3:PRINT b$:LOCATE 21,4:PRINT c$:LOCATE 21,5:PRINT d$:LOCATE 21,6:PRINT e$
1070 SYMBOL 49,24,56,24,24,24,24,126,0
1080 SYMBOL 50,60,102,6,60,96,102,126,0
1090 SYMBOL 51,60,102,6,28,6,102,60,0
1100 SYMBOL 52,28,60,108,204,254,12,30,0
1110 SYMBOL 53,126,98,96,124,6,102,60,0
1120 SYMBOL 54,60,102,96,124,102,102,60,0
1130 RETURN
1140 LOCATE 60,10:PRINT"Alarme   ":LOCATE 40,10:PRINT"1 ":FOR n=500 TO 100 STEP -15:SOUND 1,n,4,vol:NEXT:SOUND 1,0,30,vol:IF h=5 THEN 1160 ELSE h=h+1:GOTO 1140
1150 LOCATE 60,10:PRINT"Sonnerie ":LOCATE 40,10:PRINT"1 ":SOUND 1,100,100,vol:SOUND 1,0,100,vol:IF h=5 THEN 1160 ELSE h=h+1:GOTO 1150
1160 LOCATE 60,10:PRINT"Neant    ":can=0:RETURN
1170 LOCATE 60,10:PRINT"Sirene   ":LOCATE 40,10:PRINT"1 ":FOR n=100 TO 200 STEP 10:SOUND 1,n,2,vol:NEXT:FOR n=200 TO 100 STEP -10:SOUND 1,n,2,vol:NEXT:IF i=5 THEN 1160 ELSE i=i+1:GOTO 1170
1180 LOCATE 60,10:PRINT"Tirs     ":LOCATE 40,10:PRINT"1 ":FOR n=90 TO 125 STEP INT(RND(1)*10)+1:SOUND 1,n,2,vol:NEXT:SOUND 1,0,INT(RND(1)*20):IF k=8 THEN 1160 ELSE k=k+1:GOTO 1180
1190 '******************
1200 '** PRESENTATION **
1210 '******************
1220 FOR col=0 TO 26:FOR col1=26 TO 0 STEP -1:INK 0,col:INK 1,col1:NEXT:NEXT:MODE 1:GOSUB 950
1230 PLOT 1,280:DRAW 639,280:PLOT 1,100:DRAW 639,100
1240 a$=INKEY$
1250 SYMBOL 199,255,129,129,129,129,129,129,255
1260 LOCATE 7,10:PRINT"Mode d'emploi":LOCATE 7,12:PRINT"Jouer une musique":LOCATE 7,14:PRINT"Fonction des Touches":LOCATE 7,16:PRINT"Arreter":LOCATE 6,21:PRINT"Utiliser les Touches : '"CHR$(240)"' et '"CHR$(241)"'  "
1270 LOCATE 11,22:PRINT"Validez avec [ENTER]":PLOT 1,30:DRAW 639,30
1280 a=5
1290 GOSUB 1350
1300 a$=INKEY$
1310 IF a$=CHR$(240) THEN a=a-2:GOSUB 1350
1320 IF a$=CHR$(241) THEN a=a+2:GOSUB 1350
1330 IF INKEY(18)=0 THEN 1370
1340 GOTO 1300
1350 IF a<10 THEN a=10 ELSE IF a>16 THEN a=16
1360 LOCATE 5,10:PRINT CHR$(199):LOCATE 5,12:PRINT CHR$(199):LOCATE 5,14:PRINT CHR$(199):LOCATE 5,16:PRINT CHR$(199):LOCATE 5,a:PRINT CHR$(143):RETURN
1370 LOCATE 2,21:IF a=10 THEN 1580 ELSE IF a=12 THEN 210 ELSE IF a=14 THEN 1380 ELSE IF a=16 THEN 1550
1380 '*********************************
1390 '* PRESENTATION FONCTION TOUCHES *
1400 '*********************************
1410 MODE 2:GOSUB 950
1420 PLOT 1,280:DRAW 639,280:PLOT 1,250:DRAW 639,250:PLOT 1,45:DRAW 639,45:LOCATE 19,9:PRINT"PRESENTATION de la FONCTION des TOUCHES"
1430 LOCATE 20,22:PRINT"PRESSEZ 'ç' pour REVENIR  au MENU":PLOT 1,68:DRAW 639,68
1440 LOCATE 3,11:PRINT CHR$(240)": Augmente le volume de 1                   "CHR$(241)": Diminue le volume de 1"
1450 LOCATE 3,12:PRINT CHR$(243)": Augmente la duree de 5                    "CHR$(242)": Diminue la duree de 5"
1460 LOCATE 3,13:PRINT"8: Augmente de 1 octave                       7:Diminue de 1 octave"
1470 LOCATE 3,14:PRINT"6: Augmente l'env1 de 1                       5:Augmente l'env2 de 1"
1480 LOCATE 3,15:PRINT"4: Diminue l'env1 de 1                        3:Diminue l'env3 de 1"
1490 LOCATE 3,16:PRINT"2: Diminue l'env2 de 1                        1:Diminue l'env1 de 1"
1500 LOCATE 3,17:PRINT"ç: Retour au Menu                             [:Effet 'Alarme'"
1510 LOCATE 3,18:PRINT"]: Effet 'Sonnerie'                           à:Effet 'Sirene'"
1520 LOCATE 3,19:PRINT";: Effet 'Tirs'                               SHIFT: Pour dieses et bemols"
1530 s$=INKEY$
1540 IF s$="ç" THEN 1190 ELSE 1530
1550 MODE 0
1560 FOR encr=0 TO 26:INK 0,encr:LOCATE 4,12:PRINT"FIN DU LOGICIEL":NEXT
1570 GOTO 1570
1580 MODE 2:GOSUB 950
1590 PLOT 1,280:DRAW 639,280:PLOT 1,250:DRAW 639,250:PLOT 1,45:DRAW 639,45:LOCATE 32,9:PRINT"MODE D'EMPLOI"
1600 LOCATE 7,11:PRINT"MUSICSOFT est un logiciel simple qui permet de transformer votre AMSTRAD "
1610 LOCATE 5,12:PRINT"en un synthetiseur.  Il ne demande aucune connaissance speciale du solfege"
1620 LOCATE 5,13:PRINT"et permet de creer de merveilleuses musiques.La correspondance des touches"
1630 LOCATE 5,14:PRINT"de l'ordinateur avec celles d'un synthe est indique sur l'ecran, ainsi que"
1640 LOCATE 5,15:PRINT"de nombreux parametres qui vous permettront  en les relevant d'inclure vo-"
1650 LOCATE 5,16:PRINT"tre creation dans un autre de vos programmes."
1660 LOCATE 7,17:PRINT"Ce synthetiseur vous permet, entre autre, de melanger avec votre musique "
1670 LOCATE 5,18:PRINT"des sons preprogrammes ( que vous pourrez transformer en changeant les li-"
1680 LOCATE 5,19:PRINT"gnes 1100 a 1140 ) ,  changer la sonorite de vos notes avec des enveloppes"
1690 LOCATE 5,20:PRINT"selectionnables que vous pourrez egalement transformer (ligne 200), et  de"
1700 LOCATE 5,21:PRINT"reduire ou augmenter la duree de la note et le volume de celle-ci."
1710 LOCATE 7,22:PRINT"Pour conclure, donnez un coup d'oeil a la fonction des touches..."
1720 LOCATE 23,24:PRINT"PRESSEZ '/' POUR REVENIR AU MENU"
1730 WQ$=INKEY$
1740 IF WQ$="/" THEN 1190 ELSE 1730
1750 '*** GENERIQUE ***
1760 RESTORE 1770:FOR t=1 TO 19:READ a:SOUND 1,a*4,22,6:SOUND 2,a/2,22,6:SOUND 4,a*2,22,6:NEXT
1770 DATA 159,142,126,142,126,119,126,119,106,126,119,106,94,89,94,106,119,126,119,106,126,119
1780 RESTORE 1850:FOR t=1 TO 34
1790 READ a:SOUND 1,a,22,6:SOUND 2,a/2,22,6:SOUND 4,a/4,22,6:NEXT
1800 RESTORE 1850:t=0
1810 FOR t=1 TO 33
1820 READ a:SOUND 1,a/4,20,6:SOUND 2,a*2,15,6:NEXT
1830 FOR t=7 TO 1 STEP -1:SOUND 1,338*2,15,t:NEXT
1840 GOTO 1880
1850 DATA 338,301,268,225,225,338,301,268,201,201,338,301,268,225,201,225,268,268,301,338,402,402,268,301,338,451,451,268,301,338,402,451,402,338
1860 '*** PRESENTATION ***
1870 MODE 1:GOSUB 950:GOTO 1760
1880 PLOT 1,250,1:DRAW 639,250,1:LOCATE 5,15:PRINT"Ecrit et Invente par:":LOCATE 10,17:PRINT"N.DANJOU":LOCATE 5,19:PRINT"Le Generique a ete realise":LOCATE 10,21:PRINT"avec ce logiciel"
1890 FOR t=5 TO 250 STEP 4:PLOT 10,t,0:DRAW 600,t,0:NEXT:FOR t=40 TO 600 STEP 4:PLOT t,20:DRAW t,230:NEXT:PLOT 1,1,1
1900 FOR t=1 TO 1500:NEXT
1910 FOR t=1 TO 1000:NEXT:FOR col=26 TO 0 STEP -1:FOR col1=0 TO 26:INK 0,col:INK 1,col1:NEXT:NEXT:RETURN