5.20 rc13 component model runs on exception

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
After impedance measurement on a 10 nF precision reference glimmer capacitor, i click on component model and get repeatably that exception:

REW V5.20 running JRE 1.8.0_292 64-bit on linux 5.13.4-xeon, de, DE, UTF-8 at 93 DPI


Message:
java.lang.ArrayIndexOutOfBoundsException: 3
Stack Trace:
3
roomeqwizard.kG.ſ(y:208)
roomeqwizard.zH.paintComponent(y:3509)
javax.swing.JComponent.paint(JComponent.java:1056)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JLayer.paint(JLayer.java:433)
javax.swing.plaf.LayerUI.paint(LayerUI.java:79)
javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
javax.swing.JComponent.paintComponent(JComponent.java:780)
javax.swing.JLayer.paint(JLayer.java:428)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JLayer.paint(JLayer.java:433)
javax.swing.plaf.LayerUI.paint(LayerUI.java:79)
roomeqwizard.NB.paint(y:2131)
javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
javax.swing.JComponent.paintComponent(JComponent.java:780)
javax.swing.JLayer.paint(JLayer.java:428)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:306)
javax.swing.RepaintManager.paint(RepaintManager.java:1272)
javax.swing.JComponent._paintImmediately(JComponent.java:5158)
javax.swing.JComponent.paintImmediately(JComponent.java:4969)
javax.swing.JLayer.paintImmediately(JLayer.java:415)
javax.swing.plaf.LayerUI.paintImmediately(LayerUI.java:717)
javax.swing.JLayer.paintImmediately(JLayer.java:410)
javax.swing.JComponent.paintImmediately(JComponent.java:4950)
javax.swing.JLayer.paintImmediately(JLayer.java:415)
javax.swing.plaf.LayerUI.paintImmediately(LayerUI.java:717)
javax.swing.JLayer.paintImmediately(JLayer.java:410)
javax.swing.JComponent.paintImmediately(JComponent.java:4950)
javax.swing.RepaintManager$4.run(RepaintManager.java:831)
javax.swing.RepaintManager$4.run(RepaintManager.java:814)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
java.awt.EventQueue.access$500(EventQueue.java:97)
java.awt.EventQueue$3.run(EventQueue.java:709)
java.awt.EventQueue$3.run(EventQueue.java:703)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 

Attachments

  • rc13-impedance.mdat
    8 MB · Views: 12

sm52

Member
Joined
Mar 14, 2019
Messages
882
On windows 7-64, if you check the 'Model capacitor dielectric loss' checkbox, and then uncheck the checkbox, an error occurs.
 

Attachments

  • Java error.PNG
    Java error.PNG
    7.9 KB · Views: 11

sm52

Member
Joined
Mar 14, 2019
Messages
882
On windows 7-64 in version RC13b, the error message no longer appears.
 

sm52

Member
Joined
Mar 14, 2019
Messages
882
With the checkbox checked, the phase of the model exactly matches the measurement if the capacitor value is greater than 10 μF. If the value is less, both phase models are the same. But the phase of a capacitor with a value of less than 10 μF in a range of less than 20 Hz has a difference in both models. The impedance model exactly matches the measurement only for a capacitor less than 10 μF. Larger capacitors with a checkbox marked have a better impedance model, but not exactly the same as the measurement.
 

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
Thank you for the quick fix!
One question about the dielectric loss: In general a dielectric loss is real part, but if i don't set that tag, what represents the value? Does the model utilizes Debye relaxation?

43830

43831

Thank you again for all your effort!
 

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,295
The dielectric loss is modelled as a series RC in parallel with the main cap, the model adjusts values for best fit to the measured data.

Edit: the inductance is omitted if it is less than 1 nH. The dielectric loss components are omitted if the loss capacitance is less than 0.1% of the main capacitance.

equivcctcapda.jpg
 

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
Yes, of course. Some others look also interesting, maybe you have an idea about.
 

Attachments

  • 1µF FKP.mdat
    6.6 MB · Views: 10
  • 100nF MKP10.mdat
    6.6 MB · Views: 9
  • 10nF mika.mdat
    16.5 MB · Views: 10

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
For the 10 nF capacitor: I just noticed that if you zoom in a lot to the phase curve, you can see that the difference the dielectric loss model shows is actually an improvement of the fit.
 

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,295
The 100 nF cap has 90 degrees phase, a little unusual for a cap :). Probably an inversion in the measurement path somewhere.

The 10 nF cap phase is quite noisy, possibly a side effect of using quite a large reference resistor when calibrating.

The 1 uF cap measurement is over a slightly reduced range, though that isn't the problem with it (see note below). The phase behaviour below 560 Hz when zoomed in is very odd, the strange component values are a result of trying to match that behaviour. Perhaps something went wrong in the calibration?

