Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

MOD ?
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=549
Page 19 sur 19

Auteur:  Fool-DupleX [ 16 Oct 2017, 15:57 ]
Sujet du message:  Re: MOD ?

Bien sûr, avec l'extension 64 Ko destinée initialement au nanoréseau et avec mon Romdisk NG. Et sur le MO6 et MO5NR, c'est déjà intégré dans la machine.

Note que la commutation est facile : INC et DEC sur le registre $A7CB. Mais ca reste trop lent bien sûr pour être mis à jour en permanence.

Auteur:  Samuel Devulder [ 18 Oct 2017, 22:59 ]
Sujet du message:  Re: MOD ?

Samuel Devulder a écrit:
Ca nous ferait un PWM à 6 niveaux (00000, 10000, 11000, 11100, 11110, 11111) dont chaque pulse 0 ou 1 dure 27µs, soit un sur-échantillonnage à ~37khz ce qui est clairement mieux que nos malheureux 8khz. Mais est-ce suffisant pour avoir quelque chose de qualité ? Je ne sais pas. Il faut expérimenter, et cela nécessite de ré-écrire complètement le player. Il me reste donc plein de travail à faire. J'espère au moins que la qualité sera là car ca m’ennuierait de tout détruire pour ne pas avoir beaucoup mieux au final.
Après pas mal de travail j'ai réussi à coder cet algorithme avec non pas 6 niveaux, mais 11 niveaux dont chaque puls dure exactement 18µs. Chacun des 11 niveau possibles pour le PWM est implémenté dans un "core" gérant chacune des 4 voix tout en positionant le buzzer à 1 pendant le temps désiré. Moralement c'est comme si on arrivait à changer l'état du buzzer à toutes les 18µs soit à peu près du 56khz. Cool, c'est carrément vachement plus que ce que je faisais avant avec les instruments déjà convertis sur 1 bit. :cool: En travaillant en numérique le plus longtemps possible et en passant au 1 bit qu'en toute fin du traitement on arrive à gagner en vitesse. Ce qu'on atteint pas en traitant 1 bit à la fois plein pot, on le gagne en en faisant passer plus de bits (8 valeurs) par échantillon en une fois. Malin ! :bien:

Oui mais attends, il y a 4 voix et chaque voix possède 2 positions où l'on peut modifier le buzzer. Ca ne fait pas 11 niveaux, mais 4*2+1=9 niveaux. Oui tout à fait, mais j'ai réussi à récupérer 2 niveaux corrélés dans la routine qui réalise le mélange de chacune des voix et le saut calculé vers le bon core. Par corrélé, je veux dire que dans cette partie de l'algo (les deux derniers tops d'horloge à 55khz) le buzzer doit forcément garder les mêmes valeurs. Du coup on ne peut avoir la séquence 0.9=1111111110 car cela nécéssiterait de changer l'état du buzzer entre les deux derniers tops ce qui est impossible. On arrive à s'en sortir en introduisant un léger décalage de phase de 18µs à un moment (observer ce qu'il se passe avec le niveau 0.9): 0.0=0000000000, 0.1=1000000000, 0.2=1100000000, 0.3=1110000000, ..., 0.8=1111111100, 0.9=0111111111, 1.0=1111111111. C'est bien. :good:

Bref, avec cette astuce on obtient un player PWM à 11 niveaux dans lequel une période dure 194µs (+7 pour le débug). Ca nous fait une fréquence de restitution effective à 5khz. Pareil que celle de la Forever 2017. Donc ca devrait être acceptable comme vitesse je pense. Vraiment ? Non je demande, parce qu'avant on se focalisait à sortir du 8khz sans y arriver et que là ca tourne à 5khz.. alors est-ce vraiment bon quand même? :voyons:

VRAIMENT OUI! :coolfuck:

Voici d'ailleurs un petit patchwork de M0Ds que j'arrive à jouer avec ce player 100% 1bit. Il y a un peu de tout, du bon et du moins bon. J'ai juste mis dedans les premiers morceaux qui étaient convertis sans erreurs.
Fichier(s) joint(s):
Commentaire: PWM à 11niveaux utilisant le buzzer TOx et réalisant un cycle en 5khz.
pwm_5khz.zip [185.11 Kio]
Téléchargé 397 fois
Je suis content car cet algo et nettement plus robuste que les précédents. Pratiquement tous les morceaux passent (s'ils tiennent en ram.) Il y a même un effet de bord que j'ai gardé. Les couleurs du cadre sont pour le débug[*], et étonnamment ca ne rends pas mal du tout à l'écran.

Au début on entends la porteuse à 5khz, mais comme elle est très très propre (exactement à 5khz sans aucune variation autour à part l'IRQ timer qui tourne en tache de fond), le cerveau la gomme et la considère comme un simple bruit enrivonnant type sifflement du moniteur (en tout cas c'est l'impression que ca me fait chez moi.) En travaillant un peu plus, il y a peut-être moyen de masquer cette porteuse, mais je vous livre quand même cette version toute fraiche d'aujourd'hui tellement je suis content de pouvoir sortir du buzzer un truc pas trop dégeux. Ca roule! :tourne: :)

NOTA: Si vous n'avez pas de machine ni d'émulateur sous la main, il y a un extrait MP3 que j'ai réalisé avec ce PWM et qui est dispo (pas longtemps) sur cjoint, >>ICI<<.
Fichier(s) joint(s):
Commentaire: Source du convertisseur et du player PWM.
source.zip [21.27 Kio]
Téléchargé 399 fois
____
[*] Il y a un code couleur par core utilisé, cad une couleur par rapport cyclique du PWM. Plus c'est lumineux, plus le rapport cyclique est proche de 1. Si on est attentif aux couleurs des lignes du cadre de l'écran on arrive à "lire" le signal audio. Avec certains fréquences, on voit un motif stationnaire sur le coté. C'est hypnotique (mais attention si vous êtes épileptique.)

Auteur:  Samuel Devulder [ 19 Oct 2017, 22:08 ]
Sujet du message:  Re: MOD ?

Léger développement récent.

En changeant d'état 4 fois par cycle de PWM, j'ai réussi à repousser la porteuse de 5khz à 9khz:
Image
Alors oui, ca ralenti un peu le player qui ne tourne à présent plus qu'à 4.6khz, mais la qualité du son est nettement meilleure. Sur machine réele et son CRT, je n'entends plus la porteuse pour ainsi dire. Jugez vous même avec >>ce fichier<<.

Vous en pensez quoi de cette nouvelle version par rapport à la précédente? Du son de qualité devrait être à la porté du MO5 brut avec ca :)

Auteur:  exocet [ 07 Fév 2021, 22:58 ]
Sujet du message:  Re: MOD ?

Je remets une pièce dans la machine de la grande épopée du son pas trop naze sur Thomson :)

Ce n'est pas du MOD, mais je me demande si ça ne pourrait pas être intéressant pour Sam en particulier : un music-disk sur PET avec le code source 6502 fourni.
https://demozoo.org/productions/289635/
https://shiru8bit.bandcamp.com/album/faulty-robots

Image

Alors pour un néophyte comme moi le PET a l'air à peu près aussi mal équipé pour le son que les ordis de la gamme Thomson, et pourtant Shiru arrive à tirer de l'unique voix des sonorités chiptune plutôt sympa (à écouter sur Bandcamp). Et d'après lui c'est relativement léger en CPU et RAM: "This kind of music can actually play while a game is running on the machine. Songs take about 1000-1500 bytes of memory each."

Un truc du genre serait-il possible sur Thomson ?

Un problème supplémentaire est souvent l'absence de tracker pour créer des musiques relativement facilement, mais Shiru a créé le sien, 1tracker (http://shiru.untergrund.net/software.shtml), conçu pour pouvoir supporter de multiples plateformes.

Image

Auteur:  adnz [ 08 Fév 2021, 13:23 ]
Sujet du message:  Re: MOD ?

Super intéressant cette approche 1 voie avec les sons entrelacés :

je sais pas si le PET à un chip SID pour le son !
Mais sans chip sonore, on sera pas obligé de stocker sur quelques octets les sons très courts pour simuler des sons type SID ?
et faire un tracker 1 piste assez rapide !

Auteur:  exocet [ 08 Fév 2021, 18:57 ]
Sujet du message:  Re: MOD ?

Il n'y a pas de chip sonore dans le PET, juste un "beeper", d'où l'intérêt de cette technique.

Auteur:  Samuel Devulder [ 09 Fév 2021, 22:28 ]
Sujet du message:  Re: MOD ?

adnz a écrit:
Super intéressant cette approche 1 voie avec les sons entrelacés

Ca c'est ce qu'on a dans "So we just buzz".

J'ai vaguement essayé de comprendre le source et ce n'est pas clair pour moi. Il y a un handler d'interruption à chaque VBL (50/60hz) qui mets à jour les infos du player (canal, instrument, enveloppe, etc). Ok, mais ca n'est pas cela qui joue le son qui tourne à une fréquence au moins 10 fois plus élevé (cf "La" à 440Hz). Or je ne trouve pas le code qui boucle à produire les échantillons.

L'impression que j'en ai est que le PET a un buzzer branché sur un timer "autonome" (comme sur PC), c'est à dire qu'on lui dit: produit telle fréquence et il le fait sans bloquer le CPU. Du coup le player revient à chaque VBL de calculer la bonne fréquence à envoyer au buzzer en fonction des différents instruments & enveloppes en action. Hélas on a pas de tel buzzer chez nous et ce sera au cpu de sortir les samples sur le buzzer, et on sera complètement bloqué dans la production de son.

[EDIT] je confirme pour le buzzer "autonome". C'est une bidouille utilisant le port parallèle d'après cette FAQ qui explique comment on fait du bruit avec un pet (mouarf :D ):
Citation:
HOW CAN I HEAR SOUND ON MY PET?

Like many other microcomputers of the time the PET was not originally designed
to produce sound. A few methods of sound generation have been developed but
the most popular employs the use of parallel user port pin M which is used
to generate a 'square wave' output by setting the 'handshake register' for
port B into a free-running mode. Adjustments to the timing of the handshake
and the pattern of the 'wave' adjusts its sound and timbre. You can achieve
approximately 3 octaves of notes and various noises with this one voice
output.
(...)

HOW DO I MAKE SOUND ON MY PET?

This process sets the PET's shift register in a free-running state where the
signal is used for sound generation. By adjusting the pattern of the output
and the frequency you can produce a wide variety of sounds, and even music!

Three pokes are required to make sound:
POKE 59467,16 (turn on port for sound output use 0 to turn it off*)
POKE 59466,octave (octave number, see below)
POKE 59464,frequency (0 for no sound)

After setting 59467 you can adjust 59466 and 59464 to get any sort of sound,
but to get music you need to set them with specific values, here is a
three-octave note table:

Note Table:

octave=15 octave=51 octave=85
Note Oct.0 Oct.1 ! Oct.1 Oct.2 ! Oct.2 Oct.3
Freq ------------+-------------+--------------
B 251 125 ! 251 125 ! 251 125
C 238 118 ! 238 118 ! 238 118
C# 224 110 ! 224 110 ! 224 110
D 210 104 ! 210 104 ! 210 104
D# 199 99 ! 199 99 ! 199 99
E 188 93 ! 188 93 ! 188 93
F 177 88 ! 177 88 ! 177 88
F# 168 83 ! 168 83 ! 168 83
G 158 78 ! 158 78 ! 158 78
G# 149 74 ! 149 74 ! 149 74
A 140 69 ! 140 69 ! 140 69
A# 133 65 ! 133 65 ! 133 65

Set 59466 with octave range desired and play notes by setting the frequency
in 59464. To stop any sound use POKE 59464,0.

* Note, due to a hardware bug, leaving the shift register in free running
mode will cause problems when attempting to use the datasette so always
POKE 59467,0 before attempting to use any tape commands.

The process for using and playing sound can also be done on the 64/128 and
VIC-20 the same connector pins are involved but the POKEs are different:

Instead of 59467, 59466, and 59464 for the PET use these:
on the VIC-20: 37147, 37146, and 37144
on the 64 or 128: 56587, 56586, and 56584
Donc produire un signal périodique ne leur coute aucun CPU. On a rien de tel sur thomson.

Auteur:  exocet [ 11 Fév 2021, 19:06 ]
Sujet du message:  Re: MOD ?

Image

Mais merci d'avoir pris le temps de regarder, Sam !

Auteur:  Samuel Devulder [ 11 Fév 2021, 22:17 ]
Sujet du message:  Re: MOD ?

Pas de problème, surtout que le fait que le cpu n'était pas chargé m'intriguait. Pour l'instant la machine la plus proche au niveau specs buzzer est le ZXSpectrum vu que pour lui aussi c'est le CPU qui doit calculer chaque échantillon. Le ZXSpectrum bénéficie de plusieurs moteurs de boite à musique éditables au travers du tracker Beepola. Il faudra que je regarde si on peut porter ces moteurs sur thomson à l'occasion.
phpBB [video]


Note: J'aime bien l'image. C'est du Hergé ?

Auteur:  jasz [ 12 Fév 2021, 20:10 ]
Sujet du message:  Re: MOD ?

Oui, c'est une image extraite de Tintin et "L'oreille cassée" ;)

Page 19 sur 19 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/