REW Beta Release REW API beta releases

False alarm. Its working now. Yes i was referring to the grapgh legend area. Sorry.
Ok. It wasnt false. The problem is that i havent figured out when it happends yet. I can load the same mdat-file and sometimes it happends and sometimes not. I have been trying multiple mdat files. I`ll try to recreate it and report back.
 
Ok. It wasnt false. The problem is that i havent figured out when it happends yet. I can load the same mdat-file and sometimes it happends and sometimes not. I have been trying multiple mdat files. I`ll try to recreate it and report back.
By the way Im using this beta build without the api-server engaged.
 
Sorry for the dumb question, was using the last full release and just moved to the beta. I can't for the life of me figure out how to change the graph filter smoothing. No matter how many measurements I have on the left, only the top one has a small blue line on the right, assuming that means it's the active one. When changing smoothing it affects this first measurement but I can't figure out how to change smoothing on the others. Older REW versions I'd simply select a different measurement on the left and it would be the new active one and smoothing changes would be applied. How do I do that on the beta version? Appreciate any help.
 
Sorry for the dumb question, was using the last full release and just moved to the beta. I can't for the life of me figure out how to change the graph filter smoothing. No matter how many measurements I have on the left, only the top one has a small blue line on the right, assuming that means it's the active one. When changing smoothing it affects this first measurement but I can't figure out how to change smoothing on the others. Older REW versions I'd simply select a different measurement on the left and it would be the new active one and smoothing changes would be applied. How do I do that on the beta version? Appreciate any help.
Use your left mouse button to highlight all the measurements you like to "work with". You can also highligth the first then use the arrows to highlight more. Use up/down/left/right arrow keys on your keyboard. Smoothing is done by right clicking inside the graph area of the "All SPL" tab and also the "Overlay"-tab. The highlighted measurements are the same displayed in the "All SPL" tab and all "Overlay"-tabs. If you would like to view different measurements for different "Overlay"-tabs then you can deselect insode the graph legend area.
 
Alt+up arrow/down arrow change the current selection, or Alt+0..9 for any of the first 10 measurements.
Thank you very much, and thank you for the incredible toolset.
 
Thank you... I restarted from scratch and found I was using an older version of REW. so I had to delete all files of REW and download a fresh version and all operated much better.
Thanks Sam.
 
Java exception during "headless" .txt files import (drag & drop) after the 8th import. There was a total of 96 dropped:


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


Message:
java.lang.NullPointerException
Stack Trace:
roomeqwizard.kK.B(y:5313)
roomeqwizard.kK.mouseDragged(y:5060)
java.awt.Component.processMouseMotionEvent(Component.java:6587)
javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3342)
java.awt.Component.processEvent(Component.java:6308)
java.awt.Container.processEvent(Container.java:2239)
java.awt.Component.dispatchEventImpl(Component.java:4889)
java.awt.Container.dispatchEventImpl(Container.java:2297)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4552)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
java.awt.Container.dispatchEventImpl(Container.java:2283)
java.awt.Window.dispatchEventImpl(Window.java:2746)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
java.awt.EventQueue$4.run(EventQueue.java:733)
java.awt.EventQueue$4.run(EventQueue.java:731)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
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)

Btw, is there a way to bypass sampling rate prompt after each dropped "headerless" import?
 
Last edited by a moderator:
Java exception during "headless" .txt files import
Headless normally means no keyboard, monitor or mouse, maybe you meant headerless?

is there a way to bypass sampling rate prompt after each dropped "headerless" import?
If you are using a file format that does not contain any information about sample rate how else can REW know what the rate is?
 
I am having some difficulty adding SPL offset to measurements with right click on the measurement in "All SPL" tab. After entering an offset in the box and clicking "Add to Data" and then doing this to some other measurements, when I return back to the first measurment, I will see the offset value still in the box. Wouldn't be a problem if the offset was already applied in the first attempt but seems like only after a second click of "Add to data", that measurement is finally adjusted for the new SPL and can be used in trace artihmetic with its revised SPL values. I don't know if this was intentional but confused me a little bit.
 
Hi,

My very first post here so.... thanks a lot @John Mulcahy for your great software, best DSP tool :T. I think a hit a bug on REW 5.40 beta 42 when importing impulse response through API. I'm just working with the great tool A1Evo from @serko70 and porting it to Electron and got an Exception when importing impulse responses, it can even replicated using the Swagger UI that came with REW, this is on Mac OS Sonoma with beta 39 and beta 42.

Screenshot 2024-07-16 at 12.40.27 AM.png

REW V5.40 Beta 42 running Azul Systems, Inc. JRE 1.8.0_412 64-bit on OS X 14.5 Locale: language en, keyboard US, UTF-8 on 2560x1440 at 93 DPI Running in /Applications/REW

Message:
java.lang.IllegalStateException: Events to DefaultEventListModel must arrive on the EDT - consider adding GlazedListsSwing.swingThreadProxyList(source) somewhere in your list pipeline
Stack Trace:
Events to DefaultEventListModel must arrive on the EDT - consider adding GlazedListsSwing.swingThreadProxyList(source) somewhere in your list pipeline
ca.odell.glazedlists.swing.DefaultEventListModel.listChanged(DefaultEventListModel.java:93)
ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:434)
ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:430)
ca.odell.glazedlists.event.SequenceDependenciesEventPublisher$SubjectAndListener.firePendingEvent(SequenceDependenciesEventPublisher.java:469)
ca.odell.glazedlists.event.SequenceDependenciesEventPublisher.fireEvent(SequenceDependenciesEventPublisher.java:365)
ca.odell.glazedlists.event.ListEventAssembler.commitEvent(ListEventAssembler.java:326)
ca.odell.glazedlists.BasicEventList.add(BasicEventList.java:143)
roomeqwizard.SJ.D(y:2056)
roomeqwizard.HF.A(y:1360)
roomeqwizard.HF.A(y:3361)
roomeqwizard.HF.A(y:1993)
roomeqwizard.api.ImportService$ImpulseRespQueueConsumer.run(y:2271)
java.lang.Thread.run(Thread.java:750)


Here is the replication using Swagger:

Screenshot 2024-07-16 at 11.20.06 AM.png


If I hit Don't Send the impulse appears on the measurments but I cannot import any more. After a while the API respond with a 500, every other import after that gets a 500 too.

Screenshot 2024-07-16 at 11.20.40 AM.png


If you need more information please ask me. I attach the impulse response in .txt which is generated by the great A1Evo. BTW if I just drag&drop it to REW works perfect.

Thanks again :)
 

Attachments

I am having some difficulty adding SPL offset to measurements with right click on the measurement in "All SPL" tab.
I have fixed that for the next build, in the meantime hit Enter on the offset control before clicking Add to data.
 
John, how should be if in the 'Measure' and 'Preferences-Soundcard' windows the user changes the level of the measurement signal?
If I change the level in the 'Measure' window, then the level in the 'Preferences-Soundcard' window will also be changed. and if I changed the level in the 'Preferences-Soundcard' window, in the 'Measure' window the level remains as it was.
 
If I change the level in the 'Measure' window, then the level in the 'Preferences-Soundcard' window will also be changed. and if I changed the level in the 'Preferences-Soundcard' window, in the 'Measure' window the level remains as it was.
That's how it is intended to work. The most recent measurement level is used as the default for the soundcard calibration.
 
Thanks for clarifying. Although it seems to me that a new user will first try to calibrate the Soundcard and set the level that suits him. Then he will go to the 'Measure' window, and again he needs to change the level that he had already set during calibration. I'm not a new user, but I often check the levels in the 'Preferences-Soundcard' window. First I select the driver, inputs and outputs, and then check the levels. Only after that I go to the window to measure. The transition between these windows is equivalent. Whatever level I set in one of these windows, it should be repeated in the second window. There may be other circumstances that require the existing logic. Then let her stay.
 
Thanks for clarifying. Although it seems to me that a new user will first try to calibrate the Soundcard and set the level that suits him. Then he will go to the 'Measure' window, and again he needs to change the level that he had already set during calibration. I'm not a new user, but I often check the levels in the 'Preferences-Soundcard' window. First I select the driver, inputs and outputs, and then check the levels. Only after that I go to the window to measure. The transition between these windows is equivalent. Whatever level I set in one of these windows, it should be repeated in the second window. There may be other circumstances that require the existing logic. Then let her stay.
This exact issue tricked me just the other day while calibrating the sound. I thought it was a bug so I am glad to hear it is an intended workflow.
 
Soundcard calibration may require significantly different levels than subsequent measurements.
 
Came across this error - no idea what cause it. REW was already opened (sat opened for a few days). I copy/pasted the details below (hopefully that gives you an idea).

REW V5.40 Beta 42 running Azul Systems, Inc. JRE 1.8.0_412 64-bit on OS X 14.5 Locale: language en, keyboard CA, UTF-8 on 2560x1440 at 93 DPI Running in /Applications/REW


Message:
java.lang.NullPointerException
Stack Trace:
sun.java2d.pipe.AlphaColorPipe.renderPathTile(AlphaColorPipe.java:55)
sun.java2d.pipe.AAShapePipe.renderTiles(AAShapePipe.java:201)
sun.java2d.pipe.AAShapePipe.renderPath(AAShapePipe.java:149)
sun.java2d.pipe.AAShapePipe.fill(AAShapePipe.java:82)
sun.java2d.pipe.PixelToParallelogramConverter.fill(PixelToParallelogramConverter.java:164)
sun.java2d.pipe.ValidatePipe.fill(ValidatePipe.java:160)
sun.java2d.SunGraphics2D.fill(SunGraphics2D.java:2532)
roomeqwizard.BJ.paintComponent(y:180)
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.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.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.QC.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.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.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)
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)
 
I have no idea either. The error is in the Java runtime, the REW code further up the stack it just drawing a button.

If I figure it out, I'll let you know.

The last thing I did was finish an update to Chrome while REW was open and the API server would have been active.
 
Builds updated today (beta 43) with these changes:
  • Added: Measurements can be grouped
  • Added: The SPL & Phase graph has an option to show the musical note corresponding to the cursor frequency
  • Added: There are View preferences to set the tuning frequency for musical notes (default is 440 Hz) and choose the octave notation style
  • Added: Audison/Hertz equaliser entries
  • Added: Vector sum action in All SPL graph to add multiple measurements
  • Added: API endpoints to get the UUID of the selected measurement and select a measurement by UUID
  • Added: API endpoint /generator/full-scale-vrms to get/set the full scale rms voltage figure
  • Changed: Ctrl+TAB through measurements right click menu cycles through name and notes fields only
  • Changed: Voltage axis can go up to 1000 V
  • Fixed: Deleting the current measurement selection changed the EQ target of the preceding measurement to the default
  • Fixed: Flac file duration could be incorrect
  • Fixed: Crossover frequency figure shown in notes of measurements generated from room sim responses could be incorrect
  • Fixed: Typing a value in the right click menu SPL offset control and then clicking Add to data would not add the offset to the data
  • Fixed: Importing responses via the API could cause an exception
  • Fixed: Distortion overlay could show "None of these measurements have distortion data" when first opened

The big change is the ability to group measurements. That's covered in the measurements panel help, here is an example view:

1721551971804.png


Measurements can be added to groups by right click and there are options in the groups menu (
1721552041654.png
) to add measurements of different types to groups, along with an option to automatically create groups from the filenames of measurements as they are loaded.

1721552104673.png


On the overlays graphs (including All SPL) collapsing a group will deselect all its measurements, expanding a group will select all the group's measurement though there is an option to disable that in the group menu.

There are API endpoints for group management. Note that it is strongly recommended to reference measurements by their UUID rather than index, since the index is not reflective of the display order when measurements are grouped.

To preserve group arrangements for a set of measurements save the mdat file after setting up the groups. The mdat file contains group settings, but remains backwards compatible with earlier REW versions that don't support groups.

Adding groups has involved a fairly extensive rewrite of REW internals, if you notice odd behaviours please post about them here so they can be addressed promptly.
 
Hi,

Perhaps a small bug in latest Beta releases - after startup, in Overlays window you cannot select tab with keyboard shortcut (Ctrl + "number"). If you select any tab with the mouse click, then after that it works as expected.
 
Back
Top