JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Piano Ven 30 Avr 2021 - 22:32 | |
| Juste vite fait pour s'amuser... Je n'y connais rien en pratique de la musique, je sais juste écouter, je viens de découvrir les instructions MIDI de Panoramic qui ouvrent des horizons. C'est juste un essai, on peut faire beaucoup mieux et beaucoup plus élaboré, ici on peut jouer au clair de la lune, ou jouer du piano sur le clavier, juste les notes do,ré,mi,fa,sol,la,si,do sur les touches A Z E R T Y U I, très élémentaire (si ça se trouve ça avait déjà été fait, je n'ai pas cherché...): - Code:
-
' Musique.bas: jouer des notes de musique avec des instruments différents LABEL Qt,Instrum,piano,piano1,ecouter DIM t1,t2,v,dt(11),ins$(127),inst(127),mido,ip,i,a$,b$ DIM do(3),dod(3),re(3),red(3),mi(3),fa(3),fad(3),sol(3),sold(3),la(3),lad(3),si(3) ' N°s de notes MIDI: ' https://musicordes.fr/tableau-frequences-numero-de-note-midi/' ' ici notes sur 3 octaves, 12 valeurs par octave: ' do, do#, re, re#, mi, fa, fa#, sol, sol#, la, la#, si DATA 48,49,50,51,52,53,54,55,56,57,58,59: ' octave 1 DATA 60,61,62,63,64,65,66,67,68,69,70,71: ' octave 2 DATA 72,73,74,75,76,77,78,79,80,81,82,83: ' octave 3 FOR i = 1 TO 3 READ do(i): READ dod(i): READ re(i): READ red(i): READ mi(i): READ fa(i) READ fad(i): READ sol(i): READ sold(i): READ la(i): READ lad(i): READ si(i) NEXT i : ' durée des notes en fonction de l'indice 0 à 11 dt(0)=4000: dt(1)=6000: dt(2)=2000: dt(3)=3000: dt(4)=1000: dt(5)=1500: dt(6)=500 dt(7)=750: dt(8)=250: dt(9)=375: dt(10)=125: dt(11)=188: ' durées note, en ms ' Liste des instruments (N°s): ' https://www.zikinf.com/articles/mao/tablemidi.php ' Table complète des instruments: C:\PANORAMIC\MUSIQUE_MIDI\Instruments.rtf DATA "Piano (1à8)","Percussion (9à16)","Orgue (17à24)","Guitare (25à32)" DATA "Basse (33à40)","Violon (41à48)","Cordes (49à56)","Cuivres (57à64)" DATA "Anche (65à72)","Flute (73à80)","Synthé1 (81à88)","Synthé2 (89à96)" DATA "Synthé3 (97à104)","Ethnique (105à112)","Percussion (113à119" DATA "Effets (120à128)"
BORDER_SMALL 0: WIDTH 0,350: HEIGHT 0,110: FONT_SIZE 0,10: COLOR 0,245,255,255 CAPTION 0," - MUSIQUE MIDI -": ON_CLOSE 0,Qt BUTTON 5: CAPTION 5,"Écouter": ON_CLICK 5,ecouter BUTTON 6: TOP 6,TOP(5)+25: CAPTION 6,"Jouer": ON_CLICK 6,piano BUTTON 7: TOP 7,TOP(6)+25: CAPTION 7,"Quitter": ON_CLICK 7,Qt FOR i = 5 TO 7: WIDTH i,60: NEXT i PICTURE 8: TOP 8,5: LEFT 8,WIDTH(5)+2: WIDTH 8,8: HEIGHT 8,HEIGHT_CLIENT(0)-10 COLOR 8,255,0,0: HIDE 8 CONTAINER_OPTION 10: LEFT 10,80: WIDTH 10,260: CAPTION 10,"INSTRUMENT :" OPTION 11: PARENT 11,10: TOP 11,19: LEFT 11,0: CAPTION 11,"Piano": MARK_ON 11: ip=1 OPTION 12: PARENT 12,10: TOP 12,TOP(11): LEFT 12,85: CAPTION 12,"Xylophone" OPTION 13: PARENT 13,10: TOP 13,TOP(11): LEFT 13,160: CAPTION 13,"Harmonica" OPTION 14: PARENT 14,10: TOP 14,TOP(11)+19: LEFT 14,LEFT(11): CAPTION 14,"Guitare" OPTION 15: PARENT 15,10: TOP 15,TOP(14): LEFT 15,LEFT(12): CAPTION 15,"Violon" OPTION 16: PARENT 16,10: TOP 16,TOP(14): LEFT 16,LEFT(13): CAPTION 16,"Flûte" OPTION 17: PARENT 17,10: TOP 17,TOP(14)+19: LEFT 17,LEFT(11): CAPTION 17,"Cornemuse" OPTION 18: PARENT 18,10: TOP 18,TOP(17): LEFT 18,LEFT(12): CAPTION 18,"Oiseaux" OPTION 19: PARENT 19,10: TOP 19,TOP(17): LEFT 19,LEFT(13): CAPTION 19,"Téléphone" FOR i = 11 TO 19: ON_CLICK i,Instrum: NEXT i inst(11)=1: inst(12)=13: inst(13)=22: inst(14)=24: inst(15)=40: inst(16)=73 inst(17)=109: inst(18)=123: inst(19)=124 READ ins$(24): READ ins$(40): READ ins$(73) READ ins$(109): READ ins$(123): READ ins$(124) v = 120: ' volume (=1 à 127) t1 = 6: ' durée note = 500 ms t2 = 4: ' 1000 ms t1 = 9: t2 = 7: ' 375 et 750 ms mido = 0: ' midi off) END ' ================================== Qt: TERMINATE ' ================================== Instrum: IF mido = 1 THEN MIDI_OFF: mido = 0: HIDE 8 i = NUMBER_CLICK: ip = inst(i) RETURN ' ================================== piano: ' Jouer des notes au clavier: ' touches AZERTYUI = do,ré,mi,fa,sol,la,si,do ' Taper la touche 'Esc' pour quitter MIDI_ON: mido = 1: SHOW 8 MIDI_INSTRUMENT ip MIDI_VOLUME 120: ' 1 à 127 piano1: i = 0: WHILE i < 2: PAUSE 50: i = SCANCODE: SCANCODE = 0: END_WHILE IF i = 27 THEN MIDI_OFF: mido = 0: HIDE 8: RETURN a$ = UPPER$(CHR$(i)) b$ = "AZERTYUI": i = INSTR(b$,a$) SELECT i CASE 1: v = do(2) CASE 2: v = re(2) CASE 3: v = mi(2) CASE 4: v = fa(2) CASE 5: v = sol(2) CASE 6: v = la(2) CASE 7: v = si(2) CASE 8: v = do(3) END_SELECT IF i>0 THEN MIDI_PLAY v,t1 GOTO piano1 RETURN ' =================================== ecouter: ' jouer au clair de la lune MIDI_ON: mido = 1: SHOW 8 MIDI_INSTRUMENT ip MIDI_VOLUME 120 FOR i = 1 TO 2 MIDI_PLAY do(2),t1 MIDI_PLAY do(2),t1 MIDI_PLAY do(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY mi(2),t2 MIDI_PLAY re(2),t2 MIDI_PLAY do(2),t1 MIDI_PLAY mi(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY do(2),5: ' durée 1500 ms NEXT i
MIDI_PLAY re(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY la(1),t2 MIDI_PLAY la(1),t2 MIDI_PLAY re(2),t1 MIDI_PLAY do(2),t1 MIDI_PLAY si(1),t1 MIDI_PLAY la(1),t1 MIDI_PLAY sol(1),5
MIDI_PLAY do(2),t1 MIDI_PLAY do(2),t1 MIDI_PLAY do(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY mi(2),t2 MIDI_PLAY re(2),t2 MIDI_PLAY do(2),t1 MIDI_PLAY mi(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY re(2),t1 MIDI_PLAY do(2),5 MIDI_OFF: mido = 0: HIDE 8 RETURN ' ==================================== Bonne nuit à tous ! Edit du 1/5
Dernière édition par JL35 le Sam 1 Mai 2021 - 17:18, édité 1 fois | |
|