Player de fichiers midi sur Thomson

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Répondre
rinnaudin
Messages : 24
Inscription : 30 mars 2013 13:39

Player de fichiers midi sur Thomson

Message par rinnaudin »

Je vois qu'il n'y a pas de problème pour jouer des samples sur Thomson mais bon le challenge n'est pas ce qu'il y a de plus intéressant de jouer à 25000 ou 27000 hz le même sample en boucle.

Par contre quelqu'un s'est il déjà intéressé à créer un player de fichiers .mid sur Thomson, quitte à diminuer le nombre de voies du fichier .mid?

Car un fichier fait fait une trentaine de Ko pour les gros morceaux et ils durent plusieurs minutes. Rien à voir avec des samples qui saturent la mémoire des Thomson rapidement.

Est-ce compliqué de jouer des fichiers .mid sur TO/MO ?
__sam__
Messages : 7970
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Player de fichiers midi sur Thomson

Message par __sam__ »

Pour les demos HNY2013 et ROCKFORT, je me suis fait un convertisseur de fichier MID en fichier audio pour mon player TO7.


Avec les fichiers MID mono, il n'y a pas de problème: la conversion est exacte. Mais avec les MID multivoix (i.e 99.9% d'entre eux, ne serait-ce qu'à cause des accords) on entre dans la grande science du "melody extraction". C'est un domaine de recherche hautement actif, avec des résultats plus ou moins heureux. Pour info le son de ROCKFORT vient d'un de ce procédé avec un algo perso que je me suis développé m'inspirant du skyline-algorithm.


Reste aussi un problème de volumétrie: même si les MID sont plus petits que les WAV ou MP3, ils sont quand même très gros pour la mémoire des 8-bits. Par exemple le mid d'AC/DC que j'ai converti faisait 22Ko, ce qui est plus grand que la bank ram thomson. La conversion s'est faite sur PC avec un petit programme perl qui a ramené tout cela à un taille plus raisonnable (664 octets).

Si tu as un fichier MID que tu voudrais voir converti, envoie le moi en MP et je pourrais te faire une D7 avec la conversion et le player associé.

sam (qui a plein de moceaux MID en attente d'être exploités dans une démo)
Dernière modification par __sam__ le 31 mars 2013 11:21, modifié 7 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
rinnaudin
Messages : 24
Inscription : 30 mars 2013 13:39

Re: Player de fichiers midi sur Thomson

Message par rinnaudin »

je me suis fait un convertisseur de fichier MID en fichier audio pour mon player TO7.
en fichier audio? c'est-à-dire? je pensais que l'on pouvait jouer le MID à la volée dans le Thomson, sans devoir convertir au préalable le morceau en sample 6 bits?
__sam__
Messages : 7970
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Player de fichiers midi sur Thomson

Message par __sam__ »

A la volée? Oulà ca ne sera pas simple.

Le MID manipule des grand entiers (pour un ordi 8 bits), de gros volumes, un timing assez précis et des données streamées en série à une fréquence élevée pour du 8-bits (31 250bauds). Je crains que le 6809e ait du mal à suivre.

A la base le format midi est assez simple, il donne pour chaque instant t et pour chaque instrument (16maxi) un signal note "on" ou note "off". Pour jouer du midi, sur une note "on" on lance la lecture des l'échantillons de l'instrument considéré à la fréquence de la note souhaitée. Sur un note "off", on éteint la lecture de cette note. C'est vraiment tout simple. A noter: on peut bien sur avoir plusieurs notes "on" pour différents instruments aux mêmes instants, mais aussi pour le même instrument quand il s'agit d'un accord. Cette multiplicité de fréquences simultanées rend la lecture de midi difficile pour les matériels ne disposant pas suffisamment de ressources (oscillateurs, timers, puissance cpu, etc). Aussi les implémenteurs de téléphones mobile ont, il y a quelques années, étendus le format pour pouvoir attribuer une importance aux instruments quand plusieurs jouent simultanément et que le matériel ne permet que d'en jouer un sous-ensemble simultanément. Avec cette info, les téléphone choisissaient les N plus importants à jouer simultanément (N dépend de leurs capacités). Ce truc n'a que modérément eu de succès car très vite les ringtones midi ont été remplacés par des formats échantillonés (MP3, AMR, etc).

Quoi qui l'en soit jouer correctement du midi nécessite de pouvoir jouer plusieurs "sons" en parallèles. Et là dessus, les 8 bits sont plutôt limités. Quant au TO qui n'est pas aidé par le matériel, il est complètement à la ramasse.

Par ailleurs, n'oublions pas non plus que le midi ne contient que les notes et pas les banques d'instruments. C'est à dire que du du fichier MIDI lui même on ne pourra tirer que des fréquences et des durées, pas d'échantillons. Ainsi mon convertisseur donne ce genres de fichiers:

Code : Tout sélectionner

        fcb     cBPM,$26,$f5
        fcb     s8,nE5,s4d,nP,s8,nE5
        fcb     s4d,nP,s8,nE5,s4d,nP,s8
        fcb     nE5,s4d,nP,s8,nE5,s4d
        fcb     nP,s8,nE5,s4d,nP,s8,nE5
        fcb     s4d,nP,s8,nE5,s4d,nP,s2
        fcb     nE4,s8,nE5,nP,s4d,nFs5
        fcb     nP,s8,nE5,nP,s4d,nE5,nP
        fcb     s8,nE5,s4d,nP,s8,nE4
        fcb     nG5,nE5,nD5,nE5,nB4,nA4
c'est à dire qu'on y trouve les notes (nXX), les durée (sYY) et quelques commandes (cZZZ, ici le changement de BPM). Sur thomson, le seul instrument dispo est le <beep> tout moche. Qui plus est, il est mono et ne sait pas jouer d'accords. Du coup il faut ruser. Mon convertisseur peut optionnellement laisser tomber l'accord en cours et le remplacer par "la note la plus significative" ou convertir les notes simultanées en arpèges, ce qui fait très musique 8-bits. Ces ruses rendent plus ou moins joli suivant les cas. Il faut tester.

sam.
Dernière modification par __sam__ le 30 mars 2013 23:44, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Player de fichiers midi sur Thomson

Message par 6502man »

Très intéressant ce player mid :D

Jester avait aussi fait un player mid pour exelvision.

C'est une idée très intéressante pour produire des musiques assez longues et économes en RAM.

J'ai vraiment une grosse lacune sur la programmation de la musique :(
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Fool-DupleX
Messages : 2341
Inscription : 06 avr. 2009 12:07

Re: Player de fichiers midi sur Thomson

Message par Fool-DupleX »

Le MID manipule des grand entiers (pour un ordi 8 bits), de gros volumes, un timing assez précis et des données streamées en série à une fréquence élevée pour du 8-bits (31 250bauds). Je crains que le 6809e ait du mal à suivre.
Synthetiser un fichier midi pour generer du son, dur. Un poil off topic mais je le signale quand même : s'il s'agit de piloter un synthétiseur, avec l'interface MIDI de Logimus, c'est sans probleme. 31250 c'est la vitesse d'echange des données, mais cela est pris en charge par l'UART qui se trouve dans cette interface. Il suffit de lire les données du fichier midi en utilisant le timer sur TO, apres avoir calcule la base de temps d'apres les meta data du fichier midi. la cadence est tres basse et l'interpretation des delta times n'est pas compliquée. Il y a des annees de cela, j'avais ecris un petit sequenceur midi sur TO7/70 avec l'extension memoire (112 Ko de RAM au total), largement de quoi stocker une bonne partie des midi. Je lisais directement les vrais midis sans conversion. Je chargeais même le synthe (une Korg X5D) avec les banques en systeme exclusif pour les instruments. Sur MO5 c'est problématique car il n'y a pas de timer programmable, il utiliser la fameuse TSG ce qui rend l'exercice fastidieux.

joli le rock fort ; animation respectable + son correct sur Thomson n'a jamais ete fait sur des softs commerciaux, alors chapeau bas. :shock:
__sam__
Messages : 7970
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Player de fichiers midi sur Thomson

Message par __sam__ »

Fool-DupleX a écrit :joli le rock fort ; animation respectable + son correct sur Thomson n'a jamais ete fait sur des softs commerciaux, alors chapeau bas. :shock:
Merci. Il y a aussi les autres trucs présentés à la forever à voir sur http://www.pulsdemos.com

Hélas, sur pouet.net les gens reprochent l'aspect "beep". Si seulement il savaient combien le player asynchrone en quelque centaines d'octets était LE point difficile de la production. Le starfield en lui même est une technique largement connue, même Hebdogiciel en avait fait une version dans les numéros 137, 141 et 145.

J'ai compté les cycles mangés par les ROMs pour les traitements des interruptions timer sur toutes les machines thomson (i.e. avant de sauter à l’adresse contenue en $6027). Les TO8 et TO9+ sont 3 fois plus lent que les TO7-TO7/70-TO9 !!! Du coup, sur TO8 les interruptions timer faisant un minimum de chose (disons 40cycles, ce qui n'est pas beaucoup) ne peuvent guère monter au delà de 6khz avant de charger complètement le cpu, alors que sur TO7 on peut atteinte 11khz avec les mêmes 40 cycles utiles dans l’interruption. A noter au passage, que le MO5 est 2 fois plus lent que le TO7 avant d’appeler la routine en $2061. Les ingénieurs thomson n'ont pas écrit la gestion d'interruptions avec le maximum d'efficacité je suppose (ca aurait été bien si l'on pouvait programmatiquement détourner les adresses en $FFFx au plus tôt).

