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
» Form(résolu)
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar Marc Hier à 11:42

» Bataille navale SM
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Une calculatrice en une ligne de programme
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jean_debord Ven 26 Avr 2024 - 8:01

» Gestion d'un système client-serveur.
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

 

 Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 1: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
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 7: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 10: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 22: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 Sam 25 Aoû 2012 - 23:53, édité 7 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 22: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
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 22: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 23: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
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyVen 24 Aoû 2012 - 23: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptySam 25 Aoû 2012 - 0: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
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptySam 25 Aoû 2012 - 0: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptySam 25 Aoû 2012 - 0:28

En faisant faisant ce que j'ai suggéré ci-dessus, j'obtiens cette image:
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Aa112

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
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptySam 25 Aoû 2012 - 11: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
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: re   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptySam 25 Aoû 2012 - 17: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptySam 25 Aoû 2012 - 23:54

Voici l'image de la partie droite (mode immédiat) du programme, dès qu'on a clique sur Activer:
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Aa113
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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: re   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyDim 26 Aoû 2012 - 0: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyDim 26 Aoû 2012 - 0: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: re   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyDim 26 Aoû 2012 - 1: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
Klaus

Klaus


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

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: Re: Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyDim 26 Aoû 2012 - 1:47

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




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques Empty
MessageSujet: re   Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques EmptyDim 26 Aoû 2012 - 1: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
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Nouveauté dans KGF.dll : les fonctions MIDI polyphoniques
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouveauté: des scripts en Panoramic !
» Fréquence MIDI
» KGF et fonctions Midi
» fichier midi
» midi karaoke

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: