V5.20.10 Early Access

thothsong

Member
Joined
Jun 29, 2021
Messages
164
In the Java preferences, in the default channel names for 7.1, SL v SBL and SR v SBR appear to be reversed.
 

phofman

Registered
Joined
Jun 26, 2019
Messages
28
44.1 and 88.2 are now working, but now 192 kHz is failing, whereas it worked before. New log file attached, 48 at startup, then switched to 192.
Thanks. Getting those period size alignments (hopefully) right took a while https://github.com/pavhofman/csjsound-wasapi/commit/26bdf4f0054d07dcf7251de7394c35048ab4f4ad... :cool:
Fixed https://drive.google.com/file/d/12IxfO8Z7o1M-KkKwxYbQaZ-oa2m-eGN4/view?usp=sharing , thanks for testing

From what I understand the channel masks in the wasapi format are not so much about selecting by user, but more about finding a combination which the driver accepts. In some cases csjsound checks up to four combinations, some taken from PortAudio https://github.com/pavhofman/csjsound-wasapi/blob/main/src/formats.rs#L70 , some from the rust wasapi-rs crate https://github.com/pavhofman/csjsound-wasapi/blob/main/src/formats.rs#L127 , zero determined by trial/error https://github.com/pavhofman/csjsound-wasapi/blob/main/src/formats.rs#L132 .

The javasound API does not allow for setting the channel mask from java/REW, it would have to be hacked in some workaround.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Messages
5,845
That is not how Dolby orders them, but as you can see from the mapping box you can label channels however you want.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
164
All rates are now working, thanks very much.