En fait, vu l'efficacité des roms TO7, je ne suis pas loin de penser que les interrupts timer laissent assez de temps pour gérer 2 voix audio à 4khz par interruptions en laissant une toute petite fraction du cpu de libre (j'ai déjà expérimente 1 voix audio à 4khz sur TO9). Bon 4khz permet tout juste d'atteindre la fin de l'octave 5 ce qui n'est pas beaucoup, mais reste compatible avec ce que le basic permet, ce qui n'est pas mal si c'est asynchrone et multivoix. (je vais peut être ouvrir ce sujet de discussion sur logicielsmoto s'il y en a qui sont intéressés, vu que c'est du TO pur jus)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
rinnaudin
Messages : 24
Inscription : 30 mars 2013 13:39

Re: Player de fichiers midi sur Thomson

Message par rinnaudin »

Est il envisageable de créer une petite carte son pour TO/MO qui se brancherait sur le port manette (à la manière du SDMOTO) et qui déchargerait le processeur de la gestion sonore? Une sorte de circuit AVR qui se chargerait du son (et donc pas uniquement des notes musicales midi mais bien du vrai son 16 bits 44 khz).

On ajoute bien des extensions aux TO/MO pour lire des cartes SD, pourquoi pas un circuit son digne de ce nom? Il existe un ordinateur complet sous linux (le raspberry pi) pour 30 euros.
Pourquoi pas une carte son pour 5 à 10€?

est-ce possible?

lui par exemple il utilise un chip sonore Yamaha YM2149 pour faire jouer de la musique à un processeur 6809.
http://www.youtube.com/watch?v=wckFbpOYCBk

et voici son ordinateur complet à base de 6809

http://www.msarnoff.org/6809/

bon il est vrai que le YM2149 est bien vieux, alors pourquoi ne pas utiliser un Yamaha YMF262 ?
__sam__
Messages : 7970
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Player de fichiers midi sur Thomson

Message par __sam__ »

Le sujet des cartes "son" pour thomson a été abordé ici. (Ca date un peu)

Il y a bien l'extension "speech" qui fourni des générateurs sonores programmables depuis une machine thomson. A ma connaissance, seul Pulkomandy l'a utilisé pour faire du son dans forever-young. Hélas aucun emul ne semble émuler correctement cette extension, donc l'expérience est rare, très rare. J'ai vu passer la doc de programmation du MEA8000, mais je ne la trouve plus, snif. Dommage.

Fool: c'est de toi ceci ? http://www.logicielsmoto.com/viewdocument.php?docid=58 Il y a une D7 logimus dedans qui n'est pas sans me faire penser au séquenceur midi dont tu parlais.
Dernière modification par __sam__ le 01 avr. 2013 23:26, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
rinnaudin
Messages : 24
Inscription : 30 mars 2013 13:39

Re: Player de fichiers midi sur Thomson

Message par rinnaudin »

disons que l'extension speech n'est plus produite donc difficile de s'en procurer une et s'il y en avait une sur ebay, ca serait une seule.

alors que développer une mini carte son avec un chip sonore produit à l'heure actuelle permettrait de s'équiper sans devoir attendre une hypothétique vente sur ebay.

Mais déjà faut il obligatoirement brancher un tel chip sur le slot extension musique et jeux ou pourrait il se brancher sur la prise LEP ou la prise joystick?
Fool-DupleX
Messages : 2341
Inscription : 06 avr. 2009 12:07

Re: Player de fichiers midi sur Thomson

Message par Fool-DupleX »

Hélas aucun emul ne semble émuler correctement cette extension, donc l'expérience est rare, très rare.
Il convient de préciser un certain nombre de choses visiblement ; je ne pensais pas que le son était si méconnu, même des pros, sur Thomson :wink: . Premièrement, vrai pour les emus, mais si ce n'est pas le cas, c'est uniquement par "flem". En effet, le code C qui emule le MEA 8000 *parfaitement* existe (puisque je l'ai) et il était question que Daniel l'integre dans DCMOTO, mais je n'ai plus eu de nouvelles a ce sujet depuis des mois.

Deuxiemement, concernant l'interface midi, oui ce package vient de moi mais ne contient pas mon sequenceur, juste quelques programmes de demos simplistes fournis par Logimus. Je possede cette interface et elle marche tres bien, c'est vraiment dommage qu'elle ait passé quasi-inaperçu à l'époque quand on pense que ça a été un des arguments chocs de l'Atari ST.

Troisièmement, pour les cartes son, pas mal d'idées ont été étudiées, y compris celle d'adapter une Sound Blaster, ce qui est possible si un excepte la partie DMA. Mais mettre même un Atmel pour le son est un peu anachronique, un atmega par exemple est 16 fois plus puissant qu'un Thomson. Pour le raspberry pi, autant emuler la machine entiere et c'est réglé. Quant au cout, c'est une question de volume de production. Ce que je veux dire, c'est que cela dénature l'idée même d'aller plus loin avec nos machines favorites et il existait déjà pas mal de choses qui ont été largement sous-exploitées à l'époque. L'interface de synthese vocale permettrait de faire de tres jolies choses en matiere de musique. Et comme le code C equivalent existe, on pourrait même imaginer un emulateur hard avec un atmel. Mais l'exercice de style a mon avis consiste a rester dans le cadre de la machine originale. C'est en tout cas ce que je souhaite. Et puis par pitié, faites du vrai hard directement sur le bus de la machine, pas trois fils et demi sur le port jeu ... :x

Une petite remarque concernant les interruptions : Pour notre OS-9, comme tu le sais Sam, nous avons complètement viré la ROM originale, ce qui nous affranchit des lenteurs du mecanisme swi et irq, mais libere egalement swi2 et swi3 qui ne sont pas utilisées sur Thomson. Pour aller dans ton sens, je peux te dire qu'on a vu la difference en matiere de performances. Thomson a l'epoque a joué la carte de la flexibilité, puisque n'importe quelle routine moniteur est détournable, mais évidemment ca ne joue pas en faveur de la vitesse.

Cela etant dit, si quelqu'un m'indique un chip son abordable et disponible, on pourrait etudier quoi mettre autour pour faire une carte son. Autre suggestion pour Sam : pourquoi ne pas etudier une modification mineure de la ROM pour accélérer la gestion des irq ? Ce sont des idées que je jette sur la table, je ne dénigre pas les autres suggestions :D

PS. Sam j'ai toute la doc du MEA 8000 et sa programmation sur thomson est detaillee dans le livre "paroles et micro" disponible sur le site de Daniel (quoique incomplet car c'est moi qui suis responsable du scan et je n'ai pas fini). Enfin bref, j'ai tout si ca t'interesse.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: Player de fichiers midi sur Thomson

Message par jester »

Lire un midifle sur nos machines n'est pas une bonne solution. Ce format de fichier est très gourmand et fait vite plusieurs dizaines (en moyenne une centaine de kilo) et le contenu est totalement inadapté à nos vielles machines. Il faut disposer d'une polyphonie d'au moins 32notes pour avoir un résultat correct... et avoir au minimum 10 canaux avec des timbres différents.
J'avais juste réalisé un convertisseur de fichiers midi vers un format ad-hoc pour ma routine Exelvision... et le fichier midi original devait contenir 3 pistes (2 pistes monophonique et une piste de drums).

Mieux vaut un fichier de type SoundTracker qui gère la répétition de patterns...
Après, une carte son... pourquoi pas ? Mais il faut une grosse communauté de vieux démo-makers pour faire vivre tout ça.
rinnaudin
Messages : 24
Inscription : 30 mars 2013 13:39

Re: Player de fichiers midi sur Thomson

Message par rinnaudin »

Cela etant dit, si quelqu'un m'indique un chip son abordable et disponible, on pourrait etudier quoi mettre autour pour faire une carte son.
Et les chinoises ca vaut quoi? (les cartes sons pas les filles) et ca serait adaptable sur TO/MO ?

cartes son USB à 7€

http://www.ldlc.com/fiche/PB00125812.html
http://www.pixmania.com/fr/fr/4154410/a ... sb-av.html
Fool-DupleX
Messages : 2341
Inscription : 06 avr. 2009 12:07

Re: Player de fichiers midi sur Thomson

Message par Fool-DupleX »

Inutilisable, c'est de l'usb ca utilise donc forcement le protocole I2S virtualisé par dessus l'usb, beaucoup trop gourmand en puissance et en memoire. Il faut un chip qui bosse en parallèle, par exemple l'opti 82c933 auquel je m'étais interessé en son temps, sauf que celui-la il est obsolete et plus produit.

Ca risque d'être dur de trouver des chips qui bossent encore en parallele, ce genre de bus ne se fait plus.
__sam__
Messages : 7970
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Player de fichiers midi sur Thomson

Message par __sam__ »

Heu.. une idée peut être un peu iconoclaste, quoi que... si on remplacait le 6809 par un 6309.. A fréquence égale, on irait plus vite, et en plus on peut l'overclocker à 3.5Mhz. C'est pas très loin d'une solution type carte acceleratrice ce truc. Allez je pousse le délire encore plus loin, en fait j'aime assez l'idée d'avoir un "petit" cpu pas cher dans un ports d'extension. Le 6809 pourrait lui confier les trucs couteux en cpu ou même pas trop couteux mais nécessitant des resources que tous les MO n'ont pas (timer programmable). Avec un peu d'imagination il pourrait faire tourner une pile TCP/IP ou un driver USB et être utilisé par le 6809 pour parler à du matériel relativement moderne.

Bon ok, j'arrête le délire. Retour à la rude réalité (j’expérimente un truc soft très cool, peut être que ça marchera.. ou peut-être pas.. Affaire à suivre).
Dernière modification par __sam__ le 03 avr. 2013 01:14, modifié 4 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre