Like Tree184Likes

DSD in LMS con SOX

Pagina 3 di 114
prima
1 2 3 4 5 6 7 8 9 10 11 12 13 53 103 ... ultimo
Visualizzazione dei risultati da 21 a 30 su 1134
  1. #21
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,240
    configurazione

    Predefinito

    HALT!

    ho sbagliato io, riguardando meglio il comando dovrebbe essere questo:


    codice:
    sox -t flac file.flac -t dsf -b 1 file.dsf lowpass 50k rate -v 2822400 sdm -f sdm-4
    In realtà Daphile usa la forma rate -vMn, dove v ed M sono rispettivamente la qualità e la fase, ma la n, che viene aggiunta sempre fissa, non so proprio a cosa si riferisca.
    UnixMan likes this.
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  2. #22
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,240
    configurazione

    Predefinito

    Grazie Bibo, sono già in contatto con lui da tempo, ma non mi sembra (ancora) il caso di disturbarlo, al momento, si tratta solo di provare ed il problema è solo che non sono attrezzato ed 'uso' Filipo (non me ne voglia) ed il forum per farlo per interposta persona.

    Nessuno dei punti di cui sopra rigurada il suo lavoro, è ancora SOX standard in tutto e per tutto ed il modo con cui lo usa Daphile, ma quella è più che altro una mia curiosità.

    Semmai dovessi maturare richieste o solo necessità di chiarimenti sul suo lavoro, lo contatterò certamente.

    p.s.

    Non è che ho deciso di affrontare prima SOX, anzi, sto già lavorando ad uno scheletro di applicazione per HQPSqueeze, ma mi devo attrezzare con le componenti necessarie, altrimenti non riesco a provare nulla. Al momento ho un filtro che 'ascolta' Squeezelite da STDIN e scrive su file, da passare a HQP impartendo il comando di add e start.

    Secondo me funziona già così, ma la versione definitiva sarà con uno stream come richieso da Jussi ed invierà in automatico i comandi, devo però realizzare il server di streaming ed integrare il 'motore' di HQPCommand, cosa non banale, dato che non riesco ad usare le stesse librerie in C e non C++ fuori da QT.

    Servono tempo e risorse...
    UnixMan likes this.
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  3. #23
    tebibyte L'avatar di UnixMan
    Registrato
    Sep 2013
    Messaggi
    2,509
    configurazione

    Predefinito

    Originariamente inviato da marcoc1712
    Non credo, -1 o -2 sono opzionali, con default = -2.
    acc, hai ragione. Ieri sera dovevo essere proprio cotto...

    Originariamente inviato da marcoc1712
    ho sbagliato io, riguardando meglio il comando dovrebbe essere questo:
    codice:
    sox -t flac file.flac -t dsf -b 1 file.dsf lowpass 50k rate -v 2822400 sdm -f sdm-4
    ...sì, ero decisamente cotto.

    Non esistendo un "effetto" che si chiama "sdm-4", sox interpretava "sdm-4" come un parametro dell'effetto precedente nella catena (in quel caso lowpass), e quindi indicava un errore lì.

    BTW: sei sicuro dell'ordine degli "effetti"? il filtro passa-basso (lowpass) lo mettono prima o dopo l'upsampling (rate)?

    (posto che effettivamente sia utile metterlo, in effetti forse ha più senso prima: dopo un filtro p/b c'è già, come parte integrante del processo di upsampling. La sua banda passante è configurabile con il parametro "-b" di "rate").

    Originariamente inviato da marcoc1712
    In realtà Daphile usa la forma rate -vMn, dove v ed M sono rispettivamente la qualità e la fase, ma la n, che viene aggiunta sempre fissa, non so proprio a cosa si riferisca.
    neanche io. Nella versione di sox cho ho (che non è quella di Måns) una opzione "-n" per "rate" non esiste.

    Più tardi proverò a compilarla ed a fare qualche prova anche io...
    antonellocaroli likes this.
    Ciao, Paolo.

    «Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»

  4. #24
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,240
    configurazione

    Predefinito

    Originariamente inviato da UnixMan
    acc, hai ragione. Ieri sera dovevo essere proprio cotto...


    ...sì, ero decisamente cotto.

    Non esistendo un "effetto" che si chiama "sdm-4", sox interpretava "sdm-4" come un parametro dell'effetto precedente nella catena (in quel caso lowpass), e quindi indicava un errore lì.

    BTW: sei sicuro dell'ordine degli "effetti"? il filtro passa-basso (lowpass) lo mettono prima o dopo l'upsampling (rate)?

    (posto che effettivamente sia utile metterlo, in effetti forse ha più senso prima: dopo un filtro p/b c'è già, come parte integrante del processo di upsampling. La sua banda passante è configurabile con il parametro "-b" di "rate").


    neanche io. Nella versione di sox cho ho (che non è quella di Måns) una opzione "-n" per "rate" non esiste.

    Più tardi proverò a compilarla ed a fare qualche prova anche io...
    In Daphile l'ordine è quello. Quello che mi suona più strano è che 50k corrispondono alla banda di dsd64, ma se usi 128 o 256, diventa rispettivamente 100 e 200, è giusto mantenere il filtro a 50K?

    -n, vedo se è un'aggiunta da mansur (non credo), nel qual caso chiedo.

    EDIT: l'opizone esiste già nello standard (14.4.2) e produce files diversi (almeno in pcm o flac) se usata o meno. Guardo se riesco a capire a cosa corrisponde nel codice.

    Certo che...
    Ultima modifica di marcoc1712 : 03-02-2017 a 11:58
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  5. #25
    tebibyte L'avatar di UnixMan
    Registrato
    Sep 2013
    Messaggi
    2,509
    configurazione

    Predefinito

    Originariamente inviato da UnixMan
    Più tardi proverò a compilarla ed a fare qualche prova anche io...
    che c... non compirla (o meglio, "non linka"):
    codice:
    [...]
    .libs/flac.o: In function `decoder_read_callback':
    /var/tmp/sox/src/flac.c:63: undefined reference to `lsx_error'
    collect2: error: ld returned 1 exit status
    Makefile:1280: recipe for target 'libsox_fmt_flac.la' failed
    [...]
    parrebbe esserci qualche incompatibilità con la versione di flac che c'è in Jessie (1.3.0-3). Possibile?! :o

    ...mi rispondo da solo: https://sourceforge.net/p/sox/bugs/270/

    OK, evidentemente c'è un errore nel setup del pacchetto.
    Ciao, Paolo.

    «Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»

  6. #26
    tebibyte L'avatar di UnixMan
    Registrato
    Sep 2013
    Messaggi
    2,509
    configurazione

    Predefinito

    Originariamente inviato da marcoc1712
    In Daphile l'ordine è quello. Quello che mi suona più strano è che 50k corrispondono alla banda di dsd64, ma se usi 128 o 256, diventa rispettivamente 100 e 200, è giusto mantenere il filtro a 50K?
    come dicevo, non ho ben chiaro se e quale possa essere l'utilità di aggiungere quel filtro.

    Se parliamo di conversione PCM->DSD, partendo da uno stream PCM con sample-rate inferiori a 100K, evidentemente frequenze superiori a 50K non ce ne possono essere (e non sono neanche rappresentabili). Quindi quel filtro non ha senso. Ed infatti (giustamente) se provi a mettercelo sox dà errore:
    codice:
    $ sox -V3 ZOOM0001_LR.wav -t dsf -b 1 test.dsf lowpass 50k rate -v 2822400 sdm -f sdm-4
    sox:      SoX v14.4.2
    sox INFO formats: detected file format type `wav'
    
    Input File     : 'ZOOM0001_LR.wav'
    Channels       : 2
    Sample Rate    : 44100
    Precision      : 16-bit
    Duration       : 00:00:47.19 = 2081230 samples = 3539.51 CDDA sectors
    File Size      : 8.33M
    Bit Rate       : 1.41M
    Sample Encoding: 16-bit Signed Integer PCM
    Endian Type    : little
    Reverse Nibbles: no
    Reverse Bits   : no
    
    
    Output File    : 'test.dsf'
    Channels       : 2
    Sample Rate    : 2.8224e+06
    Precision      : 1-bit
    Duration       : 00:00:47.19 = 133198720 samples ~ 3539.51 CDDA sectors
    Sample Encoding: 1-bit Direct Stream Digital
    Endian Type    : little
    Reverse Nibbles: no
    Reverse Bits   : no
    Comment        : 'Processed by SoX'
    
    sox FAIL lowpass: frequency must be less than half the sample-rate (Nyquist rate)
    Non è che per caso hai fatto confusione con le impostazioni relative all'upsampling del DSD (DSD->DSD)?

    In quel caso il filtro forse ha un senso, per "eliminare" (ridurre) il rumore fuori banda prima dell'upsampling(*).

    In caso contrario, un lowpass a 50K puoi metterlo solo se lo stream PCM di partenza ha un s/r > 100K.

    (*) personalmente proverei a "tagliare" anche molto più in basso di 50K: non solo non siamo delfini né pipistrelli ma, soprattutto, il resto della catena audio ed in modo particolare i diffusori ben difficilmente sono in grado di riprodurre correttamente frequenze oltre i 20K. Quanto meno, non molto oltre...

    BTW: se non ho capito male come funzionano le cose, internamente sox lavora -sempre- in PCM a 32bit. Quindi, anche se in ingresso gli mandi uno stream DSD, lui rappresenta ogni "campione" (bit del DSD) con 32bit! Cioè per così dire lo "converte in PCM" (uno stream PCM dove tutti i bit tranne il LSB sono sempre a 0) allo stesso s/r dello stream DSD in ingresso (...ecco perché per poter "trattare" il DSD non solo ci vuole una CPU veloce, ma anche una quantità di memoria esagerata).

    Sia nel caso di PCM->DSD che DSD->DSD il processo prevede dapprima un "normale" upsampling (PCM) fino al sample/rate desiderato in uscita (quello del DSD 64/128/256), a 32bit (!), dopo di che (con sdm) viene applicato il dithering/noise-shaping ad 1bit.
    Ciao, Paolo.

    «Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»

  7. #27
    tebibyte L'avatar di UnixMan
    Registrato
    Sep 2013
    Messaggi
    2,509
    configurazione

    Predefinito

    togliendo lowpass, funziona:
    codice:
    time sox -S -V3 ZOOM0001_LR.wav -t dsf -b 1 test.dsf rate -v 2822400 sdm -f sdm-4
    sox:      SoX v14.4.2
    sox INFO formats: detected file format type `wav'
    
    Input File     : 'ZOOM0001_LR.wav'
    Channels       : 2
    Sample Rate    : 44100
    Precision      : 16-bit
    Duration       : 00:00:47.19 = 2081230 samples = 3539.51 CDDA sectors
    File Size      : 8.33M
    Bit Rate       : 1.41M
    Sample Encoding: 16-bit Signed Integer PCM
    Endian Type    : little
    Reverse Nibbles: no
    Reverse Bits   : no
    
    sox INFO sox: Overwriting `test.dsf'
    
    Output File    : 'test.dsf'
    Channels       : 2
    Sample Rate    : 2.8224e+06
    Precision      : 1-bit
    Duration       : 00:00:47.19 = 133198720 samples ~ 3539.51 CDDA sectors
    Sample Encoding: 1-bit Direct Stream Digital
    Endian Type    : little
    Reverse Nibbles: no
    Reverse Bits   : no
    Comment        : 'Processed by SoX'
    
    sox INFO sox: effects chain: input        44100Hz  2 channels
    sox INFO sox: effects chain: rate       2.8224e+06Hz  2 channels
    sox INFO sox: effects chain: sdm        2.8224e+06Hz  2 channels
    sox INFO sox: effects chain: output     2.8224e+06Hz  2 channels
    In:100%  00:00:47.19 [00:00:00.00] Out:133M  [!=====|=====!] Hd:0.0 Clip:0
    Done.
    
    real    0m14.819s
    user    0m14.620s
    sys     0m0.164s
    ...e (con queste impostazioni, invero non delle più "spinte") è ampiamente in grado di fare la conversione in real-time anche sul mio vecchio core2-duo (ci ha messo poco meno di 15s per convertire uno stream di 47s e spicci).
    Ciao, Paolo.

    «Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»

  8. #28
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,240
    configurazione

    Predefinito

    Allora...


    L'effetto rate ammette le seguenti opzionI:

    codice:
        GETOPT_NUMERIC(optstate, 'i', coef_interp, -1, 2)
        GETOPT_NUMERIC(optstate, 'c', max_coefs_size, 100, INT_MAX)
        GETOPT_NUMERIC(optstate, 'p', phase, 0, 100)
        GETOPT_NUMERIC(optstate, 'B', bw_0dB_pc, 53, 99.5)
        GETOPT_NUMERIC(optstate, 'A', anti_aliasing_pc, 85, 100)
        GETOPT_NUMERIC(optstate, 'd', bit_depth, 15, 33)
        GETOPT_LOCAL_NUMERIC(optstate, 'b', bw_3dB_pc, 74, 99.7)
        GETOPT_LOCAL_NUMERIC(optstate, 'R', rej, 90, 200)
        GETOPT_LOCAL_NUMERIC(optstate, 'Q', quality, 0, 7)
        case 'M': p->phase =  0; break;
        case 'I': p->phase = 25; break;
        case 'L': p->phase = 50; break;
        case 'a': allow_aliasing = sox_true; break;
        case 'f': p->rolloff = rolloff_none; break;
        case 'n': p->noIOpt = sox_true; break;
        case 's': bw_3dB_pc = 99; break;
        case 't': p->use_hi_prec_clock = sox_true; break;
    molte delle quali non sono documentate, tra cui la 'nostra' -n, ma anche -t che mi pare interessante, tra le altre.

    scorrendo il codice, trovo che -n = Disable small integer optimisations, quello che fa è oscuro (nel senso ce bisognerebbe applicarsi per capirlo) ma in pratica interviene in fase di interpolazione ponendo alcune condizioni relative ad eventuali decimali non rappresentabili e li aggiusta (arrotonda) in modo diverso.

    Almeno questo è quello che capisco io, ma non mi spiego perchè cambi la lunghezza el file... Bisognerebbe indagare meglio, ma quasi quasi aggiunglo l'opzione in C-3PO.

    A mio avviso interessanti sono:

    -t = use_hi_prec_clock, Increase irrational ratio accuracy

    se non indicato è No.

    -f = rolloff_none, elimia il rolloff che può essere eventualment eaggiunto da uno o più opzioni.

    QUesi sono i tipi di rolloff disponibili ma non selezionabili direttamente:

    rolloff_none,
    rolloff_small /* <= 0.01 dB */,
    rolloff_medium /* <= 0.35 dB */

    valorizzando l'opzione si toglie qualsiasi rolloff.

    -i e -c credo siano altrettanto interessanti (costituiscono il vero signifiato dell'opzione qualità) ma non ho capito se possono essere variai senza deinire gli opportuni filtri, da indagare.

    NOTA BENE:

    le opzioni -n, -t, -i e -c sono definite:

    Primarily for test/development purposes

    ...però giochcchiarci un po con c-3Po...
    antonellocaroli and UnixMan like this.
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  9. #29
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,240
    configurazione

    Predefinito

    Originariamente inviato da UnixMan
    togliendo lowpass, funziona:
    codice:
    time sox -S -V3 ZOOM0001_LR.wav -t dsf -b 1 test.dsf rate -v 2822400 sdm -f sdm-4
    sox:      SoX v14.4.2
    sox INFO formats: detected file format type `wav'
    
    Input File     : 'ZOOM0001_LR.wav'
    Channels       : 2
    Sample Rate    : 44100
    Precision      : 16-bit
    Duration       : 00:00:47.19 = 2081230 samples = 3539.51 CDDA sectors
    File Size      : 8.33M
    Bit Rate       : 1.41M
    Sample Encoding: 16-bit Signed Integer PCM
    Endian Type    : little
    Reverse Nibbles: no
    Reverse Bits   : no
    
    sox INFO sox: Overwriting `test.dsf'
    
    Output File    : 'test.dsf'
    Channels       : 2
    Sample Rate    : 2.8224e+06
    Precision      : 1-bit
    Duration       : 00:00:47.19 = 133198720 samples ~ 3539.51 CDDA sectors
    Sample Encoding: 1-bit Direct Stream Digital
    Endian Type    : little
    Reverse Nibbles: no
    Reverse Bits   : no
    Comment        : 'Processed by SoX'
    
    sox INFO sox: effects chain: input        44100Hz  2 channels
    sox INFO sox: effects chain: rate       2.8224e+06Hz  2 channels
    sox INFO sox: effects chain: sdm        2.8224e+06Hz  2 channels
    sox INFO sox: effects chain: output     2.8224e+06Hz  2 channels
    In:100%  00:00:47.19 [00:00:00.00] Out:133M  [!=====|=====!] Hd:0.0 Clip:0
    Done.
    
    real    0m14.819s
    user    0m14.620s
    sys     0m0.164s
    ...e (con queste impostazioni, invero non delle più "spinte") è ampiamente in grado di fare la conversione in real-time anche sul mio vecchio core2-duo (ci ha messo poco meno di 15s per convertire uno stream di 47s e spicci).
    Infatti sono le impostazioni di base per DSD64.
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  10. #30
    tebibyte L'avatar di UnixMan
    Registrato
    Sep 2013
    Messaggi
    2,509
    configurazione

    Predefinito

    con poco margine, ma il vecchietto ce la fa anche in DSD128:

    codice:
    $ time sox -S -V3 ZOOM0001_LR.wav -t dsf -b 1 test.dsf rate -vMn 5644800 sdm -f sdm-5
    [...]
    sox INFO sox: effects chain: input        44100Hz  2 channels
    sox INFO sox: effects chain: rate       5.6448e+06Hz  2 channels
    sox INFO sox: effects chain: sdm        5.6448e+06Hz  2 channels
    sox INFO sox: effects chain: output     5.6448e+06Hz  2 channels
    In:100%  00:00:47.19 [00:00:00.00] Out:266M  [!=====|=====!] Hd:0.0 Clip:0
    Done.
    
    real    0m39.392s
    user    0m39.128s
    sys     0m0.228s
    Curiosamente, tra sdm-4 , 5, ... sdm-8 sembra cambiare ben poco:

    codice:
    $ time sox -S -V3 ZOOM0001_LR.wav -t dsf -b 1 test.dsf rate -vMn 5644800 sdm -f sdm-8
    [...]
    In:100%  00:00:47.19 [00:00:00.00] Out:266M  [!=====|=====!] Hd:0.0 Clip:0
    Done.
    
    real    0m39.516s
    user    0m39.164s
    sys     0m0.312s
    Ciao, Paolo.

    «Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»

Pagina 3 di 114
prima
1 2 3 4 5 6 7 8 9 10 11 12 13 53 103 ... ultimo

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2018

Search Engine Optimization by vBSEO 3.6.1