Bonjour.
j'essai de concevoir un programme avec Ada qui génrère des message MIDI pour exploiter un instrument MIDI.
J'ai écrit un paquetage "Device" qui fournit le type Device_Type, permet de l'initialiser, ouvrir, écrire, fermer un périphérique MIDI.
Ce paquetage doit être exploité par un paquetage "Sheduler" qui doit permettre de séquencer les message MIDI de multiple générateurs(FX, lead, bass, drums, global) grace à une tache décrite comme suit :
Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 task Sheduler_Process is entry Start; entry Stop; entry Reset; entry Halt; entry Receive(Message : in Message_Type; step : in Positive); end Sheduler_Process;
Mon problème consiste à trouver comment démarrer, stopper les divers process - Sheduler, FX, Lead, bass, global.
Je peux le faire depuis le main qui instancie chacun des générateurs avec le sheduler en paramètre :
Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Device : Device_Type; begin Initialise(Device); if not intialized(device) then raise Specification_Error; end if; declare package Sheduler is new Midi.Sheduler(Device); package Global is new Midi.Global(Sheduler); package Fx is new Midi.Fx(Sheduler); -- etc begin Global.initialize; FX.initialize; -- etc Sheduler.Sheduler_Process.Start; Global.Global_Process.start; Fx.Fx_Process.Start; -- etc
Mais n'y a- t- il plus élégant/fonctionnel à faire ?
Merci.
Partager