Bentoc a écrit:
Oui Sam ce serait "Monstrueux" de pouvoir faire ça. Si j'ai bien suivi, le système que tu as mis en place permet de jouer des instruments sous la forme de samples.
Pas au début. Par exemple pour la démo "So we just buzz", j'ai converti un fichier "KAR" qui n'est rien d'autre qu'un fichier midi + extension pour les paroles, en codes pour un player logiciel jouant 3voix + drum sur le buzzer. Ca n'est que pus tard que la notion de 4 voix + instruments échantillonnés a fini par apparaitre. Mais cela occupe le CPU à 100% pour produire les échantillons à 5khz -- en deçà la qualité n'est pas terrible, et même que parfois 5khz c'est pas top. Par contre pour des créneaux 2-4khz c'est pas mal ce qui permettrait de jouer du son par interrupt (voir exemple joint).
Citation:
En branchant un clavier midi à l'interface on pourrait utiliser le TO8 comme un lecteur d'échantillon "lo-fi" assez original. Il faudrait décoder à la volée le flux midi arrivant en entrée de l'interface au lieu de lire les données d'un fichier.
Oui, et de ce que je me souviens de mon algo de conversion, ca se fait assez bien dans le fond. On assignerait le TO à un instrument (channel midi si j'ai bonne mémoire) et on joue (logiciellement ou via la carte son matérielle) la dernière note envoyée sur ce canal (ou les 3 dernières actives si on a 3 canaux parallèles dispo).
Citation:
Tu gères 4 notes de polyphonie avec ton code c'est ça ?
Oui pour les MOD, après avec le buzzer ou des signaux carrés j'ai fait du 1, 2, 3 ou 4, ca dépend (j'augmentais le nombre de voix en fonction de mes progrès dans l'optimisation des players). Le plus compliqué dans mon algo de conversion depuis le MIDI était de sélectionner les 4 notes les plus saillantes(*) sur tous les instruments actifs à chaque instant pour les jouer sur les 3/4 canaux autorisés par le player logiciel.
____
(*) celle qui marquent le plus -- il y avait toute une R&D autour de ca. J'utilise l'algo "skyline" qui donne un résultat correct la plupart du temps (voir exemple joint).
L'autre truc compliqué était que la musique occupe vite beaucoup de mémoire, aussi les players gère aussi une decompression des commandes depuis la mémoire (*). Evidemment si les commandes viennent d'un flux midi externe, c'est cela de moins à faire gérer par le player coté Thomson.
____
(*) en gros: la routine interrupt marche comme un processeur musical indépendant qui lit des instructions soit musicales (jouer telle note sur tel canal, mettre tel volume sur tel autre), soit des instructions de flot (sauter à telle autre adresse, revenir à la suite du saut précédent, bref un "JSR/RTS" pour le processeur sonore), etc.
Avec ca on peut factoriser des bouts de séquences d'instructions musicales répétitives un grand nombre de fois dans des petites zones de codes qu'un JSR permet d'appeler autant qu'on veut. On peut même factoriser les portions de "JSR" qui se répètent autant qu'on veut. Résultat on a un énorme taux de compression: les 20ko du MIDI en exemple font 1.7ko avec ca. Le but était de pouvoir avoir des morceaux de musique pas trop nulls qui puissent ternir dans le 1ko des intros de la
forever 2014.