Modérateurs: Modération Forum Installations, Modération Forum Haute-Fidélité, Modération Forum Univers Casques, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 90 invités

Toutes les solutions de traitement du signal : différentes méthodes, matériel et logiciel, mise en œuvre...

Convolution via MinimServer : simple, efficace, faible CPU

Message » 22 Mai 2020 21:49

Hello,

Je trouve bizarre qu'il n'y a pas de sujet parlant de MnimServer dans cette partie du forum. Donc le voici.
(je paraphrase mes qq posts récents sur le forum Minim, pour ceux qui n'ont pas l'occasion d'y trainer)

MinimServer est un serveur audio bien connu.=> https://minimserver.com/
Simple. Fiable.
Il peut être installé sur quasi toutes les machines (ordi, NAS, etc).
Il est très peu gourmand en ressource donc fonctionne aussi bien sur un ordi dopé aux hormones que sur une vieille brouette.

MinimStreamer, extension optionnelle pour MinimServer, permet donc de faire de la convolution (entre autres choses comme le transcodage etc...).

Pour faire que MnimStreamer traite un fichier de convolution .wav, il suffit de rentrer les bonnes infos dans l'onglet "System" (MinimWatch > Properties)

Je vais prendre mon cas comme exemple.
Dans la case stream.options, j'ai mis la ligne de commande (l'expression en gras ci-dessous est 1 seule commande, la mise en forme ici en 2 ligne peut prêter à confusion, il y a juste 1 espace entre -lavfi et "apad) :
convOut=-i /volume2/Data/Convol/impulse47gS*.wav -lavfi "apad=pad_len=524288,afir=gtype=gn,atrim=start_sample=524288"

Explication pour ceux à qui cette ligne ne leur parle pas du tout :-) :

1. dans cet exemple : les fichiers .wav sont dans le dossier => /volume2/Data/Convol/

2. les fichiers de convolution issus de rePhase se nomment : impulse47gS44.wav (fichier 64b/44kHz), impulse47gS48.wav (fichier 64b/48kHz), impulse47gS88.wav (fichier 64b/88kHz), etc... un par sample rate. Notez que le "S" suivi du sample rate doit être systématique en fin du nom du fichier.
MinimStreamer utilisera le fichier .wav 44kHz pour coller à un morceau en 44kHz etc...
Pour ce faire, le ligne de commande indique, avec l'astérisque dans impulse47gS*.wav à MinimStreamer de choisir le fichier de convolution correspondant au fichier à lire.

3. la 2e partie de la ligne de commande => -lavfi "apad=pad_len=524288,afir=gtype=gn,atrim=start_sample=524288"
Là est le truc pour faire de la convolution, avec un très faible délai au lancement de la lecture, et sans problème de gap ; 2 soucis souvent inhérents à l'intégration d'un fichier de convolution.
Dans cet exemple, Il convient juste de mettre 2 fois le même nombre (524288 ici), au bon endroit.
Ce nombre est égal à 0.5*(nombre de taps du fichier de convolution), soit ici, un fichier de convol avec un nb de taps = 1 048 576 (avec FFT = 2 097 152, pour info).


FFmpeg
MinimStreamer utilise ffmpeg pour traiter la convolution.
Si Minim est installé sur un ordi, télécharger ffmpeg là => https://www.ffmpeg.org/download.html

Si Minim est installé sur un NAS Synology (Qnap etc j'en parle pas car ne connait pas), il se peut que la version de ffmpeg installée par défaut (version basique d'après ce que j'ai pu lire) suffise et marche.
Ce n'était pas mon cas (sur un DS415+), car la ligne de commande de convolution vue avant se mettait en rouge en appuyant sur "apply".
J'ai résolu le problème en installant le dernière version de FFmpeg.
Choisir la version qui correspond au processeur de son NAS,
dispo là => https://synocommunity.com/package/ffmpeg (ce site est parfois injoignable... retentez plus tard...)
ou là => https://github.com/th0ma7/synology/tree/master/packages

On indique à MinimStreamer le chemin pointant le fichier ffmpeg.exe (cas d'un PC) ou ffmpeg (cas Syno) dans la case stream.converter de l'onglet "System".
Exemple donc sur un Syno, après avoir installé la version complète de ffmpeg, j'ai mis dans la case stream.converter la ligne suivante :
/var/packages/ffmpeg/target/bin/ffmpeg
(pas facile à trouver... ne maîtrisant pas les fichiers système du Syno j'ai dû farfouiller...)


Transcodage :
Si besoin, MinimStreamer peut, en sus de la convolution, envoyer un fichier transcodé au lecteur.
Il suffit de mettre la ligne de commande qui convient dans la case stream.transcode.
Ex, je transcode les flac / dsf / aac & mp4 en .wav 24-192. Pour ce faire, la ligne de commande (assez parlante) est la suivante :
flac:wav24;192,dsf:wav24;192,aac:wav24;192,mp4:wav24;192


CPU & RAM lié à la convolution avec Minim : quasi rien (ou presque... et à tester).
65Mo de RAM lié à ffmpeg (dixit mon NAS)
CPU : mon DS415+ utilise 3% de CPU pour ce process;
Seulement 3% sachant que le fichier de convol utilisé est assez gros car avec 1048576taps !!!
Le processeur du 415+ est un 4coeurs @ 2.4GHz, donc un peu plus rapide que la moyenne, mais avec CPU=3%, je pense qu'il y a de la marge pour ca marche sans souci sur la 1ère brouette venue.
Néanmoins, nuance ! =>
3%, c'est le process en cours de lecture.
La ligne de commande vue plus haut, permettant de gérer la transition gapless nécessite davantage de CPU sur une fraction de seconde lors de la transition entre 2 morceaux et touche 7% parfois. Donc, gapless+convolution, sur une brouette, avec un fichier de convol avec 1048576taps : à tester, mais ca devrait passer...

Cdt
phile
 
Messages: 1986
Inscription Forum: 12 Nov 2015 12:32
  • offline

Message » 24 Mai 2020 20:20

Merci pour ton partage d'expérience.

Actuellement j'utilise Runeaudio qui me donne entièrement satisfaction mais n'accepte qu'un format fixe pour la convultion et avec 132000 taps à 88,2kHz j'en suis à 60% de CPU sur mon RPI3b. Bon après le son est top.

Mais je vais quand-même regarder Mimserver de près...

La configuration dans mon profil


JVC x7900 - Cinescreen ALR 1.1 - ShieldTV 2019 - Panasonic UB820 tweaké - Onkyo TX-SR876 - Streamer LMSpiCore/Pi4 - MiniDSP Flex Digital - Rega Planar 1+/Ortofon 2MR Blue - Genelec 6040R/8340A - Focal IW-106 x 3 - XTZ 12.17
cocogex
Membre HCFR
Membre HCFR
 
Messages: 589
Inscription Forum: 17 Juil 2005 9:59
Localisation: Haute-Savoie
  • offline

Message » 27 Déc 2020 10:55

@phile: je viens de découvrir ton post sur l'autre fil sur BubbleUpnP et Minimserver... Il va falloir que je relise le tout, bien calmement, je ne suis qu'un "utilisateur basique".
En tous cas, ça me semble très intéressant...
Sinon, première question: tu parles de fichiers en .wav, mais qu'en est-il des .flac? Faut-il les transcoder en premier, ou simplement remplacer .wav par .flac dans le "ligne de commande"?
Merci
Cordialement, François

La configuration dans mon profil


rien, c'est rien, trois fois rien, c'est déjà quelque chose...
françois/ EAR
Membre HCFR
Membre HCFR
 
Messages: 471
Inscription Forum: 03 Jan 2003 13:21
Localisation: Sud Ardèche
  • offline

Message » 27 Déc 2020 10:56

:hehe:
doublon suite à "erreur réseau"... Je l'ai dit, je suis un utilisateur basique....... :siffle:

La configuration dans mon profil


rien, c'est rien, trois fois rien, c'est déjà quelque chose...
françois/ EAR
Membre HCFR
Membre HCFR
 
Messages: 471
Inscription Forum: 03 Jan 2003 13:21
Localisation: Sud Ardèche
  • offline

Message » 27 Déc 2020 11:26

hello François,
françois/ EAR a écrit:Sinon, première question: tu parles de fichiers en .wav, mais qu'en est-il des .flac? Faut-il les transcoder en premier, ou simplement remplacer .wav par .flac dans le "ligne de commande"?

ou là !! Je ne sais pas moi :mdr:

je parle de wav parce que dans la ligne de commande "transcode", je transcode tout en wav
ensuite, dans la ligne "stream.option", qui permet de faire convolution, j'utilise le fichier de convolution sorti par rePhase, c'est un fichier wav.

sur ce... Minim se débrouille... et .... miracle : il transcode et faire convolution et le lecteur affiche "wav 24/192" donc ca roule.

moi aussi je suis utilisateur basique : je remplis les cases comme le Mr Minim il a dit... ca marche... ouf ! :bravo:

Plusi sérieusement, on peut penser qu'il fait transcoding en wav, et ensuite utilise le fichier wav pour le triturer avec le fichier wav servant à la convolution. Mais bon là faudrait demander à Simon (le développeur de Minim) comment ca marche (pas sûr qu'il dévoile son secret :mdr: )
Cdt
phile
 
Messages: 1986
Inscription Forum: 12 Nov 2015 12:32
  • offline

Message » 31 Déc 2020 18:39

Bonsoir,

je poursuis mes investigations commencées dans le post source-dematerialisee-haute-fidelite-et-dac/audio-demat-bubbleupnp-et-minimserver-top-of-the-art-t30110973-15.html afin de ne pas polluer ce post qui est plus général et n'intéresse peut-être pas ceux qui ne pratiquent pas la convolution avec MinimServer.

Pour rappel je fais tourner MinimServer sur un Rpi4 avec BubbleUpnp comme appli de contrôle et Runeaudio comme Renderer installé sur un Rpi3.

Mes paramètres au niveau Streamer sont les suivants :
- stream.converter : ffmpeg
- stream.options : convOut=-i /home/pi/Convolution/impulseS352.wav -lavfi "apad=pad_len=65536,afir=gtype=gn,atrim=start_sample=65536,aresample=resampler=soxr:precision=33:cheby=1:dither_method=triangular"
- stream.transcode : flac:wav24;352, dsf:wav24;352, aac:wav24;352, mp4:wav24;352, wav:wav24;352, mp3:wav24;352

Mon fichier de convolution a été généré depuis RePhase en format 64 bits IEE mono (.wav) / 352.8kHz avec 131072 taps.

J'ai essayé plusieurs formats de fichiers de convolution en sortie de Rephase et j'ai 2 problèmes :

1) un blanc entre les morceaux alors que mon Renderer est gapless
2) lorsque j'avance au milieu d'un morceau avec BubbleUpnP, le reste du morceau est joué en vitesse ultra rapide

