MSX Village forum

La Place des Développeurs Le mystère des enveloppes du PSG Non, ce n'est pas une histoire de pot de vin dans le foot

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2696

Le 08/01/2022 à 02h12
Étonnamment, je n'ai pas trouvé de discussion à ce sujet sur le village. :gne
Je suis en train de refaire toute la partie audio de ma lib C et j'en ai profité pour créer un programme pour tester toutes les fonctionnalités du PSG : https://webmsx.org/?ROM=https://github.com/aoineko-fr/CMSX/raw/master/proj/samples/emul/rom/s_psg.rom
J'ai pu validé que toutes mes fonctions étaient OK, mais j'ai quelques comportement étrange au niveau des enveloppes du PSG.

1) Il y a des formes d'enveloppes qui semble identique alors qu'elles ont des entrées à part dans la doc (00xx et 1001, ou 01xx et 1111). Si c'est les mêmes, pourquoi les avoir mis 2 fois ? :hum
Code TEXT :
 
// E3 E2 E1 E0     Modulation Envelope
//----------------------------------------------------
//             _                     _
// 0  0  x  x  _ \__________________ _
//             _                     _
// 0  1  x  x  _ /|_________________ _
//             _                     _
// 1  0  0  0  _ \|\|\|\|\|\|\|\|\|\ _
//             _                     _
// 1  0  0  1  _ \__________________ _
//             _                     _
// 1  0  1  0  _ \/\/\/\/\/\/\/\/\/\ _
//             _   _________________ _
// 1  0  1  1  _ \|                  _
//             _                     _
// 1  1  0  0  _ /|/|/|/|/|/|/|/|/|/ _
//             _  __________________ _
// 1  1  0  1  _ /                   _
//             _                     _
// 1  1  1  0  _ /\/\/\/\/\/\/\/\/\/ _
//             _                     _
// 1  1  1  1  _ /|_________________ _
 


2) Quand on désactive le Tone et le Noise sur un canal mais qu'on laisse l'enveloppe activé, il y a souvent un son résiduel. J'ai pas testé sur un vrai MSX, mais j'imagine que OpenMSX simule fidèlement le PSG.

3) Quand on désactive le Tone et le Noise sur un canal, qu'on laisse l'enveloppe activé et qu'on passe la fréquence de l'enveloppe à 0, ça génère un son fort. :|

Il me semble avoir déjà croisé des infos à ce sujet (à un moment ou je comprenais pas grand chose au PSG), mais je ne sais plus ou c'était.


On est toujours ignorant avant de savoir.
Github    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1486

Le 08/01/2022 à 12h40
Quand tu modifies la fréquence d'un canal du PSG, il faut d'abord commencer par la partie basse de la fréquence, et ensuite la partie haute. Sinon, tu créées un pic de fréquence et un bruit.

Les enveloppes du PSG sont peu utilisées en pratique, car elles ont pas mal d'inconvénients. Alors que la fréquence du VBLANK permet une mise à jour du volume à une fréquence suffisamment élevée que pour créer ses propres enveloppes. Edité par Metalion Le 08/01/2022 à 12h43


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2696

Le 08/01/2022 à 14h09
Metalion :
Quand tu modifies la fréquence d'un canal du PSG, il faut d'abord commencer par la partie basse de la fréquence, et ensuite la partie haute. Sinon, tu créées un pic de fréquence et un bruit.



J'utilise un mode indirect : je travaille dans un buffer en RAM puis je copie vers le PSG d'un bloc à chaque frame (en tenant compte des spécificités du registre R#7 et R#13).
Du coup, tous les registres 16-bits sont dans l'ordre low > high donc pas de soucis de ce coté là.

Les bruits parasites n'apparaissent que quand le Tone et le Noise sont désactivés et que l'Envelope est activée. Ce n'est pas un setting "normal", mais c'est un comportement étonnant.

Metalion :
Les enveloppes du PSG sont peu utilisées en pratique, car elles ont pas mal d'inconvénients. Alors que la fréquence du VBLANK permet une mise à jour du volume à une fréquence suffisamment élevée que pour créer ses propres enveloppes.


Effectivement.
Ceci dit, en jouant avec les formes d'enveloppe et le générateur de bruit, je suis retombé sur des sons que j'ai déjà entendu dans des jeux :
- avec une période très courte, ça fait un bruit d'hélicoptère,
- avec une longue, ça fait un bruit de vague sur la plage qui ma rappel très fortement celui des Passagers du vent.

Bref, au delà de l'usage qu'on peut en faire, dans le cadre de ma librairie, je veux juste m'assurer que tout fonctionne comme ça devrait.


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2696

Le 08/01/2022 à 16h14
OK, j'ai mon explication pour le bruit parasite qui apparait quand on passe la période de l'enveloppe à 0.
En fait, la valeur finale utilise la formule Value = Fi / (16 x T) . Donc si T vaut 0, on tombe sur une division par 0... ce qui explique le résultat bizarre.
D'ailleurs, le MSX Red Book, précise bien que les valeurs correctes vont de 1 à 65535.

C'est valable aussi pour les autres périodes (tone et noise). Même si, dans ce cas, une valeur de zéro créé juste... un silence. :siffle

Bon, par contre, ça explique pas encore le bruit parasite quand on désactive le Tone et le Noise.


On est toujours ignorant avant de savoir.
Github    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie