La Place des Développeurs La quête pour jouer de la musique en assembleur
Reprise du message précédent
Metalion :
z80,
Pour séquencer une note, tu n'as pas le choix :
. soit tu utilises l'interruption du VDP à 50Hz ou 60Hz (il n'y a pas d'interruption hardware plus rapide dans un MSX)
. soit temporises dans le programme, par la succession des instructions. Plus précis et plus rapide, mais nettement plus compliqué.
Pour séquencer une note, tu n'as pas le choix :
. soit tu utilises l'interruption du VDP à 50Hz ou 60Hz (il n'y a pas d'interruption hardware plus rapide dans un MSX)
. soit temporises dans le programme, par la succession des instructions. Plus précis et plus rapide, mais nettement plus compliqué.
Heu... ça je savais déjà
Mais c'est cool de confirmer
Mon questionnement est centré sur la dérive temporelle note à note et encore plus de mesure en mesure.
Les arrondis temporels lié à l'utilisation de la VBL comme unité de temps la plus fine nous amène à cumuler tant d'erreur qu'il faut le prendre en compte pour recaler le temps sur chaque voix mais aussi de veiller que les voix restent synchro à minima sur les mesures.
Sinon musicalement ça va être n'importe quoi après deux ou trois mesure.
Je pense même que dès le début de la deuxième mesure on devrait être capable d'entendre que quelque chose ne se passe pas bien.
D’où mon idée de regarder dans la ROM MSX comment ce problème est géré.
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
z80 :
Mon questionnement est centré sur la dérive temporelle note à note et encore plus de mesure en mesure.
OK je comprends mieux ta question.
J'ai le BIOS désassemblé pour un MSX1, si ça t’intéresse ...
EDIT : Je te le mets en pièce jointe.
/upload/bios.txt Edité par Metalion Le 27/01/2015 à 17h24
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
J'ai l'impression que le BIOS traite comme en Basic, il y a l'air d'y avoir la gestion d'une "queue" où sont stockées les notes et paramètres comme volume et tempo (voir GICINI et STRTMS).
Il faut indiquer quelle type de chaîne traiter avec l'adresse de la région de communication F958 (MCLFLG), il peut s'agir des chaînes utilisées par DRAW ou PLAY.
Les chaînes ont l'air de faire au maximum 128 octets et ont l'air d'être aussi stockées en région de communication en F975, F9F5 et FA75.
Ca m'a l'air bien compliqué !!
Il faut indiquer quelle type de chaîne traiter avec l'adresse de la région de communication F958 (MCLFLG), il peut s'agir des chaînes utilisées par DRAW ou PLAY.
Les chaînes ont l'air de faire au maximum 128 octets et ont l'air d'être aussi stockées en région de communication en F975, F9F5 et FA75.
Ca m'a l'air bien compliqué !!
MSX un jour, MSX toujours !
Ça c'est normale vu que le Basic fait appelle au BIOS pour traiter les play... Je ne suis pas plus étonné que ça.
C'est tout l'art du reverse engineering ! Comprends du code écrit par un autre avec peu voir pas de commentaires.
C'est comme valider des fonctions Simulink quand tu n'as pas "écrit " le dit Simulink et que tu n'as pas l'expression de besoin et les contraintes qui ont été fournies au concepteur... Edité par z80 Le 28/01/2015 à 18h57
C'est tout l'art du reverse engineering ! Comprends du code écrit par un autre avec peu voir pas de commentaires.
C'est comme valider des fonctions Simulink quand tu n'as pas "écrit " le dit Simulink et que tu n'as pas l'expression de besoin et les contraintes qui ont été fournies au concepteur... Edité par z80 Le 28/01/2015 à 18h57
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie