MSX Village forum

La Place des Développeurs La quête pour jouer de la musique en assembleur

Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 17/04/2012 à 16h07

Reprise du message précédent

Ah OK, autant pour moi :p

Ne t'inquiètes pas pour l'intervalle qui te semble court (deux incréments de compteur).

Temps d'une frame x fréquence Z80 = nombre de T-states
[50Hz] 20000 µsec x 3.579545 MHz = 71590 T-states
[60Hz] 16667 µsec x 3.579545 MHz = 59659 T-states

Sur le temps d'une frame, environ 60% se passe pendant l'affichage et 40% hors affichage.
Cela veut dire qu'à 50Hz, tu disposes d'environ 23800 T-states hors affichage.
De cela, il faut déduire la gestion des interruptions en ROM, qui prend au maximum 9990 T-states (sur un MSX Turbo-R FS A1 GT).
Il te reste donc environ 13800 T-states par frame pour l'exécution d'un programme hors affichage.
Et sur deux frames (deux incréments de compteur), cela fait donc 27600 T-states, soit environ 6900 instructions simples pour le Z80 !

Et ça, c'est dans le cas ou tu veux ne pas perturber la partie affichage de ton programme (dans le cas d'un jeu par exemple).
Si ce n'est pas important, tu disposes alors d'environ 99000 T-states, soit 24750 instructions simples. Edité par Metalion Le 17/04/2012 à 16h58


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)
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 19/01/2015 à 21h35
Cela me semble être une partition avec trois voies, deux voies en clé de sol et une voie en clé de fa (la ligne de basse quoi! ;) )
Donc trois voies du PSG ça va aller. Une fois qu'on a dit ça on est pas plus avancer.
Je pense qu'il faut peut-être découper en mesure car c'est comme ça que sont organisees les partitions.
Donc on a une première table qui liste les mesure a jouer dans l'ordre avec la possibilité de faire des boucles sur des mesure. Sue ta partoche PDF on semble boucler à la mesure 5.

En suite il faut encoder chacune des mesures avec les notes des voies comme on le ferait en MML avec le PLAY du MSX Basic.
Il faudra prévoir aussi une init/config pour le morceaux (réglage des instruments par exemple).
Le tempo est géré au niveau des mesures par la commande Tn comme en Basic...
Ton code assembleur lit et interprète les données des mesures, un "Vn" change le volume de la voie considérée, "C4" calcule la fréquence de la note a jouer et établi la valeur a mettre dans les registre de frequences de la voie, le on/off de la note etc.. (Je ne sais pas si l'attack, le sustain et le decay sont géré par le PSG ou pas).
Voilà j'espère que j'ai pu t'apporter quelques pistes pour ton projet.
Ha! Oui j'oubliais, personnellement j'utiliserai des tables pré-calculées pour les notes et aussi je de compter ai pour chaque voie plutôt que de compter.
En gros quand on joue une note on va chercher sont équivalent de durée en nombre de VBL dans une table. On a trois voies ça nous donne 3 Variables compteur. On copie la valeur du nombre de VBL lu dans la table dans le compteur. A chaque VBL on décrémente les trois variable de 1. Quand un compteur arrive à zéro c'est que le temps de la note est écoulé et qu'il faut lire la suite de la mesure pour cette voies, etc


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 20/01/2015 à 20h22
Petit lien intéressant :
http://www.pianofacile.com/glossaire/


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 20/01/2015 à 20h37
z80 :
Petit lien intéressant :

<a href="">http://www.pianofacile.com/glossaire/</a>




La page est vierge !!!



Edit:

Je comprend mieux aprés avoir fait "CITER" Edité par metalgear2 Le 20/01/2015 à 20h38



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 20/01/2015 à 20h56
OK.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 20/01/2015 à 21h25
Y a celui ci aussi:
http://blog.carpediese.fr/?p=393


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Maggoo Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 25/06/2013 à 17h49

Messages: 192

Le 21/01/2015 à 03h05
Musicfx.zip

Voila un exemple de code qui joue un fichier PT3 et permet de jouer en meme temps des effets sonores au format AY dans une ROM MSX (barre d'espacement pour active un effet). Les effets sonores sont crees avec l'editeur PC AY EDIT.

Dans le package d'installation de AY Edit il y a des exemples d'effets sonore de plusieurs jeux Spectrum et MSX. Les effets sonores sont dans le fichier afb. Edité par Maggoo Le 21/01/2015 à 03h06
Site web    
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 21/01/2015 à 06h39
Bonjour,

A mon avis, tu dois faire une mauvaise manip quelque part Z80, la page est aussi vierge.

1er lien :

http://www.pianofacile.com/glossaire/

2émè lien :

http://blog.carpediese.fr/?p=393 Edité par metalgear2 Le 21/01/2015 à 06h39



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 21/01/2015 à 10h09
Je viens de cliquer longuement sur le lien N°2 et faire "ouvrir dans un autre onglet" sur mon NEXUS 5 et la page c'est chargée correctement... :siffle :hum


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 21/01/2015 à 20h09
[url=http://www.pianofacile.com/alterations][/url]Le lien ci-dessous tu trouveras une explication des trois "b" en début de partition. En résumé tu joues les notes qui sont sur les même lignes que les "b" un cran en dessous. Sur le clavier d'un piano tu joue la note en appuyant sur la touche noire juste à gauche de la touche blanche que tu aurais dû jouer normalement.

<a href="http://www.pianofacile.com/alterations">http://www.pianofacile.com/alterations</a> Edité par z80 Le 21/01/2015 à 20h23


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 21/01/2015 à 20h14
Bonsoir,



z80 :
Je viens de cliquer longuement sur le lien N°2 et faire "ouvrir dans un autre onglet" sur mon NEXUS 5 et la page c'est chargée correctement... :siffle :hum




Bizarre ... :hum



Même le lien sur ton dernier post me renvoit sur une page du Village :heink



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 21/01/2015 à 20h24
Plus je modifie plus ça déconne... Ça me gonfle ce soir....


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 21/01/2015 à 20h25
Si on copie le lien à la main ça fonctionne :-)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 26/01/2015 à 10h02
J'ai fait quelques petits calculs avec un tableur
Et je pense qu'un petit coup de rétro ingénierie du PLAY dans le BIOS du MSX serai un éclaircissement salutaire :)
En effet un gestion à la VBL près ne m'apparait pas comme suffisamment précise pour jouer des notes avec précision.
Voir le tableau EXCEL pour s'en rendre compte :)
A1 = 50Hz (mettre 60 si votre VDP est réglé pour des images en 60Hz)
A3:A123 = tempo de 60 à 180
colonne B à H les type de notes de ronde à quadruple croche avec en ligne 2 leurs durée par rapport à une noire (la noire vaut 1)
B3:B123 le nombre de VBL (intéruption VBL du VDP) qu'il faut pour joué la note au tempo donné

Exemple:
En D3 on a le nombre de VBL qu'il faut compter pour jouer un noire avec un tempo de 60 et un VDP à 50Hz. On obtient un résultat de 50.

Cela veut dire que pour jouer par exemple DO, RE, MI, FA, SOL, LA, SI avec un tempo de 60 et un VDP qui fait des images à 50Hz, il me faudra régler le PSG pour générer la fréquence du DO, mettre 50 dans ma variable COMPTEUR, et à chaque interruption du VDP je fais COMPTEUR = COMPTEUR -1.

Quand COMPTEUR =0, il me faudra régler le PSG pour générer la fréquence du RE.

Mettre 50 dans ma variable COMPTEUR, et à chaque interruption du VDP je fais COMPTEUR = COMPTEUR -1.

Quand COMPTEUR =0, il me faudra régler le PSG pour générer la fréquence du MI.

Mettre 50 dans ma variable COMPTEUR, et à chaque interruption du VDP je fais COMPTEUR = COMPTEUR -1.

Etc.
Note de musique.xls


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 26/01/2015 à 11h34
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é.


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)
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 26/01/2015 à 12h54
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é.




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) :top
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