REW Beta Release REW API beta releases

serko70

Member
Joined
Oct 13, 2017
Posts
294
Location
Germany
More  
Preamp, Processor or Receiver
Marantz SR6015
Main Amp
Rotel Michi X3
DAC
Oppo 205
Computer Audio
Intel NUC
Universal / Blu-ray / CD Player
Oppo 205
Streaming Subscriptions
TIDAL, ROON
Front Speakers
Focal Kanta 2
Center Channel Speaker
Linn Trikan
Surround Speakers
Focal Dome Flax
Surround Back Speakers
Focal Dome Flax
Front Height Speakers
Focal Dome Flax
Rear Height Speakers
Focal Dome Flax
Subwoofers
Focal Sub Air
Video Display Device
LG 65 3D OLED
As an alternative to editing the roomeqwizard.vmoptions file parameters can be passed to the runtime via the command line (e.g. by editing the Target of a shortcut). To do that they must be preceded by -J, so to force REW to start with 4 GB allocation (for example) regardless of the contents of the vmoptions file the shortcut target on Windows could be C:\Program Files\REW\roomeqwizard.exe -J-Xmx4096m
1706098287207.png


works like a charm!
 

chrisf26

Registered
Joined
Jan 18, 2024
Posts
6
Hello, I am wondering if there is an API feature which can check the progress of RTA data capture (ie: how many averages have been taken) so that I can check this count before stopping data collection. is there a way to do this?
I currently have a timer which is hardcoded to ensure enough time is given for all averaging to be complete before stopping the RTA, however this is not very efficient.
thanks.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Hello, I am wondering if there is an API feature which can check the progress of RTA data capture (ie: how many averages have been taken) so that I can check this count before stopping data collection. is there a way to do this?
I currently have a timer which is hardcoded to ensure enough time is given for all averaging to be complete before stopping the RTA, however this is not very efficient.
thanks.
The easiest way to do that is to use the stopAt boolean and stopAtValue integer fields of the RTAConfiguration, which correspond to the RTA option to stop the RTA after a chosen number of averages when in Forever averaging mode. You can monitor the average count by subscribing to updates at the /rta/distortion/subscribe endpoint.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Builds in the first post updated today (beta 5) with these changes:
  • Added: Action to Change cal for all selected measurements
  • Added: Equaliser entries for miniDSP Flex and Flex with Dirac Live
  • Added: Graph capture dialog has a selector for the colour scheme of the captured image
  • Added: Subscriptions can be added to the /rta/status endpoint to be notified of the RTA starting and stopping
  • Changed: The API RTAStatus object includes a boolean to indicate whether the RTA is running
  • Changed: The oldest supported macOS version is now 10.15 as Java runtimes are no longer built for older macOS versions
 

serko70

Member
Joined
Oct 13, 2017
Posts
294
Location
Germany
More  
Preamp, Processor or Receiver
Marantz SR6015
Main Amp
Rotel Michi X3
DAC
Oppo 205
Computer Audio
Intel NUC
Universal / Blu-ray / CD Player
Oppo 205
Streaming Subscriptions
TIDAL, ROON
Front Speakers
Focal Kanta 2
Center Channel Speaker
Linn Trikan
Surround Speakers
Focal Dome Flax
Surround Back Speakers
Focal Dome Flax
Front Height Speakers
Focal Dome Flax
Rear Height Speakers
Focal Dome Flax
Subwoofers
Focal Sub Air
Video Display Device
LG 65 3D OLED
I am having a strange issue in Overlays/GD graphs (also happened with the previous Beta) like below:

1706587633793.png


Ticked measurements do not show up until I click on them in the normal REW window. Then they do. There's this odd "s" in front of the ones that don't show up.

The measurements are from Acourate, so it could be some compatibility issue but happens with other measurements from the same source , too.
 

Attachments

  • 4. Post DRC XOs.mdat
    10.6 MB · Views: 57

serko70

Member
Joined
Oct 13, 2017
Posts
294
Location
Germany
More  
Preamp, Processor or Receiver
Marantz SR6015
Main Amp
Rotel Michi X3
DAC
Oppo 205
Computer Audio
Intel NUC
Universal / Blu-ray / CD Player
Oppo 205
Streaming Subscriptions
TIDAL, ROON
Front Speakers
Focal Kanta 2
Center Channel Speaker
Linn Trikan
Surround Speakers
Focal Dome Flax
Surround Back Speakers
Focal Dome Flax
Front Height Speakers
Focal Dome Flax
Rear Height Speakers
Focal Dome Flax
Subwoofers
Focal Sub Air
Video Display Device
LG 65 3D OLED
I removed all measurements but the EQ filter which was a pure impulse and then tried to open EQ window for that EQ filter and got a java exception:

REW V5.40 Beta 5 running Azul Systems, Inc. JRE 1.8.0_402 64-bit on Windows 10 Locale: language en, keyboard GB, windows-1252 at 96 DPI Running in C:\Program Files\REW


Message:
java.lang.NullPointerException
Stack Trace:
roomeqwizard.KK.A(y:1202)
roomeqwizard.KK.getColumnValue(y:241)
ca.odell.glazedlists.swing.DefaultEventTableModel.getValueAt(DefaultEventTableModel.java:192)
javax.swing.JTable.getValueAt(JTable.java:2720)
javax.swing.JTable.prepareRenderer(JTable.java:5712)
javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
com.formdev.flatlaf.ui.FlatTableUI.paint(FlatTableUI.java:405)
javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
javax.swing.JComponent.paintComponent(JComponent.java:780)
javax.swing.JComponent.paint(JComponent.java:1056)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JViewport.paint(JViewport.java:728)
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)
org.jdesktop.swingx.JXPanel.paint(Unknown Source)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
javax.swing.JViewport.paint(JViewport.java:728)
javax.swing.JComponent.paintChildren(JComponent.java:889)
javax.swing.JComponent.paint(JComponent.java:1065)
org.jdesktop.swingx.JXPanel.paint(Unknown Source)
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.JViewport.paint(JViewport.java:728)
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.pB.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.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.paintToOffscreen(JComponent.java:5217)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
javax.swing.RepaintManager.paint(RepaintManager.java:1272)
javax.swing.JComponent.paint(JComponent.java:1042)
java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
java.awt.Container.paint(Container.java:1978)
java.awt.Window.paint(Window.java:3906)
javax.swing.RepaintManager$4.run(RepaintManager.java:842)
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)
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)
 
Last edited by a moderator:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
I removed all measurements but the EQ filter which was a pure impulse and then tried to open EQ window for that EQ filter and got a java exception:
I can't reproduce that, but I've put in some guards for the next build.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Builds updated today (beta 6) with these changes:
  • Added: Graph capture dialog has an option to add a logo image
  • Added: The measurement panel thumbnail right click menu has a "Swap with first" entry to swap it with the first measurement
  • Added: API processMeasurements Minimum phase version command has been implemented
  • Added: API processMeasurements Excess phase version command has been implemented
  • Changed: Replaced the "Browse..." and "Clear" button labels by icons
  • Fixed: Graph capture of graphs using a fixed aspect ratio did not work properly
  • Fixed: Group delay traces were not automatically generated when selecting the group delay overlay graph
 

serko70

Member
Joined
Oct 13, 2017
Posts
294
Location
Germany
More  
Preamp, Processor or Receiver
Marantz SR6015
Main Amp
Rotel Michi X3
DAC
Oppo 205
Computer Audio
Intel NUC
Universal / Blu-ray / CD Player
Oppo 205
Streaming Subscriptions
TIDAL, ROON
Front Speakers
Focal Kanta 2
Center Channel Speaker
Linn Trikan
Surround Speakers
Focal Dome Flax
Surround Back Speakers
Focal Dome Flax
Front Height Speakers
Focal Dome Flax
Rear Height Speakers
Focal Dome Flax
Subwoofers
Focal Sub Air
Video Display Device
LG 65 3D OLED
Caused the below Java exception while trying "AxB conjugate" with an imported txt response and Dirac pulse:


REW V5.40 Beta 6 running Azul Systems, Inc. JRE 1.8.0_402 64-bit on Windows 10 Locale: language en, keyboard GB, windows-1252 at 96 DPI Running in C:\Program Files\REW


Message:
java.util.concurrent.ExecutionException: java.lang.NullPointerException
Stack Trace:
java.lang.NullPointerException
java.util.concurrent.FutureTask.report(FutureTask.java:122)
java.util.concurrent.FutureTask.get(FutureTask.java:192)
javax.swing.SwingWorker.get(SwingWorker.java:602)
roomeqwizard.HH.done(y:1324)
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)
Caused by:
java.lang.NullPointerException
roomeqwizard.HH.B(y:3476)
roomeqwizard.HH.doInBackground(y:3511)
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)
 
Last edited by a moderator:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Builds in the first post updated today (beta 7) with these changes:
  • Fixed: Bogus color space error when saving a graph image as JPEG
  • Fixed: SPL meter rolling Leq figure was incorrect
  • Fixed: NPE for A*B conjugate if measurement A did not have an impulse response
 

chrisf26

Registered
Joined
Jan 18, 2024
Posts
6
when running an RTA scan, can I set the start/stop frequencies to something other than the default 2Hz to 24 kHz? and if so can this be done through the API?
for example I would only like to sample up to 8kHz.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
when running an RTA scan, can I set the start/stop frequencies to something other than the default 2Hz to 24 kHz? and if so can this be done through the API?
for example I would only like to sample up to 8kHz.
An FFT produces results from DC to half the chosen sample rate. If your interface supports lower sample rates you can choose the required rate on the REW Soundcard preferences.
 

Bowkey

Registered
Joined
Jul 1, 2017
Posts
21
Hi John,

The new API is mostly working great so far, many thanks for making it available.

I run into two errors when making calls to alignment-tool endpoint:

- If I use the /alignment-tool/command with the body { "command": "Align phase", "frequency": 80 } in REW I get the error window saying “Measurements being aligned must have phase responses”. This does not happen when I send the same API command with the Alignment Tool window opened/visible.

- I get an API error response when I make a call to the /alignment-tool/index-a (or index-b) endpoint with the index set to the last available index. This does not happen when measurements with indexes higher than the one called exist. So eg with only two measurements loaded, you can’t set the index-a or index-b to 2.
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Builds in the first post updated today (beta 8) with these changes:
  • Added: Divide and inversion trace arithmetic operations for measurements without impulse responses now allow frequency limits
  • Fixed: The |A| / |B| trace arithmetic operation frequency limits were ignored if both measurements did not have impulse responses
  • Fixed: Use the sub cal signal for check levels when the output is the LFE channel regardless of the sweep end frequency
  • Fixed: Use a 10 dB lower level for check levels if the LFE -10dB option has been selected and the output is the LFE channel
  • Fixed: FBQ2496 MIDI fine frequency setting was incorrect
  • Fixed: Posts to API alignment-tool/index-a and alignment-tool/index-b had incorrect bounds checking
  • Fixed: API alignment-tool commands could be rejected when the Alignment tool dialog was not showing
 
Last edited:

Bowkey

Registered
Joined
Jul 1, 2017
Posts
21
Great, thanks for the quick fix.

Would it be possible to add a way to disable gui warning messages, e.g. the pop-up in the EQ window about the target level being lower than expected, when making a call through the API?
 

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Would it be possible to add a way to disable gui warning messages, e.g. the pop-up in the EQ window about the target level being lower than expected, when making a call through the API?
I'm gradually going through and suppressing GUI messages that originate from API actions, but there are a lot of them so if you spot some, let me know. I've dealt with another batch (including EQ-related) for the next build.
 

Lowclock

New Member
Joined
Mar 22, 2023
Posts
58
I've attached an mdat showing the results of a division operation done with older versions and with 5.40 Beta 8 and I'm not sure why they are so different, if this is intended, or how to fix it.

E: That was quick. Thanks again!
 

Attachments

  • weird division.mdat
    2.8 MB · Views: 76
Last edited:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
I've attached an mdat showing the results of a division operation done with older versions and with 5.40 Beta 8 and I'm not sure why they are so different, if this is intended, or how to fix it.
Thanks. Builds in the first post updated today (beta 9) with these changes:
  • Fixed: Suppressed further GUI error and warning messages when triggered from the API
  • Fixed: Division result was incorrect outside frequency limits
 

sm52

Member
Joined
Mar 14, 2019
Posts
1,009
I'm trying to do level calibration in SPL meter. I click calibrate, specify the value, REW writes, for example, 112 dB before the clip. I close the windows, but nothing changes at the bottom of the main window, 120 dB uncalibrated. Drivers java, excl.
 
Last edited:

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
I'm trying to do level calibration in SPL meter. I click calibrate, specify the value, REW writes, for example, 112 dB before the clip. I close the windows, but nothing changes at the bottom of the main window, 120 dB uncalibrated. Drivers java, excl.
Please generate and attach the Help menu diagnostic file.
 

sm52

Member
Joined
Mar 14, 2019
Posts
1,009
Here he is.
 

Attachments

  • REWdiagnostic_1707682041289.zip
    39.8 KB · Views: 28

John Mulcahy

REW Author
Thread Starter
Joined
Apr 3, 2017
Posts
8,068
Don't see any clues there, please attach screenshots of your REW soundcard preferences and the Cal files preferences calibration data panel for the input (the one which appears when you click on the gear icon).
 

sm52

Member
Joined
Mar 14, 2019
Posts
1,009
I don't see any hints. Before this, I calibrated REW with an external sound card connected. REW did everything right. The inscription appeared at the bottom, 123 dB to peak. There are no files for microphone calibration in any line, except for one with Umik.

This may be due to switching between weighing buttons. First I turned on the A weighting to compare the readings on my SPL meter (which only has A weighting) with the SPL readings on the REW meter. REW turned on the 1 kHz tone on the generator. Then I clicked calibrate. REW switched to weighing C. Then I entered new numbers taking into account the difference from the previous action. I also turned on Logger and Leg to see the levels there. In logger, when you hover over Leg REW, it says that this graph is at the top. I tried to see him, but he was not there at all. I also included the Slow button there.
 

Attachments

  • Mic cal files.JPG
    Mic cal files.JPG
    38.6 KB · Views: 34
  • Pref SC.JPG
    Pref SC.JPG
    124.9 KB · Views: 30
Last edited:
Top Bottom