[Thomson] Musique et vidéo avec SDSTREAM

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 : Papy.G, fneck, Carl

Répondre
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

[Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Pour montrer une des applications possibles de SDSTREAM, j'ai créé cette petite vidéo monochrome. J'avais fait la même pour SDDRIVE il y a deux ans. Avec SDSTREAM la vitesse de lecture quatre fois supérieure supprime en grande partie les défauts de la version SDDRIVE, en particulier lors des changements de plan. Ce n'est pas encore parfait, mais qui aurait pensé en 1984 que le MO5 pourrait faire ça ?

Lien provisoire (disparaîtra un mois après le dernier téléchargement) : http://dl.free.fr/fW0aOEAen

01.png
01.png (1.38 Kio) Consulté 7066 fois
02.png
02.png (1.18 Kio) Consulté 7066 fois
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Silou78
Messages : 382
Inscription : 11 févr. 2017 14:54
Localisation : Yvelines (78)

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Silou78 »

Bonjour,

Ah oui ! Bravo ! Elle est bien cette vidéo. 8)

Probablement le mieux qu'il est possible de faire actuellement et sans doute avant longtemps voire pour toujours.

Après un tel travail d'augmentation du débit, seul un nouveau travail sur l'encodage pourrait (peut-être) faire passer un nouveau pallier qualitatif.
Pas en terme d'encodage classique : chaque type d'encodage a ses types d'images et séquences sur lesquels il fonctionne bien et d'autres plans qui le mettent en difficulté.

Je pensais plutôt à un encodage utilisant un réseau de neurones (notez bien que je n'utilise pas le terme IA qui ne veut pas dire grand chose et certainement pas ce que les gens imaginent généralement à partir des mots qui le compose). Pourquoi un réseau de neurones ? Parce qu'il serait (conditionnel) peut-être à même de gérer les différents types d'images et de séquences au cours d'un apprentissage. NVidia utilise ce procédé dans les jeux (DLSS 2.0) pour faire des images de grande résolution à partir d'image de résolution plus faible tout en permettant un anti aliasing de qualité.

Bon il ne s'agirait pas d'implémenter un réseau de neurones sur nos Thomson (Nvidia utilise du silicium adapté pour ça, les Tensor Cores, et avec une quantité et rapidité inatteignable pour nos machines même en considérant une résolution de seulement 320x200), mais d'utiliser un réseau de neurones pour encoder au mieux le flux des pixels à modifier d'une image sur l'autre.

Vrai ou fausse bonne idée, je ne sais pas... il faudrait se lancer dans une preuve de concept ou POC (proof of concept) comme on les appelle dans mon boulot.
Sylvain
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Je n'ai absolument pas pensé aux réseaux de neurones, et pourtant j'ai un spécialiste dans la famille. A l'occasion je lui soumettrai l'idée pour avoir son avis.

Pour la compression, il faut trouver le bon compromis entre le gain de taille et la complexité de la décompression. Le programme Thomson doit être très simple pour afficher vite. Ma méthode est ultra simple mais certainement pas optimale. Voici le programme pour jouer la vidéo :

Code : Tout sélectionner

SETLI 132
;**************************************************;
;           S D S T R E A M _ V I D E O            ; 
;           (c) 2020 - Daniel Coulom               ;  
;           http://dcmoto.free.fr/                 ;
;           http://forum.system-cfg.com/           ;
;--------------------------------------------------;
; Ce code est distribue gratuitement dans l'espoir ;
; qu'il sera utile, mais sans aucune  garantie  et ;
; sans  engager  la  responsabilité  de  l'auteur. ;
; Vous  pouvez  l' utiliser,  le  modifier  et  le ;
; diffuser librement, en conservant cette  licence ;
; et les références de l'auteur dans   toutes  les ;
; copies. L'exploitation commerciale est interdite.;
;**************************************************;

; Ce programme utilise le module SDSTREAM pour
; afficher une video monochrome compressee a
; 25 images/seconde avec un son 6 bits 19608Hz

;**************************************************;
;                Version 2020.04.23                ;
;**************************************************;
; Historique
; 2020.04.23 suppression instructions inutiles
; 2020.02.15 eviter CMPX [,X] (peut lire en $A7FF)
; 2020.02.14 gain de 3 cycles --> 19608Hz
; 2020.02.14 couleur ecran definie dans LOAD.BAS
; 2020.02.13 cadre blanc ou noir selon definition
; 2020.02.12 en fin de fichier retour au debut 
; 2020.02.12 suppression synchronisation sur $FE 
; 2020.02.10 correction bug adresse fin ecran TO
; 2020.02.09 premiere version operationnelle

;------------------------------------------------------
; Initialisations 
;------------------------------------------------------
  ORG   $9000 
  ORCC  #$50           ;desactive les interruptions
  LDB   >$FFF2         ;$FFF2: $F0(MO) ou $70(TO)
  BPL   INIT3          ;TO detecte

;------------------------------------------------------
; Initialisations communes MO5-MO6 
;------------------------------------------------------
  LDA   #$A7           ;valeur DP pour MO           
  TFR   A,DP           ;valeur de A dans DP
  LDY   #$0000         ;adresse debut ecran
  LDB   >$FFF0         ;type d'ordinateur
  BEQ   INIT8          ;MO5   

;------------------------------------------------------
; Initialisations MO6 
; Attention aux differences PIA systeme MO5 et MO6
;------------------------------------------------------
INIT2
  LDB   <$C0           ;PIA systeme 
  ANDB  #$FB           ;clear mute bit 
  STB   <$C0           ;modification PIA
  BRA   INIT8          ;suite des initialisations

;------------------------------------------------------
; Initialisations communes TO7-TO8 
;------------------------------------------------------
INIT3
  LDA   #$E7           ;valeur DP pour TO           
  TFR   A,DP           ;valeur de A dans DP
  LDY   #$5F40         ;adresse fin ecran
  STY   VIDEO3+1       ;initialisation adresse fin ecran
  LDY   #$4000         ;adresse debut ecran
  STY   VIDEO+1        ;initialisation adresse debut ecran

;------------------------------------------------------
; Initialisation CNA en sortie
;------------------------------------------------------
INIT8
  LDA   <$CF           ;lecture registre de controle B
  ANDA  #$FB           ;raz bit 2 
  STA   <$CF           ;selection DDRB
  LDB   #$3F           ;set bits 0-5 
  STB   <$CD           ;bits CNA en sortie
  ORA   #$04           ;set b2
  STA   <$CF           ;selection PB

;------------------------------------------------------
; Affichage de la video
; 51 cycles par echantillon, soit 19608Hz
; 170 groupes de 3 octets plus deux octets fin de bloc
; temps par bloc : 171 * 51 = 8721 cycles
;
; composition groupe de 3 octets :
; 1 octet son
; 1 octet deplacement (1-255)
; 1 octet forme a afficher
;
; fin de bloc :
; 1 octet son
; 1 octet ($FF=continuer, 0=fin de fichier)
;------------------------------------------------------
VIDEO
  LDX   #$0000         ;adresse memoire video (TO:$4000)
  LEAX  -1,X           ;initialiser a l'adresse precedente
  CLRA                 ;zero dans poids fort de D 

; traitement bloc de 512 octets
VIDEO1
  LDY   #$00AA         ;compteur de boucle 170           (4)

; 170 boucles de 3 octets (51 cycles par boucle)
VIDEO2   
  LDB   <$FF           ;lecture octet son                (4)
  STB   <$CD           ;envoi echantillon                (4)
  LDB   <$FF           ;lecture octet saut               (4)
  LEAX  D,X            ;adresse courante dans écran      (8)
VIDEO3
  CMPX  #$1F40         ;test de fin ecran (TO:$5F40)     (4)
  BGE   VIDEO5         ;retour debut ecran               (3)
VIDEO4
  CMPD  #$0000         ;temporisation                    (5)
  BRA   VIDEO6         ;lire et afficher un octet        (3)            
VIDEO5
  LEAX  -$1F40,X       ;retour en debut ecran            (8)
VIDEO6
  LDB   <$FF           ;lecture octet forme              (4)
  STB   ,X             ;affichage octet forme            (4)
  LEAY  -1,Y           ;decrementation compteur          (5)
  BNE   VIDEO2         ;nouveau goupe de trois octets    (3) 

; deux octets de fin de bloc
VIDEO7
  LDB   <$FF           ;lecture octet son                (4)
  STB   <$CD           ;envoi echantillon                (4)
  LDB   <$FF           ;lecture octet non significatif   (4)
  BEQ   FIN            ;fin du fichier video             (3) 
  CMPX  D,X            ;temporisation                   (10)
  CMPX  D,X            ;temporisation                   (10)
  CMPX  A,X            ;temporisation                    (7)
  NOP                  ;temporisation                    (2)
  BRA   VIDEO1         ;bloc suivant                     (3)

;------------------------------------------------------
; FIN de la video detectee par un octet fin de bloc $00 
; En fin de fichier l'Arduino revient au debut.
; Il faut :
; - attendre l'octet de synchro $FE en fin du 1er bloc
; - sauter le bloc contenant le programme
; - recommencer la lecture de la video
;------------------------------------------------------
FIN
  LDA   <$FF           ;lecture d'un octet   
  CMPA  #$FE           ;valeur octet synchro
  BNE   FIN            ;attente octet synchro
  LDX   #$200          ;nombre d'octets par bloc
BLOC 
  LDA   <$FF           ;lecture d'un octet   
  LEAX  -1,X           ;decrementer indice dans le bloc
  BNE   BLOC           ;lecture octet suivant du bloc
  BRA   VIDEO          ;recommencer la lecture

;------------------------------------------------------
; Complement a zero pour que la taille du programme
; soit exactement 512 octets (1 bloc de la carte SD)
;------------------------------------------------------
  ORG   $91FF
  FCB   $00

  END

Je n'ai pas beaucoup d'expérience en traitement des images et en compression vidéo, je suis persuadé qu'un bon spécialiste peut faire beaucoup mieux. On pourrait presque rêver d'images en couleur, pourquoi pas...
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par __sam__ »

Les réseaux de neurones utilisés par NVidia servent à faire de l'interpolation de pixels pour augmenter artificiellement la résolution, et donc la puissance de calcul, de leur carte. En gros ils calculent l'image 3D en 1 ou 2k et l'interpolent à 4k en inventant les pixels manquants ce qui est plus rapide que faire tourner les puces 3D sur 2x plus de pixels.

Le principe de l'interpolation de pixel (sans neurones) est très fréquente (SAI/Eagle/HQx) dans les émulateurs de vielles machines pour étendre le 320x200 aux TV-HD modernes en évitant le crénelage.

Je ne suis pas certain que ca marcherait pour l’occurrence dans la mesure où ici on a bien tous les pixels de l'écran Thomson. A la limite, peut-être que si la TV est suffisamment moderne pour avoir ces filtres de pré-traitement pour "upscaler" l'image 320x200 à la taille réelle de la dalle on aurait l'impression d'une amélioration. Mais ca ne concerne pas vraiment le thomson.
Image

En fait plus que la résolution, ce qui compte c'est la fluidité de l'animation à mon avis.
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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Faire de la bonne musique avec SDSTREAM est nettement plus facile que faire de la bonne vidéo.

Lors des premiers tests j'ai réussi à jouer à 90900 échantillons par seconde. C'est une fréquence d'échantillonnage pas très éloignée de celle utilisée par les professionnels. J'ai trouvé qu'elle n'était pas vraiment nécessaire avec un ordinateur Thomson, qui n'a rien d'une chaîne haute fidélité. Je suis revenu à la qualité CD, c'est à dire 44100 échantillons par seconde. Le programme est ralenti par des temporisations.

Code : Tout sélectionner

 SETLI 132
;**************************************************;
;           S D S T R E A M _ M U S I C            ; 
;           (c) 2020 - Daniel Coulom               ;  
;           http://dcmoto.free.fr/                 ;
;           http://forum.system-cfg.com/           ;
;--------------------------------------------------;
; Ce code est distribue gratuitement dans l'espoir ;
; qu'il sera utile, mais sans aucune  garantie  et ;
; sans  engager  la  responsabilité  de  l'auteur. ;
; Vous  pouvez  l' utiliser,  le  modifier  et  le ;
; diffuser librement, en conservant cette  licence ;
; et les références de l'auteur dans   toutes  les ;
; copies. L'exploitation commerciale est interdite.;
;**************************************************;

; Ce programme utilise le module SDTREAM
; pour jouer de la musique en streaming.
; - affichage d'un ecran de presentation
; - envoi sur le CNA de musique 6 bits

;**************************************************;
;                Version 2020.04.23                ;
;**************************************************;
; Historique
; 2020.04.23 ecran initialise par programme de boot
; 2020.02.12 boucle en fin de fichier (octet $FF)
; 2020.02.12 affichage image de presentation
; 2020.02.12 suppression synchronisation sur $FE
; 2020.02.08 version compatible arduino 8MHz
; 2020.02.08 synchronisation sur octet $FE
; 2020.02.07 lecture des octets deux par deux
; 2020.02.01 version definitive a 44100 Hz
; 2020.01.31 detection ordinateur TO ou MO
; 2020.01.31 ajout adresse et longueur pour loader
; 2020.01.29 nouvelle version a 90909 Hz
; 2020.01.26 nouvelle version a 48000 Hz
; 2020.01.25 nouvelle version a 44100 Hz
; 2020.01.24 premiere version pour tester SDTREAM


;------------------------------------------------------
; Detection du type d'ordinateur MO ou TO
;------------------------------------------------------
  ORG   $9000 
  ORCC  #$50          ;desactive les interruptions
  LDA   >$FFF2        ;$FFF2: $F0(MO) et $70(TO)
  BPL   INIT3         ;TO detecte

;------------------------------------------------------
; Initialisations communes MO5-MO6 
;------------------------------------------------------
INIT1
  LDA   #$A7          ;valeur de DP pour ordinateur MO
  TFR   A,DP          ;initialisation DP
  LDA   >$FFF0        ;type d'ordinateur
  BEQ   INIT8         ;MO5   

;------------------------------------------------------
; Initialisations MO6 
; Attention aux differences PIA systeme MO5 et MO6
;------------------------------------------------------
INIT2
  LDA   <$C0          ;PIA systeme 
  ANDA  #$FB          ;clear mute bit 
  STA   <$C0          ;modification PIA
  BRA   INIT8         ;suite des initialisations

;------------------------------------------------------
; Initialisations TO 
;------------------------------------------------------
INIT3
  LDA   #$E7          ;valeur de DP pour ordinateur TO
  TFR   A,DP          ;initialisation DP
  LDY   #$4000        ;adresse debut ecran
  STY   DISPLAY+1     ;initialisation adresse ecran

;------------------------------------------------------
; Initialisation CNA en sortie 
;------------------------------------------------------
INIT8
  LDA   <$CF          ;lecture registre de controle B
  ANDA  #$FB          ;raz bit 2 
  STA   <$CF          ;selection DDRB
  LDB   #$3F          ;set bits 0-5 
  STB   <$CD          ;bits CNA en sortie
  ORA   #$04          ;set b2
  STA   <$CF          ;selection PB

;------------------------------------------------------
; Affichage de l'image
;------------------------------------------------------
DISPLAY
  LDU   #$0000        ;adresse memoire video
  LDX   #$2000        ;nombre d'octets a lire
DISPL2
  LDA   <$FF          ;(4) lecture d'un octet
  STA   ,U+           ;(6) affichage       
  LEAX  -1,X          ;(5) decrementation compteur 
  BNE   DISPL2        ;(3) lecture octet suivant

;------------------------------------------------------
; Boucle de lecture (23 cycles --> 44100 Hz)
; Ancien programme : 19 cycles entre deux lectures
; Nouveau programme : 4 cycles et 34 cycles
; Donc 34 cycles au changement de bloc
; au lieu de 19 pour le premier programme, 
;------------------------------------------------------
PLAY
; ancien programme
; LDA   <$FF           (4)
; STA   <$CD           (4)
; BSR   TEMPO         (12)
; BRA   PLAY           (3)

; nouveau programme
  LDA   <$FF           (4)
  STA   <$CD           (4)
  LDA   <$FF           (4)
  BMI   FIN            (3)
  BSR   TEMPO         (12)
  STA   <$CD           (4)
  BSR   TEMPO         (12)
  BRA   PLAY           (3)

;------------------------------------------------------
; Temporisation
;------------------------------------------------------
TEMPO
  RTS

;------------------------------------------------------
; FIN de la musique detectee par un octet $FF
; En fin de fichier l'Arduino revient au debut.
; Il faut :
; - attendre l'octet de synchro $FE en fin du 1er bloc
; - sauter le bloc contenant le programme
; - sauter les 16 blocs contenant l'image
; - recommencer la lecture de la musique
;------------------------------------------------------
FIN
  LDA   <$FF           ;lecture d'un octet   
  CMPA  #$FE           ;valeur octet synchro
  BNE   FIN            ;attente octet synchro
  LDY   #$0011         ;nombre de blocs a ignorer (17)
BLOC  
  LDX   #$200          ;nombre d'octets par bloc
BLOC1
  LDA   <$FF           ;lecture d'un octet   
  LEAX  -1,X           ;decrementer indice dans le bloc
  BNE   BLOC1          ;lecture octet suivant du bloc
  LEAY  -1,Y           ;decrementer le nombre de blocs
  BNE   BLOC           ;nouvelle lecture de bloc 
  BRA   PLAY           ;recommencer la lecture

;------------------------------------------------------
; Complement a zero pour que la taille du programme
; soit exactement 512 octets (1 bloc de la carte SD)
;------------------------------------------------------
  ORG   $91FF
  FCB   $00
   
  END

Voici un petit exemple de ce que l'on obtient. Notez que l'utilisation de l'émulateur dcmoto diminue la qualité, car il joue le son à la fréquence de 25000 échantillons par seconde. Le résultat est meilleur avec un vrai Thomson.

Lien provisoire (disparaîtra 30 jours après le dernier téléchargement) : http://dl.free.fr/fn0yUUoUS

01.png
01.png (1.05 Kio) Consulté 7003 fois
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
jice
Messages : 213
Inscription : 21 avr. 2014 15:08
Localisation : Madrid

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par jice »

impressionné par la qualité de la vidéo et surtout de la musique !!! bravo Daniel ! :)
MO5 - MO5 Platini - TO7 - TO7/70 - TO8 - TO9+
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par jasz »

Incroyable! :shock: Qui aurait pu imaginer à l'époque obtenir un son d'une si grand qualité

Très bon travail Daniel 8)
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Bonsoir,

J'ai fait quelques essais de musique grâce aux conseils de Daniel!

Voici le fichier SDSTREAM et le mp3 original (libre de droits) pour comparaison.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Avec un échantillon sur 6 bits il n'y a que 64 valeurs différentes, ce qui est peu par rapport aux 65536 valeurs des échantillons 16 bits. Les arrondis à la valeur entière la plus proche produisent un bruit de fond d'amplitude 1. Ce bruit de fond est négligeable pour un signal d'amplitude 64, par contre il devient nettement audible pour de faibles amplitudes de l'ordre de 8 ou 10. C'est pourquoi il est important de partir d'une amplitude la plus forte possible, à la limite de la saturation, avant de convertir les échantillons sur 6 bits.

J'ai refait le fichier piano.sds avec une amplitude plus forte. Lien provisoire (30 jours) : http://dl.free.fr/qsIa8JMwh

On peut encore améliorer la qualité en partant d'un fichier .wav (sans pertes). La compression au format mp3 introduit des distorsions audibles par les oreilles sensibles. A mon âge je ne les perçois pas, par contre mes enfants musiciens ne les supportent pas.

Si d'autres utilisateurs de SDSTREAM sont intéressés, je mets ici la procédure de création d'un fichier de musique :
sdstream_music_doc.zip
(1.6 Kio) Téléchargé 181 fois
Daniel
L'obstacle augmente mon ardeur.
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Ok je vois l'idée. J'avais déjà multiplié l'amplitude du fichier par 2 avant de le convertir mais en effet on peut pousser plus fort, ça rend pas terrible sur le PC mais ça sature beaucoup moins sur le Thomson bizarrement et en effet le son est globalement plus fort et aussi moins bruité dans les faibles volumes pour le coup. Le piano n'est pas forcément un candidat idéal pour cet exercice (fortes variations de niveau sonore, ceux qui ont déjà écouté de la musique classique en voiture savent de quoi je parle lol). Je vais essayer avec d'autres styles de musique pour voir :wink:

Pour l'opération que tu réalises pour le passage de 8 à 6 bits je crois que je commence à comprendre le cheminement : l'amplification à 25% j'avais à peu près compris car il y a 256 valeurs de niveau sonore en 8 bits et seulement 64 (4 fois moins) en 6 bits, l'offset (-75%) je pigeais pas trop au début mais en fait ça sert à mettre tout le son dans "le quart" du bas, le fichier est toujours en 8 bits mais tout le son se retrouve dans les 6 bits utiles du coup, c'est bien ça ?

J'ai noté aussi une très légère différence de pitch sur le Thomson par rapport au PC, comme si le morceau était transposé un demi ton en dessous...
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Oui, c'est bien ça. Et il est vrai que la fréquence d'échantillonnage de 44100 Hz n'est pas bien respectée sur Thomson : dans la boucle de lecture il y a 23 cycles entre deux échantillons, soit une fréquence de 43478 Hz. C'est trop grave. Je pourrais prendre 22 cycles par échantillon, ce qui donne une fréquence de 45455 Hz, mais c'est trop aigu.

Il y a une solution : sur PC transformer le fichier original de 44100 Hz en 43478 Hz avant de le convertir en 6 bits. La tonalité sera respectée. Je vais refaire le fichier .sds et je le posterai ici.
Daniel
L'obstacle augmente mon ardeur.
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Oui pourquoi pas essayer, après y a pas un risque de perte énorme de qualité à passer de 44100 à 43478 car les valeurs sont très proches, on est très loin d'un multiple de la fréquence d'origine ?
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

En attendant un deuxième essai mieux réussi je trouve, le rock s'y prête mieux aussi :wink:

fichier SDSTREAM (durée 31mn avec un échantillonage réduit à 31250 Hz soit 57Mo désormais)
Dernière modification par tjjq44 le 30 août 2020 15:12, modifié 1 fois.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par __sam__ »

Daniel a écrit : 30 août 2020 08:29 Ce bruit de fond est négligeable pour un signal d'amplitude 64, par contre il devient nettement audible pour de faibles amplitudes de l'ordre de 8 ou 10. C'est pourquoi il est important de partir d'une amplitude la plus forte possible, à la limite de la saturation, avant de convertir les échantillons sur 6 bits.
Moi j'utilise un correcteur automatique de gain que je plafonne à x12 max avec un réglage fin de la dynamique (pour qu'il ne monte pas trop vite ou trop lentement j'ai fixé tau à 5s), et les résultats son(t) pas mal.
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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

La correction automatique de gain permet d'avoir le meilleur son possible. Les mélomanes objecteront qu'elle supprime la dynamique, mais avec 6 bits il est difficile de la rendre correctement. Entre deux maux (bruit de fond ou compression) il faut choisir le moindre. Tout dépend du genre de musique.

Pour revenir au décalage d'un demi-ton, puisqu'il faut changer de fréquence d'échantillonnage, autant prendre une valeur entière pour éviter les arrondis. J'ai modifié le programme pour avoir 20 cycles entre deux échantillons et jouer à 50000 échantillons par seconde. Le changement de fréquence est effectué par le programme d'édition audio sur les échantillons 16 bits, avec des méthodes sophistiquées qui garantissent un bon résultat. Les techniques (paramétrables) de diffusion d'erreur font un bon travail, et de toutes façons d'éventuelles imperfections passent inaperçues après la conversion en 6 bits. Voici le résultat (lien provisoire 30 jours) : http://dl.free.fr/qlXDb35F4

Nouvelle procédure de création du fichier .sds :
sdstream_music_doc.zip
(1.77 Kio) Téléchargé 167 fois

Ci-dessous la boucle principale du player, qui montre la simplicité d'utilisation de SDSTREAM. Aussi simple que la lecture de la RAM.

Code : Tout sélectionner

;------------------------------------------------------
; Boucle de lecture
; 20 cycles entre deux echantillons (50000/seconde)
; 28 cycles disponibles pour changer 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 
  BRN   PLAY           (3) temporisation 
  BRN   PLAY           (3) temporisation 
  BRN   PLAY           (3) temporisation 
  STA   <$CD           (4) joue echantillon
  BRN   PLAY           (3) temporisation 
  BRN   PLAY           (3) temporisation 
  BRN   PLAY           (3) temporisation 
  BRA   PLAY           (3) nouvelle boucle

Daniel
L'obstacle augmente mon ardeur.
Répondre