MSX Village forum

La Place des Développeurs pcmenc (Artrag)

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/03/2022 à 13h40
La question est sans doute destinée à AOINEKO qui à utilisé cet outil ...

J'ai l'impression que pcmenc.exe converti les samples toujours vers du 11Khz.
J'ai testé des fichiers en 44K, il les samples à 11K, des fichiers en 8K il me les mets aussi en 11K.

Je n'ai pas trouvé le moyen d'utiliser l'outil pour créer des fichiers à d'autres taux d'échantillonnage.
L'option -E ne semble pas implémentée.

Une idée ? Ou j'ai loupé un truc ? :hum


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 19/03/2022 à 16h57
De ce que j'ai pu tester, la fréquence du fichier à encoder n'a pas d'importance (autre que qualitatif). C'est les paramètres en ligne qu'on donne au tool qui détermine la fréquence finale.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/03/2022 à 17h30
Oui, mais les paramètres sont loin d'êtres clair !
Il y a des exemples donnés dans le code source du replayer, mais j'y entrave que dalle perso !

Sans aucun parametres ça resample toujours à 11Khz

D'autre part, les fichiers sont assez gros au final.
Sur mon projet en cours, j'avais fait tous mes samples en 8Bits 16Khz format RAW pour jouer ça sur un covox.

mon fichier de base .wav faisait 185 Ko
En 8bits Raw échantillonné à 16Khz le fichier ne faisait plus que 17Ko
avec pcmenc, échantillonné à 11Khz le fichier fait 14Ko
échantillonné à 22Khz il fait 15Ko.

On gagne un peu, et plus besoin de cocox, c'est un avantage, pour une qualité sonore somme toute quasi identique.

Maintenant, faut que je vois si on peut faire la même chose mais en lisant le sample depuis la VRAM ! Edité par ericb59 Le 19/03/2022 à 17h30


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 19/03/2022 à 18h05
Voici le code que j'utilise pour créer les sons de mon sample PCMEnc :
Code BASH :
 
::-- Build pcmenc data --
if not exist %Dest%\pcm md %Dest%\pcm
:: 8 KHz
for %%I in (pcm\*.wav) do %Tools%\audio\pcmenc\pcmenc.exe -dt1 31 -dt2 27 -dt3 388 %%I
move pcm\*.bin pcm\8K
for %%I in (pcm\8K\*.bin) do %CMSXtk%\CMSXbin.exe %%I -ad -o %Dest%\pcm\pcm_8k_%%~nI.h
:: 11 KHz
for %%I in (pcm\*.wav) do %Tools%\audio\pcmenc\pcmenc.exe -dt1 32 -dt2 27 -dt3 265 %%I
move pcm\*.bin pcm\11K
for %%I in (pcm\11K\*.bin) do %CMSXtk%\CMSXbin.exe %%I -ad -o %Dest%\pcm\pcm_11k_%%~nI.h
:: 22 KHz
for %%I in (pcm\*.wav) do %Tools%\audio\pcmenc\pcmenc.exe -rto 2 -dt1 156 -dt2 27 -dt3 141 %%I
move pcm\*.bin pcm\22K
for %%I in (pcm\22K\*.bin) do %CMSXtk%\CMSXbin.exe %%I -ad -o %Dest%\pcm\pcm_22k_%%~nI.h
:: 44 KHz
for %%I in (pcm\*.wav) do %Tools%\audio\pcmenc\pcmenc.exe -p 1 -rto 3 -dt1 73 -dt2 84 -dt3 87 %%I
move pcm\*.bin pcm\44K
for %%I in (pcm\44K\*.bin) do %CMSXtk%\CMSXbin.exe %%I -ad -o %Dest%\pcm\pcm_44k_%%~nI.h
 


Après, c'est normal que ça fasse de gros fichiers. Même 8 KHz, ça fait 160 données par frame (à 50 Hz) sur 3 canaux.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 20/03/2022 à 09h37
Bon je m'aperçois que ça joue mal quand on est sous DOS ! Merdouille !
Pour toi aussi ?


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 20/03/2022 à 10h41
J'ai pas testé je crois. Je vais regarder...


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 20/03/2022 à 10h57
Je te confirme que ça ne marche pas bien sous MSX-DOS.
Même en désactivant les interruptions.
Je vais investiguer... :hum


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 20/03/2022 à 11h33
Et bien... j'ai pas trouvé :gne

C'est comme s'il y avait qq chose qui interrompe le déroulement du playback du son, même quand les interruptions sont désactiver. Bizarre.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 20/03/2022 à 18h06
Oui, un peu comme si il y avait une autre interruption quelque part ?

Dans ma routine ASM pour le COVOX, ca marche sous DOS ou pour ROM.

Moi je pense que c'est parceque c'est pas le même timing de playback sous DOS.
J'ai remarqué en faisant des tests de vitesses sur certaines routines, que sous DOS elles sont plus lentes que sur ROM. Ca m'étonnerai pas que le timing de playback doivent être modifié pour le DOS.


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 20/03/2022 à 19h58
Je vois aucune raison que du code assembleur n'ai pas le même timing en ROM ou en DOS. Le CPU va à la même vitesse donc le code aussi.
Je penche pour une bug d'initialisation. Je vais creuser.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 21/03/2022 à 18h21
J'ai demandé à Arturo.

En fait il faut réinitialiser le PSG pour le DOS
Code ASM :
 
   RESET_PSG:
        xor     a
        ld      bc,#0xffa1
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        inc     a
        out     (c),b
        out     (#0xa0),a
        ld      b,#0xbf
        out     (c),b
 


Et il me confirme que oui, il faut désactiver les interruptions pour correctement jouer les samples. Edité par ericb59 Le 21/03/2022 à 18h22


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 21/03/2022 à 18h31
Ok, je vais corrigé aussi de mon coté. Merci :top


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 24/03/2022 à 08h13
aoineko, j'ai un petit service à te demander.
Est-ce que tu arrive à compiler l'encoder de Artrag ? pcmenc.cpp sans erreurs ?

De mon coté sur Mac, il se compile avec des Warning, semble fonctionner, mais il refuse de charger les fichiers WAV en indiquant que mes wav sont incompatibles car pas en 8,16, 32 bits
Si j'arrive à corriger cette problème, il me fait des segmentation fault lors du resampling du fichier.

De mon coté j'utilise gcc 13.1.6
Et j'ai utilisé les paramètres de compilation indiqués dans le fichier readme


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2907

Le 24/03/2022 à 09h23
Je n'ai pas essayé. J'utilise la version Windows fourni.

readme.txt :
The encoder is only tested on little endian machines but is prepared to be compiled on big endian machines as well.


A priori le logiciel n'a jamais été testé sur un système big-endian, donc ni sur Linux, ni sur MacOS.


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 24/03/2022 à 10h27
bôa, Mac Intel et Mac M1 sont en little-Endian.
Le Big-Endian sur Mac ca date du temps des processeurs Motorola du siècle dernier.


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie