[Arkos Tracker 2] Besoin d'aide pour l'utiliser

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

[Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Ma demande concerne plus les spécialistes de l'audio et si possible ceux qui connaissent l'outil.

Mais aussi éventuellement des musiciens et spécialistes des effets sonores.

Tout d'abord, je suis considéré comme sourd à 90% mais appareillé avec récupération, on va dire, à 80% dans les meilleures conditions : ça ne fait pas de moi un mélomane averti.

La machine visée est le SHARP MZ-700 et il se trouve que cette machine est prise en charge par cet outil.

Actuellement, je travaille sur un jeu sans grand(e?) prétention (Space Rally) et je voudrais le sonoriser :

1) musique de fond ? vu que c'est du 1-bit à la Spectrum, il ne faudrait pas qu'elle casse les oreilles.
2) musique d'accueil, de game over, de game pause, etc. Plutôt des sons ou des musiques (en boucle ou courtes) ?
3) effets : au contact du mur, explosion si endommagé à 100%, moteur à basse fréquence ?

Actuellement, je verrai à appeler le player à la fréquence de 50 Hz. Voir si je garde encore des ressources CPU à l'appeler à 100 Hz. En effet, j'ai 312 hblank par frame, ce qui donne 156 hsync entre deux appel au player par frame. Il se peut que je puisse le faire.

Je suis ouvert à toutes les suggestions.

https://www.julien-nevo.com/arkostracker/
Dernière modification par hlide le 16 mai 2021 13:59, modifié 1 fois.
Markerror
Messages : 1762
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par Markerror »

Bonjour,

Pour moi, Arkos tracker 2, c'est un outil de composition musicale pour des musiques exploitant l'AY-891x, pas un buzzer. Le MZ-700 ne semble pas avoir cette puce sonore en natif. Il n'y a pas eu de "carte son" sur cette machine par hasard ?
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Tu m'as mal lu : cet outil supporte du 1-bit SPECTRUM et MZ-700. Et je connais quelques démos modernes sur MZ-700 qui l'exploitent pour générer un code player sur MZ-700.
Arkos Tracker is the ultimate musical tool (or "Tracker") for 8/16-bit computers from the 80's, such as Amstrad CPC, Atari ST/XE/XL, ZX Spectrum, MSX, Oric, Apple 2, Vectrex, and SHARP MZ-700!
Avatar de l’utilisateur
gilles
Messages : 2425
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par gilles »

pour la musique spectrum il y a avait aussi beepola qui est vraiment spécialisé 1bit mais je n'ai pas testé arkos tracker pour comparer
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

@Markerror, c'est toi l'auteur T&J de http://tj.gpa.free.fr/ ? si oui, cool ! je cite :
il serait probablement ravi de t'aider
Pour info, AT2 a intégré la possibilité de générer le player pour le MZ-700 avec les données de sons sous forme de binaire. Je devrais donc me débrouiller pour l'insérer dans le source et compiler. Si l'insertion est facilement automatisable (je l'espère), je pourrais fournir un package qui permettrait de compiler le tout juste en cliquant sur un batch, après il ne reste plus qu'à lancer l'émulateur pour tester.
Markerror
Messages : 1762
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par Markerror »

je suis un peu étonné que Targhan ait bricolé son player pour pouvoir jouer des musiques faites avec AT2 sur un buzzer, mais c'est plutôt une bonne nouvelle. Je viens de mettre le nez dans la doc, le Sharp MZ-700 ne peut utiliser qu'un "lightweight player", pas celui sur lequel je suis en train de bricoler (le generic player). A la lecture des commentaires sur le player, je comprends mieux :

; Only one channel is used, no noise, no hardware envelope, no volume! The sound is stopped when the "sound" is set to off.

Bref, c'est utilisable, mais ça ne va pas transformer le MZ en sound-machine de la mort.

T&J = Markerror en effet (ou l'inverse :-) ). J'avoue que je ne suis pas un spécialiste d'Arkos tracker, j'utilise toujours Starkos (l'ancêtre de l'Arkos tracker sur CPC ) pour composer des musiques. Je bricole aussi parfois par la force des choses avec Chip'n'sfx, un outil de CNGSoft bien adapté pour créer des musiques compactes.
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Oui je viens de voir ça dans les sources. Je vais peut-être me limiter aux effets de sons. Merci pour la confirmation.
Markerror
Messages : 1762
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par Markerror »

Bonsoir,

Je viens de télécharger Beepola. C'est plutôt intéressant car ça permet de simuler plusieurs canaux sonores sur un beeper, les exemples que j'ai trouvés sont largement mieux qu'une musique mono sans changement de volume.

On peut compiler une musique sous la forme d'un source ASM. En fonction du player choisi, je pense qu'on doit pouvoir trouver quelque chose qui peut tourner sans trop d'adaptation sur autre chose qu'un Spectrum...
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Ok je regarde ça aussi. Merci Markerror !
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Alors petite précision (traduction du japonais approximatif).
La sortie sonore du MZ-700 est uniquement la sortie d'onde carrée du canal 0 de 8253. L'entrée d'horloge de 894,88625 kHz divisée par le canal 0 est sortie telle quelle. Normalement, le canal 0 est réglé sur le mode 3 et utilisé comme un bip de note unique avec un rapport cyclique de 50%.

On peut contrôler l'entrée GATE sur le canal 0 à partir du bit 0 à l'adresse 0E008h. Lors de l'utilisation de la sortie audio, la sortie 1 ici.
■ Sortie audio
 Si vous souhaitez émettre 440 Hz (son de LA), il faut mettre 894886,25/440 ≒ 2034 = 07F2h comme rapport de division de fréquence dans le compteur du canal 0.
 Si vous émettez le son, il restera inchangé. Il faut donc l'arrêter à un endroit approprié. En réglant GATE sur L ou en laissant la valeur du compteur non écrite après le réglage du mode, la sortie sera fixée à H et la sortie audio s'arrêtera.

Code : Tout sélectionner

        ;; 
        Initialisation 
        ; 
        LD A, 1 
        LD (0E008h), A; GATE = H 

        LD HL, 0E007h; 8253 - Port de contrôle 
        LD (HL), 36h ; Canal 0, Mode 3, Octet inférieur → Octet supérieur         

        ;; 
        Sortie sonore 
        ; 
        LD HL, 0E004h; 8253 Canal 0 
        LD (HL), 0F2h; Définit l'octet inférieur de la valeur de comptage du canal 0 
        LD (HL), 007h; Définit l'octet supérieur de la valeur de comptage du canal 0 

        (temporisation du son) 

        ;; 
        Arrêt du son 
        ; 
        XOR A 
        LD (0E008h), A; GATE = L
■ PCM 1-bit, utilisant la valeur initiale après le réglage du mode

 Si vous définissez le mode pour le canal 8253, il continuera à émettre une valeur initiale fixe jusqu'à ce que la valeur de comptage soit définie. En utilisant cela, le H/L de la sortie audio peut être contrôlé directement à partir du CPU. La lecture PCM 1-bit est possible en commutant H/L à grande vitesse.

mode valeur initiale
0 L
1-5 H

 Ceci est un exemple pour lire une cassette audio avec PCM 1-bit. Après avoir exécuté le programme, insérez la cassette dans l'enregistreur de données et appuyez sur le bouton PLAY pour la lire.

Code : Tout sélectionner

        LD HL, 0E002H; 8255 port C 
        LD DE, 0E007H; 8253 Port de commande 
        LD C, 20h; canal 0, mode 0, régler le compteur uniquement pour l'octet de poids fort (factice)         

 L1: LD A, (HL); 1 bit de enregistreur de données Entrée 
        AND C 
        RRCA 
        RRCA; 1 pour le mode 4, 0 pour le mode 0 
        OR C 
        LD (DE), A; 8253 réglage du mode canal 0 (sortie PCM 1 bit) 
        JP L1
■ Lecture PWM en utilisant le mode 0

 Le mode 0 de 8253 fonctionne en sortant L du nombre de comptage réglé, puis en sortant H, et en continuant à sortir H jusqu'à ce que la valeur de comptage soit à nouveau réglée. Par conséquent, si la valeur de comptage peut être mise à jour à un cycle précis, elle peut être utilisée comme sortie PWM.
AT2 semble utiliser la sortie d'une fréquence qu'il change à chaque appel (généralement 50 fois à la seconde).

BEEPOLA, j'ai plutôt l'impression que ce serait de PCM 1-bit.

Je me vois mal faire du PCM 1-bit dans un jeu.
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Il existe une version de PhaserX pour MZ-700 : https://github.com/utz82/ZX-Spectrum-1- ... 00/phaserx.

MooZ en a fait une démo : https://www.youtube.com/watch?v=mOC-X9ich1o. Mais cette version est inutilisable car le player boucle sur lui-même très rapidement donc inexploitable pour un jeu.

C'est d 'ailleurs MooZ qui en a fait la demande à Targhan (AT2) pour une implémentation MZ-700 qui soit interrupt-driven.

Concernant Beepola, il y aurait le moteur Savage qui serait tiré du jeu du même nom et qui pourrait faire des effets sonores en plus : http://freestuff.grok.co.uk/beepola/hel ... e-svg.html.

Bref, je barbotte pour le moment.
Avatar de l’utilisateur
gilles
Messages : 2425
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par gilles »

Les player de beepola sont effectivement prévu pour être 100% cpu. On peut éventuellement adapter musicbox si on a une source d'interruption rapide et programmable mais ca reste plutôt consommateur. C'est plutôt fait pour un écran de présentation, pas pendant le jeu.
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Alors, j'ai bien le timer 1 du PIT qui compte indirectement les /HSYNC. Il y en a 312 par frame. Et le timer 2 en cascade qui compte les sorties du timer 1. Actuellement le timer 1 compte 2 /HSYNC par unité pour que le timer 2 me donne le nombre restant de paires de /HSYNC qui tient dans un seul octet (312/2 = 156). Ce timer 2 déclenche une interruption quand le compteur passe à 0.

Là où il faut faire gaffe, c'est que le dessin en VRAM demande 100 /HSYNC (25 lignes x 4 /HSYNC) et que l'incrémentation du compteur se fait sur le front montant de BLNK, i.e, avec le front montant du signal /WAIT sur le premier PUSH bloqué en accès VRAM. Que se passe-t-il quand l'interruption prend effet en même temps ?

Si l'on accepte que le dessin de ligne prend 6 /HSYNC au lieu de 4 /SYNC en insérant 1 /HSYNC pour l'interruption tous les deux /HSYNC, ça prendra 150 /HSYNC sur les 312 de la frame en supposant que le player qui va manipuler le son ne prenne pas plus de temps que celui d'une ligne pixel (64 µs).

On aura alors pour une seconde 50 frames avec 312/3 = 104 /HSYNC, soit 104 appels au player de son par trame, ou 5400 appels par seconde soit un échantillonnage de 5400 Hz. J'ai testé une musique de Beepola exportée en WAV 44100 Hz que j'ai ensuite rééchantillonnée à 5400 Hz via Audacity. Ça ne sonne pas trop mal par rapport à l'original.
Avatar de l’utilisateur
gilles
Messages : 2425
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par gilles »

5400Hz c'est pas mal comme base de temps si tu arrives à faire un bout de player compact.

Mon adaptation exl100 du player musicbox est ici:
http://www.alternative-system.com/musiq ... xelvision/
mais c'est loin d'être une référence et ça manque de commentaires.
Avatar de l’utilisateur
hlide
Messages : 2280
Inscription : 29 nov. 2017 10:23

Re: [Arkos Tracker 2] Besoin d'aide pour l'utiliser

Message par hlide »

Bon j'ai commencé à faire des tests :

Avec soit Beepola, soit AT2, je génère des fichiers WAV puis j'utilise Audacity.

Je comprend que le son qui va sortir sur la machine est un signal carré que ce soit en PCM 1-bit ou avec une sortie fréquence.

Du coup, ça ressemble fortement à ce que l'on produit en PWM sur les cassettes.

J'ai trouvé un script Nyquist que je met en prompt :

Code : Tout sélectionner

;version 4

(setf threshold 0.2)

;; Time resolution in seconds
(setf time-res 0.00019230769230769230769230769230769)


(defun lowrate (sig step)
  (when (arrayp sig)
    (setf sig (mix-to-mono sig)))
  (snd-avg sig step step op-peak))


(defun mix-to-mono (sig)
  (mult 0.5 (sum (aref sig 0)
                 (aref sig 1))))


(setf step (truncate (* *sound-srate* time-res)))

(let ((lo-rate (lowrate *track* step))
      (bignum (power 2 32)))
  (setf lo-rate (sum lo-rate (- threshold)))
  (setf *track* (force-srate *sound-srate* lo-rate))
  (mult bignum (clip (s-max *track* 0) (/ bignum))))
ce script est censé transformer les ondes en sortie carrée en mettant la résolution à 5200 Hz (du moins je l'espère).

Après j'exporte le résultat en fichier WAV 5200 Hz. Puis je le joue pour comparer à l'original en supposant que ça rendra pareil sur une machine en sortie carré à 5200 Hz.

L'idée serait de transformer ce WAV en un équivalent LEP où l'unité de période correspondra à la période de 3 /HSYNC, quelque chose comme 192 µs.

J'ai bon ?
Répondre