J'ai remarqué que lorsque je lance la lecture du morceau (ici "Valley of the Yuccas" du groupe australien "Rufus du Sol") il y a un process ffmpeg :

Code: Tout sélectionner
ffmpeg -v 0 -analyzeduration 0 -f flac -request_sample_fmt flt -i /home/pi/Music/Live From Joshua Tree/01 Valley of the Yuccas  (Live from Joshua Tree).flac -i /home/pi/Convolution/impulseS352.wav -lavfi apad=pad_len=65536,afir=gtype=gn,atrim=start_sample=65536,aresample=resampler=soxr:precision=33:cheby=1:dither_method=triangular -vn -ar 352800 -f s24le -acodec pcm_s24le -sample_fmt s32 pipe:


Il prend seulement 13% de CPU ce qui est une prouesse sur un simple Raspberry 4 compte-tenu des paramètres d'upsampling et de convolution !

En revanche si je me déplace au milieu du morceau j'ai 2 process ffmpeg (toujours sur le même fichier audio) dont l'un a des paramètres "-ss 171.995" et "-ss 1.000" et qui prend 25% de CPU :

Code: Tout sélectionner
ffmpeg -v 0 -analyzeduration 0 -f flac -request_sample_fmt flt -i /home/pi/Music/Live From Joshua Tree/01 Valley of the Yuccas  (Live from Joshua Tree).flac -i /home/pi/Convolution/impulseS352.wav -lavfi apad=pad_len=65536,afir=gtype=gn,atrim=start_sample=65536,aresample=resampler=soxr:precision=33:cheby=1:dither_method=triangular -vn -ar 352800 -f s24le -acodec pcm_s24le -sample_fmt s32 pipe:
ffmpeg -v 0 -analyzeduration 0 -f flac -ss 171.995 -request_sample_fmt flt -i /home/pi/Music/Live From Joshua Tree/01 Valley of the Yuccas  (Live from Joshua Tree).flac -i /home/pi/Convolution/impulseS352.wav -lavfi apad=pad_len=65536,afir=gtype=gn,atrim=start_sample=65536,aresample=resampler=soxr:precision=33:cheby=1:dither_method=triangular -vn -ss 1.000 -ar 352800 -f s24le -acodec pcm_s24le -sample_fmt s32 pipe:


Je pensais que ma carte SD était en cause, j'ai tout réinstallé sur une nouvelle mais le problème subsiste.

J'ai testé avec d'autres morceaux, d'autres formats, idem.

Je continue mes recherches...

La configuration dans mon profil


JVC x7900 - Cinescreen ALR 1.1 - ShieldTV 2019 - Panasonic UB820 tweaké - Onkyo TX-SR876 - Streamer LMSpiCore/Pi4 - MiniDSP Flex Digital - Rega Planar 1+/Ortofon 2MR Blue - Genelec 6040R/8340A - Focal IW-106 x 3 - XTZ 12.17
cocogex
Membre HCFR
Membre HCFR
 
Messages: 589
Inscription Forum: 17 Juil 2005 9:59
Localisation: Haute-Savoie
  • offline


Retourner vers Correction active et logiciels de mesure

 
  • Articles en relation
    Dernier message