Logicielsmoto.com

Nous sommes le 28 Mar 2024, 12:41

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 280 messages ]  Aller à la page Précédente  1 ... 14, 15, 16, 17, 18, 19  Suivante
Auteur Message
 Sujet du message: Re: MOD ?
MessagePosté: 22 Sep 2017, 11:39 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Clavier, hum ok. et pour le bit no 2, on aurait pas quelque part la description bit à bit de $E7C1 ? (en sortie, mais en entrée ca peut aussi être utile).

[EDIT] argh oh oui c'est le CRC du 6848, il programme le fonctionnement du timer etc. Donc "pas touche" sur les bits si on ne veut pas tout casser.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 22 Sep 2017, 13:58 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Sur TO8 et TO8D, les b0 et b1 de $e7c1 peuvent être écrits et lus.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 27 Sep 2017, 10:18 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Il doit vraiment être possible de faire du pwm correct sur thomson, il y arrivent bien sur COCO ==>
phpBB [video]


En regardant attantivement la video, on découvre le code source à l'écran. Et franchement, il ne me semble pas très mystérieux. Aucune astuce, aucun comptage de cycle c'est juste la traduction mot-à-mot d'un player PWM de beepola. Ce serait donc les musiques écrites pour beepola qui sonnent aussi bien?

_________________
Good morning, that's a nice Tnetennba


Dernière édition par Samuel Devulder le 03 Jan 2021, 11:47, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 27 Sep 2017, 11:16 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
PulkoMandy a écrit:
Pas en convertissant des MODs existants, probablement, mais en embauchant un musicien qui sait travailler avec ce genre de contraintes.

Pour ça on peut demander de l'aide sur le site des petites annonces de la demoscene: http://wanted.scene.org .
Ou même contacter les gens qui ont déjà déposé des annonces pour proposer leur aide, par exemple: http://wanted.scene.org/post/8/music-fo ... ices-1-bit


Je dis ça je dis rien, hein ;)

C'est évident que si le compositeur peut entendre ce que donne sa musique avec le player qui va être utilisé, il peut alors utiliser toutes ses astuces pour cacher les faiblesses du player en question. Non seulement ça sonnera bien, mais en plus c'est l'occasion d'avoir une musique originale plutôt que de récupérer un truc existant et déjà recyclé plein de fois.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 27 Sep 2017, 12:12 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ouais, mais je me demande si j'ai bien compris toutes ces histoires de sigma-delta. Car tous les sons 1bit que j'entends sonnent bien et très peu bruités, alors que mes essais sur thomson le sont beaucoup trop (bruit d'aspirateur). C'est ce bruit d'aspirateur qui m'ennerve, et il ne dépend pas tellement des notes jouées, il est inhérant au 1 bit dans ma théorie. En effet la valeur moyenne des échantillons c'est 0, ce qui traduit sur 1 bit donne 0.5 (son à -1 donne buzzer à 0, et son à +1 donne buzzer à 1), cad qu'une fois sur 2 le buzzer à 1 puis à 0, donc sifflement aigu à la période du playback. C'est exactement ce que le spectrogramme montre.

Au début je pensais que c'était liés à la fréquence trop basse à laquelle je sortais les échantillons (un peu en dessous de 5khz). J'ai donc ammélioré le player avec une gross bidouille (temporaire) utilisant le CNA pour gagner un max de cycles, il tourne à présent à 128µs/echantillon, soit 7.8 khz. C'est 50% plus rapide c'est pas franchement mieux par rapport au bruit qui est toujours trop présent. En changeant la nature du bruit (blanc-->gaussien) et du filtrage j'arrive à rendre le bruit moins strident, mais il est toujours là. J'ai juste remplacé l'aspirateur et son sifflement à 5khz par un pchhhhhh directement issu d'une radio à ondes-courte mal réglée. (voir les exemples attachés)

Ce qui me fruste, c'est qu'aucune des musiques 1bit sur ZK ou COCO n'ont de tels bruits dans leurs instruments. Non leur sons sont plutôt clair et je ne me l'explique pas. Certes le ZX joue à 9khz, ce qui est au dessus de nos 7.8, mais pas tellement. Ca ne doit pas changer grand chose au niveau du buit. Par quel miracle le ZX et le COCO échapent au bruit de quantification? Qu'est ce que je n'ai pas compris dans le rendu 1 bit?
Fichier(s) joint(s):
Commentaire: on a remplacé l'aspirateur par un bruit de radio. On entend moins le sifflement aigu. C'est vaguement mieux, mais pas très concluant quand même.
tst.zip [68.46 Kio]
Téléchargé 707 fois
Fichier(s) joint(s):
Commentaire: Avec un filtre repoussant le bruit de radio vers les hautes fréquences le sifflement revient. C'est pas tellement mieux non plus.
tst2.zip [67.12 Kio]
Téléchargé 695 fois


Bref, tout le bruit qu'on entend n'est pas du à la composition de la musique mais à la convesion 1 bit des instruments. Je dois louper un truc à ce niveau. C'est obligé. Les instruments ne peuvent pas être plus clair sur ZX ou COCO que sur thomson.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 27 Sep 2017, 13:05 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
Pour Beepola, l'approche est assez différente puisqu'il n'y a pas de samples (ou presque pas, dans certains cas ils sont utilisés pour les percussions mais lus à une fréquence fixe). Les "engines" sont assez bien documentés:

http://freestuff.grok.co.uk/beepola/help/tonegen.html

La plupart ont seulement 2 voix, plus les percussions (la lecture d'une percussion interrompt les deux autres voix).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 27 Sep 2017, 20:48 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Bon finalement ces bricolages avec le dither 1 bit ne sont pas concluants dans 100% des cas. Pour certains morceaux ca passe, et poru d'autres c'est affreux. :evil: Mais il y a un effet de bord interressant...

En effet, grace à l'optim faite pour ce mode là, j'arrive à faire tourner la routine de la forever (un peu modifiée) en 142 cycles, soit 7khz au lieu de 5khz. :eek:
Code:
* voix "X"
        ldb     #0      ; 2 (2) compteur
cpt set *-1
        addb    #0      ; 2 (2) frequence
        stb     <cpt    ; 4 (2)
        bcc     ------- ; 3 (2) -----+ carry==0 => pas de changement de x,
                                    tfr     x,x                 ; 6 (2)
                                    ldb     <tabX+2             ; 4 (2) donc b est identique au précédent!
                                    jmp     <CCC                ; 3 (2)
        ldb     ,-x     ; 6 (2)      | carry==1, on charge B tout en déplacant x
        andb    #$0F    ; 2 (2)      | haut ou bas de l'octet ?
        bne     BBB     ; 3 (2)      | si 0 ==> fin instrument:
        stb     <CCC-1  ;   (2)      |    mute de la piste ou nop;nop si instrument à boucle
        ldx     #000    ;   (3)      |    rebouclage
BBB     orb     #0      ; 2 (2)     \|/ volume
CCC     stb     <tabX+2 ; 4 (2) => 28 (24) mis à jour canal "X"

* idem Y, U, et S => 4*28 = 112

* mixage
tabX    ldb     tab0    ; 5 (3) mixage canal X
tabY    addb    tab0    ; 5 (3) idem canal Y
tabU    addb    tab0    ; 5 (3) idem U
tabS    addb    tab0    ; 5 (3) idem S
        stb     $E7CD   ; 5 (3) => 25 (15) sortie CNA
       
        deca            ; 2 (1)
        bne     loop    ; 3 (2) => 142 == 7.0khz (x141==20ms)
 
Au niveau des modifs du player on voit qu'on lit les échantillons en remontant la mémoire (,-x) quand la carry du compteur est à 1, et donc quand la carry est à 0, on ne modifie pas la valeur de ce canal (cf tabX qui est relu et écrit dans le chemin de coté). C'est ca qui permet de marcher en temps constant tout en faisant gagner 3 cycles par rapport à la version "dither". La boucle est aussi plus courte et tient dans 128 octets permettant d'avoir un simple deca/bne à la fiin. Bref, ca tourne 40% plus vite. J'adore! :love:

Je n'aurais jamais cru que je pouvais aller encore plus vite que la version "forever" :coolfuck: Comme quoi le semi échec sur le dither permettrait d'avoir un mode CNA encore plus performant, très proche de la qualité amiga d'origine dont les samples sont typiquement numérisés à 8khz.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 30 Sep 2017, 23:12 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Bon, c'est bien beau une esquisse (buggée) de player à 7khz, mais est-ce que ca marche vraiment ?

La réponse est OUI! (une fois les divers bugs chassés.)

Un grand oui, et je trouve quà 7khz le son est nettement mieux qu'à 5khz, même en sous-échantillonnant les plus gros samples. En fait c'est logique que "ca sonne bien", car 7khz c'est tout proche de la vitesse d'échantillonage des instruments protracker. C'est à dire qu'on a un échantillon thomson par échantillon amiga. C'est presque le max que peut produire le format MOD. :)

En fait le son est tellement mieux pour les gros samples que je viens de faire une diskette dont la principale caractéristique est d'avoir des MODs bâtis sur des samples énormes. Le moins qu'on puisse dire c'est que ca passe bien sur thomson aussi. Jugez par vous même:
Fichier(s) joint(s):
Commentaire: Diskette jouant des modules contenant des samples énormes. On est à fond dans la fin des années 80 et début 90 avec pas mal de techno!

(Les légères distorsions sont normales: j'ai poussé un peu fort le volume et ca sature parfois. Les images sont au format TO7/70.)

huge_samples.zip [239.34 Kio]
Téléchargé 688 fois
[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. C'est un bug pas facile à contourner car il est lié au fait qu'un instrument déborde d'un pattern sur le suivant. Lors du 1er passage du pattern ce débordement est enregistré, et est rejoué lorsque le pattern se représente plus loin. Or plus loin ca il n'y a pas forcément d'instrument qui déborde avant, or à cause de l'enregistrement on rejoue le tout 1er instrument qui a débordé. J'ai bien une idée pour réparer ca, mais ca peut avoir des effets de bords indésirables. Donc il faut tester. En plus en pratique les instruments qui débordent d'un pattern à l'autre sont rare et apparaisseent surtout comme dans ce morceau ou les instruments sont très longs (5-8 secs).

Le code source du player est présent dans cette archive:
Fichier(s) joint(s):
Commentaire: Source du player et du convertisseur
sources.zip [21.14 Kio]
Téléchargé 683 fois
Je ne suis pas super heureux avec lui en ce moment car il est gros et moche. En particulier je n'aime pas les répétitions de bouts de codes resemblant à ceci:
Code:
      cmpx   #rptX
      bne      *+4
      st??      <??_X
      cmpx   #rptY
      bne      *+4
      st??      <??_Y
      cmpx   #rptU
      bne      *+4
      st??      <??_U
      cmpx   #rptS
      bne      *+4
      st??      <??_S
C'est-à-dire une succession de code quasi similaires comme ici l'écriture d'un registre (A,B, D) à une adresse direct-page dépendant de la valeur du registre X. Quelqu'un voit il une façon de factoriser/optimiser cela ?

_________________
Good morning, that's a nice Tnetennba


Dernière édition par Samuel Devulder le 01 Oct 2017, 18:40, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 18:31 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Pour le source.zip, mon extracteur de fichier indique : "Une erreur s'est produite lors de l'extraction des fichiers". Sans extraire le fichier, bien sûr.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 18:38 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Hum.. chez moi ca passe. Je refais le zip. Voici:
Fichier(s) joint(s):
Commentaire: Zip re-créé
source.zip [22.59 Kio]
Téléchargé 672 fois
Tiens, il n'a pas la même taille, pourtant les 2 fonctionnent avec 7zip. Hum... sans doute que j'ai utilisé une compression différente dans le précédent.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 19:50 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Cette fois-ci, c'est ok ;)

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 20:19 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
Je ne suis pas super heureux avec lui en ce moment car il est gros et moche. En particulier je n'aime pas les répétitions de bouts de codes resemblant à ceci:
Code:
      cmpx   #rptX
      bne      *+4
      st??      <??_X
      cmpx   #rptY
      bne      *+4
      st??      <??_Y
      cmpx   #rptU
      bne      *+4
      st??      <??_U
      cmpx   #rptS
      bne      *+4
      st??      <??_S
C'est-à-dire une succession de code quasi similaires comme ici l'écriture d'un registre (A,B, D) à une adresse direct-page dépendant de la valeur du registre X. Quelqu'un voit il une façon de factoriser/optimiser cela ?

À prime abord, non. Une boucle ne ferait que rallonger le temps d'exécution ainsi que des adressages avec offset et registre. Pour moi, c'est déjà le maximum. Si ça te brûle un peu les yeux, exprime ces parties avec des petites macros :

Code:
STDSMP  macro
        cmpx    #rpt\0
        bne     *+4
        std     <smp\0
        endm

        STDSMP  X
        STDSMP  Y
        STDSMP  U
        STDSMP  S

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 20:32 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Je me demande si packer tous les offsets mémoires dans un struct ne serait pas plus rapide. En effet, après un calcul une fois pour toute de X pour pointer sur la bonne structure (celle de X, de Y, de U ou de S) la suite des comparaisons devient juste
Code:
ST?? [flied,x]
J'ai cependant en mémoire le fait que l'indirection est super couteuse au niveau CPU, mais de l'autre coté 12 cycles sont perdus dans 3 CMPX inutiles (un seul set à faire le ST??.)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 20:55 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
Je me demande si packer tous les offsets mémoires dans un struct ne serait pas plus rapide. En effet, après un calcul une fois pour toute de X pour pointer sur la bonne structure (celle de X, de Y, de U ou de S) la suite des comparaisons devient juste
Code:
ST?? [flied,x]
J'ai cependant en mémoire le fait que l'indirection est super couteuse au niveau CPU, mais de l'autre coté 12 cycles sont perdus dans 3 CMPX inutiles (un seul set à faire le ST??.)

D'accord, j'avais mal compris ce que le code faisait.
Alors effectivement, un code indirect avec une table est plus rapide.
En fait, tu gagnes pas mal de cycles. Tu en gagnes une cinquantaine en éliminant ton petit code, et tu en perds une douzaine pour l'exécution de l'instruction indirecte. C'est tout bénef.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: MOD ?
MessagePosté: 01 Oct 2017, 20:59 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
50 cycles gagnés ? J'en compte que 21, ceux correspondant à 3 CMPX+BNE qui seront necessairement faux. Mais oui le bilan est en faveur de l'indirect.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 280 messages ]  Aller à la page Précédente  1 ... 14, 15, 16, 17, 18, 19  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 32 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com