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

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

Auteur:  Prehisto [ 01 Oct 2017, 21:09 ]
Sujet du message:  Re: MOD ?

Si tu remplaces ça :
Code:
        cmpx    #rptX
        bne     *+4
        std     <smpX
        cmpx    #rptY
        bne     *+4
        std     <smpY
        cmpx    #rptU
        bne     *+4
        std     <smpU
        cmpx    #rptS
        bne     *+4
        std     <smpS

par ça :
Code:
        std     [field,x]

il y a forcément un sacré gain.

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

Samuel Devulder a écrit:
[EDIT] Groumph :mad: il y a un bug dans la traduction qui fait que dans le dernier morceau "(I've got) the power" par "snap!" à 1min19sec il y a un "cri" super déformé qui ré-apparait après un autre cri quelques secondes avant. (...)

Bon, je crois que cette version ci corrige ce soucis. J'en ai profité pour virer ces files de cmpx au profit du mode doublement indexé. A noter comme on ne peut pas faire simplement un "STB [field,x]+2", j'ai du me livrer à quelques contorsions, mais au final ca marche :)

Fichiers joints:
Commentaire: version corrigée
source.zip [24.42 Kio]
Téléchargé 691 fois
Commentaire: version corrigée
huge_sample.zip [239.81 Kio]
Téléchargé 688 fois

Auteur:  W_oo_d [ 04 Oct 2017, 11:57 ]
Sujet du message:  Re: MOD ?

Great job Samuel, congrats

I tried to translate the zx spectrum beeperhuby - a very simple 1bit music player.

I am adding the file, it is a raw file for the MO5 and must be loaded at $2500 and called at $2503

Fichiers joints:
1bplayer.zip [542 Octets]
Téléchargé 679 fois

Auteur:  Samuel Devulder [ 04 Oct 2017, 12:23 ]
Sujet du message:  Re: MOD ?

Great! thanks W_oo_d :)

Hmm.. I'm unable to test it? Loading it at $2500 broke the ASSEMBLER v3. What am I doing wrong? Can you explain us a bit more how to test it ?

Auteur:  W_oo_d [ 04 Oct 2017, 12:43 ]
Sujet du message:  Re: MOD ?

Samuel Devulder a écrit:
Great! thanks W_oo_d :)

Hmm.. I'm unable to test it? Loading it at $2500 broke the ASSEMBLER v3. What am I doing wrong? Can you explain us a bit more how to test it ?


I am sorry, it is a raw binary file. I load it on MESS or DCMOTO via the debugger.

Auteur:  W_oo_d [ 04 Oct 2017, 12:52 ]
Sujet du message:  Re: MOD ?

Here is another one but I don't like the music as much this time it is in K5 format :)

Fichiers joints:
TEST3.zip [1.32 Kio]
Téléchargé 665 fois

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

W_oo_d a écrit:
I am sorry, it is a raw binary file. I load it on MESS or DCMOTO via the debugger.

Ok, it works when done when basic is running (and not assembler v3). Nice sound, congrats :)

Auteur:  W_oo_d [ 04 Oct 2017, 13:32 ]
Sujet du message:  Re: MOD ?

Samuel Devulder a écrit:
W_oo_d a écrit:
I am sorry, it is a raw binary file. I load it on MESS or DCMOTO via the debugger.

Ok, it works when done when basic is running (and not assembler v3). Nice sound, congrats :)


Thanks. I did it just out of curiosity and it is not even finished or optimized. Perhaps I will continue to work on it if I get some time.

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

Bon...Après avoir essayé diverses techniques de dither, je dois bien me rendre compte que ma stratégie (avoir les instruments déjà convertis en bit-stream en mémoire) ne marche pas à 100%. La cause: la vitesse de sortie sur le buzzer. Je suis monté à presque 8khz et c'est pas tellement mieux. En fait ca s'explique: les routines dither de type sigma-delta ne marchent que si on sur-échantillonne le flux d'origine. Or nous on fait exactement l'inverse: on joue 1 bit à 8khz pour un son 8bits de 8khz. Ma stratégie fonctionnerait si la routine tournait à 100khz (en fait 64khz pour conserver le produit nb_bits_échantillons*vitesse_d_échantillonnage constant, mais 100 c'est plus rond) ou plus mais à 8khz on est sans doute trop bas pour capturer toutes la finesse du sigma-delta. Hélas 100khz est largement au dessus de la vitesse du 6809: il faudrait traiter les 4 voix en moins de 10 cycles, sans compter qu'à cette vitesse un instrument de 2 secondes occupe 200kbits de ram, soit 200ko de ram contiguës à trouver!!

Bizarrement le dither audio a besoin de nettement sur-échantillonner par rapport au dither graphique. En effet avec 1 bit/pixel on arrive parfaitement à reconnaître une image N&B, alors qu'avec 1 bit par échantillon musical ca ne marche pas du tout. Il faut avoir au moins 10x plus d'échantillons 1 bit que d'échantillons d'origine. Je ne comprends pas bien le pourquoi d'une telle différence entre les deux disciplines. :???: Est-ce que c'est parce que les images sont moins périodiques et qu'il n'y a pas de repliement de spectre? Mystère. Si quelqu'un a une idée là dessus je suis preneur pour ma compréhension personnelle du phénomène. Enfin bref, une chose est claire à présent: si on veut de la qualité à tous les coups, il faut forcément sur-échantillonner la musique.

Pourtant le code de UTZ ne tourne pas aussi vite que quelque khz et son dither marche vraiment. Comment ca se fait ?

Reprenons ce qu'il fait. Les échantillons sont numériques en mémoire et pas bit-streamés. Il réalise alors dessus du PWM à 9khz. Une période complète de PWM est donc de 110µs, mais elle est découpée en 21 tranches de 5µs correspondantes aux 21 niveaux de son PWM. Ansi, pour chaque échantillon source il y a 21 micro-pas supportant le rapport-cyclique. Donc moralement, il joue du PWM à une fréquence 21 fois plus élevée la fréquence fondamentale, soit 21*9khz=189khz. Son approche équivaut complètement à sur-échantillonner la musique à près de 190khz. C'est largement supérieur à nos pauvres 8khz. C'est ce qui explique la différence de qualité. :jap:

Ce qu'il y a de bien avec le PWM, c'est que même si les micro-tranches sont de 5µs, ca ne ralenti pas tellement le player puisque seuls les instants où le buzzer change d'état dans le cycle (2 fois maxi) sont à prendre en compte. Cela revient donc à déplacer les 2 instructions de changement d'état sur 21 positions au travers de la boucle à 9khz. C'est vraiment malin car ca ralenti à peine la boucle principale. :bien:

Ok, alors faisons ca pour thomson! Oui mais c'est pas aussi simple car sur ZX la sortie sur le buzzer se fait sans utiliser de registres, alors que ben sur thomson il faut passer par les accumulateurs qui sont déjà occupés à faire quelque chose. :L Il n'y a qu'entre deux phases de calculs indépendants que l'on peut détourner un accu pour changer le bit du buzzer. Ca ne fait pas beaucoup d'endroits.

En analysant le code j'arrive à trouver 5 emplacements répartis de façon suffisamment régulière. Ainsi, entre chaque voix et entre la dernière voix et la phase de mixage il y a exactement 27µs (pure coup de bol, mais ca tombe super bien). 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.

En y réfléchissant, 6 niveaux ca fait pas beaucoup, non? On est encore loin des 21 niveaux à 190khz de la routine de UTZ. J'ai simulé ces 6 niveaux avec le player CNA.. vous en pensez quoi ? (moi: bof bof.)
Fichier(s) joint(s):
Commentaire: Test de sortie CNA avec seulement 6 intensités sonnores.
test_6_niveaux.zip [247.22 Kio]
Téléchargé 690 fois
Si seulement on pouvait altérer le buzzer sans passer par les accumulateurs.... :voyons: ([EDIT] Tip de Fool-duplex qui a perdu son mot de passe: sur MO5 on peut changer le buzzer par un simple inc/dec sur $A7C0)

[EDIT] Ah! Avec un peu d'astuce, il y aurait possibilité de booster le PWM de 6 à 11 niveaux. Là je suis plus confiant pour la qualité. :miam: :)

Auteur:  Fool-DupleX [ 13 Oct 2017, 11:42 ]
Sujet du message:  Re: MOD ?

Aaah ! Ca fait du bien d'être de retour ! :love: Merci à Prehisto pour le coup de pouce divin.

Citation:
Si seulement on pouvait altérer le buzzer sans passer par les accumulateurs....

Donc comme proposé et testé sur silicium, en chargeant la valeur $37 dans le PCR du 6846, on peut utiliser INC et DEC pour flipper le bit de son. Ca modifie au passage la config de la ligne d'interruption du clavier sur les TO8/8D/9+, mais ce n'est pas gênant vu que les interruptions sont désactivées.

Auteur:  Samuel Devulder [ 16 Oct 2017, 07:51 ]
Sujet du message:  Re: MOD ?

Samuel Devulder a écrit:
[EDIT] Ah! Avec un peu d'astuce, il y aurait possibilité de booster le PWM de 6 à 11 niveaux. Là je suis plus confiant pour la qualité. :miam: :)

Mince, non, zut, ca marche pas bien: il faut 3 changements de buzzer par cycle (dont 2 identiques), et donc ralenti toute la boucle. Sans compter que je viens de voir que par exemple le simple changement d'une fréquence (ou d'un volume, ou de piste d'un instrument) nécéssite d'écrire la même valeurs dans chacun des 6 ou 11 "cores". Ca mangera vraiment pas mal de cycles...

Je me pose sans doute trop de questions, mais là j'ai un doute sur le fait d'avoir un PWM efficace un jour.

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

Je comprends cette envie de challenge, mais je crois que ce n'est pas si grave. Toutes les machines ont le CNA intégré sauf les MO5, TO7 et TO7-70 et l'extension musique et jeux a été beaucoup vendue. Le PWM me semble être un exercice de style extrême.

Je ne suis pas sûr d'avoir compris par contre si toutes ces recherches t'ont permis de gagner encore de la perf sur la routine utilisant le CNA ? Ca me plairait bien, une démo "TO8 (re)demoded?" :lol:

Auteur:  Samuel Devulder [ 16 Oct 2017, 12:27 ]
Sujet du message:  Re: MOD ?

Oui c'est clair que je me prends sans doute la tête pour pas grand chose (1bit, c'est pas grand chose :) ), mais j'aimerais vraiment bien faire du son sur un mo5/to770 "nu" équipé d'un simple lecteur de d7 (parce que bon, faut pas délirer trop non plus: sur la K7 il suffit de mettre une piste audio!)

Oui je pense pouvoir encore gagner 12 cycles avec le CNA sans perte de qualité, faisant ainsi passer la période de 142µs à 130µs, soit 7.7khz au lieu de 7khz. Avec une légère perte de qualité (échantillons et volumes sur 3 bits au lieu de 4), on peut gagner encore 4 autres cycles, soit un playback à 7.9khz. On ne franchit toujours pas la barrière des 8khz.

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

Je prefere 7.7@4 que 7.9@3.

Autre chose : tu parlais tantôt de la ram contigue sur MO5, mais en quoi est-ce indispensable ? Pour autant que le sample à stocker fait moins de 16 Ko, ne pourrait-on pas exploiter aussi la ram entre $B000 et $EFFF, pour un total de 56 Ko ? Et j'irais encore un peu plus loin, pour autant que les samples stockés en mémoire paginée font moins de 16 Ko et ne sont pas utilisés simultanément quand ils proviennent de banques différentes, il me semblent raisonnable d'effectuer le changement de banque au moment du choix de l'instrument dans la partition. Naturellement, ca demande de jongler un peu au niveau de la production du fichier M0D et tout n'est pas possible. Intuitivement, je me dis que des samples utilisés rarement dans le morceau, comme ceux d'un fill-in ou des extraits vocaux/effets spéciaux (de moins de 16 Ko) pourraient faire l'objet d'un tel stockage. :???:

Auteur:  Samuel Devulder [ 16 Oct 2017, 13:32 ]
Sujet du message:  Re: MOD ?

Il faut oublier je pense la commutation de page ram sur les MO5/TO770/TO9 car elle est bien trop lente à mon goût. L'idée de ré-organiser lers instruments de sorte qu'une banque contienne tous les instruments jouants ensembles est intéressante, mais elle ne me semble pas simple du tout; et j'ai un peu peur d'avoir souvent des configurations impossibles.

Je préfère garder ce coté là le plus simple possible et exploiter le max de RAM dispo dans les 64ko adressables sur une machine donnée, le MO5 par exemple. 56ko ca serait très cool à exploiter. Mais attends $B000 c'est l'espace cartouche (http://pulko.mandy.pagesperso-orange.fr ... mmap.shtml). Tu peux avoir de la RAM là dedans sur MO5 ? :voyons:

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