Obsah fóra hifi.slovanet.sk hifi.slovanet.sk


 
 FAQFAQ   HľadaťHľadať   Zoznam užívateľovZoznam užívateľov   Užívateľské skupinyUžívateľské skupiny   RegistráciaRegistrácia 
 NastaveniaNastavenia   Súkromné správySúkromné správy   PrihláseniePrihlásenie 
https://www.tnt-audio.com/gif/smallstereo_white.gif

Softwarová kompenzace harmonického zkreslení měřicí smyčky
Choď na stránku Predchádzajúca  1, 2, 3, 4, 5 ... 29, 30, 31  Ďalšia
 
Pridať novú tému   Zaslať odpoveď    Obsah fóra hifi.slovanet.sk -> Zdroje signálu
Zobraziť predchádzajúcu tému :: Zobraziť nasledujúcu tému  
Autor Správa
miero
Hifi inventar


Založený: 08 september 2010
Príspevky: 10228
Bydlisko: Praha

PríspevokZaslal: Ut október 23, 2018 13:56:31    Predmet: Odpovedať s citátom

neviem ci pomiesaju, ale kod hlada bin s najvacsiou amplitudou ... a to teorieticky nemusi byt ten kde je presna faza tej harmonickej
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: Ut október 23, 2018 21:09:03    Predmet: Odpovedať s citátom

Detekce fáze první harmonické naměřeného signálu se zdá funguje poměrně přesně.

Grafy obrázku:

* amplituda FFT z prvních 50 period první harmonické (tj 50 x 48 = 2400 vzorků), vynulované malé hodnoty

* Fáze FFT taktéž - zbyde jen první harmonická

* Ze změřené fáze (v tomto případě -1.4135 rad) a známé frekvence měření (1kHz) se vygeneruje referenční sinus. V grafu je modře naměřený signál a červeně průběh referenčního signálu, ovšem na pozici 300 tis. vzorku. Fáze generována z prvních 2400 vzorků, toto je průběh 150x dál. Očividně to stále na sebe pasuje úplně přesně.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: Ut október 23, 2018 21:23:27    Predmet: Odpovedať s citátom

A takhle vypadá kompenzace měření Juli pomocí referenčního signálu s přesně srovnanou fází vůči první harmonické měřeného signálu.

Polynom 5. řádu

kód:
-7.7380e-05   9.5185e-06   5.1638e-05   1.8140e-05   1.0626e+00  -8.3309e-06


Harmonické, opět pro měřený signál, vygenerovaný referenční, zkompenzovaný na referenční, zkompenzovaný ztlumený o 40dB

kód:
Recorded:
 1000.74 Hz,   -2.07 dB,    0.00 dg
 2001.22 Hz, -101.95 dB,  338.47 dg
 3000.97 Hz, -111.45 dB,  118.14 dg
 4000.71 Hz, -125.56 dB,  281.07 dg
 5001.19 Hz, -114.70 dB,  267.69 dg
 6000.93 Hz, -129.02 dB,  275.29 dg
 7000.68 Hz, -128.92 dB,   70.40 dg
 8001.15 Hz, -130.24 dB,   18.81 dg
 9000.90 Hz, -131.16 dB,  168.05 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Reference:
 1000.74 Hz,   -1.54 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Calibrated:
 1000.74 Hz,   -1.54 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 3000.97 Hz, -120.28 dB,   46.76 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 5001.19 Hz, -130.88 dB,  180.57 dg
6000.93 Hz, -128.49 dB,  275.28 dg
 7000.68 Hz, -128.39 dB,   70.39 dg
 8001.15 Hz, -129.71 dB,   18.81 dg
 9000.90 Hz, -130.63 dB,  168.05 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Calibrated Attenuated -40dB:
 1000.74 Hz,  -41.54 dB,    0.00 dg
 2001.22 Hz, -141.49 dB,  338.47 dg
 3000.97 Hz, -150.92 dB,  118.14 dg
 4000.71 Hz, -165.04 dB,  281.07 dg
 5001.19 Hz, -154.18 dB,  267.69 dg
 6000.93 Hz, -168.50 dB,  275.29 dg
 7000.68 Hz, -168.39 dB,   70.40 dg
 8001.15 Hz, -169.71 dB,   18.81 dg
 9000.90 Hz, -170.63 dB,  168.05 dg
    0.00 Hz, -999.00 dB,    0.00 dg


Dovolím si vytáhnout srovnání:

kód:
Recorded:
 1000.74 Hz,   -2.07 dB,    0.00 dg
 2001.22 Hz, -101.95 dB,  338.47 dg
 3000.97 Hz, -111.45 dB,  118.14 dg
 4000.71 Hz, -125.56 dB,  281.07 dg
 5001.19 Hz, -114.70 dB,  267.69 dg


kód:
Calibrated:
 1000.74 Hz,   -1.54 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 3000.97 Hz, -120.28 dB,   46.76 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 5001.19 Hz, -130.88 dB,  180.57 dg


Myslím, že je čas pustit se do route pluginu, aby se mohlo otestovat reálné chování.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: Ut október 23, 2018 21:31:41    Predmet: Odpovedať s citátom

Syrový kód na detekci fáze měřeného signálu (předpokládá se, že wav nemá žádný pozvolný náběh - nejlépe odříznutý začátek měření).

kód:
# measured frequency (TODO - detect automatically)
measfreq = 1000;

[in, fs, nbits] = wavread("/home/pavel/recorded.wav");

if columns(x) > 1
    % convert to mono
    in = in(:,1);
end

offset = 0;
periods = 50;

x = in(offset + 1:offset + periods * fs/measfreq);
in = in(offset + 1:end);

ys = fft(x);
ys = fftshift(ys);
# remove frequency mirror
bins = length(x)/2;
ys = ys(bins + 1:length(x));

f = linspace(1, fs/2, bins);

th = 10;
ys(abs(ys) < th) = 0;


subplot(3,1,1);
stem(f,abs(ys));
xlabel 'Frequency (Hz)';
ylabel '|y|';
grid;

th = 1e-2;
ys(abs(ys) < th) = 0;

phs = angle(ys);

subplot(3,1,2);

stem(f,phs/pi)
xlabel 'Frequency (Hz)';
ylabel 'Phase / \pi';
grid;

phs(abs(phs) < 0.1) = [];
disp(phs);



t = 0:1/fs:length(in)/fs;
reference = cos(2*pi * measfreq * t + phs);

lowT = 300000;
highT = 300100;
subplot(3,1,3);
plot((lowT:highT), in(lowT:highT), "-", (lowT:highT), reference(lowT:highT), "*");


Pak pro výpočet kalibračního polynomu stačí vygenerovat reference:

kód:

phs = -1.4135;
measfreq = 1000;

t = 0:1/fs:length(recorded)/fs;
t = t(1:length(recorded));
reference = cos(2*pi * measfreq * t + phs) * 0.9;
reference = reference';

polyCoeff = polyfit(recorded, reference, 5);
disp(polyCoeff);


Samozřejmě phs se bude měřit rovnou v tom samém skriptu, nyní to zatím kopíruju, abych se v tom vyznal.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
miero
Hifi inventar


Založený: 08 september 2010
Príspevky: 10228
Bydlisko: Praha

PríspevokZaslal: Ut október 23, 2018 22:24:44    Predmet: Odpovedať s citátom

miero napísal:
... skusim nahrat lepsi signal (z ES9018) s roznymi hlasitostami na zvukovku notebooku.

tak nakoniec sa mi to podarilo nahrat:
- 6 napatovych urovni po 6dB, tlmenych analogovo
- skreslenie samotneho DA prevodniku by mohlo byt pod -120dB mozno este menej
- http://mr.ieero.com/pub/temp2018/distcorr/ad_dist.zip
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
miero
Hifi inventar


Založený: 08 september 2010
Príspevky: 10228
Bydlisko: Praha

PríspevokZaslal: Ut október 23, 2018 23:08:03    Predmet: Odpovedať s citátom

dustin, ten tvoj kod mi vobec nefunguje :-/

napr. phs je vektor 5 cisel, co robi potom neplechu pre generovani reference a polyfit

inak pozor, zlozky skreslenia v ad_dist suboroch sa vyrazne menia s amplitudou
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 08:19:28    Predmet: Odpovedať s citátom