43890



Note: The capacitor model fit uses 100 Hz to 20 kHz if available, it is best to measure at least that span and useful to measure beyond it to make sure the model behaviour remains reasonable.
 

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,295
I just realised the odd behaviour of the phase trace is because the impedance phase is limited to +/- 90 degrees, since more isn't possible for an impedance. The actual phase measured must be continuing below -90, so definitely something wrong in the calibration or setup.
 

sm52

Member
Joined
Mar 14, 2019
Messages
882
I have non-polar electrolytic Hitano capacitors. 100 uF, 22 uF, 4.7 uF. And CapXon electrolytic non-polar 47uF, 22uF, 10uF. If it is useful, I can take measurements.
 

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
The thing is, sometimes i get the channels swapped, no idea why. With normal measurements i can see that on the spot if the reference is larger than input. Then i repeat the measurement until the channel order is correct. This is not possible for the open calibration, as the differences are very, very small. Sometimes i see an error like this:
If i do capturing directly with alsa-tools, it never behaved odd. I also tried the java audio kit, and played around with it. There i never saw swapped channels, like i see often in REW.
 

Attachments

  • 2021-07-29_cal-error.png
    2021-07-29_cal-error.png
    29.7 KB · Views: 17

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
Here are two open-cal files, the setup not touched between measurements, just repeated the open calibration.
 

Attachments

  • impedanceopen.zma-ref-larger-than-input.txt
    49.5 KB · Views: 7
  • impedanceopen.zma-ref-smaller-than-input.txt
    50.3 KB · Views: 9

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
You are right, culprit is calibration: Here is an example of short calibration: phase bumps to 90°. In fact, with low input signals and very, very low source impedance, the input of my sound card shows a positive 90° phase shift. With slightly higher source impedance the phase shift is kept very much smaller. If i increase the output impedance of the soundcard output, the pole moves towards lower frequency. So it looks like the short cal procedure is not "compatible" with my soundcard. However, the swapping channes is another remaining problem. I think is not related to hardware and not to alsa. And i am not so shure about to the java audio and rew. I played around a little with the JavaSoundDemo, extended it to 192kHz/24bit. It never showed any problem with channels with capturing.
 

Attachments

  • 2021-07-29_calibration-phase.png
    2021-07-29_calibration-phase.png
    137 KB · Views: 16
Last edited:

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,295
I have non-polar electrolytic Hitano capacitors. 100 uF, 22 uF, 4.7 uF. And CapXon electrolytic non-polar 47uF, 22uF, 10uF. If it is useful, I can take measurements.
Sure, good to have a wide selection of measurements.
 

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,295
You are right, culprit is calibration: Here is an example of short calibration: phase bumps to 90°. In fact, with low input signals and very, very low source impedance, the input of my sound card shows a positive 90° phase shift. With slightly higher source impedance the phase shift is kept very much smaller. If i increase the output impedance of the soundcard output, the pole moves towards lower frequency. So it looks like the short cal procedure is not "compatible" with my soundcard. However, the swapping channes is another remaining problem. I think is not related to hardware and not to alsa. And i am not so shure about to the java audio and rew. I played around a little with the JavaSoundDemo, extended it to 192kHz/24bit. It never showed any problem with channels with capturing.
Short circuit calibration shouldn't be difficult for the soundcard unless it cannot cope with the sense resistor as a load. REW relies on JavaSound to provide its audio data, which returns blocks of data with samples for each channel in sequence at each sampling instant. REW itself isn't able to swap the channels, but the data stream could be affected by something else going on in the system I guess, though I can't think of what could have that effect.
 

sm52

Member
Joined
Mar 14, 2019
Messages
882
6 capacitors. All electrolytic non-polar. The component model is not very good.
 

Attachments

  • Cal imp.mdat
    17.1 MB · Views: 15
  • 3 CapXon.mdat
    11.3 MB · Views: 12
  • 3 Hitano.mdat
    11.3 MB · Views: 10

jschwender

Member
Thread Starter
Joined
Mar 16, 2021
Messages
140
Location
GERMANY
More  
Front Speakers
Nubert digital pro
Other Speakers or Equipment
Philips dss940
How is the soundcard calibration considered with impedance measurement? Ans why is it possible to change calibration after measurement for a SPL measurement, but not for a impendance measurement? If i specify Rsense Rinput Rlead manually, this is obviously a non-complex calculation for the impedance. Is impedance calculation done complex if i run the calibrations?
 

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,295
The soundcard calibration is not used for impedance. The impedance calibration process generates 3 sets of magnitude and phase corrections across the whole frequency span, Rinput and Rleads are only used if the short circuit and reference resistor calibration measurements have been made.
 
Top Bottom