FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Détection connexion internet (résolu)
par JL35 Mer 26 Juil 2017 - 21:59

» Le parcours du cavalier sur un échiquier 8 x 8
par pascal10000 Dim 23 Juil 2017 - 13:26

» Casse-tête : Echanger les positions des cavaliers
par papydall Sam 22 Juil 2017 - 19:42

» Compilateur FBPano
par jean_debord Sam 22 Juil 2017 - 10:54

» demande pour recuperer un text speciale
par pascal10000 Ven 21 Juil 2017 - 22:04

» KGF_dll - nouvelles versions
par Klaus Ven 21 Juil 2017 - 14:29

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Klaus

avatar

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

MessageSujet: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Ven 24 Aoû 2012 - 2:27

J'ai ajouté un gros morceau à KGF.dll !

On peut maintenant gérer les fonctions MIDI en polyphonie, sur jusqu'à 16 canaux simultanés, avec le choix de l'instrument pour chaque canal ! Et même plus: un même canal peut changer d'instrument à tout moment !

On peut jouer des notes individuelles, les allumer et étendre comme on veut - les fonctions retournent directement sans attendre la fin du son ! On peut aussi constituer des chaînes de caractères contenant la définition des notes pour chaque canal, un peu comme des pistes, et jouer le tout en polyphonie, et de façon synchronisée !

Le rythme est gérable par incréments de 1/64èmes (quintuples croches) et modifiables à volonté par une valeur de métronome (nombre de battements par minute, un battement correspondant à une note noire ou 1/4 de temps ou 16 64èmes et 16 quintuples croches.

Et tout cela sans bloquer Panoramic !

Prochainement, j'ajouterai un programme de démo en Panoramic. Pour l'heure, la DLL est sur le WebDav, ainsi que la documentation mise à jour avec la doc complète des 8 fonctions utilisables !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5841
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Ven 24 Aoû 2012 - 8:48

Klaus, tu déchires ... Je crois que je vais rajouter la DLL dans Panorabrique , ça simplifiera les choses et je pourrais améliorer un peu le côté son Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Ven 24 Aoû 2012 - 11:15

J'avais introduit un bug ENORME dans KGF.dll - on ne reconnaissait plus AUCUNE fonction DLL ! Mais c'est corrigé !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Ven 24 Aoû 2012 - 23:12

Voici un programme de démo sympathique pour les fonctions MIDI.

Le programme affiche un premier cadre "Général" avec les boutons Activer et Désactiver. Cela corrspond aux fonctions MIDI_Initialize et MIDI_Stop.

Un clic sur Activer provoque:
- de façon invisible, l'activation du système MIDI
- affichage d'une combo de sélection de nombre de canaux dans le cadre "Général"
- affichage d'un cadre "Configuration d'une note et préparation des canaux pour le mode compilé"
- affichage d'un cadre "Mode immédiat"
- affichage d'un cadre "Pistes (canaux)"

Un clic sur Désactiver provoque:
- retour à l'affichage initial
- arrêt du système MIDI
- libération de toutes les ressources

Par défaut, on démarre avec 4 canaux qui sont tous initialisés avec l'instrument 40 (violon). Cela permet d'avoir un son qui ne s'évanouit pas comme celui du piano par défaut, qui reste cependant l'instrument de départ pour les canaux de 5 à 16.

Le panneau "Mode immédiat" permet de jouer de 1 à 4 notes prédéfinies simultanément, en polyphonie. On peut allumer et éteindre chaque note séparément, pour mieux voir l'effet de la polyphonie. Il s'agit des notes Do, Mi et Sol de l'octave 0, ainsi que de la "blue note" du jazz, qui est ici le La de l'octave 0. Chaque note est joué sur un canal différent, ce qui permet justement de les allumer et éteindre séparément.

Le panneau "Configuration..." est plus complexe à utiliser. Il permet de configurer une note, avec ses caractéristiques suivants:
- canal visé (1,2,...,16)
- octave (d,c,b,a,0,1,2,3,4)
- note (do,ré,mi,fa,sol,la,si)
- modificateur (<rien>,b,#)
- volume (0=muet...127=maxi)
- durée (30...240 ticks par minute)
- instrument à choisir AVANT de commencer à jouer la note
- flag "allumer la note" en début de période
- flag "éteindre la note" à la fin de la durée choisie

Le bouton Ajouter ajoute le codage de la note dans la piste correspondant au canal sélectionné. Si la durée choisie dépasse la longueur de 1/64ème de temps (une quintuple croche), le programme génère automatiquement les codes nécessaires pour combler la durée choisie.

Le bouton Effacer efface toutes les pistes constituées.

Le bouton Jouer compile toutes les pistes à l'aide de MIDI_COMPILE, puis joue le morceau à l'aide de MIDI_Play.

ATTENTION ! Toutes les pistes doivent avoir la même longueur de temps, c'est-à-dire le même nombre de 1/64èmes qui est l'unité de temps des fonctions MIDI de la DLL !

Et voici la démo:
Code:
' test_MIDI.bas


label labels : gosub labels
gosub constantes
gosub variables
gosub donnees
gosub form0
gosub menu
gosub GUI
gosub initialisations
end

labels:
  label constantes, variables, donnees, form0, menu, GUI, initialisations
  label activer, desactiver, change_canaux, change_duree, ajouter
  label effacer, jouer
  label allumer_do, allumer_mi, allumer_sol, allumer_blue
  label eteindre_do, eteindre_mi, eteindre_sol, eteindre_blue

  return

constantes:
  dim M1% : M1% = 0 - 1
  dim dll$ : dll$ = "KGF.dll"
  dim octaves$ : octaves$ = "dcba01234"
  dim notes$ : notes$ = "---do ré mi fa solla si "
  dim modif$ : modif$ = "b #"
  return

variables:
  dim no%, no1%, no2%, i%, j%, k%, n%, s$, s1$, s2$, w%, x%, y%, res%
  dim no_canaux%, no_config% , no_canal%, no_octave%, no_note%, no_modif%
  dim no_duree%, no_aff_duree%,  no_pistes%, no_instruments%, no_volume%
  dim no_allumer%, no_eteindre%, no_metronome%, no_config2%
  dim no_activer%, no_desactiver%
  dim midi_actif%, sel_duree%, durees%(7), can%
  dim vers$
  return

donnees:
  data "1","1/2","1/4","1/8","1/16","1/32","1/64"
  data 64,32,16,8,4,2,1
  '                      instruments:
  data "Piano"
  data "  0 Acoustic grand piano"
  data "  1 Bright acoustic piano"
  data "  2 Electric grand piano"
  data "  3 Honky-tonk piano"
  data "  4 Rhodes piano"
  data "  5 Chorused piano"
  data "  6 Harpsichord"
  data "  7 Clavinet"
  data ""
  data "Chromatic Percussion"
  data "  8 Celesta"
  data "  9 Glockenspiel"
  data " 10 Music box"
  data " 11 Vibraphone"
  data " 12 Marimba"
  data " 13 Xylophone"
  data " 14 Tubular bells"
  data " 15 Dulcimer"
  data ""
  data "Organ"
  data " 16 Hammond organ"
  data " 17 Percussive organ"
  data " 18 Rock organ"
  data " 19 Church organ"
  data " 20 Reed organ"
  data " 21 Accordion"
  data " 22 Harmonica"
  data " 23 Tango accordion"
  data ""
  data "Guitar"
  data " 24 Acoustic guitar (nylon)"
  data " 25 Acoustic guitar (steel"
  data " 26 Electric guitar (jazz)"
  data " 27 Electric guitar (clean)"
  data " 28 Electric guitar (muted)"
  data " 29 Overdriven guitar"
  data " 30 Distortion guitar"
  data " 31 Guitar harmonics"
  data ""
  data "Bass"
  data " 32 Acoustic bass"
  data " 33 Electric bass (finger)"
  data " 34 Electric bass (pick)"
  data " 35 Fretless bass"
  data " 36 Slap bass 1"
  data " 37 Slap bass 2"
  data " 38 Synth bass 1"
  data " 39 Synth bass 2"
  data ""
  data "Strings"
  data " 40 Violin"
  data " 41 Viola"
  data " 42 Cello"
  data " 43 Contrabass"
  data " 44 Tremolo strings"
  data " 45 Pizzicato strings"
  data " 46 Orchestral harp"
  data " 47 Timpani"
  data ""
  data "Ensemble"
  data " 48 String ensemble 1"
  data " 49 String ensemble 2"
  data " 50 Synth. strings 1"
  data " 51 Synth. strings 2"
  data " 52 Choir Aahs"
  data " 53 Voice Oohs"
  data " 54 Synth voice"
  data " 55 Orchestra hit"
  data ""
  data "Brass"
  data " 56 Trumpet"
  data " 57 Trombone"
  data " 58 Tuba   66"
  data " 59 Muted trumpet"
  data " 60 French horn"
  data " 61 Brass section"
  data " 62 Synth. brass 1"
  data " 63 Synth. brass 2"
  data ""
  data "Reed"
  data " 64 Soprano sax"
  data " 65 Alto sax"
  data " Tenor sax"
  data " 67 Baritone sax"
  data " 68 Oboe"
  data " 69 English horn"
  data " 70 Bassoon"
  data " 71 Clarinet"
  data ""
  data "Pipe"
  data " 72 Piccolo"
  data " 73 Flute"
  data " 74 Recorder"
  data " 75 Pan flute"
  data " 76 Bottle blow"
  data " 77 Shakuhachi"
  data " 78 Whistle"
  data " 79 Ocarina"
  data ""
  data "Synth Lead"
  data " 80 Lead 1 (square)"
  data " 81 Lead 2 (sawtooth)"
  data " 82 Lead 3 (calliope lead)"
  data " 83 Lead 4 (chiff lead)"
  data " 84 Lead 5 (charang)"
  data " 85 Lead 6 (voice)"
  data " 86 Lead 7 (fifths)"
  data " 87 Lead 8 (brass + lead)"
  data ""
  data "Synth Pad"
  data " 88 Pad 1 (new age)"
  data " 89 Pad 2 (warm)"
  data " 90 Pad 3 (polysynth)"
  data " 91 Pad 4 (choir)"
  data " 92 Pad 5 (bowed)"
  data " 93 Pad 6 (metallic)"
  data " 94 Pad 7 (halo)"
  data " 95 Pad 8 (sweep)"
  data ""
  data "Miscellaneous"
  data " 96 Synth SFX 1 Ice Rain"
  data " 97 Synth SFX 2 Sound Track"
  data " 98 Synth SFX 3 Crystal"
  data " 99 Synth SFX 4 Atmosphere"
  data "100 Synth SFX 5 Brightness"
  data "101 Synth SFX 6 Goblin"
  data "102 Synth SFX 7 Echo Drops"
  data "103 Synth SFX 8 Star Theme"
  data "104 Sitar"
  data "105 Banjo"
  data "106 Shamisen"
  data "107 Koto"
  data "108 Kalimba"
  data "109 Bagpipe"
  data "110 Fiddle"
  data "111 Shanai"
  data "112 Tinkle Bells"
  data "113 Agogo"
  data "114 Steel Drums"
  data "115 Woodblock"
  data "116 Taiko Drum"
  data "117 Melodic Drum"
  data "118 Synth Drum"
  data "119 Reverse Cymbal"
  data ""
  data "Sound Effects"
  data "120 Guitar fret noise"
  data "121 Breath noise"
  data "122 Seashore"
  data "123 Bird tweet"
  data "124 Telephone ring"
  data "125 Helicopter"
  data "126 Applause"
  data "127 Gunshot"
  data "***"
  return

form0:
  full_space 0
  caption 0,"test des fonctions MIDI"
  return

menu:
  return

GUI:
  no% = no% + 1 : container no% : no1% = no% : caption no%,"Général"
    left no%,5 : width no%,120 : height no%,110
  no% = no% + 1 : button no% : parent no%,no1% : no_activer% = no%
    top no%,20 : left no%,10
    caption no%,"Activer" : on_click no%,activer
  no% = no% + 1 : button no% : parent no%,no1% : no_desactiver% = no%
    top no%,50 : left no%,10
    caption no%,"Désactiver" : on_click no%,desactiver : inactive no%
  no% = no% + 1 : combo no% : parent no%,no1% : no_canaux% = no% : hide no%
    top no%,80 : left no%,10 : width no%,100 : font_name no_canaux%,"Courier"
    on_click no%,change_canaux

  no% = no% + 1 : container no% :no1% = no% : no_config% = no% : hide no%
    caption no%,"Configuration d'une note et préparation des canaux pour le mode compilé"
    left no%,120 : width no%,510 : height no%,110
  no% = no% + 1 : combo no% : parent no%,no1% : no_canal% = no%
    top no%,20 : left no%,10 : width no%,80
  no% = no% + 1 : combo no% : parent no%,no1% : no_octave% = no%
    top no%,50 : left no%,10 : width no%,80
  no% = no% + 1 : combo no% : parent no%,no1% : no_note% = no%
    top no%,20 : left no%,110 : width no%,46
  no% = no% + 1 : combo no% : parent no%,no1% : no_modif% = no%
    top no%,50 : left no%,110 : width no%,46
  no% = no% + 1 : alpha no% : parent no%,no1%
    top no%,85 : left no%,10 : caption no%,"Durée:"
  no% = no% + 1 : combo no% : parent no%,no1% : no_duree% = no%
    top no%,80 : left no%,50 : width no%,46  : on_click no%,change_duree
  no% = no% + 1 : alpha no% : parent no%,no1% : no_aff_duree% = no%
    top no%,85 : left no%,100
  no% = no% + 1 : combo no% : parent no%,no1% : no_instruments% = no%
    top no%,20 : left no%,170 : width no%,150
  no% = no% + 1 : check no% : parent no%,no1% : no_allumer% = no%
    top no%,50 : left no%,170  : caption no%,"Allumer la note"
  no% = no% + 1 : check no% : parent no%,no1% : no_eteindre% = no%
    top no%,80 : left no%,170  : caption no%,"Eteindre la note"
  no% = no% + 1 : alpha no% : parent no%,no1%
    top no%,20 : left no%,330 : caption no%,"Vol.:"
  no% = no% + 1 : edit no% : parent no%,no1% : no_volume% = no%
    top no%,20 : left no%,360 : width no%,40
  no% = no% + 1 : button no% : parent no%,no1%
    top no%,50 : left no%,330 : caption no%,"Ajouter" : on_click no%,ajouter
  no% = no% + 1 : button no% : parent no%,no1%
    top no%,80 : left no%,330 : caption no%,"Effacer" : on_click no%,effacer
  no% = no% + 1 : alpha no% : parent no%,no1%
    top no%,20 : left no%,420 : caption no%,"Ticks:"
  no% = no% + 1 : edit no% : parent no%,no1% : no_metronome% = no%
    top no%,20 : left no%,450 : width no%,43
  no% = no% + 1 : button no% : parent no%,no1% : height no%,50
    top no%,50 : left no%,420 : caption no%,"Jouer" : on_click no%,jouer

  no% = no% + 1 : container no% :no1% = no% : no_config2% = no% : hide no%
    caption no%,"Mode immédiat"
    left no%,left(no_config%)+width(no_config%)-2
    width no%,width(0)-left(no%)-40 : height no%,110
  no% = no% + 1 : button no% : parent no%,no1% : top no%,50 : left no%,100
    on_click no%,allumer_do
  no% = no% + 1 : button no% : parent no%,no1% : top no%,50 : left no%,200
    on_click no%,allumer_mi
  no% = no% + 1 : button no% : parent no%,no1% : top no%,50 : left no%,300
    on_click no%,allumer_sol
  no% = no% + 1 : button no% : parent no%,no1% : top no%,50 : left no%,400
    on_click no%,allumer_blue
  no% = no% + 1 : button no% : parent no%,no1% : top no%,80 : left no%,100
    on_click no%,eteindre_do
  no% = no% + 1 : button no% : parent no%,no1% : top no%,80 : left no%,200
    on_click no%,eteindre_mi
  no% = no% + 1 : button no% : parent no%,no1% : top no%,80 : left no%,300
    on_click no%,eteindre_sol
  no% = no% + 1 : button no% : parent no%,no1% : top no%,80 : left no%,400
    on_click no%,eteindre_blue
  no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,100
    caption no%,"Do octave 0"
  no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,200
    caption no%,"Mi octave 0"
  no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,300
    caption no%,"Sol octave 0"
  no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,400
    caption no%,"Blue note"
  no% = no% + 1 : alpha no% : parent no%,no1% : top no%,50 : left no%,10
    caption no%,"Allumer"
  no% = no% + 1 : alpha no% : parent no%,no1% : top no%,80 : left no%,10
    caption no%,"Eteindre"

  no% = no% + 1 : container no% : no1% = no% : no_pistes% = no% : hide no%
    caption no%,"Pistes (canaux)"
    left no%,10 : top no%,top(no_config%)+height(no_config%)
    width no%,width(0)-10 -40 : height no%,500
  for i%=1 to 16
    no% = no% + 1 : edit no% : parent no%,no1%
      top no%, i%*30-10 : left no%,20 : width no%,width(no_pistes%)-30
  next i%
  for i%=1 to 16
    no% = no% + 1 : alpha no% : parent no%,no1%
      top no%, i%*30-5 : left no%,5 : caption no%,str$(i%)
  next i%

  return

initialisations:
  for i%=1 to 16
    item_add no_canaux%,right$(" "+str$(i%)+" canaux",9)
  next i%
  text no_canaux%,item_read$(no_canaux%,4)
  gosub change_canaux
  for i%=1 to 9
    item_add no_octave%,"Octave "+mid$(octaves$,i%,1)
  next i%
  text no_octave%,item_read$(no_octave%,5)
  for i%=1 to 8
    item_add no_note%,mid$(notes$,(i%-1)*3+1,3)
  next i%
  text no_note%,item_read$(no_note%,2)
  for i%=1 to 3
    item_add no_modif%,mid$(modif$,i%,1)
  next i%
  text no_modif%,item_read$(no_modif%,2)
  for i%=1 to 7
    read s$
    item_add no_duree%,s$
  next i%
  for i%=1 to 7
    read durees%(i%)
  next i%
  text no_duree%,item_read$(no_duree%,3)
  sel_duree% = 3
  caption no_aff_duree%,str$(durees%(sel_duree%))+" ticks"
  read s$
  while s$<>"***"
    item_add no_instruments%,s$
    read s$
  end_while
  text no_instruments%,item_read$(no_instruments%,2)
  mark_on no_allumer%
  mark_on no_eteindre%
  text no_volume%,"100"
  text no_metronome%,"120"
  return

activer:
  dll_on dll$
  vers$ = string$(25," ")
  res% = dll_call1("KGFdllVersion",adr(vers$))
  if res%<133
    s$ = "Vous avez la version: "+vers$ + chr$(13)+chr$(10)
    s$ = s$ + "Il faut au minimum la version V1.33."  + chr$(13)+chr$(10)
    s$ = s$ + "Rechargez la DLL et réessayez."
    message s$
    return
  end_if
  res% = DLL_call0("MIDI_Initialize")
  show no_canaux%
  show no_config%
  show no_config2%
  show no_pistes%
  inactive no_activer%
  active no_desactiver%
  res% = dll_call1("MIDI_Reset",n%)
  for i%=1 to 4
    res% = DLL_call2("MIDI_SetInstrument",i%,40) : ' violon
  next i%
  return
 
desactiver:
  res% = DLL_call0("MIDI_Stop")
  dll_off
  hide no_canaux%
  hide no_config%
  hide no_config2%
  hide no_pistes%
  active no_activer%
  inactive no_desactiver%
  midi_actif% = 0
  return
 
change_canaux:
  clear no_canal%
  n% = val(left$(text$(no_canaux%),2))
  for i%=1 to n%
    item_add no_canal%,"Canal "+str$(i%)
  next i%
  text no_canal%,item_read$(no_canal%,1)
  if midi_actif%=1 then res% = dll_call1("MIDI_Reset",n%)
  midi_actif% = 1
  for i%=1 to 16
    if i%>n%
      hide no_pistes%+i%
    else
      show no_pistes%+i%
    end_if
  next i%
  return
 
change_duree:
  sel_duree% = item_index(no_duree%)
  caption no_aff_duree%,str$(durees%(sel_duree%))+" ticks"
  return
 
ajouter:
  s$ = ""
  s1$ = left$(text$(no_instruments%)+"000",3)
  if numeric(s1$)=1
    n% = val(s1$)
    if n%>0 then s$ = s$ + "i"+right$("00"+str$(n%),3)
  end_if
  s1$ = text$(no_canal%)
  can% = val(right$(s1$,1))
  s1$ = trim$(text$(no_note%))
  if checked(no_allumer%)=1
    s1$ = trim$(text$(no_note%))
    if s1$<>"---"
      s2$ = text$(no_octave%)
      s$ = s$ + "+" + right$(s2$,1)+s1$ + trim$(text$(no_modif%))
      s2$ = text$(no_volume%)
      if numeric(s2$)=0 then s2$ = "100"
      n% = val(s2$)
      if n%<0 then n% = 0
      if n%>127 then n% = 127
      text no_volume%,str$(n%)
      s$ = s$ + str$(n%)
      n% = durees%(sel_duree%)
      if n%>1
        while n%>1
          s$ = "["+s$+"]"
          text no_pistes%+can%,text$(no_pistes%+can%)+s$
          s$ = ""
          n% = n% - 1
        end_while
      end_if
    else
      n% = durees%(sel_duree%)
      if n%>1
        while n%>1
          s$ = "[]"
          text no_pistes%+can%,text$(no_pistes%+can%)+s$
          s$ = ""
          n% = n% - 1
        end_while
      end_if
    end_if
  else
      n% = durees%(sel_duree%)
      if n%>1
        while n%>1
          s$ = "[]"
          text no_pistes%+can%,text$(no_pistes%+can%)+s$
          s$ = ""
          n% = n% - 1
        end_while
      end_if
  end_if
  if checked(no_eteindre%)=1
    if s1$<>"---"
      s$ = s$ + "-"
    end_if
  end_if
  s$ = "["+s$+"]"
  text no_pistes%+can%,text$(no_pistes%+can%)+s$
  return

effacer:
  for i%=1 to 16
    text no_pistes%+i%,""
  next i%
  return
 
jouer:
  for i%=1 to count(no_canal%)
    s1$ = text$(no_pistes%+i%)
    n% = 0
    j% = instr(s1$,"[")
    while j%>0
      n% = n% + 1
      s1$ = mid$(s1$,j%+1,len(s1$))
      j% = instr(s1$,"[")
    end_while
    s1$ = text$(no_pistes%+i%)
    res% = DLL_call3("MIDI_Compile",i%,n%,adr(s1$))
  next i%
  n% = val(text$(no_metronome%))
  if n%<30 then n% = 30
  if n%>240 then n% = 240
  text no_metronome%,str$(n%)
  res% = DLL_call1("MIDI_Play",n%)
  return
 
allumer_do:
  res% = DLL_call3("MIDI_NoteOn",1,60,100)
  caption no_config2%+1,"Allumé"
  return
 
allumer_mi:
  res% = DLL_call3("MIDI_NoteOn",2,64,100)
  caption no_config2%+2,"Allumé"
  return

allumer_sol:
  res% = DLL_call3("MIDI_NoteOn",3,67,100)
  caption no_config2%+3,"Allumé"
  return

allumer_blue:
  res% = DLL_call3("MIDI_NoteOn",4,69,100)
  caption no_config2%+4,"Allumé"
  return

eteindre_do:
  res% = DLL_call3("MIDI_NoteOff",1,60,100)
  caption no_config2%+1,""
  return

eteindre_mi:
  res% = DLL_call3("MIDI_NoteOff",2,64,100)
  caption no_config2%+2,""
  return

eteindre_sol:
  res% = DLL_call3("MIDI_NoteOff",3,67,100)
  caption no_config2%+3,""
  return

eteindre_blue:
  res% = DLL_call3("MIDI_NoteOff",4,69,100)
  caption no_config2%+4,""
  return


Dernière édition par Klaus le Dim 26 Aoû 2012 - 0:53, édité 7 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Ven 24 Aoû 2012 - 23:24

Conclusion:

Le système MIDI polyphonique et asynchrone est complètement opérationnel !


Je suis ouvert à tout signalement de bugs !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5841
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Ven 24 Aoû 2012 - 23:48

2 petites "bugs"
Quand tu cliques sur activer, le bouton devrait se désactiver sinon si on reclic => Message d'erreur, normal mais pas "propre"

Pareil pour désactiver (le désactiver au démarrage et quand on a cliqué dessus)

Tu as mis 2 fois la légende "Allumer la note" alors que le deuxième devrait être éteindre la note

Et je n'ais pas eu de son quand j'ai ajouté des notes (en ayant mis du volume, bien sûr) et que j'ai cliqué sur Jouer

(J'en ai par contre dans le mode immédiat)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Sam 25 Aoû 2012 - 0:16

Les 2 petits bugs sont corrigés.

Tu n'as pas de son en mode compilé ?
fais ceci:
- commence par 1 canal
- coche canal 1 note do octave 0 durée 1/4 volume 100 Allumer coché Eteindre coché
- clique sur Ajouter ==> tu vois apparaître ceci: [+0do100][][][][][][][][][][][][][][][-]
- allume se son de ton ordinateur
- clique sur Jouer ==> tu as la note

Ceci dit, j'ai encore un petit problème avec le calcul des durées - elles sont beaucoup trop longues. Mais ça n'empêche pas le son de venir.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5841
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Sam 25 Aoû 2012 - 0:49

Erreur ligne 220 (il faut mettre inactive)

Sinon, j'ai le son midi qui fonctionne puisque Allumer fonctionne dans le mode immédiat.
J'ai tout fait dans l'ordre mais je n'ai pas de son quand je clique sur Jouer
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Sam 25 Aoû 2012 - 1:08

J'ai remis une nouvelle version de KGF.dll: correction du bug avec la gestion de la durée des notes, en mode compilé. Il tient maintenant correctement compte du métronome.

J'ai remis aussi une nouvelle version du programme de démo. Le bug dont tu parles, est corrigé. En plus, j'ai codé une partie que j'avais bêtement oubliée: pour prolonger une note de moitié (une note pointée) ou pour la doubler (deux notes liées), on doit enlever la coche Eteindre sur la première note, puis enlever la coche Allumer sur la seconde, tout en lui laissant la coche Eteindre. Or, pour la deuxième note, la durée était ignorée et elle était générée systématiquement en quintuple coche.

Maintenant pour ton problème de son en mode compilé, j'ai fait une modif dans le programme de démo que tu devras recharger de toutes façons: en initialisation, je mets la valeur "100" dans la zone Volume. Sinon, la note est muette par défaut, ce qui n'est pas génial pour entendre.

Après avoir téléchargé, fais ceci:
-lance le programme
- clique sur Activer
- sélectionne "1 canal" dans la combo des canaux
- clique directement sur Ajouter - tu obtiendras le code pour un do en octave 0 avec volume 100 pour violon
- clique sur Jouer ==> tu devrais entendre la note pour la durée de 1 temps, soit 60000/120/16 millisecondes, ce qui est court mais parfaitement audible.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5841
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Sam 25 Aoû 2012 - 1:16

Désolé, je ne sais pas si je suis le seul, mais je n'ai pas de son ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Sam 25 Aoû 2012 - 1:28

En faisant faisant ce que j'ai suggéré ci-dessus, j'obtiens cette image:


Un clic sur Jouer produit la note.

As-tu vérifié que tu recharges bien la DLL ? Es-tu sous Chrome ? As-tu vidé le cache du browser ? Avec Firefox, il n'y a pas de problème. La DLL est à jour dans le WebDav.

As-tu activé le son sur ton ordinateur ? Je ne vois vraiment pas ce qui pourrait clocher sinon. Compare ton affichage avec celui ci-dessus.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5841
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Sam 25 Aoû 2012 - 12:15

Laisse tomber Klaus, à priori, il n'y a pas de commentaire, je dois être le seul à avoir un problème. Peut être lié à W7, je ne sais pas. Le midi marche très bien dans le mode immédiat, mais jouer ne produit aucun son. J'ai retélecharger la DLL par principe (en plus avec ton test de version, je n'aurais pas la bonne, je me ferais jeter). Ça ne marche pas, mais ne perd pas de temps si ça marche pour les autres.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 25 Aoû 2012 - 18:48

@ Klaus,

Je fais ce que tu dis, je clique sur jouer et cheers j'obtiens un son...
puis je vais dans le mode immédial je pense que c'est une faute de frappe...
(méfies toi papydall va encore frapper .... Laughing)
et là, je m'amuse à cliquer ( mon côté ado qui revient Twisted Evil ) :

- je clique sur "Allumer" de "do octave 0"
j'ai le bouton qui affiche "Allumer" et un son tout de suite
- je clique sur "Eteindre" de "do octave 0"
plus de son (normal) pas d'affichage sur le bouton (snif !)

Pour les autres bouton "Allumer",
je dois cliquer sur jouer pour avoir un son... scratch

Si je clique sur plusieurs bouton allumés "Allumer",
je dois cliquer sur jouer pour avoir un son mais quel son est ce ? scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Dim 26 Aoû 2012 - 0:54

Voici l'image de la partie droite (mode immédiat) du programme, dès qu'on a clique sur Activer:

Il y a 4 colonnes de 2 boutons. Chaque colonne correspont à la note dont le libellé est inscrit au-dessus. Les deux lignes de 4 boutons correspondent aux actions dont le libellé est inscrit à leur gauche. Ainsi, pour allumer le Mi octave 0, tu cliques sur le deuxième bouton de gauche, rangée du haut. Le libellé "Allumé" apparaît sur ce bouton. Pour l'éteindre, on clique sur le bouton qui se trouve en-dessous.

On peut allumer 1, 2, 3 ou 4 notes simultanément et écouter la polyphonie, et on peut les éteindre dans n'importe quel ordre.

Ces boutons sont actifs à tout moment, dès qu'on a cliqué sur Activer.

La faute d'orthographe est corrigée.

Je note avec satisfaction que tu obtiens le son voulu en mode compilé. Cela prouve que je n'ai pas rêvé dans mes tests.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 26 Aoû 2012 - 1:11

je suis nul en musique, mais pas sourd...( enfin pas encore Laughing )
donc je peux te dire quand un bouton fait un son ou pas...
mais je crains que mon aide s'arrête à çà dans ce domaine... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Dim 26 Aoû 2012 - 1:25

Je ne comprends pas du tout. J'ai beau essayer: tous les boutons de la ligne "Allumer" produisent leur son qui reste allumé jusqu'à ce qu'on clique sur le bouton associé en-dessous. On n'a absolument pas besoin de cliquer sur Jouer pour cela.

Le bouton Jouer ne sert qu'à jouer les suites de notes dont le codage est visible dans le cadre des Pistes (canaux). Il n'a absolument aucun lien avec les boutons du mode immédiat. Et si tu regardes le code Panoramic pour les 4 boutons d'allumage:
Code:
allumer_do:
  res% = DLL_call3("MIDI_NoteOn",1,60,100)
  caption no_config2%+1,"Allumé"
  return
 
allumer_mi:
  res% = DLL_call3("MIDI_NoteOn",2,64,100)
  caption no_config2%+2,"Allumé"
  return

allumer_sol:
  res% = DLL_call3("MIDI_NoteOn",3,67,100)
  caption no_config2%+3,"Allumé"
  return

allumer_blue:
  res% = DLL_call3("MIDI_NoteOn",4,69,100)
  caption no_config2%+4,"Allumé"
  return
tu constates qu'ils ont pour l'essentiel une seule ligne: l'appel de la fonction MIDI_NoteOn, avec les paramètres, dans l'ordre: canal, note, volume. Il n'y a rien de sorcier.

A moins que: es-tu sûr que pour ce test, tu es en mode 4 canaux ? car comme tu vois, chacune de ces touches utilise un canal différent, de 1 à 4, et les 4 canaux doivent dont être activés ! C'est le cas par défaut quand tu lances le programme puis tu cliques sur Activer: tu as 4 canaux actifs. Essaie cela: sélectionne bien 4 canaux par le sélecteur du nombre de canaux puis réessaie le mode immédiat.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 26 Aoû 2012 - 2:02

Voilà le schmilblick,

moi je suis resté sur ton exemple et ,à coup sûr, quand je clique jouer il me joue la même note et pas une des autres... Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Dim 26 Aoû 2012 - 2:47

Donc, ça marche et tu as bien la polyphonie avec les 4 notes ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 26 Aoû 2012 - 2:59

Oui, mais pas sur tout les instruments...

la guitare acoustique a un drôle de son pour une guitare Laughing

je suis cuit ce soir, je vais aller Sleep
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   

Revenir en haut Aller en bas
 
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» FR7B - Programmation MIDI...
» DTC : Dans ton chat
» Nouveauté Forumactif: Bouton "J'aime" dans les sujets
» Comment faire un tableau avec jours de semaine et midi et soir
» Les nouveautés dans l'interface de gestion de la Bbox Sensation (IHM)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: