Modérateurs: Staff Haute-Fidélité, Staff Univers Casques, Staff Juridique • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 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: 1530
Inscription: 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 HD1 - DVDO Iscan DUO - Oppo BDP-103EU - Onkyo TX-SR876 - HK Signature 1.3 - Accuphase C-2110 / A-46 - Teac UD501 - Raspberry Pi3 - Runeaudio - Focal 1028Be - XTZ 12.17
cocogex
Membre HCFR
Membre HCFR
 
Messages: 325
Inscription: 17 Juil 2005 9:59
Localisation: Septante-quatre
  • online


Retourner vers Correction active et logiciels de mesure

 
  • Articles en relation
    Dernier message