FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Utilitaire pour les instructions midi Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Utilitaire pour les instructions midi Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Utilitaire pour les instructions midi Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Utilitaire pour les instructions midi Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Utilitaire pour les instructions midi Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Utilitaire pour les instructions midi Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Utilitaire pour les instructions midi Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Utilitaire pour les instructions midi Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Utilitaire pour les instructions midi Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Utilitaire pour les instructions midi Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Utilitaire pour les instructions midi Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Utilitaire pour les instructions midi Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Utilitaire pour les instructions midi Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Utilitaire pour les instructions midi Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Utilitaire pour les instructions midi Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

 

 Utilitaire pour les instructions midi

Aller en bas 
+2
Jean Claude
bignono
6 participants
AuteurMessage
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyVen 25 Mai 2012 - 14:08

Bonjour à tous, Very Happy
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! lol!
[url=Utilitaire pour les instructions midi Captur11]]
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]Utilitaire pour les instructions midi Partit10[/img]
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyVen 25 Mai 2012 - 16:40

On va bientôt avoir un orchestre au complet Very Happy

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 lol!
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyVen 25 Mai 2012 - 17:03

Salut Jean-Claude, Smile
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+ Wink
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyVen 25 Mai 2012 - 17:13

Vas-y piano piano Very Happy
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyDim 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 ?
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyDim 27 Mai 2012 - 17:41

Bonsoir tout le monde Smile
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
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyDim 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+
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyDim 27 Mai 2012 - 21:52

Question Bignono, avec ton programme, il serait possible de voir jouer les notes d'un .mid ?
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptySam 23 Juin 2012 - 10:34

Juste un prtit bonjour à tout le monde Very Happy
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+ Wink
Revenir en haut Aller en bas
Mike

Mike


Nombre de messages : 31
Age : 73
Localisation : NANCY
Date d'inscription : 12/06/2007

Utilitaire pour les instructions midi Empty
MessageSujet: Bravo pour l'approche du midi   Utilitaire pour les instructions midi EmptyMar 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
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyMar 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
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi EmptyMer 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).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Utilitaire pour les instructions midi Empty
MessageSujet: Re: Utilitaire pour les instructions midi   Utilitaire pour les instructions midi Empty

Revenir en haut Aller en bas
 
Utilitaire pour les instructions midi
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» robotique et Panoramic
» pixeur : utilitaire pour les valeurs couleurs
» utilitaire pour mettre un code dans un fichier HTML
» Tableau des propriétés des objets Panoramic
» instructions panoramic

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: