Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Cette catégorie traite de développements récents pour 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

FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

Hello,

J'ai enfin réussi à downgrader mon player de modules Amiga sur 8086.

Pour la petite histoire, j'ai développé Mod Master, de 1993 à 1995.
Comme je suis passé au 486, la dernière version de mon soft était code en assembleur 386 et VGA.

J'ai récupéré un Amstrad PC1640 il y a quelques mois et la découverte de GLX Player jouant des modules sur XT m'a motivé pour faire l'essai....

Le résultat est visible sur ma chaine Youtube:
https://www.youtube.com/watch?v=s_4U_h4bSqw&t=34s

Pas encore au niveau de GLX Player pour la vitesse de mixage, mais j'y travaille....

22KHz 4 Voies et 10KHz 8 Voies, pas mal quand même. C'est impressionnant en live :)
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par Fool-DupleX »

Ca, ça me bluffe complètement. Je connaissais GLX Player. Mais comment vous faites pour mixer avec aussi peu de puissance. Faut m'expliquer.

Moi j'ai découvert les mods pour la première fois sur le 286 d'un pote à l'époque et j'étais jaloux parce que je ne pouvais pas faire la même chose sur mon XT.

Quelles cartes son sont supportées ?
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

Merci :)

J'ai bien l'intention de rattraper GLX au niveau du mixage, pour le reste, mod master lui est déjà supèrieur.

La, j'ai downgrade Mod Master 2.2 qui supporte le HP Interne, SB, SBPro, SB16, Gravis et Covox.

J'ai supprimé partiellement le code Gravis pour faire de la place, mais j'aimerais pouvoir le faire fonctionner. C'est d'ailleurs mon intention première, faire fonctionner une gravis sur un XT.

J'ai découvert la premiere fois les .MOD sur mon PC1512, je ne me souviens plus du nom du player...
Et ensuite Mod Play sur 286 et plus.

Le mixage se fait en additionnant chaque sample à des vitesses et volumes different.
Pour le volume, on utilise une table précalculée, elle ne prends pas trop de place car il y a 64 niveaux de volume different.
Pour le vitesse, on fait 2 additions (Calcul en virgule fixe).

L'ennemis de la vitesse, c'est les boucles. Pour supprimer ce soucis, j'ai étendu les samples pour pouvoir calculer 64 échantillons d'un coup.
J'ajuste la position du pointeur (Boucle ou pas boucle) après le calcul des 64 échantillons.

Pour le fun, voici le Coeur du code de mixage: (J ai l'intention de publier les sources)
BH: Volume
AL: Incrément Décimal
BP: Incrément entier
CX: Mono/Stereo

MOV BL,ES:[SI] ;BL=Sample sans volume
MOV BL,[BX] ;DH=Sample avec le volume et BX offset Volume
ADD [DI],BL ;Mixage
ADD DI,CX ;CX=1 => Mono CX=2 => Stereo Changé en INC DI dans la version XT
ADD AH,AL ;Partie décimale
ADC SI,BP ;Partie Entière
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par jvernet »

J'attend ça avec impatience !
IBM XT, 4,77Mhz, PC1512: 8Mhz ! Ca doit tout changer à ce niveau !
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par gilles »

a une époque j'avais codé un modplayer pour pc en mode 8086 mais c'était pour une machine plus rapide (mon 386sx16). La partie décodage était en turbo pascal et la boucle de replay en assembleur. je n'avais codé ni les effets ni même le volume par contre, juste la succession des notes à la "bonne" fréquence (mais il jouait un peu faux je crois :) ). je vais essayer de retrouver ça mais les disquettes 1.44 ont assez mal vieillit...
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par Fool-DupleX »

J'aimerais bien tester ça sur mon TO16, qui tourne soit à 4.77 MHz soit à 9.54 MHz au choix. Covox, c'était le bidule sur le port parallèle, n'est-ce pas ? Ca me permettrait de tester facilement ; je n'ai plus ma Sound Blaster 1.5 depuis bien des années maintenant ...
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par __sam__ »

FreddyV a écrit : 08 avr. 2019 13:34 L'ennemis de la vitesse, c'est les boucles. Pour supprimer ce soucis, j'ai étendu les samples pour pouvoir calculer 64 échantillons d'un coup.
J'ajuste la position du pointeur (Boucle ou pas boucle) après le calcul des 64 échantillons.
C'est la technique que j'utilise aussi dans mon dernier player de MOD pour Thomson. Avec une difficulté supplémentaire que le son est joué de façon synchrone (pas de buffer: les échantillons sont calculés un à un). Il faut donc que tous les chemins d'execution prennent le même temps. Oh et puis on est beaucoup plus lent que ne serait-ce qu'un Z80 de l'époque.
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
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par jvernet »

__sam__ a écrit : 08 avr. 2019 18:43 Oh et puis on est beaucoup plus lent que ne serait-ce qu'un Z80 de l'époque.
Quand je vois qu'un 486 Dx2/66 a du mal à lire un .XM complexe, c'est encore plus méritant sur un Thomson.
Un 68030 à 16 Mhz (du Classic Color) a aussi beaucoup de mal, avec ModPlayer sur Mac.
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

@Sam,

Oui j'ai vu ton post et j'ai du mal à me plonger dans tes explications de sample 1 bit. (Je suppose que c'est du sample Delta)

8086 Domination utilise aussi la technique du mixage/Envoie de sample à vitesse fixe.
Mais pour faire ca, ils utilisent des sample de taille fixe (256 Octets) et précalculent les sample à differents volume et toute la partition.
Certains effet sont impossible à faire.

Au final, ca n'a plus grand chose a voir avec un fichier .MOD et ca ne fonctionne que sur un CPU donné à une vitesse donnée.
J'avoue ne pas avoir leur maitrise des macros assembleur, impressionnant, mais ca ne m'empêche pas de faire du code rapide ;)

Je pense que pour ton player, ca se rapproche de ce principe: être cycle accurate sur un CPU unique.

ici j'essaie bien sur d'avoir un player qui gere les MOD au maximum, avec la variété des machines que l'on a.
Cette conversion de mon player sera utile pour les machines jusqu'au 286 16MHz voir plus (je ne sais pas ce que peux faire un 386 au max)

J'ai déjà un post sur ma video me demantant de supporter le DAC du tandy 1000 (Pour le Tandy 1000 SL, TL et RL je suppose)
Ca a du sens, vu que cela evite de dénaturer la machine avec une Sound Blaster et il est difficile d'utiliser des cartes ISA sur ces machines
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

Le player avance bien.
Il fait 50ko de moins. L'affichage est corrigé. J'ai ajouté un affichage d'infos de débug et il stoppe le mixage si le cpu ne suis pas. (Plus de plantage)

J'ajouterais bientôt le triple buffering pour qu il ny ai plus de craquement quand le cpu est trop lent.

J ai comparé le replay de glx player protracker et mod master. Mon player est vraiment bcp plus proche de protracker. Il ny a pas photo.
Avatar de l’utilisateur
exocet
Messages : 82
Inscription : 23 févr. 2017 12:57
Localisation : Londres, Royaume-Uni
Contact :

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par exocet »

Belle initiative ! Mod Master fut le premier lecteur de modules que j'ai utilisé je crois :)
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

Ça alors !

Moi qui pensais que mon player était inconnu.
Quand je vais sortir la première version de mod master xt je pense qu'il sera plus connue qu'à l'époque.
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

Hello,

De Gros progrès.
Apres ajout du mixage sur 4 Tampons et le Skip du mixage de la voie en cours si le mix a 2 buffer de retard:

Mixage du module enigma.mod à 30KHz et Crystal dream 2 part 1 à 18KHz avec quasi aucun glitch audible…

J'ai aussi corrige des bug de replay.

En 1993, la premiere version de mon soft avais de la peine à 6HKz en 4 Voies sur HP Interne……….

Je n'ai pas encore testé en Covox, j'ai commandé une CVX4 qui devrait arriver bientôt.
Il me manque une carte extension mémoire pour tester tout ca sur le Tandy 1000 EX.

Ensuite, si il y a des volontaires pour tester, je pense pouvoir stabiliser une version dans la semaine.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par __sam__ »

Par rapport au HP interne de 1993. Comment réalisais-tu le changement de rapport-cyclique du beeper ?
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
FreddyV
Messages : 432
Inscription : 10 oct. 2018 09:16

Re: Mon Player de modules amiga sur 8086. GLX Player n'est plus le seul sur la place...

Message par FreddyV »

Le HP Interne se brancher sur un Timer que l'on programme en "PWM"
Changer la valeur se fait avec juste un "OUT", Comme pour le Covox.
Répondre