[Thomson] Musique et vidéo avec SDSTREAM
Modérateurs : Papy.G, fneck, Carl
[Thomson] Musique et vidéo avec SDSTREAM
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
Lien provisoire (disparaîtra un mois après le dernier téléchargement) : http://dl.free.fr/fW0aOEAen
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
Bonjour,
Ah oui ! Bravo ! Elle est bien cette vidéo.
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.
Ah oui ! Bravo ! Elle est bien cette vidéo.
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
Re: [Thomson] Musique et vidéo avec SDSTREAM
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 :
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...
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.
L'obstacle augmente mon ardeur.
-
- Messages : 7987
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson] Musique et vidéo avec SDSTREAM
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.
En fait plus que la résolution, ce qui compte c'est la fluidité de l'animation à mon avis.
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.
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
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
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.
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
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
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
impressionné par la qualité de la vidéo et surtout de la musique !!! bravo Daniel !
MO5 - MO5 Platini - TO7 - TO7/70 - TO8 - TO9+
Re: [Thomson] Musique et vidéo avec SDSTREAM
Incroyable! Qui aurait pu imaginer à l'époque obtenir un son d'une si grand qualité
Très bon travail Daniel
Très bon travail Daniel
Re: [Thomson] Musique et vidéo avec SDSTREAM
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 :
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 :
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
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
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...
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...
Re: [Thomson] Musique et vidéo avec SDSTREAM
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.
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.
L'obstacle augmente mon ardeur.
Re: [Thomson] Musique et vidéo avec SDSTREAM
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 ?
Re: [Thomson] Musique et vidéo avec SDSTREAM
En attendant un deuxième essai mieux réussi je trouve, le rock s'y prête mieux aussi
fichier SDSTREAM (durée 31mn avec un échantillonage réduit à 31250 Hz soit 57Mo désormais)
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.
-
- Messages : 7987
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson] Musique et vidéo avec SDSTREAM
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.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.
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
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 :
Ci-dessous la boucle principale du player, qui montre la simplicité d'utilisation de SDSTREAM. Aussi simple que la lecture de la RAM.
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 :
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.
L'obstacle augmente mon ardeur.