[Thomson] Musique et vidéo avec SDSTREAM
Modérateurs : Papy.G, fneck, Carl
Re: [Thomson] Musique et vidéo avec SDSTREAM
Super! Plus de différence de tonalité
J'abuse un peu mais pourrais tu me faire une version de "sdstream_music.bin" avec 32 cycles entre deux échantillons afin de pouvoir envoyer des fichiers en 31250 Hz, ça prendrait moins de place sur ma carte SD sans trop de perte de qualité je pense
J'abuse un peu mais pourrais tu me faire une version de "sdstream_music.bin" avec 32 cycles entre deux échantillons afin de pouvoir envoyer des fichiers en 31250 Hz, ça prendrait moins de place sur ma carte SD sans trop de perte de qualité je pense
Re: [Thomson] Musique et vidéo avec SDSTREAM
Pas de problème, voici la version 31250Hz avec les sources et l'assembleur A09.exe
Si tu veux une autre fréquence, il suffit de modifier les temporisations dans la boucle principale et d'assembler avec sdstream_music.bat
Le programme binaire à insérer dans le fichier .sds est sdstream_music.bin
Si tu veux une autre fréquence, il suffit de modifier les temporisations dans la boucle principale et d'assembler avec sdstream_music.bat
Le programme binaire à insérer dans le fichier .sds est sdstream_music.bin
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
Merci, modifier de quelle manière? Je vois pas bien comment modifier cette boucle pour ajouter/supprimer des temporisations, j'y connais que dalle en assembleur... Quelle différence entre BSR, BRN et RTS? Dans ta boucle à 20 échantillons postée plus haut tu n'as pas de BSR, ça veut dire que 20 cycles entre chaque échantillon c'est le minimum? A quoi ressemble la version avec 23 cycles entre chaque échantillon par exemple?
En tout cas ça marche très bien à 31250 Hz avec le nouveau fichier que tu viens de poster J'ai refait mon fichier SDSTREAM posté plus haut avec cette nouvelle fréquence d'échantillonage, pas de différence notable à l'oreille (du moins sur ma TV cathodique).; Boucle de lecture
; 32 cycles entre deux echantillons (31250/seconde)
; 40 cycles au changement de bloc
;------------------------------------------------------
PLAY
LDA <$FF (4) lecture echantillon
STA <$CD (4) joue echantillon
LDA <$FF (4) lecture echantillon
BMI FIN (3) branchement en fin de fichier
BSR TEMPO (12) temporisation
BRN PLAY (3) temporisation
BRN PLAY (3) temporisation
BRN PLAY (3) temporisation
STA <$CD (4) joue echantillon
BSR TEMPO (12) temporisation
BRN PLAY (3) temporisation
BRN PLAY (3) temporisation
BRN PLAY (3) temporisation
BRA PLAY (3) nouvelle boucle
;------------------------------------------------------
; Temporisation (12 cycles avec BSR et RTS)
;------------------------------------------------------
TEMPO
RTS
Re: [Thomson] Musique et vidéo avec SDSTREAM
J'ai réécrit la boucle principale un peu plus proprement pour faciliter la compréhension :
L'instruction BSR TEMPO introduit une temporisation de 21 cycles dans la boucle.
La routine TEMPO est composée de trois instructions BRN qui ne font rien et consomment 3 cycles.
Au total 3*3=9 cycles, plus le BSR (7 cycles) plus le RTS (5 cycles), soit 21 cycles.
Pour changer la temporisation, il faut ajouter ou enlever des instructions BRN (3 cycles) et/ou des instructions NOP (2 cycles).
La version avec 23 cycles par échantillon nécessite une temporisation de 12 cycles :
Pour faire, par exemple, une version avec 25 cycles par échantillons (40000 échantillons par seconde) il faut ajouter 2 cycles par échantillon :
Code : Tout sélectionner
;------------------------------------------------------
; Boucle de lecture
; 32 cycles entre deux echantillons (31250/seconde)
; 40 cycles au changement de bloc
;------------------------------------------------------
PLAY
LDA <$FF (4) lecture echantillon
STA <$CD (4) joue echantillon
LDA <$FF (4) lecture echantillon
BMI FIN (3) branchement en fin de fichier
BSR TEMPO (21) temporisation
STA <$CD (4) joue echantillon
BSR TEMPO (21) temporisation
BRA PLAY (3) nouvelle boucle
;------------------------------------------------------
; Temporisation (21 cycles avec BSR et RTS)
;------------------------------------------------------
TEMPO
BRN TEMPO (3) temporisation
BRN TEMPO (3) temporisation
BRN TEMPO (3) temporisation
RTS
La routine TEMPO est composée de trois instructions BRN qui ne font rien et consomment 3 cycles.
Au total 3*3=9 cycles, plus le BSR (7 cycles) plus le RTS (5 cycles), soit 21 cycles.
Pour changer la temporisation, il faut ajouter ou enlever des instructions BRN (3 cycles) et/ou des instructions NOP (2 cycles).
La version avec 23 cycles par échantillon nécessite une temporisation de 12 cycles :
Code : Tout sélectionner
;------------------------------------------------------
; Temporisation (12 cycles avec BSR et RTS)
;------------------------------------------------------
TEMPO
RTS
Code : Tout sélectionner
;------------------------------------------------------
; Temporisation (14 cycles avec BSR et RTS)
;------------------------------------------------------
TEMPO
NOP (2) temporisation
RTS
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
Ok je comprends mieux le principe, c'est pas intuitif au premier abord l'assembleur faut dire aussi lol.
Re: [Thomson] Musique et vidéo avec SDSTREAM
Encore une question (pour changer), peut-on mettre un "border" noir ou gris au lieu de blanc autour de l'image et si oui comment stp?
Re: [Thomson] Musique et vidéo avec SDSTREAM
L'instruction SCREEN au début du programme de lancement sélectionne la couleur de l'écran.
Syntaxe : SCREEN x,y,z
x = couleur d'écriture
y = couleur d'arrière-plan
z = couleur de bordure
0 = noir, 1 = rouge, 2 = vert, 3 = jaune, 4 = bleu, 5 = magenta, 6 = cyan, 7 = blanc
Les couleurs 8 à 15 sont les mêmes en plus clair, sauf 15 qui est orange.
Code : Tout sélectionner
========================================
MUSIC.BAS
Programme de lancement d'une
demonstration de musique.
========================================
1 CLEAR10,&H8FFF:A=&H9F00
2 CLS:LOCATE0,0,0:SCREEN0,7,7
3 READX$:IFX$="**"THENEXEC&H9F00:END
4 POKEA,VAL("&H"+X$):A=A+1:GOTO3
5 DATA34,19,1F,B8,8B,86,1F,8B,1A,50,96
6 DATAFF,81,FE,26,FA,CE,90,00,8E,02,00
7 DATA3D,96,FF,A7,C0,30,1F,26,F7,35,19
8 DATA7E,90,00,**
x = couleur d'écriture
y = couleur d'arrière-plan
z = couleur de bordure
0 = noir, 1 = rouge, 2 = vert, 3 = jaune, 4 = bleu, 5 = magenta, 6 = cyan, 7 = blanc
Les couleurs 8 à 15 sont les mêmes en plus clair, sauf 15 qui est orange.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
Archi simple en fait... je n'aurais pas pensé à regarder dans le lanceur basic !
Re: [Thomson] Musique et vidéo avec SDSTREAM
Pour rebondir sur mon premier message, page précédente, concernant la possibilité d'utiliser un nouveau type d'encodage basé sur un réseau de neurones. Et bien ça y est, NVidia explore cette possibilité :
https://www.dpreview.com/news/575625769 ... ompression
https://www.dpreview.com/news/575625769 ... ompression
Sylvain
Re: [Thomson] Musique et vidéo avec SDSTREAM
L'une des limites de la vidéo sur Thomson est le temps nécessaire à la décompression de l'image. Il faut utiliser un algorithme simple pour ne pas ralentir l'affichage. Je ne crois pas que l'on puisse utiliser des méthodes très sophistiquées. Les méthodes plus complexes sont adaptées aux processeurs rapides, quand le temps de calcul est négligeable par rapport au temps de transmission et d'affichage.
L'autre limite est la vitesse d'affichage, en particulier lors d'un changement de plan nécessitant un ré-affichage complet de l'écran. Aucune méthode de compression ne peut l'accélérer.
Par rapport aux démonstrations déjà réalisées (et pas encore toutes diffusées) il y a peut-être une petite marge de progrès, mais pas de révolution à attendre. La révolution, c'est le passage d'une transmission série (SDDRIVE) à une transmission parallèle sur 8 bits (SDSTREAM).
L'autre limite est la vitesse d'affichage, en particulier lors d'un changement de plan nécessitant un ré-affichage complet de l'écran. Aucune méthode de compression ne peut l'accélérer.
Par rapport aux démonstrations déjà réalisées (et pas encore toutes diffusées) il y a peut-être une petite marge de progrès, mais pas de révolution à attendre. La révolution, c'est le passage d'une transmission série (SDDRIVE) à une transmission parallèle sur 8 bits (SDSTREAM).
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
Bonjour,
Si j'ai bien compris le fonctionnement pour accéder aux données sur le SDSTREAM, dans le cas ou l'on serait dans un programme en asm "perso".
il faut d'abord faire des lectures en $E7FF (sur TO8) espacées d'un certain temps (lequel ?) pour sélectionner un fichier.
Ensuite deux lectures "rapides" en $E7FF permettent de charger le fichier.
=> pas d'autres actions d'init à faire ?
Une fois que le fichier est chargé, la lecture des données se fait toujours sur $E7FF et les données bouclent.
Est-il possible de changer de fichier à la volée (sans reboot) ?
Y a t'il d'autres "commandes" accessibles pour échanger avec SDSTREAM ?
Si j'ai bien compris le fonctionnement pour accéder aux données sur le SDSTREAM, dans le cas ou l'on serait dans un programme en asm "perso".
il faut d'abord faire des lectures en $E7FF (sur TO8) espacées d'un certain temps (lequel ?) pour sélectionner un fichier.
Ensuite deux lectures "rapides" en $E7FF permettent de charger le fichier.
=> pas d'autres actions d'init à faire ?
Une fois que le fichier est chargé, la lecture des données se fait toujours sur $E7FF et les données bouclent.
Est-il possible de changer de fichier à la volée (sans reboot) ?
Y a t'il d'autres "commandes" accessibles pour échanger avec SDSTREAM ?
-
- Messages : 7987
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson] Musique et vidéo avec SDSTREAM
C'est ce que j'observe.
Je ne crois pas, mais une solution que j'ai en tête est de pouvoir naviguer à n'importe quelle position du fichier en utilisant le rebouclage.Est-il possible de changer de fichier à la volée (sans reboot) ?
Y a t'il d'autres "commandes" accessibles pour échanger avec SDSTREAM ?
Soit un fichier de longueur L, si je suis à la position P, et que je veux aller à la position Q, on peut faire l'algo suivante
- Si Q=P, on fait rien (évidemment )
- Si Q>P, lire "rapidement" (Q-P) octets (on avance dans le flux)
- si Q<P, lire "rapidement" (L+Q-P) octets (on avance jusqu'à la fin de fichier (L-P) ce qui fait reboucler, et on lit les Q octets restants.
La lecture d'un octet prends 4 cycles "LDA <$FF", en lire 512 prends donc 2048 cycles (2ms), soit une vitesse de l'ordre de 250ko/sec. Donc si le fichier fait disons 2Mo, il faut au pire 8 secondes pour passer d'un endroit du fichier à l'autre. En pratique je pense que si les données dans le fichier sont organisées pour être le plus proche possible et dans le sens du stream, les temps peuvent être plus courts.
Note: j'ai pas encore essayé un "CLR <$FF" qui fait deux accès à la carte (le CLR est buggé sur 6809: il fait un accès en lecture avant l'accès en écriture) et donc "potentiellement" force SDStream à fournir (et donc lire) 2 octets dans les 6 cycles de l'instruction, soit 25% plus rapidement qu'avec deux "LDA <$FF" (8 cycles au total).
Dernière modification par __sam__ le 25 mars 2021 13:08, modifié 2 fois.
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] Musique et vidéo avec SDSTREAM
Oui, malheureusement ça reste séquentiel et seulement en lecture. Il n'y a aucune écriture, donc aucune commande possible.
J'avais un autre projet (ARDDRIVE) pour faire à la fois de la lecture et de l'écriture, mais je n'ai pas réussi à le finaliser.
Toutefois, avec SDTREAM, il doit être possible d'ajouter un signal vers l'Arduino pour le faire revenir au début du fichier, ou pour faire une avance rapide. Ce n'est pas forcément simple mais s'il y a une demande je peux étudier le sujet.
J'avais un autre projet (ARDDRIVE) pour faire à la fois de la lecture et de l'écriture, mais je n'ai pas réussi à le finaliser.
Toutefois, avec SDTREAM, il doit être possible d'ajouter un signal vers l'Arduino pour le faire revenir au début du fichier, ou pour faire une avance rapide. Ce n'est pas forcément simple mais s'il y a une demande je peux étudier le sujet.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
C'est déjà pas mal d'avoir réussi a passer des commandes de sélection et de chargement d'un fichier avec seulement des accès en lecture.
Pour le moment j'ai pas de besoin particulier coté stream (ça viendra peut-être avec le temps), mais je voulais juste comprendre le fonctionnement.
Merci à vous deux !
Pour le moment j'ai pas de besoin particulier coté stream (ça viendra peut-être avec le temps), mais je voulais juste comprendre le fonctionnement.
Merci à vous deux !
Re: [Thomson] Musique et vidéo avec SDSTREAM
Pour la sélection du fichier c'est aussi purement séquentiel. L'Arduino sélectionne les fichiers un par un en bouclant sur le répertoire principal. Le programme Thomson lit le nom du fichier sélectionné. Ensuite il lit un caractère isolé pour demander la sélection du fichier suivant, ou il lit deux caractères en moins de 10 millisecondes pour confirmer la sélection du fichier en cours. C'est un peu comme un simple clic ou un double clic.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.