Forums AmigaOS, MorphOS et AROS Général MorphOS au quotidien Répondre à : MorphOS au quotidien

Mod

Tcheko

  • Messages : 1015
#356103

Yop,

J’en profite pour faire un tease de ma dernière création. J’avais envie d’explorer les algorithmes nécessaires à la création d’un séquencer MIDI. Voici donc en première mondiale une capture d’écran du POC (Proof of Concept).
Skeleton
Pour l’instant, rien de bien folichon sur le plan des fonctionnalités mais le moteur fonctionne (ça fait pim pam poom sur le clavier MIDI GM dont je dispose).

Quelques caractéristiques à ce jour :
– Exploite CAMD pour le routage MIDI
– Nombre illimité d’instruments adressable individuellement pour le routage MIDI (chaque instrument peut être routé sur n’importe quel instrument MIDI)
– Durée maximale d’un morceau 2^32 millisecondes (soit environ 1200 heures…)
– Éditeur de type ‘timeline’ (pas de partition dite ‘traditionnelle’)
– Ajout/suppression des événements (clic gauche ajout, clic droit suppression)
– Sélection de la couleur des instruments sur la partition
– Sélection de la durée des notes (1/2/3/4/5/6/8/16/32)
– Les événements sont conservés dans un arbre binaire balancé ce qui permet par exemple d’explorer une période de temps très rapidement grâce à la fonction EnumTreeNode de la btree.library. Idéal pour retrouver toutes les notes dans l’éditeur de partition ou insérer très rapidement de nouveaux événements.
– Support embryonnaire (lire j’ai fait un peu de place pour cela mais rien ne fonctionne sur ce plan) pour les sons sous forme d’échantillons (sample).
– Résolution des événements : 1ms
– Le moteur de gestion des événements fonctionne sous sémaphore permettant le ‘threading’ : l’édition pendant la lecture depuis un processus tiers est donc possible.

Il reste cependant une masse de travail importante pour en faire un truc qui soit réellement utilisable sur le plan de la production musicale :
– charger/sauver une création
– importer/exporter au format SMF (fichier MIDI)
– couper/copier/coller
– générateur d’accord
– transposition
– fonction ‘humanizer’ pour varier la vélocité et la temporalité des notes
– éditeur d’effet (partiellement implémenté avec une autre de mes créations keyframe.library + keyframe.mcc non public pour l’instant qui permet l’édition d’un nuage de points avec interpolation des valeurs intermédiaires, idéal pour poser des effets genre trémolo ou tout type de CC ‘control change’)
– support du volume global (instrument), discret (note)
– sélection des instruments (message program change)
– support des signatures de temps (2/4, 3/4, 4/4, 5/4 etc…)
– tempo variable, à ce jour, le moteur fonctionne à 120BPM en 4/4
– threading du lecteur pour éviter le ralentissement/arrêt de la lecture lors des interactions avec l’interface utilisateur (MUI se fait bombarder à 1000Hz par un timer pour assurer la lecture à ce jour…)
– support de l’insertion en ‘live’ (capture des événements MIDI en provenance d’un clavier maître par exemple) avec uniformisation (caler la position et la durée de la note au plus proche de la grille)
– support des scripts LUA (greffons)
– …

Si des musiciens ayant du matériel MIDI veulent tester et me faire des suggestions d’amélioration, c’est avec plaisir que je fournirai une archive.

Attachments:
Amiga Impact