Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1234 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  notes jouées seulement si elles sont afficher #error N° 1.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

notes jouées seulement si elles sont afficher #error N° 1.

n°2258225
par l'anne​au de l'ia
word master
Posté le 17-05-2015 à 00:00:47  profilanswer
 

Bonjour, bonsoir, bonne nuit ....
 
 
Dans le code suivant, j'afecte quelques valeur à une note de musique et l'insere dans une liste chaîné puis si elle doit être affichée je l'écris dans une ligned'un model de vue d'arbre Gtk (Gtk_Tree_View).
 
Mon problème est que si je n'affiche pas la note n'est pas jouée.
 
Le comportement exactement, c'est que lorsque je décoche ma check_box pour le plus afficher ça coupe le son.
Alors qu'au démmarage, ça n'affiche pas mais ça joue.
Ligne 48 et ligne 103 on regarde si on doit afficher le message.
voici la function Test_Plugin_Action :

Code :
  1. -- un iterateur pour calculer global pour supprimer des ligne dans une vue Gtk_Tree_View.
  2.   Parent : Gtk_Tree_Iter := Null_Iter;
  3.  
  4.   -- un paquetage de génération aléatoire pour un type discret
  5.   -- de type value_type pouvant prendre une valeur de 0 à 127.
  6.   use MIDI_Value_Rand;
  7.  
  8.   -- La fonction de test plugin qui envoie envoie un note on et un note off vers un périphérique MIDI.
  9.   function Test_Plugin_Action (Ultrason : Ultrason_Access) return Boolean is
  10.      Note : Note_Type;
  11.      Message : Message_Type;
  12.      Iter  : Gtk_Tree_Iter := Null_Iter;
  13.      Seq : Seq_Access;
  14.  
  15.      Verax : Boolean := False;
  16.   begin
  17.  
  18.      for Aux_Id in Ultrason.Theory.Aux.Set'Range loop
  19.  
  20.         if Ultrason.Theory.Aux.Set(Aux_Id) /= null then
  21.  
  22.            if Ultrason.Theory.Aux.Set(Aux_Id).all in Test_Plugin_Record then
  23.  
  24.               Note := (Key => Random(Test_Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Value_Gen.all),
  25.                        Sens => Random(Test_Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Value_Gen.all),
  26.                        On_Hour => 0.0,
  27.                        Off_Hour => 0.0);
  28.               Message := Note_On(0,
  29.                                  Note.Key,
  30.                                  Note.Sens);
  31.  
  32.               Seq :=
  33.                 new Seq_Type '
  34.                 (new Step_Record ' ((Ultrason.Theory.Options.Tempo,
  35.                                      ((Clock - Ultrason.Theory.Options.Timers.Date) + Quantum(Ultrason.Theory.Options.Signature,
  36.                                                                                               Ultrason.Theory.Options.Tempo)),
  37.                                      Step_Vectors."&"(Step_Vectors.Empty_Vector, To_Long(Message)))),
  38.                  null, null);
  39.  
  40.               Insert_Steps_Before(Ultrason.Buffered_Partition, Left => seq, Right => seq,
  41.                                   Steps => Seq,
  42.                                   Device_Id => Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Device_Id);
  43.  
  44.               while Gtk.Main.Events_Pending loop
  45.                  Verax := Gtk.Main.Main_Iteration(False);
  46.               end loop;
  47.  
  48.               if Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Printed then
  49.  
  50.                  Iter := Add_Line
  51.                    (Ultrason.Flow_Model,
  52.                     Natural'Image(Aux_Id),
  53.                     Natural'Image(Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Device_Id),
  54.                     Control_Type'Image(Control_Of(To_Long(Message))),
  55.                     Channel_Type'Image(Channel_Of(To_Long(Message))),
  56.                     Interfaces.C.Long'Image(Portmidi.Data1(To_Long(Message))),
  57.                     Interfaces.C.Long'Image(Portmidi.Data2(To_Long(Message))),
  58.  
  59.                     Formatting.Image(Seq.Step.Hour, True), Parent => parent);
  60.  
  61.                  while Gtk.Main.Events_Pending loop
  62.                     Verax := Gtk.Main.Main_Iteration(False);
  63.                  end loop;
  64.  
  65.  
  66.                  Iter := Get_Iter_First(Ultrason.Flow_Model);
  67.                  if Line_Counter > 50 then
  68.                     for I in 1..Line_Counter/2 loop
  69.                        Parent := Iter;
  70.                        Next(Ultrason.Flow_Model, iter);
  71.                        Remove(Ultrason.Flow_Model, parent);
  72.                        Line_Counter := Line_Counter - 1;
  73.  
  74.                     end loop;
  75.                  end if;
  76.                  while Gtk.Main.Events_Pending loop
  77.                     Verax := Gtk.Main.Main_Iteration(False);
  78.                  end loop;
  79.  
  80.               end if;
  81.  
  82.               Message := Note_Off(0, Note.Key);
  83.  
  84.               Seq :=
  85.                 new Seq_Type '
  86.                 (new Step_Record ' ((Ultrason.Theory.Options.Tempo,
  87.                                      ((Clock - Ultrason.Theory.Options.Timers.Date) + ((Quantum(Ultrason.Theory.Options.Signature,
  88.                                                                                                 Ultrason.Theory.Options.Tempo) * 2\
  89. .0))),
  90.                                      Step_Vectors."&"(Step_Vectors.Empty_Vector, To_Long(Message)))),
  91.                  null,
  92.                  null);
  93.               Insert_Steps_Before(Ultrason.Buffered_Partition, Left => seq, Right => seq,
  94.                                   Steps => Seq,
  95.                                   Device_Id => Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Device_Id);
  96.  
  97.  
  98.               while Gtk.Main.Events_Pending loop
  99.                  Verax := Gtk.Main.Main_Iteration(False);
  100.               end loop;
  101.  
  102.  
  103.               if Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Printed then
  104.                  Iter := Add_Line
  105.                    (Ultrason.Flow_Model,
  106.                     Natural'Image(Aux_Id),
  107.                     Natural'Image(Plugin_Record(Ultrason.Theory.Aux.Set(Aux_Id).all).Device_Id),
  108.                     Control_Type'Image(Control_Of(To_Long(Message))),
  109.                     Channel_Type'Image(Channel_of(To_Long(Message))),
  110.                     Interfaces.C.Long'Image(Portmidi.Data1(To_Long(Message))),
  111.                     Interfaces.C.Long'Image(Portmidi.Data2(To_Long(Message))),
  112.                     Formatting.Image(Seq.Step.Hour, True), Parent => parent);
  113.  
  114.                  while Gtk.Main.Events_Pending loop
  115.                     Verax := Gtk.Main.Main_Iteration(False);
  116.                  end loop;
  117.  
  118.                  Iter := Get_Iter_First(Ultrason.Flow_Model);
  119.                  if Line_Counter > 50 then
  120.                     for I in 1..Line_Counter/2 loop
  121.                        Parent := Iter;
  122.                        Next(Ultrason.Flow_Model, iter);
  123.                        Remove(Ultrason.Flow_Model, parent);
  124.                        Line_Counter := Line_Counter - 1;
  125.  
  126.                     end loop;
  127.                  end if;
  128.                  while Gtk.Main.Events_Pending loop
  129.                     Verax := Gtk.Main.Main_Iteration(False);
  130.                  end loop;
  131.  
  132.               end if;
  133.  
  134.            end if;
  135.         end if;
  136.      end loop;
  137.  
  138.      return True;
  139.   end Test_Plugin_Action;


 
Donc les instruction pour l'envoie du message son hors des conditions d'affichage.
 
Une enigme.
 
Je vois pas ou est l'erreur.
 
Merci pour votre aide. S'il vous plait.


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
mood
Publicité
Posté le 17-05-2015 à 00:00:47  profilanswer
 

n°2258328
par l'anne​au de l'ia
word master
Posté le 19-05-2015 à 02:25:33  profilanswer
 

J'ai solvé mon problème en faisant complètement diféremment.
Impécable.
 


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  notes jouées seulement si elles sont afficher #error N° 1.

 

Sujets relatifs
afficher la fenêtre dans une appletCalculer taille image et afficher [RESOLU]
afficher les publications des membresError Time 424 - VBA - Export vers word
Afficher le nouveau enregistrement dans la liste.Afficher texte si l'URL contient un mot
syntaxe error avec rangeFaire apparaître un Bouton Seulement en fin de scène
VBA: imprimer en couleur sur imprimante en N&B par défaut ?Besoin d'afficher le contenu de la catégorie "2"
Plus de sujets relatifs à : notes jouées seulement si elles sont afficher #error N° 1.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR