[THOMSON] Jouer des MODs amiga
Modérateurs : Papy.G, fneck, Carl
Re: [THOMSON] Jouer des MODs amiga
Je pense que l'on peut faire un petit peu mieux sans avoir à remplacer le 6809 par un 6309...
Re: [THOMSON] Jouer des MODs amiga
Dans quel domaine ? Jouer des MODs amiga ou jouer de la musique sur 1 bit ou améliorer le code de __sam__ ? Peux-tu préciser ton idée ?
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [THOMSON] Jouer des MODs amiga
Jouer?! Pas exactement et pour être franc je n'ai rien compris au listing de _sam_. Si! A part une chose! Il utilise des CMP pour savoir si le son est bouclé ou le boucler. La solution assez juste pour gagner quelques cycles serait de faire en sorte à ce que la longueur du sample soit négative ainsi en additionnant le pas on se rapproche de 0. Ce qui n'est pas négligeable car on évite la comparaison.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [THOMSON] Jouer des MODs amiga
En fait la détection de la fin du son n'utilise plus de CMP à présent. Le gain en vitesse vient de là: On est bien obligé de virer des instructions pour aller plus vite que les 200µs précédents, et pour le coup j'ai été un poil malin et la détection de la fin d'un instrument ne coute plus rien. Au niveau optim j'ai même réussi à ré-utiliser les valeurs précédentes du canal quand le pointeur sample ne bouge pas (ca fait gagner encore quelques cycles.)
Tant est si bien que la gestion des canaux se fait dorénavant en 28 cycles. Et 28 cycles sur 6809 pour incrémenter un compteur, bouger le pointeur d'échantillon, tester le rebouclage et récupérer l'échantillon c'est très très peu. Je suis bien content d'avoir trouvé de nouvelles astuces pour faire tout ça (c'est ce qui m'amuse dans l'exercice .)
Tant est si bien que la gestion des canaux se fait dorénavant en 28 cycles. Et 28 cycles sur 6809 pour incrémenter un compteur, bouger le pointeur d'échantillon, tester le rebouclage et récupérer l'échantillon c'est très très peu. Je suis bien content d'avoir trouvé de nouvelles astuces pour faire tout ça (c'est ce qui m'amuse dans l'exercice .)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [THOMSON] Jouer des MODs amiga
Preuve que je n'ai pas très bien compris ton listing (Pour moi rptX voulait dire repeatX et par extension loopX que tu utilises deux fois dans ta routine et ce pour chaque pistes X, Y, U, S)
Mais ça prouve que tu as suivi l'idée que j'avais souligné plus haut J'avais donc RAISON de croire que l'on pouvais faire mieux
Mais ça prouve que tu as suivi l'idée que j'avais souligné plus haut J'avais donc RAISON de croire que l'on pouvais faire mieux
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [THOMSON] Jouer des MODs amiga
Heuu.. il n'y a pas de loop_x dans le code. Sinon oui rptX c'est l'adresse où ecrire la valeur du pointeur échantillon à utiliser une fois arrivé au bout de l'instrument échantilloné. Dans cette version du code, avec une astuce, la detection de fin d'instrument est gratuite.
Une autre possibilité est de faire comme avec certains players ZX: ne tester la fin des échantillons que tous les 1/50e de seconde. Il faut alors prévoir une zone de silence entre les instruments pour éviter de jouer l'instrument d'après si ca deborde.
Il reste des astuces à exploiter....
Une autre possibilité est de faire comme avec certains players ZX: ne tester la fin des échantillons que tous les 1/50e de seconde. Il faut alors prévoir une zone de silence entre les instruments pour éviter de jouer l'instrument d'après si ca deborde.
Il reste des astuces à exploiter....
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [THOMSON] Jouer des MODs amiga
1/50e de seconde c'est l’équivalent d'une VBL du moins sur amiga et ST
PS loopX est fictif c'est par EXTENSION au rptX, histoire d'expliquer ce que j'ai compris
PS loopX est fictif c'est par EXTENSION au rptX, histoire d'expliquer ce que j'ai compris
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [THOMSON] Jouer des MODs amiga
Oui c'est ca: on repousse le test de rebouclage qu'en fin de VBL plutot que de le faire pour chaque octet envoyé au CNA. Un canal peut donc déborder son rebouclage de 20ms, mais c'est suffisamment petit pour ne pas être trop remarqué. En revanche on gagne pas mal de temps puisque le test de rebouclage n'est plus effectué qu'à 0.25% du temps (en assumant une sortie son à 20khz.)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: [THOMSON] Jouer des MODs amiga
Je trouve très astucieuse l'idée de ne tester la fin des samples qu'une fois de temps en temps. Quel est l'impact sur l'empreinte mémoire, ce serait faisable ?
Au risque de paraître lourd, je réitère ma demande d'avoir une ou plusieurs des musiques précédentes converties pour le nouveau player, parce que pump up the jam et compagnie, j'ai pas vraiment entendu le gain en qualité.
Au risque de paraître lourd, je réitère ma demande d'avoir une ou plusieurs des musiques précédentes converties pour le nouveau player, parce que pump up the jam et compagnie, j'ai pas vraiment entendu le gain en qualité.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [THOMSON] Jouer des MODs amiga
Mettons que le player ainsi optimisé tourne à 10khz max, en 1/50e de seconde il aura au pire consommé 10 000/50 = 200 échantillons de trop.Fool-DupleX a écrit : ↑03 oct. 2017 11:14 Je trouve très astucieuse l'idée de ne tester la fin des samples qu'une fois de temps en temps. Quel est l'impact sur l'empreinte mémoire, ce serait faisable ?
Donc si on veut que le test en fin de VBL marche, il faut prévoir environ 200 octets de silence en fin d'instruments. A raison de 16 instruments maxi (car il y a 2 instruments par octets), ca engendrerait un sur-coût de 3ko environ. Suivant les circonstances ca peut-être acceptable ou pas (en pratique j'ai des morceaux d 42ko, cad que j'occupe l'essentiel de la ram "à plat" dispo. Ajouter 3ko ne sera pas facile.)
A noter: cette technique ne donnera de bons résultats que si les instruments sont non-bouclants. S'il le sont, le blanc en fin de boucle, contrairement à ce que je disais, s'entendra à 50hz. En effet, je viens de tester er on entend finalement assez bien à cette fréquence qui est partout autour de nous.
Pour le reste, un peu de patience... c'est pas aussi simple qu'il n'y parrait car les instruments passant de 5khz à 7khz voient leur volume augmenter de 40%. Or comme ils occupaient déjà toute la ram dispo, à 7khz ils ne rentrent plus en mémoire. Pour qu'ils rentrent il faut descendre la qualité à 5khz, ce qui est contre-productif. Peut-être qu'un meilleur encodage de la partie "pattern" ferait gagner de la place en mémoire. J'y réfléchis...Au risque de paraître lourd, je réitère ma demande d'avoir une ou plusieurs des musiques précédentes converties pour le nouveau player
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: [THOMSON] Jouer des MODs amiga
Pour les instruments bouclants, y'a pas moyen de repeter le debut a la fin au lieu de mettre du blanc et de ressauter en + offset plutot qu'en 0 ?
Edit : le + offset va varier en fait ... Il faudra le recalculer, ce qui peut être coûteux.
Edit : le + offset va varier en fait ... Il faudra le recalculer, ce qui peut être coûteux.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [THOMSON] Jouer des MODs amiga
Oui voilà: l'offset fixe est le soucis. Il faut faire une règle de 3 entre l'offset, la fréquence jouée et celle de l'instrument. Règle de trois signifie faire une multiplication 8bits x 8bits ce qui est facile, mais ensuite il faut faire une division 16bits / 8bits, et là ca ramme :'(
Une solution est d'avancer la date de rebouclage de 1/50 de sec. L'idée est que si on détecte la date, ca signfie que l'on devra boucler au cours des 20ms suivantes. Mais au lieu d'attendre, on boucle avant. Autant un blanc de 20ms doit s'entendre, alors qu'une légère avance dans les échantillons peut-être pas. Il faut experimenter.
Une solution est d'avancer la date de rebouclage de 1/50 de sec. L'idée est que si on détecte la date, ca signfie que l'on devra boucler au cours des 20ms suivantes. Mais au lieu d'attendre, on boucle avant. Autant un blanc de 20ms doit s'entendre, alors qu'une légère avance dans les échantillons peut-être pas. Il faut experimenter.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: [THOMSON] Jouer des MODs amiga
La, je comprends pas bien pourquoi un calcul si complexe. A la place du blanc a la fin, tu mets un bout du debut. Quand tu t'apercois que t'as depasse la fin du sample, en toute logique, tu sais de combien. ne suffit-il pas de faire la soustraction position actuelle- position fin du sample et de rajouter ca au debut pour retomber sur le même sample ? Enfin je sais pas si je me fais comprendre ...
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [THOMSON] Jouer des MODs amiga
Hum.. oui tu as raison. La règle de 3 ne s'applique que si on change la fréquence entre temps. Or cela ne se produit qu'en fin de "row" soit au bout de plusieurs VBL. Donc oui on peut reprendre avec un offset correspondant à la quantité de dépassement.
Hum.. il faudra que je teste ça à l'occasion. Sans doute quand je reprendrai le 1bit pour avoir la fréquence la plus élevée possible (à priori 133cycles pour 4 voix sur 1 bit si je me débrouille bien avec de belles astuces 6809. Reste à avoir une conversion 1 bit qui ne soit pas toute moche.)
Hum.. il faudra que je teste ça à l'occasion. Sans doute quand je reprendrai le 1bit pour avoir la fréquence la plus élevée possible (à priori 133cycles pour 4 voix sur 1 bit si je me débrouille bien avec de belles astuces 6809. Reste à avoir une conversion 1 bit qui ne soit pas toute moche.)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [THOMSON] Jouer des MODs amiga
Il y a aussi une autre solution que j'avais déjà évoquée.
Utiliser une longueur de sample NEGATIVE. Ainsi en additionnant le pas de la fréquence on se rapproche de 0 et si on dépasse c'est facile à tester. Ainsi on conserve le débordement que l'on ajoute ensuite à la nouvelle longueur(en NEGATIF elle aussi) s' il y a Looping. En gros ce ne sont que des additions
Utiliser une longueur de sample NEGATIVE. Ainsi en additionnant le pas de la fréquence on se rapproche de 0 et si on dépasse c'est facile à tester. Ainsi on conserve le débordement que l'on ajoute ensuite à la nouvelle longueur(en NEGATIF elle aussi) s' il y a Looping. En gros ce ne sont que des additions