Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

****Digidrum, Sample et touti quanti sur Cpc.
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 5 Sep - 21:11 (2014)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Avant de commencer, j'ai rédigé cet article sur CpcRulez pour hERMOL. Rien de bien étonnant au fait que vous le retrouviez là-bas.


Pour la petite histoire, hERMOL voulait rajouter des samples à son jeu "Flappy Rulez", j'espère que ça lui aura bien servi.


J'attends vos commentaires éventuels. Qui sait, j'ai peut-être oublié quelque-chose.


Ce qu'il faut savoir, c'est que le principe d'un sample est d'envoyer très vite des valeurs allant de 0 à 15 dans un des canaux sonores du Ay, via le ppi, les Dma du Cpc Plus, voire même la nouvelle carte de TotO, la PlayCity!

Rien de bien compliqué en fait....

Très très important, il faut penser à couper le mixer du canal sur lequel on joue le sample via le registre 7

Les bits 0 à 2 représentent les canaux sonores de 1 à 3 (0/1 : on/off)
Les bits 3 à 5 représentent le mixer de ces même canaux sonores 1 à 3 (0/1 : on/off)
Le bit 6 (0/1 : clavier en entrée/clavier en sortie)
Le bit 7 est toujours a 0 car non utilisé sur cpc.

Envoie tes valeurs dans le reg 8, 9 ou 10. Attention, ces registres étant codés sous 5 bits, tu n'auras ici besoin que des 4 premiers bits (0 à 3).

Pour le bit 4, s'il est a 1, le générateur d'enveloppe (via les registres Ay 11,12 et 13) prends le relai et les bits 0 à 3 sont alors ignorés.

1ere option :

Tu recupères ton sample en 8 bits mono à 15,625khz non signé. 

Pour avoir un sample d'une fréquence de 15,625khz, tu dois envoyer tes valeurs au Ay toutes les 64 us (à chaque ligne quoi).
Si tu veux faire un sample en 8 khz, il te suffit d'envoyer tes valeurs au Ay toutes les 2 lignes (soit toutes les 128 us) etc...etc... 
La taille de ton sample variera en fonction de la fréquence à laquelle tu voudras le rejouer.

Tu convertis ton sample en utilisant une table logarithmique (que Targhan avait proposé gentillement sur le forum d'Iron).

Ah oui, j'allais oublier de préciser qu'utiliser la table logarithmique permet de convertir les samples 8 bits en 4 bits (vu que les registres 8 à 10 sont codés sur 4 bits pour le volume. (Merci à Shap pour m'avoir titillé sur ce point!)

2eme option :

Tu utilises le Cpc Tools Kit de Fano qui propose cette option et qui utilise les fameuses tables de convertion de Targhan.

Ensuite pour le code, par exemple sur le reg 09 (canal sonore 2 de l'ay) :


Code :
Sample1
Defw #0700+%0xx1xx1x ; mets les bits a 1 du canal B
defw #090f,#090d....etc ; 312 fois si tu veux jouer un sample en 15,625 khz
Defw #4020 ; pour marquer la fin de ta AyList


(Ce bout de code est prévu pour être utilisé dans une AyList par un ou plusieurs canaux Dma du Cpc Plus!)

Pour jouer ton sample, tu trouveras ici, le tuto que j'avais fait sur le Forum Impact, mais si tu as besoin de précision, dis le moi!
Le sample ici joué durera 1 vbl (312 lignes), si tu veux un sample plus long, à toi de voir.

Dernière astuce : pense à compacter tes aylists, sinon tu auras toujours 628 octets (314x2)* utilisés par sample (ou plus, si ton sample dure plus d'une frame).... Ca peut prendre un peu de place. 

Pour cela, utilise les boucles dans ta AyList.

Pour télécharger les tables logarithmiques de Targhan : Download!
*314 car 312 val a envoyer + reg 7 + fin aylist
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Publicité






MessagePosté le: Ven 5 Sep - 21:11 (2014)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 15:14 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

On attend la suite du cour Smile.

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 15:23 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

La suite ? Que veux tu rajouter ?
Si tu cherches réellement une suite, tu pourrais la trouver ici
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Dernière édition par Ast le Ven 20 Jan - 15:26 (2017); édité 1 fois
Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 15:25 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Sur cpcrulez :

'La suite au prochaine épisode....'

Un exemple concret ?


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 15:27 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Précise ton idée...
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 15:28 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Un programme d'exemple qui joue un son ou une suite de note.

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 15:52 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Ce qu'il faut savoir, avant toute chose, pour jouer un son, il faut mettre la bonne période (note) dans les registres (0-1, 2-3 ou 4-5, suivant le canal, ou voie sur lequel tu veux qu'elle soit jouée (A, B ou C)
Deuxième chose, donner le volume de cette période en utilisant les registres de volumes 8, 9 ou 10, selon la voie sur lequel le son est joué.
Dernier point, ouverture du canal sonore en utilisant le registre 7.
En gros pour le registre 7, si le bit est à 0, le canal est ouvert. S'il est à 1, il est fermé.
Registre 7 :
Bit0 : canal 8 (0/1) volume
Bit1 : canal 9 (0/1) volume
Bit2 : canal 10 (0/1) volume
Bit3 : canal 8 (0/1) bruit
Bit4 : canal 9 (0/1) bruit
Bit5 : canal 10 (0/1) bruit
...
Un exemple
Code:

aylist word #008e
         Word #0100 ; période=&8e=142
         Word #080a ; volume à 10
         Word #0700+%111110 ; ouverture canal 8 volume seulement
         Word #4020 ; fin aylist


Pour le replay, l'asic doit être delocké.

Code:

Dcsr=#6c0f
Sar0=#6c00
;
      Di
      Ld bc,#7fb8 ; AsicOn
      Out (c),c
;
     Ld hl,aylist ; hl contient l'adresse de l'aylist
     Ld (sar0),hl
     Ld a,%001 ; joue son sur canal Dma0
     Ld (dcsr),a
;
     Ld c,#a0 ; AsicOff
     Out (c),c
     Ei
     Ret


Dernière chose, on peut utiliser l'instruction repeat #2xxx dans l'aylist...
Cela fonctionne de la façon suivante :

Code:

aylist word #2fff ; compteur de répétition ici à #fff
        word #008e
        word #0100
        word #080a
        word #0700+%111110
        word #4001 ; instruction loop
        word #4020 ; fin aylist


Comme vous l'aurez remarqué, l'instruction compteur #2xxx va de paire avec l'instruction loop #4001.

D'autres questions ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Dernière édition par Ast le Ven 20 Jan - 16:12 (2017); édité 2 fois
Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 15:57 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

C'est un peu plus clair,merci Smile.

Donc le sample c'est une ay list c'est ça ?Je crois que c'est la que je bloque.


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 16:08 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

J'ai complété mon article avec l'ajout de l'instruction repeat, le couple #2xxx-#4001.
Pour le sample, oui c'est un aylist du type :

Code:

;
; exemple pour un sample canal 8
;
Sample word #0807,#0807,#0806...
            ....
            Word #4020


Un sample est constitué d'une suite de valeurs 4 bits (sur Cpc) envoyées rapidement et seulement sur le canal de volume désiré, 8, 9 ou 10.
Tant que le registre 0 du crtc n'est pas modifié (63 à l'allumage), ces valeurs sont envoyées toutes les 64us pendant la HBL.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 16:11 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Ok,et si je veu comme dans les trackers me servir du sample comme d'un instrument,comment dois-je faire pour changer sa 'note' ?

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 16:17 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Il suffit d'appliquer un simple calcul...
Par exemple si tu copies une valeur de ton sample sur 2, le sample sera joué une octave plus haut...
Tout ceci devra, évidemment être fait en temps réel et tu devras copier tes valeurs à chaque frame pour les 3 canaux.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 16:21 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Merci,j'ai de quoi potasser maintenant Smile.

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 16:38 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Rien de compliqué, tu verras...
Tu peux aussi utiliser l'instruction #1xxx lorsque tu as un sample fixe. (Quand c'est toujours le même)
Ca fonctionne de la manière suivante :

Code:

aylist word #0805,#1020,....


Cela signifie que tu as 32 fois la valeur 5 dans le reg 8 Smile
En gros :

Code:

Aylist
word #0805,#0805,#0805,#0805
Word #0805,#0805,#0805,#0805 ; et cela 32 fois


À quoi cela sert ? Je dirais simplement à avoir des aylists qui prennent moins de place.

Derniers conseils :

Une aylist commence toujours sur une adresse paire
Une aylist se termine toujours par #4020 qui indique que c'est la fin de votre aylist.
Une aylist ne peut être jouée que dans les premiers 64kb de Ram (plage #0000-#ffff en bank #c0)
À ce propos, mettre une aylist en #4000 fonctionne !!!
Appeler une Aylist une seconde fois alors qu'elle n'est pas terminée réinitialisera le registre Asic SAR du canal Dma sur lequel elle est jouée.
Qu'est ce que cela signifie ? En gros, le sample redémarre à zéro ! Donc soyez précis. Si votre sample dure 2 vbls ou plus, faites attention à ne pas relancer votre aylist avant que ce laps de temps ne se soit écoulé. C'est trop souvent risque de bug! Ca m'est arrivé aussi.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
snake_plissken


Hors ligne

Inscrit le: 03 Déc 2014
Messages: 258
Localisation: les pont de cé

MessagePosté le: Ven 20 Jan - 16:42 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

Merci pour toutes ces infos constructives Smile.

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 956

MessagePosté le: Ven 20 Jan - 16:45 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc. Répondre en citant

C'était un réel plaisir, si cela peut t'aider.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 21:06 (2017)    Sujet du message: ****Digidrum, Sample et touti quanti sur Cpc.

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com