From what I understand the channel masks in the wasapi format are not so much about selecting by user, but more about finding a combination which the driver accepts.
It's both. With HDMI, the Sink's EDID specifies a Speaker Allocation Data Block (SADB), which specifies all of the speakers that are usable with multichannel LPCM. I would think a generic HDMI driver would allow any channel mask where the number of 1 bits equals the channel count, and where the indicated speakers are all present in the SADB. (I haven't seen a way to obtain the SADB info through a Windows API, though.) A 7.1 sound system might support two variants of 5.1, one using SL/SR and one using BL/BR, and the user could choose which to use. The Windows sound control panel offers both of those options for 5.1, for example.

The javasound API does not allow for setting the channel mask from java/REW, it would have to be hacked in some workaround.
Ah.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
164
Apologies, I need to revise what I said about HDMI, I was forgetting about the Audio InfoFrame evolution. In the EDID specification (CTA-861-F) originally referenced by HDMI 2.0, the Audio InfoFrame sent by a Source only had one method of specifying LPCM speakers: with a 1-byte code that represents a combination of speakers; the specification provides 50 combinations. So a driver/hardware only supporting that method would presumably only allow a channel mask+count that matched one of those 50 combinations. A subsequent revision (CTA-861-G), which HDMI 2.0 was amended to reference, provides two additional methods. One is a speaker bitmask like the SADB; if the driver supports this method, then there is more freedom, but the mask has left/right pairs represented as single bits, so it's not possible include just a left or right speaker, only the pair. The third method is by channel index, which provides full freedom to specify the speakers.
 

serko70

Member
Joined
Oct 13, 2017
Messages
32
Location
Germany
One final set of updates have been made for the Windows and Linux versions of the early access builds. The big change is support for WASAPI exclusive when using the Java drivers, courtesy of some heroic work by Pavel Hofman. That means multichannel access and full sample resolution without any need for ASIO wrappers. The corresponding Linux AMD64 ALSA PCM support has also been updated. There are a few minor changes that I slipped in while working with Pavel on the WASAPI support:
  • REW now retains the last 7 days of measurements in the temp folder, deleting any older than 7 days on startup. If REW did not shut down normally it will offer to load any measurements that were made since it last started up. If you mistakenly delete a measurement or forget to save it, there will be a copy in the temp folder of the REW log files folder for a week
  • Added a soundcard preference to treat 32-bit sample formats as carrying 24-bit data, since formats that claim to be 32-bit almost always carry 24-bit data
  • Allow a broader range for the speed of sound setting to accommodate media other than air
  • Added check boxes in the FlexASIO control panel to select exclusive mode when using WASAPI
  • Expanded the REW bit depth detector to 32 bits

A lot changed to accommodate WASAPI exclusive access, so feedback on how well that works (or doesn't!) is welcome. You may notice a slight delay after initial startup, depending on how many audio interfaces you have - WASAPI enumeration is a bit time-consuming since all possible format combinations have to be tested.
Dear John,

Can you clarify optimal setting for the new "Treat 32-bit data as 24-bit" option: My output is a USB DAC (Oppo205) with 16 & 32 bit options and input is Umik-2 with 24 & 32 bit options (both ASIO drivers). I used to try and set everything to 16 bits as I thought that's what REW internally uses (is that correct?). After switching from Umik-1 to Umik-2, I did not have the 16-bit option anymore so left that at 24 bits. Can I now use everything at 32 bits and tick that option? Does it really matter?

54273
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Messages
5,845
REW uses 32-bit floats internally. Leave the option to treat 32-bit data as 24-bit selected.
 

ivanAV

Registered
Joined
Sep 4, 2022
Messages
5
FYI on linux/fedora36 the list of detected devices only shows PCM devices when using the bundled JRE ; otherwise those aren't displayed when using the system-wide jre one (despite being the same version - 1.8.0.345):

With the bundled JRE:

54281


With the os provided one:

54282


Setup:
- OS: fedora 36 x86_64, gnome, fully updated (java-1.8.0-openjdk-1.8.0.345.b01-1.fc36.x86_64)
- USB mic (in that case an omnitronic MM-2USB)

(Note: I don't need PCM devices but I thought you'd may want to know about that issue)

Cheers !
Ivan
 

Attachments

phofman

Registered
Joined
Jun 26, 2019
Messages
28
FYI on linux/fedora36 the list of detected devices only shows PCM devices when using the bundled JRE ; otherwise those aren't displayed when using the system-wide jre one (despite being the same version - 1.8.0.345):
What command do you use for running REW with the system-wide JRE? Are environment variable LD_LIBRARY_PRELOAD or java parameter -Djava.library.path pointing to the REW installation dir with the libcsjsound_amd64.so library?
 

ivanAV

Registered
Joined
Sep 4, 2022
Messages
5
What command do you use for running REW with the system-wide JRE
Nothing specific - no LD_...PRELOAD or stuff like that - I started REW as usual (~/REW/roomeqwizard), once with the version with jre bundled, once with the version without.
Note: given that the log files were different ("running Azul Systems" with jre bundled, "running Red Hat" without) I assume that the version with the bundled jre used the bundled jre, I didn't have the time to investigate that further.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Messages
5,845
The build without JRE is intended for non-AMD64 systems and does not include the AMD64 library file.
 

ivanAV

Registered
Joined
Sep 4, 2022
Messages
5
The build without JRE is intended for non-AMD64 systems and does not include the AMD64 library file
Noted; as mentioned it was a minor finding, I thought it could be helfpul for you to know.
Side note: I usually try java apps first with system-wide jre rather than with bundled - an old habit I have of trying to optimize stuff back from the days where disk space was a premium; BTW that's also usually the way to go when "containerizing" apps. (FWIW I've been using the stable version for a few weeks without the bundled JRE and it works fine).
Cheers !
 

serko70

Member
Joined
Oct 13, 2017
Messages
32
Location
Germany
Good to hear. I wasn't trying to provide an FIR generator, just tidying up the divide and inverse operations to include regularisation. Tacking on the frequency limits and notch exclusion were fairly simple additions. I don't think there is enough there to consider it a serious attempt at FIR EQ, but enough to play around with.
The filters created do work as intended. Further improvement could be on the precision of the actual FR like FDW with separate window widths for left & right based on actual reverberation times like RT60? ;)
 

serko70

Member
Joined
Oct 13, 2017
Messages
32
Location
Germany
I am not sure if this is an early access version bug but the room curve metrics entered in Preferences do not show up in the EQ windows:

54321


Correction: They do show up when you restart REW!!!
 
Last edited:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Messages
5,845
I am not sure if this is an early access version bug but the room curve metrics entered in Preferences do not show up in the EQ windows:

Correction: They do show up when you restart REW!!!
Those are defaults for new measurements (or when no measurements have been loaded), they don't have any effect on existing measurements.
 

serko70

Member
Joined
Oct 13, 2017
Messages
32
Location
Germany
I receive trace arithmetic error when multiplying limited frequency range measurements:


REW V5.20.11 running Azul Systems, Inc. JRE 1.8.0_302 64-bit on Windows 10 Locale: language en, keyboard GB, windows-1252 at 96 DPI


Message:
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException
Stack Trace:
java.lang.ArrayIndexOutOfBoundsException
java.util.concurrent.FutureTask.report(FutureTask.java:122)
java.util.concurrent.FutureTask.get(FutureTask.java:192)
javax.swing.SwingWorker.get(SwingWorker.java:602)
roomeqwizard.PG.done(y:1650)
javax.swing.SwingWorker$5.run(SwingWorker.java:737)
javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
javax.swing.Timer.fireActionPerformed(Timer.java:313)
javax.swing.Timer$DoPostEvent.run(Timer.java:245)
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)
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

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Messages
5,845
Thanks, I have fixed it for the next build. In the meantime you could set shorter windows for the limited frequency measurement.
 

ddude003

Senior Member
Joined
Aug 13, 2017
Messages
920
Location
Somewhere Northeast of Kansas City Missouri
My AV System  
Preamp, Processor or Receiver
PrimaLuna Dialogue Premium TubePre (2 channel+sub)
Main Amp
McIntosh MC152 SS Amp (2 channel)
Additional Amp
Yamaha RX-A850 Pro (the other 5 channels lol)
Computer Audio
MacBook Pro, Custom i7 7700k De-lid 2xAsus1080ti GFX build, Audirvana+, LiquidSonics, SoX
DAC
Chord Electronics Ltd. Qutest
Universal / Blu-ray / CD Player
Sony UBP-X700 /M Ultra HD 4K HDR
Front Speakers
Martin Logan ElectroMotion ESL
Center Channel Speaker
Martin Logan Motion C2
Surround Speakers
Martin Logan Motion 4
Surround Back Speakers
Martin Logan Motion 4 (yes, another set of these)
Subwoofers
Martin Logan Dynamo 700
Other Speakers or Equipment
Cifte 12AU7 NOS & Genalex Gold Lion Tubes in Pre
Video Display Device
Samsung The Premiere LSP7T UST Laser Projector
Screen
Elite Screens Aeon CLR3 0.8 Gain 103-inch
Remote Control
PrimaLuna & Lumin iApp
Streaming Equipment
Netgear Nighthawk S8000 Streaming Switch, Lumin U1 Mini Streamer/Transport
Streaming Subscriptions
Roon & QoBuz Studio Premier, Amazon Prime & Netflix
Other Equipment
ThrowRug, SaddleBlankets, WideBand & BaseTraps...
Got this Trace arithmetic error today... Not sure if this is the same as Serko70 above only on a MacOS...

REW V5.20.11 running Azul Systems, Inc. JRE 1.8.0_345 64-bit on OS X 12.5.1 Locale: language en, keyboard US, UTF-8 at 113 DPI

Message:
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
Stack Trace:
java.lang.OutOfMemoryError: Java heap space
java.util.concurrent.FutureTask.report(FutureTask.java:122)
java.util.concurrent.FutureTask.get(FutureTask.java:192)
javax.swing.SwingWorker.get(SwingWorker.java:602)
roomeqwizard.PG.done(y:1650)
javax.swing.SwingWorker$5.run(SwingWorker.java:737)
javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
javax.swing.Timer.fireActionPerformed(Timer.java:313)
javax.swing.Timer$DoPostEvent.run(Timer.java:245)
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)
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)
Java heap space
roomeqwizard.SweepAnalyser.B(y:1458)
roomeqwizard.IRData.calcEnvelope(y:2923)
roomeqwizard.IRData.findImpulseStart(y:2399)
roomeqwizard.IRData.getIRStart(y:596)
roomeqwizard.PG.B(y:1482)
roomeqwizard.PG.doInBackground(y:1847)
javax.swing.SwingWorker$1.call(SwingWorker.java:295)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
javax.swing.SwingWorker.run(SwingWorker.java:334)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:750)
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Messages
5,845
No, as the error says, it has run out of memory. It could happen with very long impulse responses and long (or full width) windows. You could manually edit the roomeqwizard.vmoptions file in the REW application folder to increase the memory allocation beyond REW's 2 GB installer maximum, by changing the -Xmx2048m line

Happy to investigate further if you attach the mdat file with the measurements that showed the problem and say what operation you were using.
 

ddude003

Senior Member
Joined
Aug 13, 2017
Messages
920
Location
Somewhere Northeast of Kansas City Missouri
My AV System  
Preamp, Processor or Receiver
PrimaLuna Dialogue Premium TubePre (2 channel+sub)
Main Amp
McIntosh MC152 SS Amp (2 channel)
Additional Amp
Yamaha RX-A850 Pro (the other 5 channels lol)
Computer Audio
MacBook Pro, Custom i7 7700k De-lid 2xAsus1080ti GFX build, Audirvana+, LiquidSonics, SoX
DAC
Chord Electronics Ltd. Qutest
Universal / Blu-ray / CD Player
Sony UBP-X700 /M Ultra HD 4K HDR
Front Speakers
Martin Logan ElectroMotion ESL
Center Channel Speaker
Martin Logan Motion C2
Surround Speakers
Martin Logan Motion 4
Surround Back Speakers
Martin Logan Motion 4 (yes, another set of these)
Subwoofers
Martin Logan Dynamo 700
Other Speakers or Equipment
Cifte 12AU7 NOS & Genalex Gold Lion Tubes in Pre
Video Display Device
Samsung The Premiere LSP7T UST Laser Projector
Screen
Elite Screens Aeon CLR3 0.8 Gain 103-inch
Remote Control
PrimaLuna & Lumin iApp
Streaming Equipment
Netgear Nighthawk S8000 Streaming Switch, Lumin U1 Mini Streamer/Transport
Streaming Subscriptions
Roon & QoBuz Studio Premier, Amazon Prime & Netflix
Other Equipment
ThrowRug, SaddleBlankets, WideBand & BaseTraps...
Thank you John... I did have a bunch of measurements open and trying some wild things... I will adjust the max memory allocation for REW when I hit that limit again...

That's odd... My roomeqwizard.vmoptions file has -Xmx512m... And the vmoptions.txt in the app package contents is also -Xmx512m... I could have sworn I alway pick the 2 GB installer choice... So I have changed it to -Xmx2048m and will see if it is better... If not I will increase it to 3 GB or 4GB...

Still runs out of memory with 4GB on my MacBook so I moved over to my windoz pc and set REW to 8GB... Works like a charm...
 
Last edited:

phofman

Registered
Joined
Jun 26, 2019
Messages
28
I was hitting OOM exception regularly in RTA 4M FFT 768kHz samplerate with coherent averaging enabled, increasing -Xmx fixed that too. It's not a bug but java feature :cool:
 
Top Bottom