Detekce fáze je samozřejmě syrová a zatím vyžaduje ruční doladění, aby fungovala. K plné automatice máme ještě dost daleko Smile U nekvalitnější zvukovky je potřeba zkrátit počet period, ze kterých se určuje, aby po odstranění malých čísel z vektoru zbyla jen jedna buňka - skalár. Pro tvou interní se ukázalo postačujících 20 period.

Hodiny interní zvukovky nejsou úplně přesné, musel jsem ručně doladit generovanou

1000Hz -> 1000. 0135Hz

I to by se dalo určitě nějak automatizovat.

Fáze vyšla -1.4447 rad.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
miero
Hifi inventar


Založený: 08 september 2010
Príspevky: 10228
Bydlisko: Praha

PríspevokZaslal: St október 24, 2018 08:31:48    Predmet: Odpovedať s citátom

tyjo, sa ze pwelch() dokaze odstranit sum zo signalu a nechat len hlavnu a harmonicke
- https://www.mathworks.com/help/signal/examples/practical-introduction-to-frequency-domain-analysis.html

a existuje i periodogram() ktory pekne vykresli fft bez potreby to programovat :D
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 08:36:48    Predmet: Odpovedať s citátom

Výsledky kompenzace pro nejsilnější signál 0dB a použití kalibračního polynomu 8. řádu pro -6 a -12dB.

kód:
1.3098e-04   6.6407e-04  -2.6891e-04  -1.4998e-03   1.6069e-05   6.8758e-04  -1.6714e-04   9.4453e-01   1.0999e-04


Kompenzace pro signál, ze kterého se počítal kompenzační polynom, je samozřejmě skvělá - všechny harmonické do páté jsou nižší o 30dB.

kód:
00:
  1000.93 Hz,   -0.48 dB,    0.00 dg
 2000.87 Hz,  -77.90 dB,  293.12 dg
 3000.80 Hz,  -83.96 dB,  228.36 dg
 4000.73 Hz,  -95.94 dB,  160.77 dg
 5000.67 Hz,  -94.14 dB,   96.03 dg
 6000.60 Hz, -120.62 dB,   26.89 dg
 7001.21 Hz, -102.35 dB,  323.27 dg
 8001.14 Hz, -123.25 dB,  261.82 dg
 9001.07 Hz, -122.25 dB,  355.27 dg
10001.01 Hz, -106.74 dB,  125.11 dg


Compensated 00:
 1000.93 Hz,   -0.97 dB,    0.00 dg
 2000.87 Hz, -110.81 dB,  179.41 dg
 3000.80 Hz, -122.49 dB,   80.27 dg
 4000.73 Hz, -124.24 dB,   67.93 dg
 5001.34 Hz, -123.31 dB,  158.29 dg
 6003.96 Hz, -127.53 dB,  190.38 dg
 7001.21 Hz, -125.75 dB,  280.45 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 9001.07 Hz, -122.67 dB,  355.42 dg
10001.01 Hz, -107.24 dB,  125.10 dg


-6dB (tedy poloviční signál, než kalibrační) ještě jde, zlepšení u 2. a 3. harm o 10dB

-12dB už je víceméně bez vlivu, tam by to chtělo novou kalibraci.

Zkusím vymyslet, jak/zda by se dalo automaticky kalibrovat pro různé levely, aby to šlo snadno aplikovat při měření.

kód:

00:
 1000.93 Hz,   -0.48 dB,    0.00 dg
 2000.87 Hz,  -77.90 dB,  293.12 dg
 3000.80 Hz,  -83.96 dB,  228.36 dg
 4000.73 Hz,  -95.94 dB,  160.77 dg
 5000.67 Hz,  -94.14 dB,   96.03 dg
 6000.60 Hz, -120.62 dB,   26.89 dg
 7001.21 Hz, -102.35 dB,  323.27 dg
 8001.14 Hz, -123.25 dB,  261.82 dg
 9001.07 Hz, -122.25 dB,  355.27 dg
10001.01 Hz, -106.74 dB,  125.11 dg
Reference:
 1000.93 Hz,   -0.97 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Compensated 00:
 1000.93 Hz,   -0.97 dB,    0.00 dg
 2000.87 Hz, -110.81 dB,  179.41 dg
 3000.80 Hz, -122.49 dB,   80.27 dg
 4000.73 Hz, -124.24 dB,   67.93 dg
 5001.34 Hz, -123.31 dB,  158.29 dg
 6003.96 Hz, -127.53 dB,  190.38 dg
 7001.21 Hz, -125.75 dB,  280.45 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 9001.07 Hz, -122.67 dB,  355.42 dg
10001.01 Hz, -107.24 dB,  125.10 dg
06:
 1000.93 Hz,   -6.43 dB,    0.00 dg
 2000.87 Hz,  -96.06 dB,    6.97 dg
 3000.80 Hz,  -97.77 dB,  194.23 dg
 4000.73 Hz, -102.50 dB,   23.50 dg
 5000.67 Hz, -126.23 dB,  229.90 dg
 6000.60 Hz, -126.54 dB,   32.83 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 8001.14 Hz, -121.79 dB,  238.50 dg
    0.00 Hz, -999.00 dB,    0.00 dg
10001.01 Hz, -116.22 dB,   67.39 dg
Compensated 06:
 1000.93 Hz,   -6.93 dB,    0.00 dg
 2000.87 Hz, -106.30 dB,  191.89 dg
 3000.80 Hz, -107.28 dB,  190.34 dg
 4000.73 Hz, -103.48 dB,   23.44 dg
 5000.67 Hz, -113.44 dB,  216.37 dg
 6000.60 Hz, -128.36 dB,   31.49 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 8001.14 Hz, -122.25 dB,  238.49 dg
    0.00 Hz, -999.00 dB,    0.00 dg
10001.01 Hz, -116.72 dB,   67.39 dg
12:
 1000.93 Hz,  -12.46 dB,    0.00 dg
 2000.87 Hz, -104.09 dB,  180.26 dg
 3000.80 Hz, -113.43 dB,  182.41 dg
 4000.73 Hz, -118.67 dB,    3.10 dg
 5001.34 Hz, -126.54 dB,    3.96 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Compensated 12:
 1000.93 Hz,  -12.96 dB,    0.00 dg
 2000.87 Hz,  -99.52 dB,  180.41 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 4000.73 Hz, -119.18 dB,    3.10 dg
 5001.34 Hz, -125.95 dB,    3.78 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 09:14:09    Predmet: Odpovedať s citátom

Kalibrace pro naměřený signál -12dB, kompenzace pro -12, -18, -24
fáze -0.36037

Polynom 5. řádu

kód:
5.1828e-03  -3.4523e-03   2.2052e-04   4.3075e-04   1.0481e+00  -7.9173e-06


Pro kalibrační signál je výsledek jasný:

kód:
Measured 12:
 1000.93 Hz,  -12.46 dB,    0.00 dg
 2000.87 Hz, -104.09 dB,  180.26 dg
 3000.80 Hz, -113.43 dB,  182.41 dg
 4000.73 Hz, -118.67 dB,    3.10 dg
 5001.34 Hz, -126.54 dB,    3.96 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Compensated 12:
 1000.93 Hz,  -12.06 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 3999.39 Hz, -128.16 dB,  117.38 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg



Použití kalibrace pro:

-18dB - zlepšení 2. harm o 9dB, zbytek víceméně stejný

-24dB - zlepšení 2. harm o 3dB, zbytek víceméně stejný

IMO se to chová slušně, nic nekazí. Samozřejmě to chce co největší signál, aby byl výpočetní prostor pro přesné výpočty.

kód:
2:
 1000.93 Hz,  -12.46 dB,    0.00 dg
 2000.87 Hz, -104.09 dB,  180.26 dg
 3000.80 Hz, -113.43 dB,  182.41 dg
 4000.73 Hz, -118.67 dB,    3.10 dg
 5001.34 Hz, -126.54 dB,    3.96 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Reference:
 1000.93 Hz,  -12.05 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Compensated 12:
 1000.93 Hz,  -12.06 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 3999.39 Hz, -128.16 dB,  117.38 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
18:
 1000.93 Hz,  -18.47 dB,    0.00 dg
 2000.87 Hz, -108.34 dB,  336.05 dg
 3000.80 Hz, -121.43 dB,  120.69 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 7005.24 Hz, -127.96 dB,  109.60 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Compensated 18:
 1000.93 Hz,  -18.06 dB,    0.00 dg
 2000.87 Hz, -117.39 dB,  343.55 dg
 3000.80 Hz, -122.37 dB,  120.04 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 7005.24 Hz, -127.56 dB,  109.60 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
24:
 1000.93 Hz,  -24.51 dB,    0.00 dg
 2000.87 Hz, -114.07 dB,  298.35 dg
 3000.80 Hz, -126.61 dB,   48.64 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Compensated 24:
 1000.93 Hz,  -24.10 dB,    0.00 dg
 2000.87 Hz, -117.43 dB,  300.11 dg
 3000.80 Hz, -126.42 dB,   48.60 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 09:42:55    Predmet: Odpovedať s citátom

Miero, dáš si to na github, nebo to mám dát k sobě? Už bychom git potřebovali, máme spoustu kódu.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
miero
Hifi inventar


Založený: 08 september 2010
Príspevky: 10228
Bydlisko: Praha

PríspevokZaslal: St október 24, 2018 10:07:11    Predmet: Odpovedať s citátom

Daj si to k sebe. Aspon si to trochu uceses :-))
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 10:18:44    Predmet: Odpovedať s citátom

OK, zítra večer, dneska už to nestihnu.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 13:18:31    Predmet: Odpovedať s citátom

Přemýšlím o té automatické kalibraci aktuální úrovně. Něco jako:

Ve vstupním i výstupní chainu alsích zařízení běží monitorovací plugin meter (zrovna diskutujeme v https://www.diyaudio.com/forums/pc-based/328688-peppyalsa-alsa-plugin-vu-meters-spectrum-analyzers.html a https://www.diyaudio.com/forums/pc-based/291010-peppymeter-5.html + další), řídící python si z něj průběžně pamatuje aktuální levely výstupu i vstupu.

V artě dám měření, nastavím DUT, měřím bez nelineární kalibrace (koeficienty > 1. řád jsou nulové). Pak se rozhodnu, že toto konkrétní měření chci zpřesnit nelineární kalibrací. Vypnu v artě generátor/nahrávání a zmáčknu na měřicí stanici čudlík "kalibrovat".

Řídící python ví, jaká byla úroveň na vstupech i výstupech. Výstupní level se snadno nastaví na přesnou hodnotu přímo při generování kalibračního sinu.

Pro nastavení úrovně vstupního signálu by byl v kalibrační smyčce relátkový dělič (stejně tam již jsou) - třeba 4 relátka = 16 kroků po 1.5dB, tj rozsah 0 až -24dB. To na běžné měření stačí, menší měřená úroveň stejně vyžaduje předzesilovač (i ten tam už je připravený, kalibrovalo by se pro konkrétní konfiguraci - s či bez vloženého předzesilovače).

Řídící python zvolí dle poslední nasnímané hodnoty vstupu nejbližší vyšší rozsah děliče, nastaví relátka děliče a spustí pár sekund kalibrace (a třeba zahlásí použitý level, pro kontrolu). Zahlásí hotovo a mohu znovu pustit v artě generátor/měření (samozřejmě beze změny nastavení), tentokrát již zkalibrovanou cestou s chybou max. 1.5dB měřené úrovně vůči kalibrační, což je v mezích dost výrazného snížení zkreslení.

Stačilo by na to přidat 4 relátka (ke stávajícím 4) a pár 1% odporů (absolutní úroveň není kritická, virtuální symetriku lze kalibrovat napřímo bez děličů). Řídících linek bude dost, arduino nano za 50Kč se 14 GPIO piny + firmata https://www.instructables.com/id/Arduino-Installing-Standard-Firmata/ , pro python je parádní klient. Vše ostatní je záležitost pythonu a octave.

Není to úplně triviální, ale zcela proveditelné.

Ještě kdyby tak šlo z těch křížových kalibrací L/R výstupů proti L/R vstupům nějak spočítat polynomy pro jednotlivé výstupy a vstupy....
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
opa
Hifi inventar


Založený: 24 február 2007
Príspevky: 11017
Bydlisko: Praha

PríspevokZaslal: St október 24, 2018 17:44:53    Predmet: Odpovedať s citátom

Tak to vypadá, že se to posunulo do velmi užitečné podoby. Pro mé použití by naprosto stačilo určit nějaké ty koeficienty a provést korekci pro jednu jedinou pevnou hodnotu výstupního napětí. Pokud bych to chtěl vyzkoušet, bude časem k dispozici nějaký návod pro naprosté lamy krok za krokem, jak to udělat ?
_________________
Cui bono ?
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: St október 24, 2018 19:49:12    Predmet: Odpovedať s citátom

Zatím pořád jen pracujeme s předem nahranými wavy. Použitelnost se ukáže, až se budou vzorky přepočítávat přímo při měření. Možná to s reálným streamem vůbec nebude fungovat, to se teprve uvidí.

Postup samozřejmě bude, pokud to bude reálně fungovat.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: Št október 25, 2018 07:42:22    Predmet: Odpovedať s citátom

Teoretická obnova zkreslení -20dB pod nativním rozlišením smyčky:

Nativní zkreslení smyčky - nahraný wav z Juli
kód:
Recorded:
 1000.74 Hz,   -2.07 dB,    0.00 dg
 2001.22 Hz, -101.95 dB,  338.47 dg
 3000.97 Hz, -111.45 dB,  118.14 dg
 4000.71 Hz, -125.56 dB,  281.07 dg
 5001.19 Hz, -114.70 dB,  267.69 dg


Zkalibrujeme polynomem na

kód:
Recovered:
 1000.74 Hz,   -2.63 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 3000.97 Hz, -121.37 dB,   46.76 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 5001.19 Hz, -131.97 dB,  180.57 dg


Nyní vyrobíme čebyševem polynomiální zkreslení -120dB na druhé harmonické:

kód:
distortpoly = leftpadz( db2mag(0) * chebyshevpoly(1,1) );
distortpoly += leftpadz( db2mag(-120) * chebyshevpoly(1,2));


Funkčnost zkreslujícího polynomu ověříme tím, že skrz něj proženeme referenční sinus:
kód:
Reference Distortion:
 1000.74 Hz,   -2.63 dB,    0.00 dg
 2001.22 Hz, -124.63 dB,  159.01 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg
    0.00 Hz, -999.00 dB,    0.00 dg


Zkreslíme polynomem distortpoly nativní naměřený signál z Juli (aproximace vložení zkresleni do smyčky):

kód:
Recorded with Distortion:
 1000.74 Hz,   -2.07 dB,    0.00 dg
 2001.22 Hz, -102.71 dB,  338.42 dg
 3000.97 Hz, -111.45 dB,  118.14 dg
 4000.71 Hz, -125.56 dB,  281.07 dg
 5001.19 Hz, -114.70 dB,  267.69 dg


Z toho samozřejmě nevidíme vůbec nic, harmonické se oproti měření bez vloženého zkreslení v podstatě nezměnily, jsou vysoko nad přidaným zkreslením.

A měření se zkreslením proženeme kompenzačním polynomem:

kód:
Recovered Distortion:
 1000.74 Hz,   -2.63 dB,    0.00 dg
 2001.22 Hz, -126.08 dB,  167.27 dg
 3000.97 Hz, -121.37 dB,   46.76 dg
    0.00 Hz, -999.00 dB,    0.00 dg
 5001.19 Hz, -131.97 dB,  180.57 dg


Třetí a pátá harmonické jsou úplně stejné jako u čisté zkalibrované smyčky (dopředu známá chyba měření), ovšem objevila se druhá -126dB. Takže zkalibrovaný řetězec změřil poměrně přesně -124 dB přidaného zkreslení, hluboko pod nativním zkreslením smyčky -102dB.

Takže teorie by fungovala. Jenže rozhoduje praxe. Pustím se do toho route pluginu.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: Pi október 26, 2018 21:24:02    Predmet: Odpovedať s citátom

Interní zvukovka PC (8x xeon, 72GB RAM, 700W zdroj), konfigurace symetrického virtuálu:

kód:
pcm.symmetric_in {
         type route
         slave {
                 pcm "hw:0"
                 channels 2
         }
         ttable {
                 0.0 { polynom [-3.2787e-05   4.9206e-01   2.5843e-05   1.4382e-04   8.1172e-05   2.0301e-05 ] }
                 0.1 { polynom [ 6.7723e-06  -4.9254e-01  -1.1393e-06  -1.8654e-04  -9.9866e-05   3.8831e-05 ] }
                 1.0 { polynom [-3.2787e-05   4.9206e-01   2.5843e-05   1.4382e-04   8.1172e-05   2.0301e-05 ] }
                 1.1 { polynom [ 6.7723e-06  -4.9254e-01  -1.1393e-06  -1.8654e-04  -9.9866e-05   3.8831e-05 ] }
         }
}


Měření smyčky smotanou 2m tkaničkou:

1. obr.: nesymetrika napřímo

2. obr.: virtuální symetrika, zkalibrovaná střední amplitudou (tj. offset a lineární prvek)

3. obr.: virtuální symetrika, zkalibrovaná polynomem 5. stupně
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
opa
Hifi inventar


Založený: 24 február 2007
Príspevky: 11017
Bydlisko: Praha

PríspevokZaslal: So október 27, 2018 11:17:18    Predmet: Odpovedať s citátom

Úžasné ! Když už máš konkrétní měření, tak to znamená, že to chodí v reálu, žádná simulace.
Vysvětlím, proč tak jásám. Při měření bez korekcí je potřeba se držet amplitudy, kdy je zkreslení nejmenší, tedy např. -15 dB. To ovšem znamená, že o těch 15 dB vyleze šum, který se stane limitujícím činitelem. S tou korekcí by to mohlo fungovat pro větší amplitudy a tím se vzdálit od šumového dna.

_________________
Cui bono ?
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: So október 27, 2018 12:00:37    Predmet: Odpovedať s citátom

Jo, je to normální měření v artě, akorát konfigurace byla ručně. I když je to jen o zkopírování parametrů, jenom jsem nahraný stereo wav prohnal kalibračním skriptem a vypadly koeficienty pravého a levého polynomu. Ty stačí překopírovat do konfiguračního souboru.

Když se podíváš na ty obrázky, šumové pozadí se nelineární kompenzací oproti lineárně zkompenzované symetrice nesníží, ale vykompenzují se nižší harmonické. Očividně ty jsou asi důsledkem nelineárního statického zkreslení. Vyšší harmonické se téměř nezměnily, tam asi budou větší dynamické vlivy, tj. vztahy mezi vzorky v různých časech.

I to by se možná dalo pořešit, možná by pomohla identifikace nelineárních modelů https://www.mathworks.com/help/ident/ug/about-nonlinear-model-identification.html . Ty funkce (nlarx a spol.) zatím v octave nejsou, jen v matlabu.

A nebo zkusit lineární dynamický model (larx), třeba by se chytil líp než polynom. Princip je úplně stejný - do identifikační funkce lezou naměřený průběh a ideální průběh (ten umíme celkem přesně z naměřených dat vyrábět), z funkce lezou rovnou parametry časových řad modelu. Jen by se změnil výpočet vzorků v route pluginu, musely by se pamatovat předchozí hodnoty.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
opa
Hifi inventar


Založený: 24 február 2007
Príspevky: 11017
Bydlisko: Praha

PríspevokZaslal: So október 27, 2018 12:05:48    Predmet: Odpovedať s citátom

dustin napísal:
Když se podíváš na ty obrázky, šumové pozadí se nelineární kompenzací oproti lineárně zkompenzované symetrice nesníží, ale vykompenzují se nižší harmonické.

Samozřejmě, protože se měří při konstantní úrovni.
Ale pokud bych měl k dispozici fungující sw. kompenzaci zkreslení, můžu tu výchozí úroveň zvýšit a tím se vzdálit od šumového dna, jestli si rozumíme ?

_________________
Cui bono ?
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: So október 27, 2018 12:14:42    Predmet: Odpovedať s citátom

Už to chápu. To by mělo fungovat, pokud je to zkreslení statického charakteru. Což by zkreslení typu limitace mohlo být. Chce to vyzkoušet.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
opa
Hifi inventar


Založený: 24 február 2007
Príspevky: 11017
Bydlisko: Praha

PríspevokZaslal: So október 27, 2018 12:24:01    Predmet: Odpovedať s citátom

dustin napísal:
Už to chápu. To by mělo fungovat, pokud je to zkreslení statického charakteru. Což by zkreslení typu limitace mohlo být. Chce to vyzkoušet.

Bez limitace.
Místo toho, abych pracoval se signálem -15 dB, zvolím -3 dB, tedy stále s rezervou pod limitací. Budu mít o 12 dB lepší odstup šumu.
Zvýšené zkreslení při úrovni -3 dB oproti -15 dB doženu tou Tvojí sw. kompenzací.

_________________
Cui bono ?
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: So október 27, 2018 12:30:29    Predmet: Odpovedať s citátom

Limitací jsem myslel nárůst zkreslení poblíž max. hodnoty - to které potřebuješ vykompenzovat. Uvidíme, ale asi jo. Vždy to bude otázka konkrétní zvukovky, zatím jsem to testoval jen na jedné. I když reálné výsledky se té simulaci dost blížily a dosavadní simulace jiných zvukovek dopadly docela dobře.

Teď to testnu na Juli, co to udělá. A musím vrazit kódy na github, aby to mohl testnout i miero. A pak ještě kuchat dýni na Halloween a trhat jablka Smile
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
miero
Hifi inventar


Založený: 08 september 2010
Príspevky: 10228
Bydlisko: Praha

PríspevokZaslal: So október 27, 2018 12:36:09    Predmet: Odpovedať s citátom

konecne spravna motivacia na vyskusanie linuxu :)
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: So október 27, 2018 13:48:00    Predmet: Odpovedať s citátom

No zrovna tohle není úplně triviální, cross kompilace upraveného alsa-libu pro i386 wine/artu na hostitelském amd64 není zrovna jednoduchá (na nic jednoduchého jsem nepřišel), pokud člověk nejede na source-based distribuci typu arch nebo gentoo. Ale třeba se podaří přesvědčit alsí adminy, že by bylo užitečné mít polynom v upstreamu.
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
opa
Hifi inventar


Založený: 24 február 2007
Príspevky: 11017
Bydlisko: Praha

PríspevokZaslal: So október 27, 2018 13:58:13    Predmet: Odpovedať s citátom

Takže na windousech to nepůjde ? Sad
_________________
Cui bono ?
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: So október 27, 2018 14:08:20    Predmet: Odpovedať s citátom

Když najdeš komponentu, která bude na základě nějaké konfigurace v souboru přepočítávat vzorky audio streamu někde uvnitř windows, pak to snadno půjde i na windows. Můžeš si to doprogramovat třeba do nějakého open source driveru, ale pak to bude fungovat jen pro tu konkrétní zvukovku.

Windows není tvůj sluha, ale pán. Nicméně sis jej vybral dobrovolně a ještě za něj zaplatil Smile

Mým cílem není obecný postup, ale konkrétní specializované zařízení pro měření. Windowsy by na něm neměly vůbec žádný přínos (kromě několika málo nepodporovaných zvukovek, jejichž výrobce zcela tají veškeré informace - např. Lynx).
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
opa
Hifi inventar


Založený: 24 február 2007
Príspevky: 11017
Bydlisko: Praha

PríspevokZaslal: So október 27, 2018 14:36:38    Predmet: Odpovedať s citátom

O.K. Přesto děkuju za ten výzkum, protože ukázal, že taková kompenzace je možná a funguje. Jak to realizovat v konkrétním operačním systému je věc druhá. Když bude čas, můžu nějakou primitivní implementaci zkusit alespoň pro 2. a 3. harmonickou, to by mělo pro mé potřeby stačit.
Podotýkám, bez matematiky, polynomů a skriptů. Pouze hrubou silou.

_________________
Cui bono ?
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
dustin
Hifi inventar


Založený: 06 október 2006
Príspevky: 4810
Bydlisko: Plzeň

PríspevokZaslal: Ne október 28, 2018 01:34:04    Predmet: Odpovedať s citátom

ESI Juli, single-ended vstupy.

Pravý a levý vstup se trochu liší, levý má trochu větší zkreslení
Návrat hore
Zobrazit informácie o autorovi Odoslať súkromnú správu
Zobraziť príspevky z predchádzajúcich:   
Pridať novú tému   Zaslať odpoveď    Obsah fóra hifi.slovanet.sk -> Zdroje signálu Časy uvádzané v GMT + 1 hodina
Choď na stránku Predchádzajúca  1, 2, 3, 4, 5 ... 29, 30, 31  Ďalšia
Strana 4 z 31

 
Prejdi na:  
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.
Nemôžete pripojiť súbory do tohto fóra.
Nemôžete sťahovať súbory z tohto fóra.


Powered by phpBB © 2001, 2005 phpBB Group
Slovenský preklad phpBB Slovak - www.pcforum.sk
TOPlist