Logique de transformation personnalisée
Sujet avancé : créer du traitement MIDI sur mesure au-delà des nœuds intégrés
Vue d'ensemble
Neurode MIDI utilise Neuroscript v3 (Rust) comme encodage canonique pour le routage et les transformations. La création visuelle compile vers Neuroscript, et les scripts sont compilés hors des threads temps réel en programmes déterministes.
Même si Neurode MIDI fournit des primitives de routage/transformation, vous pourriez avoir besoin de logique personnalisée pour :
- Composition algorithmique — motifs génératifs, arpèges, progressions
- Traitement adaptatif — transformations sensibles au contexte
- Intégration matérielle — mappings spécifiques à votre équipement
- Effets expérimentaux — algorithmes personnalisés
Neuroscript (recommandé)
Neuroscript est un DSL orienté musique pour les opérations MIDI courantes.
Quand l'utiliser
- Transformations standard (vélocité, filtrage, remapping)
- Scripts lisibles et faciles à maintenir
- Prototypage rapide
Exemple : courbe de vélocité
# Compresser les notes fortes, booster les faibles
when vel > 100: event(vel = clamp(vel, 90, 110))
when vel < 40: event(vel = clamp(vel + 20, 1, 127))Exemple : couches conditionnelles
# Notes douces vers le pad, notes fortes vers le lead
when vel < 60: event(ch = 3)
when vel >= 60: event(ch = 2)Limitations
- Pas de mémoire dynamique ni de boucles non bornées
- Exécution déterministe par événement
- Contrôle temporel limité à
send/emitavec durées
Référence complète : Langage Neuroscript
Bonnes pratiques
1. Commencer par les nœuds intégrés
Avant d'écrire du script, vérifiez si les nœuds intégrés suffisent :
Préférez les transformations intégrées (filtrage, remap de canal, vélocité) lorsqu'elles existent.
2. Garder des scripts courts et ciblés
Bien (script ciblé) :
# Responsabilité unique : booster les notes faibles
when vel < 50: event(vel = clamp(vel + 10, 1, 127))Si un script dépasse ~10–15 lignes, envisagez de le diviser en routes/préréglages ou de le refactoriser.
3. Tester en isolation
Utilisez le Simulateur avant d'intégrer le script :
- Écrire le script
- Tester avec des événements MIDI
- Vérifier la sortie
- Appliquer au preset/route
4. Profilage des performances
Ajoutez des nœuds Monitor avant/après :
[Entrée] → [Monitor A] → [Script] → [Monitor B] → [Sortie]Si la latence dépasse 1 ms :
- Simplifiez la logique
- Utilisez les nœuds intégrés
5. Gérer les cas limites
when type == note: event(note = clamp(note + 12, 0, 127))6. Commenter la logique
# Humaniser légèrement la vélocité (notes uniquement)
when type == note: event(vel = clamp(vel + 4, 1, 127))