Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Utilitaire pour les instructions midi | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Utilitaire pour les instructions midi Ven 25 Mai 2012 - 14:08 | |
| Bonjour à tous, Voici un petit utilitaire, qui vous permet de savoir à quoi correspondent les instructions midi de Panoramic. Le programme affiche un clavier de 61 notes CLIQUABLES, soit 5 octaves qui correspondent à l’instruction midi_play 37,t à midi_play 96,t. Normalement l’étendue va de 21 à 108, ce qui correspond au clavier d’un piano soit 88 touches ou 7 octaves ¼. Ensuite s’affiche la liste des 128 instruments midi sous forme d’alphas CLIQUABLES, et qui correspondent à l’instruction midi_instrument N (de 0 à 127). Ainsi en cliquant dessus, vous pourrez entendre le son de chaque instrument. A gauche, s’affiche les différentes durées de notes aussi en Alpha CLIQUABLES, ce qui correspond à l’instruction midi_play N,T avec T de 0 à 11. Pour sortir du programme, cliquez sur la croix rouge de la fenêtre. Ah aussi, j’ai programmé les touches du clavier de l’ordi pour qu’elles répondent à une note, mais n’allez surtout pas vous prendre pour Mozart ou Beethoven! - Code:
-
dim c,d,i,j,k,t,nci,tup,tdown,inst$,note(61) label fin,joue_note,click_note,selection_instrument,duree_note height 0,700:width 0,1300:left 0,(screen_x-width(0))/2:top 0,(screen_y-height(0))/2 caption 0,"GÉNÉRATEUR DE NOTES ET D'INSTRUMENTS MIDI":color 0,15,30,45 ' Le clavier de 5 octaves for i= 1 to 36:picture i:width i,28:height i,100:left i,(i*30)+80:top i,10:color i,255,255,255:next i j=130:for i=37 to 61 picture i:width i,20:top i,10:height i, 60:color i,30,30,35 if i=39 or i=42 or i=44 or i=47 or i=49 or i=52 or i=54 or i=57 or i=59 then j=j+30 left i,j:j=j+30 next i ' Le nom des notes "Do" de début et fin d'octave: Ecrire C1,C2,C3,C4,C5 et C6 sur le clavier j=1:for i=62 to 67:alpha i:color i,255,255,255:font_name i,"Fixedsys":font_color i,255,0,0:left i,(j*30)+82:top i,10:caption i,"C"+str$(i-61):j=j+7:next i for i=1 to 61:on_click i,click_note:next i ' ======================================================================================================================================= LE 68 EST LIBRE ====================== ' Durée des notes alpha 69:font_name 69,"Lucida Console":font_bold 69:font_color 69,200,200,200:left 69,10:top 69,140:caption 69,"Durée des notes" restore:j=160 for i=70 to 81 read k:read inst$:alpha i:left i,10:top i,j:on_click i,duree_note font_name i,"Consolas":font_color i,100,100,100:caption i,str$(k)+" "+inst$:j=j+15 next i ' ======================================================================================================================================= 82 à 98 SONT LIBRES ================== ' Affichage des instruments midis alpha 99:font_name 99,"Lucida Console":font_bold 99:font_color 99,20,255,0:left 99,550:top 99,140:caption 99,"LISTE DES INSTRUMENTS" k=200:j=160 while i<>127 read i:read inst$:alpha i+100:left i+100,k:top i+100,j:on_click i+100,selection_instrument font_name i+100,"Consolas":font_color i+100,0,200,0:caption i+100,str$(i)+" "+inst$:j=j+15 if i=31 or i=63 or i=95 then j=160:k=k+250 end_while ' ======================================================================================================================================= 228 à 299 SONT LIBRES ================== ' Attribution de la fréquence à chaque note du clavier while i<>0:read i:read note(i):end_while ' mise en route du canal midi et déclaration de la routine de sortie du programme qui arrêtera le canal midi midi_on on_close 0,fin ' Le time et l'initialisation timer 300:timer_interval 300,1:on_timer 300,joue_note d=9:nci=100:font_color d+70,150,200,200:font_color nci,220,220,0 end ' Les routines évènementielles duree_note: font_color d+70,100,100,100:d=number_click-70:font_color d+70,150,200,200 return
selection_instrument: font_color nci,0,200,0:nci=number_click:midi_instrument nci-100:font_color nci,220,220,0 return
click_note: timer_off 300 color number_click,0,200,200 midi_play note(number_click),d if number_click<37 color number_click,255,255,255 else color number_click,0,0,0 end_if timer_on 300 return
joue_note: timer_off 300 c=scancode if (c>44 and c<227) if c=226 then t=37 if c=87 then t=38 if c=88 then t=39 if c=67 then t=40 if c=86 then t=41 if c=66 then t=42 if c=78 then t=43 if c=188 then t=44 if c=190 then t=45 if c=191 then t=46 if c=223 then t=47 if c=81 then t=48 if c=83 then t=49 if c=68 then t=50 if c=70 then t=51 if c=71 then t=52 if c=72 then t=53 if c=74 then t=54 if c=75 then t=55 if c=76 then t=56 if c=77 then t=57 if c=192 then t=58 if c=220 then t=59 if c=65 then t=60 if c=90 then t=61 if c=69 then t=62 if c=82 then t=63 if c=84 then t=64 if c=89 then t=65 if c=85 then t=66 if c=73 then t=67 if c=79 then t=68 if c=80 then t=69 if c=221 then t=70 if c=186 then t=71 if c=49 then t=72 if c=50 then t=73 if c=51 then t=74 if c=52 then t=75 if c=53 then t=76 if c=54 then t=77 if c=55 then t=78 if c=56 then t=79 if c=57 then t=80 if c=48 then t=81 if c=219 then t=82 if c=187 then t=83 if c=112 then t=84 if c=113 then t=85 if c=114 then t=86 if c=115 then t=87 if c=116 then t=88 if c=117 then t=89 if c=118 then t=90 if c=119 then t=91 if c=120 then t=92 if c=121 then t=93 if c=122 then t=94 if c=123 then t=95 if c=45 then t=96 for j=1 to 61 if note(j)=t then color j,0,200,200:exit_for next j pause 50:midi_play t,d if j<37 color j,255,255,255 else color j,0,0,0 end_if end_if timer_on 300 return ' LES DATAS ' Datas des durées data 0,"Ronde",1,"Ronde pointée",2,"Blanche",3,"Blanche pointée",4,"Noire",5,"Noire pointée",6,"Croche",7,"Croche pointée",8,"Double croche",9,"Double croche pointée",10,"Triple croche",11,"Triple croche pointée" ' Datas des instruments midis data 0,"Acoustic Grand Piano",1,"Bright Acoustic Piano",2,"Electric grand Piano",3,"Honky Tonk Piano",4,"Electric Piano 1",5,"Electric Piano 2",6,"Harpsicord",7,"Clavinet" data 8,"Celesta",9,"Glockenspiel",10,"Music Box",11,"Vibraphone",12,"Marimba",13,"Xylophone",14,"Tubular bells",15,"Dulcimer" data 16,"Drawbar Organ",17,"Percussive Organ",18,"Rock Organ",19,"Church Organ",20,"Reed Organ",21,"Accordion",22,"Harmonica",23,"Tango Accordion" data 24,"Nylon Acoustic Guitar",25,"Steel Acoustic Guitar",26,"Jazz Electric Guitar",27,"Clean Electric Guitar",28,"Muted Electric Guitar",29,"Overdrive Guitar",30,"Distorted Guitar",31,"Guitar Harmonics" data 32,"Acoustic Bass",33,"Electric Fingered Bass",34,"Electric Picked Bass",35,"Fretless Bass",36,"Slap Bass 1",37,"Slap Bass 2",38,"Syn Bass 2",39,"Syn Bass 1" data 40,"Violin",41,"Viola",42,"Cello",43,"Contrabass",44,"Tremolo Strings",45,"Pizzicato Strings",46,"Orchestral Harp",47,"Timpani" data 48,"String Ensemble 1",49,"String Ensemble 2",50,"Syn Strings 1",51,"Syn Strings 2",52,"Choir Aahs",53,"Voice Oohs",54,"Syn Choir",55,"Orchestral Hit" data 56,"Trumpet",57,"Trombone",58,"Tuba",59,"Muted Trumpet",60,"French Horn",61,"Brass Section",62,"Syn Brass 1",63,"Syn Brass 2" data 64,"Soprano Sax",65,"Alto Sax",66,"Tenor Sax",67,"Baritone Sax",68,"Oboe",69,"English Horn",70,"Bassoon",71,"Clarinet" data 72,"Piccolo",73,"Flute",74,"Recorder",75,"Pan Flute",76,"Bottle Blow",77,"Shakuhachi",78,"Whistle",79,"Ocarina" data 80,"Syn Square Wave",81,"Syn Sawtooth Wave",82,"Syn Calliope",83,"Syn Chiff",84,"Syn Charang",85,"Syn Voice",86,"Syn Fifths Sawtooth Wave",87,"Syn Brass & Lead" data 88,"New Age Syn Pad",89,"Warm Syn Pad",90,"Polysynth Syn Pad",91,"Choir Syn Pad",92,"Bowed Syn Pad",93,"Metal Syn Pad",94,"Halo Syn Pad",95,"Sweep Syn Pad" data 96,"SFX Rain",97,"SFX Soundtrack",98,"SFX Crystal",99,"SFX Atmosphere",100,"SFX Brightness",101,"SFX Goblins",102,"SFX Echoes",103,"SFX Sci-Fi" data 104,"Sitar",105,"Banjo",106,"Shamisen",107,"Koto",108,"Kalimba",109,"Bag Pipe",110,"Fiddle",111,"Shanai" data 112,"Tinkle Bell",113,"Agogo",114,"Steel Drums",115,"Woodblock",116,"Taiko Drum",117,"Melodic Tom",118,"Syn Drum",119,"Reverse Cymbal" data 120,"Guitar Fret Noise",121,"Breath Noise",122,"Seashore",123,"Bird Tweet",124,"Telephone Ring",125,"Helicopter",126,"Applause",127,"Gun Shot" ' Datas des pictures et des notes à mettre dans un *********** [TABLEAU] ************* data 1,36,37,37,2,38,38,39,3,40,4,41,39,42,5,43,40,44,6,45,41,46,7,47 data 8,48,42,49,9,50,43,51,10,52,11,53,44,54,12,55,45,56,13,57,46,58,14,59 data 15,60,47,61,16,62,48,63,17,64,18,65,49,66,19,67,50,68,20,69,51,70,21,71 data 22,72,52,73,23,74,53,75,24,76,25,77,54,78,26,79,55,80,27,81,56,82,28,83 data 29,84,57,85,30,86,58,87,31,88,32,89,59,90,33,91,60,92,34,93,61,94,35,95,36,96,0,0 ' Sortie du programme fin: midi_off terminate A l’intention de Jack principalement. Sachant que tu n’es pas musicien (moi non plus d’ailleurs, je ne suis qu’un petit amateur autodidacte) et sans vouloir te froisser, les instructions midi ne sont pas vraiment formidable pour programmer une musique. Il est à mon sens plus souple d’utiliser les instructions sound et play avec un fichier wave ou mp3 que l’on aura préalablement enregistré. Il y a quelques défauts et des manques avec les instructions midi: Tu utilises la table général midi qui doit être sur le canal 1. Il y a en tout 16 canaux midi. Sur le canal 10, normalement on trouve les instruments de batterie ou percussion qui s’étende de la valeur de note N 35 à 81 soit sur 4 octaves. C‘est dommage de ne pas pouvoir y accèder. Ensuite, je trouve dommage que l’on ne puisse pas jouer plusieurs notes en même temps! (C’est à cela que les 16 canaux midi doivent servir normalement) Et en ce qui concerne les durées, il faut prendre un minimum de chose en considération: Différents signes en musique peuvent exprimés une durée. Je ne citerais que les principaux: 1) la note qui en elle-même par son type défini une durée: La ronde, la blanche, la noire, la croche, la double croche, la triple croche, la quadruple croche. 2) le point qui prolonge de moitié la durée de la note et le double point qui prolonge de moitié et d’un quart la durée de la note. 3) la liaison (sorte de parenthèse horizontale) qui comme son nom l’indique lie 2 notes ensembles et là les durées des 2 notes s’additionnent. J’ai fait un petit tableau qui pourrait éventuellement représenter l’argument T dans l’instruction midi_play N,T où là on aurait une valeur entre 1 et 255 qui correspondrait à peu près à tous les types de durée que l’on peut rencontrer. (je pense que tu comprendras comment cela fonctionne, car un shéma ou un tableau valent mieux qu‘une longue explication) D’autres signes comme le point d’orgue définissent une durée, mais là c’est le musicien qui en définit lui-même la durée. Que dire encore, qu’il y a le tempo d’un morceau, mais cela est facilement programmable avec un timer comme dans mes programmes du métronome ou de la boîte à rythme drumbox! Ah j’allais oublier, les pauses, demi pauses, soupirs, demi soupirs ou quart de soupirs (qui peuvent être comme les notes pointés ou double pointés) qui eux expriment une durée pendant laquelle on ne joue pas de notes de musique. Mais cela, ouf, on peut maintenant heureusement le programmer aussi grâce à ta toute dernière instruction « pause » en jouant également avec le timer du tempo/temps par mesure. En espérant t’avoir un peu éclairé sur le sujet, et apporter ma modeste contribution. Je vais tacher de retrouver dans mes affaires le mode d’emploi de mon vieux synthétiseur Yamaha YS200 qui date de 1984 je crois et où il y a tout un chapitre qui parle de la norme midi et comment elle était programmé. Pour ça il faut que je déménage les 3/4 de mes affaires rengées dans mon garage! [url= ]] A l’heure actuelle, on ne peut pas programmer de logiciel de musique intégrant séquenceur, oscillateurs, effets sonores, etc… comme dans FLStudio ou Orion ou Mu-lab pour n’en citer que quelques uns, avec panoramic. Mais j’essayerais quand même d’exploiter au maximum les possibilité des instructions midi de Panoramic. Donc je vais voir si je ne peux pas faire quelque chose de mieux et de plus poussé avec ce programme! A+ [img] [/img] | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire pour les instructions midi Ven 25 Mai 2012 - 16:40 | |
| On va bientôt avoir un orchestre au complet il y a une petite erreur si on sélectionne "0 Acoustic grand piano" problème de zéro à 127. Bravo Bignono, tout çà avec un codes somme toute assez restreint. A+ PS: à propos de soupir, j'entend celui de Jack | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Utilitaire pour les instructions midi Ven 25 Mai 2012 - 17:03 | |
| Salut Jean-Claude, C'est curieux cette erreur qui vient sur midi_instrument! Ne pas pouvoir sélectionner le "0" alors qu'implicitement, si on n'utilise pas cette instruction c'est le son du Grand piano acoustic" attribué dans la table Général midi sous le n°0 qu'on entend! Cela signifie qu'une fois qu'on a changé d'instrument on ne peut pas revenir à celui de départ! On s'en rend compte quand on écoute les autres pianos, ce n'est pas le même instrument qui est sélectionné. Là je pense qu'il y a un petit bug! En attendant, il faut changer à la ligne 48: midi_instrument nci-100 par midi_instrument nci-99 sachant qu'on aura Bright Acoustic Piano sur 0 et 1. Bon là il faut que j'emmène ma grande à son cours d'alto. merci A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire pour les instructions midi Ven 25 Mai 2012 - 17:13 | |
| Vas-y piano piano | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Utilitaire pour les instructions midi Dim 27 Mai 2012 - 11:46 | |
| Oups, je n’ai pas posté mon commentaire sur ton post. Super ce clavier midi. Petite question, c'est volontaire le changement de couleur des touches noires ?
| |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Utilitaire pour les instructions midi Dim 27 Mai 2012 - 17:41 | |
| Bonsoir tout le monde Il faut que je rentre à l'hopital en urgence et je poste ici l'évolution de mon programme qui n'est pas fini. Par moment il plante par moment, mais dans l'ensemble il fonctionne. Vous n'avez qu'à cliquer sur les alphas pour voir le résultat! A bientôt! - Code:
-
dim c,d,i,j,k,t,ta,tg,tm,tn,nci,fmin,fmax,base,inst$,note(61),arp(82),n1,n2,n3,n4,n5,n6,n7,nj label fin,joue_note,click_note,selection_instrument,duree_note,type_gamme,type_mode,type_amplitude,type_note,type_note2,couleur_note,efface_couleur height 0,700:width 0,1300:left 0,(screen_x-width(0))/2:top 0,(screen_y-height(0))/2 caption 0,"GÉNÉRATEUR DE NOTES, D'INSTRUMENTS MIDI ET D'ARPÈGES":color 0,15,30,45 ' Le clavier de 5 octaves for i= 1 to 36:picture i:width i,28:height i,100:left i,(i*30)+80:top i,10:color i,255,255,255:next i j=130:for i=37 to 61 picture i:width i,20:top i,10:height i, 60:color i,30,30,35 if i=39 or i=42 or i=44 or i=47 or i=49 or i=52 or i=54 or i=57 or i=59 then j=j+30 left i,j:j=j+30 next i ' Le nom des notes "Do" de début et fin d'octave: Ecrire C1,C2,C3,C4,C5 et C6 sur le clavier j=1:for i=62 to 67:alpha i:color i,255,255,255:font_name i,"Fixedsys":font_color i,255,0,0:left i,(j*30)+82:top i,10:caption i,"C"+str$(i-61):j=j+7:next i for i=1 to 61:on_click i,click_note:next i ' ======================================================================================================================================= LE 68 EST LIBRE ====================== ' Durée des notes alpha 69:font_name 69,"Lucida Console":font_bold 69:font_color 69,200,200,200:left 69,10:top 69,140:caption 69,"Durée des notes" restore:j=160 for i=70 to 81 read k:read inst$:alpha i:left i,10:top i,j:on_click i,duree_note font_name i,"Consolas":font_color i,100,100,100:caption i,str$(k)+" "+inst$:j=j+15 next i ' Affighage des types d'arpège alpha 82:left 82,1150:top 82,140:font_name 82,"Lucida Console":font_bold 82:font_color 82,0,200,200:caption 82,"Arpèges" j=160:for i=83 to 92 read inst$:alpha i:left i,1150:top i,j:on_click i,type_gamme font_name i,"Consolas":font_color i,0,100,100:caption i,inst$:j=j+15 next i ' Affichage des types de gamme alpha 93:left 93,1150:top 93,310:font_name 93,"Lucida Console":font_bold 93:font_color 93,0,200,200:caption 93,"Gammes" j=325:for i=94 to 98 read inst$:alpha i:left i,1150:top i,j:on_click i,type_gamme font_name i,"Consolas":font_color i,0,100,100:caption i,inst$:j=j+15 next i ' Affichage des instruments midis alpha 99:font_name 99,"Lucida Console":font_bold 99:font_color 99,20,255,0:left 99,550:top 99,140:caption 99,"LISTE DES INSTRUMENTS" k=200:j=160 while i<>127 read i:read inst$:alpha i+100:left i+100,k:top i+100,j:on_click i+100,selection_instrument font_name i+100,"Consolas":font_color i+100,0,200,0:caption i+100,str$(i)+" "+inst$:j=j+15 if i=31 or i=63 or i=95 then j=160:k=k+250 end_while ' Mode des arpèges ou des gammes alpha 228:left 228,1150:top 228,415:font_name 228,"Lucida Console":font_bold 228:font_color 228,0,200,200:caption 228,"Mode Amplitude" j=435:for i=229 to 232 read inst$:alpha i:left i,1150:top i,j:on_click i,type_mode font_name i,"Consolas":font_color i,0,100,100:caption i,inst$:j=j+15 next i:hide 231:hide 232 ' Amplitude octaves arpèges et gammes j=435:for i=233 to 236 read inst$:alpha i:left i,1220:top i,j:on_click i,type_amplitude font_name i,"Consolas":font_color i,0,100,100:caption i,inst$:j=j+15 next i ' Notes de départ à sélectionner alpha 237:left 237,1150:top 237,510:font_name 237,"Lucida Console":font_bold 237:font_color 237,0,200,200:caption 237,"Notes départ" j=530:for i=238 to 244 read inst$:alpha i:left i,1150:top i,j:color i,200,200,200:on_click i,type_note font_name i,"Consolas":font_color i,0,100,100:font_bold i:caption i,inst$:j=j+15 next i j=538:for i=245 to 249 read inst$:alpha i:left i,1190:top i,j:color i,50,50,50:on_click i,type_note font_name i,"Consolas":font_color i,0,100,100:caption i,inst$:j=j+15:if i=246 then j=j+15 next i ' ======================================================================================================================================= 250 à 299 SONT LIBRES ================== ' Attribution de la fréquence à chaque note du clavier while i<>0:read i:read note(i):end_while ' Lecture datas arpèges et gammes for i=1 to 81:read arp(i):next i ' mise en route du canal midi et déclaration de la routine de sortie du programme qui arrêtera le canal midi midi_on on_close 0,fin ' Le timer et l'initialisation timer 300:timer_interval 300,1:on_timer 300,joue_note d=9:font_color d+70,150,200,200 nci=100:font_color nci,220,220,0 ta=233:font_color ta,0,200,200 tg=83:font_color tg,0,200,200 tm=229:font_color tm,0,200,200 tn=238:font_color tn,255,0,0 fmin=48:fmax=84:n1=0:n2=4:n3=7:base=fmin end ' Les routines évènementielles type_gamme: timer_off 300 font_color tg,0,100,100:tg=number_click:font_color tg,0,200,200 for i=1 to 79 if arp(i)=tg n1=arp(i+1):n2=arp(i+2):n3=arp(i+3):n4=arp(i+4):n5=arp(i+5):n6=arp(i+6):n7=arp(i+7) font_color 0,255,255,255:print_locate 10,10:print n1;" ";n2;" ";n3 if tg=97 or tg=98 then n6=0:n7=0 if tg=90 or tg=91 or tg=92 then n5=0:n6=0:n7=0 if tg<90 then n4=0:n5=0:n6=0:n7=0 exit_for end_if next i timer_oN 300 return type_mode: timer_off 300 font_color tm,0,100,100:tm=number_click:font_color tm,0,200,200 if tm=230 :' -> repeat if tg<90 j=0:while nj<fmax nj=base+n1+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n2+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n3+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur j=j+1 end_while:nj=0 end_if if tg=90 or tg=91 or tg=92 j=0:while nj<fmax nj=base+n1+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n2+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n3+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n4+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur j=j+1 end_while:nj=0 end_if if tg=97 or tg=98 j=0:while nj<fmax nj=base+n1+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n2+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n3+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n4+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n5+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur j=j+1 end_while:nj=0 end_if if tg=94 or tg=95 or tg=96 j=0:while nj<fmax nj=base+n1+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n2+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n3+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n4+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n5+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n6+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur nj=base+n7+(j*12):gosub couleur_note:midi_play nj,d:gosub efface_couleur j=j+1 end_while:nj=0 end_if until tm<>230 end_if if tm=231 :' <-
end_if if tm=232 :' <->
end_if timer_on 300 return
couleur_note: for k=1 to 61 if note(k)=nj then color k,0,200,200:exit_for next k return efface_couleur: if k<37 color k,255,255,255 else color k,0,0,0 end_if return type_amplitude: font_color ta,0,100,100:ta=number_click:font_color ta,0,200,200 if ta=233 then fmin=48:fmax=84 if ta=234 then fmin=48:fmax=72 if ta=235 then fmin=60:fmax=84 if ta=236 then fmin=36:fmax=72 gosub type_note2 return type_note: font_color tn,0,100,100:tn=number_click:font_color tn,255,0,0 type_note2: if tn=238 then base=fmin if tn=239 then base=fmin+2 if tn=240 then base=fmin+4 if tn=241 then base=fmin+5 if tn=242 then base=fmin+7 if tn=243 then base=fmin+9 if tn=244 then base=fmin+11 if tn=245 then base=fmin+1 if tn=246 then base=fmin+3 if tn=247 then base=fmin+6 if tn=248 then base=fmin+8 if tn=249 then base=fmin+10
return
duree_note: font_color d+70,100,100,100:d=number_click-70:font_color d+70,150,200,200 return
selection_instrument: timer_off 300 if nci=101 then font_color 100,0,200,0 font_color nci,0,200,0:nci=number_click:font_color nci,220,220,0:if nci=100 then nci=nci+1 midi_instrument nci-100 timer_on 300 return
click_note: timer_off 300 color number_click,0,200,200 midi_play note(number_click),d if number_click<37 color number_click,255,255,255 else color number_click,0,0,0 end_if timer_on 300 return
joue_note: timer_off 300 c=scancode if (c>44 and c<227) if c=226 then t=37 if c=87 then t=38 if c=88 then t=39 if c=67 then t=40 if c=86 then t=41 if c=66 then t=42 if c=78 then t=43 if c=188 then t=44 if c=190 then t=45 if c=191 then t=46 if c=223 then t=47 if c=81 then t=48 if c=83 then t=49 if c=68 then t=50 if c=70 then t=51 if c=71 then t=52 if c=72 then t=53 if c=74 then t=54 if c=75 then t=55 if c=76 then t=56 if c=77 then t=57 if c=192 then t=58 if c=220 then t=59 if c=65 then t=60 if c=90 then t=61 if c=69 then t=62 if c=82 then t=63 if c=84 then t=64 if c=89 then t=65 if c=85 then t=66 if c=73 then t=67 if c=79 then t=68 if c=80 then t=69 if c=221 then t=70 if c=186 then t=71 if c=49 then t=72 if c=50 then t=73 if c=51 then t=74 if c=52 then t=75 if c=53 then t=76 if c=54 then t=77 if c=55 then t=78 if c=56 then t=79 if c=57 then t=80 if c=48 then t=81 if c=219 then t=82 if c=187 then t=83 if c=112 then t=84 if c=113 then t=85 if c=114 then t=86 if c=115 then t=87 if c=116 then t=88 if c=117 then t=89 if c=118 then t=90 if c=119 then t=91 if c=120 then t=92 if c=121 then t=93 if c=122 then t=94 if c=123 then t=95 if c=45 then t=96 for j=1 to 61 if note(j)=t then color j,0,200,200:exit_for next j pause 50:midi_play t,d if j<37 color j,255,255,255 else color j,0,0,0 end_if end_if timer_on 300 return ' LES DATAS ' Datas des durées data 0,"Ronde",1,"Ronde pointée",2,"Blanche",3,"Blanche pointée",4,"Noire",5,"Noire pointée",6,"Croche",7,"Croche pointée",8,"Double croche",9,"Double croche pointée",10,"Triple croche",11,"Triple croche pointée" ' Datas des types d'accord pour faire les arpèges (10/66) data "Majeur","2nde","4ème","Mineur","Diminué","Augmenté","4ème augmenté","7ème","Majeur 7ème","Mineur 7ème" ' Datas des gammes (5/22) data "Majeure","Harmonique mineur","Mélodic mineure","Majeure pentatonique","Mineure pentatonique" ' Datas des instruments midis data 0,"Acoustic Grand Piano",1,"Bright Acoustic Piano",2,"Electric grand Piano",3,"Honky Tonk Piano",4,"Electric Piano 1",5,"Electric Piano 2",6,"Harpsicord",7,"Clavinet" data 8,"Celesta",9,"Glockenspiel",10,"Music Box",11,"Vibraphone",12,"Marimba",13,"Xylophone",14,"Tubular bells",15,"Dulcimer" data 16,"Drawbar Organ",17,"Percussive Organ",18,"Rock Organ",19,"Church Organ",20,"Reed Organ",21,"Accordion",22,"Harmonica",23,"Tango Accordion" data 24,"Nylon Acoustic Guitar",25,"Steel Acoustic Guitar",26,"Jazz Electric Guitar",27,"Clean Electric Guitar",28,"Muted Electric Guitar",29,"Overdrive Guitar",30,"Distorted Guitar",31,"Guitar Harmonics" data 32,"Acoustic Bass",33,"Electric Fingered Bass",34,"Electric Picked Bass",35,"Fretless Bass",36,"Slap Bass 1",37,"Slap Bass 2",38,"Syn Bass 2",39,"Syn Bass 1" data 40,"Violin",41,"Viola",42,"Cello",43,"Contrabass",44,"Tremolo Strings",45,"Pizzicato Strings",46,"Orchestral Harp",47,"Timpani" data 48,"String Ensemble 1",49,"String Ensemble 2",50,"Syn Strings 1",51,"Syn Strings 2",52,"Choir Aahs",53,"Voice Oohs",54,"Syn Choir",55,"Orchestral Hit" data 56,"Trumpet",57,"Trombone",58,"Tuba",59,"Muted Trumpet",60,"French Horn",61,"Brass Section",62,"Syn Brass 1",63,"Syn Brass 2" data 64,"Soprano Sax",65,"Alto Sax",66,"Tenor Sax",67,"Baritone Sax",68,"Oboe",69,"English Horn",70,"Bassoon",71,"Clarinet" data 72,"Piccolo",73,"Flute",74,"Recorder",75,"Pan Flute",76,"Bottle Blow",77,"Shakuhachi",78,"Whistle",79,"Ocarina" data 80,"Syn Square Wave",81,"Syn Sawtooth Wave",82,"Syn Calliope",83,"Syn Chiff",84,"Syn Charang",85,"Syn Voice",86,"Syn Fifths Sawtooth Wave",87,"Syn Brass & Lead" data 88,"New Age Syn Pad",89,"Warm Syn Pad",90,"Polysynth Syn Pad",91,"Choir Syn Pad",92,"Bowed Syn Pad",93,"Metal Syn Pad",94,"Halo Syn Pad",95,"Sweep Syn Pad" data 96,"SFX Rain",97,"SFX Soundtrack",98,"SFX Crystal",99,"SFX Atmosphere",100,"SFX Brightness",101,"SFX Goblins",102,"SFX Echoes",103,"SFX Sci-Fi" data 104,"Sitar",105,"Banjo",106,"Shamisen",107,"Koto",108,"Kalimba",109,"Bag Pipe",110,"Fiddle",111,"Shanai" data 112,"Tinkle Bell",113,"Agogo",114,"Steel Drums",115,"Woodblock",116,"Taiko Drum",117,"Melodic Tom",118,"Syn Drum",119,"Reverse Cymbal" data 120,"Guitar Fret Noise",121,"Breath Noise",122,"Seashore",123,"Bird Tweet",124,"Telephone Ring",125,"Helicopter",126,"Applause",127,"Gun Shot" ' Datas des modes d'arpège et de gammes ' Datas des amplitudes octaves arpèges et gammes data "Off","-->","<--","<->","C2 à C5","C2 à C4","C3 à C5","C1 à C4" ' Datas désignation des notes data " [ C ] "," [ D ] "," [ E ] "," [ F ] "," [ G ] "," [ A ] "," [ B ] "," C#/Db "," D#/Eb "," F#/Gb "," G#/Ab "," A#/Bb " ' Datas des pictures et des notes à mettre dans un *********** [TABLEAU] ************* data 1,36,37,37,2,38,38,39,3,40,4,41,39,42,5,43,40,44,6,45,41,46,7,47 data 8,48,42,49,9,50,43,51,10,52,11,53,44,54,12,55,45,56,13,57,46,58,14,59 data 15,60,47,61,16,62,48,63,17,64,18,65,49,66,19,67,50,68,20,69,51,70,21,71 data 22,72,52,73,23,74,53,75,24,76,25,77,54,78,26,79,55,80,27,81,56,82,28,83 data 29,84,57,85,30,86,58,87,31,88,32,89,59,90,33,91,60,92,34,93,61,94,35,95,36,96,0,0 ' Datas jeu d'arpèges et de gammes data 83,0,4,7,84,0,2,7,85,0,5,7,86,0,3,7,87,0,3,6,88,0,4,8,89,0,5,8 data 90,0,4,7,10,91,0,4,7,11,92,0,3,7,10 data 94,0,2,4,5,7,9,11,95,0,2,3,5,7,8,11,96,0,2,3,5,7,9,11 data 97,0,2,4,7,9,98,0,3,5,7,10,0,0 ' Sortie du programme fin: timer_off_all midi_off terminate | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire pour les instructions midi Dim 27 Mai 2012 - 18:00 | |
| Bignono, j’espère que rien de mal ne t’es arrivé. Pourquoi cette entrée à l’hôpital d’urgence ? J’espère que c’est pour une bonne cause.
Quant à ton programme : c’est super, bien que je ne comprenne rien à ce domaine.
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Utilitaire pour les instructions midi Dim 27 Mai 2012 - 21:52 | |
| Question Bignono, avec ton programme, il serait possible de voir jouer les notes d'un .mid ? | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Utilitaire pour les instructions midi Sam 23 Juin 2012 - 10:34 | |
| Juste un prtit bonjour à tout le monde C'est juste pour que Jack évite de fermer ce post au bout de 30 jours et que je vais reprendre ce programme de musique dans les jours qui viennent afin de faire quelque chose de ludique et d'utilisable. Je n'ai guère eu de temps ce mois-ci avec les fêtes des écoles (maternelle et élémentaire), les spectacles de l'école de musique de ma grande, Son évaluation à l'alto (elle a eu les félicitations du jury), etc...Bref, pas assez de temps pour m'occuper de Panoramic en ce moment! J'espère que ça ira mieux en Juillet! A+ | |
| | | Mike
Nombre de messages : 31 Age : 73 Localisation : NANCY Date d'inscription : 12/06/2007
| Sujet: Bravo pour l'approche du midi Mar 26 Juin 2012 - 21:52 | |
| Salut Bignono, Tu as très bien vu les instructions MIDI et ton programme est très bien fait. Mais en réalité, ce que tu veux faire n'est pas réalisable en Panoramic. Je m'explique : Pour simuler un clavier, il faut prendre en compte le front montant du click et par conséquent son front descendant. Actuellement, Panoramic ne prend en compte que le front descendant et tu ne pourras jamais faire durer une note le temps de ton click (non relâché) sur la touche que tu auras choisie puisqu'elle ne sera générée que sur son front descendant d’où tout ce que as codé dans ton programme pour le contourner. Cette évolution serait extraordinaire si l'on pouvait faire ON_CLICK_UP (on génére une action) et ON_CLICK_DOWN (on la tue et on attend la suivante). Tout en gardant le ON_CLICK normal pour des raisons évidentes de compatibilité. Cette solution permettrait en outre d'y associer les effets dont tu as parlé dans la mesure ou c'est réalisable (attaque, déclin soutien et relâchement) J'ajoute qu'il serait possible en dehors de la musique de parcourir des menus déroulants multiples et en choisir avec le ON_CLICK_DOWN les choix associés. Bon, ce n'est pas parce que je n'ai rien encore posté que je ne réfléchis pas. D’ailleurs, je suis en retraire à la fin de la semaine et je vais me faire plaisir. Je te souhaite plein de jolies infirmières à l'hôpital , et pense que toute la communauté Panoramic est avec toi. Toutes mes amitiés et donne-nous de tes nouvelles au plus vite. Bravo pour ta grande avec l'alto et j'en suis heureux vraiment pour toi. Mike
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Utilitaire pour les instructions midi Mar 26 Juin 2012 - 23:37 | |
| Si on gère le clavier à la souris, on peut utiliser MOUSE_LEFT_DOWN() et MOUSE_LEFT_UP (genre on_click => va à la procédure de test et traite jusqu'à ce que MOUSE_LEFT_UP soit vrai), mais bon, ce n'est qu'une idée vite fait | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilitaire pour les instructions midi Mer 27 Juin 2012 - 0:17 | |
| Tu peux utiliser une touche (espace, par exemple, à la place de la touche gauche de la souris. Tu as alors ON_KEY_DOWN et ON_KEY_UP et dans ces évènements, tu peux tester où est la souris pour identifier la touche. Mais il y a un hic: ces évènements ne sont pas pris en compte pour un picture. Il faut donc que tu charges l'image de ton clavier comme image de fond d'une form avec border_off, et là, tu peux gérer ces évènements pour cette form, connaître la position de la souris sur la form et en déduire la touche que tu enfonces (ON_KEY_DOWN) ou que tu relaches (ON_KEY_UP). | |
| | | Contenu sponsorisé
| Sujet: Re: Utilitaire pour les instructions midi | |
| |
| | | | Utilitaire pour les instructions midi | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |