JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Un tout petit clavier Jeu 2 Juin 2011 - 16:20 | |
| Ca a déjà été fait, notamment très bien par Nicolas: https://panoramic.1fr1.net/t1426-piano-avec-tous-les-instruments?highlight=piano en beaucoup plus élaboré. Pour moi qui n'y connais rien en musique, j'ai fait simpliste et court, moins de 100 lignes, juste pour essayer les commandes MIDI de Panoramic. Et rien n'empêche de développer: changer d'instrument, de volume, etc. - Code:
-
' Midi_Play.bas clavier 37 touches, 3 octaves de do3 à si5 label touche, auclair dim i, xd, yd, ld, hd, note(100), lb, hb, xb, x, no, du dim do(8), re(8), mi(8), fa(8), sol(8), la(8), si(8) la(0)=21: si(0)=23: ' octave 0 do(1)=24: re(1)=26: mi(1)=28: fa(1)=29: sol(1)=31: la(1)=33: si(1)=35: ' octave 1 for i = 2 to 8 do(i)=do(1)+12*i: re(i)=re(1)+12*i: mi(i)=mi(1)+12*i: fa(i)=fa(1)+12*i sol(i)=sol(1)+12*i: la(i)=la(1)+12*i: si(i)=si(1)+12*i next i dim v4000, v6000, v2000, v3000, v1000, v1500, v500, v750, v250, v375, v125, v188 v4000=0: ' ronde, 4000 ms v6000=1: ' ronde pointée v2000=2: ' blanche v3000=3: ' blanche pointée v1000=4: ' noire v1500=5: ' noire pointée v500=6: ' croche v750=7: ' croche pointée v250=8: ' double croche v375=9: ' double croche pointée v125=10: ' triple croche v188=11: ' triple croche pointée ' Notes principales du clavier data do(3),re(3),mi(3),fa(3),sol(3),la(3),si(3),do(4),re(4),mi(4),fa(4),sol(4),la(4),si(4) data do(5),re(5),mi(5),fa(5),sol(5),la(5),si(5) ' Notes dièses data do(3)+1,re(3)+1,fa(3)+1,sol(3)+1,la(3)+1,do(4)+1,re(4)+1,fa(4)+1,sol(4)+1,la(4)+1 data do(5)+1,re(5)+1,fa(5)+1,sol(5)+1,la(5)+1
width 0, 900: height 0, 210: color 0, 180,116,52: caption 0, " Clavier" ' notes principales (touches blanches) xd = 20: yd = 10: ld = 40: hd = 120 for i = 1 TO 21 picture i: top i, yd: left i, xd+(i-1)*ld: width i, ld: height i, hd 2d_target_is i: 2d_rectangle 0,0,ld,hd on_click i, touche read note(i) next i ' notes dièses (touches noires) lb = 24: xb = xd+ld-lb/2: hb = 2*hd/3 x = xb for i = 35 to 54 if i<>37 and i<>41 and i<>44 and i<>48 and i<>51 picture i: top i, yd: left i, x: width i, lb: height i, hb 2d_target_is i: 2d_fill_color 0,0,0: 2d_rectangle 0,0,lb,hb on_click i, touche read note(i) end_if x = x + ld next i print_target_is 0: font_name 0, "Lucida Console": font_size 0, 12 print_locate xd+10, 135: print "C3 D3 E3 F3 G3 A3 B3 C4 D4 E4 F4 G4 A4 B4 C5 D5 E5 F5 G5 A5 B5" print_locate xd+10, 150: print "do ré mi fa sol la si do ré mi fa sol la si do ré mi fa sol la si"
' Au clair de la lune: note(octave),durée data do(4),v500,do(4),v500,do(4),v500,re(4),v500,mi(4),v1000,re(4),v1000 data do(4),v500,mi(4),v500,re(4),v500,re(4),v500,do(4),v1500 data do(4),v500,do(4),v500,do(4),v500,re(4),v500,mi(4),v1000,re(4),v1000 data do(4),v500,mi(4),v500,re(4),v500,re(4),v500,do(4),v1500 data re(4),v500,re(4),v500,re(4),v500,re(4),v500,la(3),V1000,la(3),v1000 data re(4),v500,do(4),v500,si(3),v500,la(3),v500,sol(3),v1500 data do(4),v500,do(4),v500,do(4),v500,re(4),v500,mi(4),v1000,re(4),v1000 data do(4),v500,mi(4),v500,re(4),v500,re(4),v500,do(4),v1500,0,0 midi_on gosub auclair end ' Commandes Panoramic de type MIDI: ' MIDI_ON, MIDI_OFF ouvrir et fermer la sortie MIDI ' MIDI_INSTRUMENT n, 1 à 127, type d'instrument ' MIDI_VOLUME v, 1 à 127 volume des notes (100 par défaut) ' MIDI_PLAY n,t joue la note n (21 à 108) de la durée t (0 à 11)
touche: for i = 1 to 21 if clicked(i) = 1 then exit_for next i if i > 21 ' touche noire for i = 35 to 54 if i<>37 and i<>41 and i<>44 and i<>48 and i<>51 if clicked(i) = 1 then exit_for end_if next i end_if midi_play note(i), 6: ' joue la note cliquée return
auclair: read no: read du repeat: midi_play no,du: read no: read du: until no=0 return Essayez de deviner l'air qui est joué en entrée... | |
|