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

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

Marsh Posté le 17-05-2015 à 00:00:47    

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.
Reply

Marsh Posté le 17-05-2015 à 00:00:47   

Reply

Marsh Posté le 19-05-2015 à 02:25:33    

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.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed