Je développe cette application en collaboration avec mon colocataire ingénieur lumière, l'idée est de pouvoir piloter des périphériques Art-Net à partir d'autres signaux (MIDI , Gate sur des sons ...), un batteur sur une batterie MIDI pourrais déclencher le lancement d'une vidéo ... les applications sont nombreuses.
Cette application est développé en WPF MVVM, elle se présente sous forme de Rack ou l'on peut ajouter des composants ( entrées/Sorties Art-Net, entrées/sorties Midi, Fader virtuel ...) que l'on peut ensuite connecter entre eux.
J'ai une classe Set qui contient les éléments du Rack et leur connexion et quelques paramètres (nom du set , Bpm si besoin ...).
J'ai une classe SetManager ( qui comporte un instance de Set appelé CurrentSet) qui gère le Set (sérialisation/dé sérialisation, ajout d'un composant, d'une connexion ....) ,c'est cette classe SetManager qui sert de contexte de donnée à mon application, elle comporte notamment toutes les RelayCommand appelé dans l'interface graphique.
Dans l'interface graphique j'ai un bouton dont la propriété Command est Binder à ma RelayCommand StartArtNetCommand :
<Button Command="{Binding Path=StartArtNetCommand}" Margin="5 0 5 0" Content="Démarrer" >
Dans ma classe SetManager j'ai la déclaration de cette RelayCommand:
1 2 3 4 5 6 7 8 9 10
| private RelayCommand _startArtNetCommand;
public ICommand StartArtNetCommand
{
get
{
if (_startArtNetCommand == null)
{ _startArtNetCommand = new RelayCommand(param => this.StartArtNet()); }
return _startArtNetCommand;
}
} |
La RelayCommand appelle la méthode StartArtNet de la classe SetManager, voici sont contenu :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private void StartArtNet()
{
Console.WriteLine("StartArtNet");
ArtNetWrapper.ArtNetInit();
//for (int i = 0; i < Sanford.Multimedia.Midi.OutputDevice.DeviceCount; i++)
//{
// MidiOutCaps midiOutCaps = Sanford.Multimedia.Midi.OutputDevice.GetDeviceCapabilities(i);
// MidiOutputDecorator midiOutputDecorator = new MidiOutputDecorator();
// midiOutputDecorator.DeviceId = i;
// midiOutputDecorator.Name = midiOutCaps.name;
//}
} |
Si je commente la ligne
ArtNetWrapper.ArtNetInit();
et que je décommente les lignes qui concernent les sorties Midi (elle n'ont rien à faire la c'est juste pour le test) cela marche , pas de StackOverflow .....
Partager