INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1] 2   Go Down

Author Topic: beqdesigner: a jriver dsp simulator and editor  (Read 9886 times)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
beqdesigner: a jriver dsp simulator and editor
« on: May 30, 2021, 03:43:53 pm »

related to https://yabb.jriver.com/interact/index.php/topic,129608.msg899198.html , I also built a partial replacement for DSP Studio in beqdesigner (https://beqdesigner.readthedocs.io/en/latest/) which is the app used to create those beq filters

The motivation for this can be found over at the beqd docs - https://beqdesigner.readthedocs.io/en/latest/ui/manage_mc/ - but basically it boils down to the fact that I personally find DSP Studio awkward to use due to the unconventional filter definitions, limited crossover types, the lack of any sort of visualisation of what is going on and no easy interop with external filter design apps. Hence I built a new UI which addresses these points, as a bonus the new MCWS calls mean this UI can now (in MC28) also manage DSP configuration for remote MC instances live (e.g. during playback) without interrupting what is going on on screen. MC27 is also supported via the file save/load options.

The main features are

* a single dialog for configuring bass management, active speaker design and input-output channel routing using a typical matrix routing UI
* support for all common high and low pass filter types (Butterworth, Linkwitz-Riley and a couple of Bessel filter types) upto 24th order
* import filter sets from RoomEQ Wizard
* import filters from multisub optimizer - https://www.andyc.diy-audio-engineering.org/mso/html/tech-topics/jriver-export.html (NB: MC29 only)
* visualisation of both the filter pipeline and the resulting frequency response
* undo/redo
* most operations accessible via keyboard for faster data entry

Releases are published on github for windows, macos and a few flavours of ubuntu with the current version being https://github.com/3ll3d00d/beqdesigner/releases/tag/0.10.0-beta.12

Please note that this is a relatively complex UI that has only been tested by me so probably there are bugs lurking (possibly in plain sight). Do be aware of https://yabb.jriver.com/interact/index.php/topic,129345.msg899145.html#msg899145 and take care to verify that the DSP configuration loaded is what you expect.

Some pics to illustrate at the bottom of the post or refer to the user guide mentioned previously.
Logged

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 71212
  • where the buffalo roam
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #1 on: May 30, 2021, 04:42:17 pm »

Thanks again!
Logged

terrym@tassie

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 465
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #2 on: May 30, 2021, 06:24:53 pm »

Great work!!!   Kudos +100

Terry
Logged
" I like work: it fascinates me. I can sit and look at it for hours." -Jerome K. Jerome

zybex

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2313
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #3 on: June 02, 2021, 08:06:45 am »

Awesome work!
Logged

Foggyroad

  • Recent member
  • *
  • Posts: 21
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #4 on: June 07, 2021, 11:37:31 am »

@mattkhan - this is excellent!

I've imported a PEQ file from JRiver27 and all looks good. Once I realised I had to split the filter pairs (eg L,R channels) in order to edit them it was straightforward. The Q of shelving filters seemed slightly different from my calculations using one of the online algebra calculators, but were so close that I doubt I would hear the difference - 0.5004 or 0.4999 instead of 0.5 for example.

I've also edited the cascaded BW2 x-overs so they are now a single LR4 and the curves look identical.

Disabled filters do display on the graph which was disconcerting at first, but are marked as disabled in the text, so easy enough to remove.

It's wonderful to be able to visualise the FR and phase - saves a lot of measuring to check that the transfer function is the same. I will do a measurement check when I've made all the changes to the imported file, but it is looking good so far.

Just a couple of questions:
I'm presuming when the .dsp file is uploaded to JRiver it is converted back to cascaded BW2s as my understanding that is the only way JRiver can do a LR4. Is this correct? And are the shelving Qs converted back to S?

Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #5 on: June 07, 2021, 04:28:22 pm »

I've imported a PEQ file from JRiver27 and all looks good. Once I realised I had to split the filter pairs (eg L,R channels) in order to edit them it was straightforward. The Q of shelving filters seemed slightly different from my calculations using one of the online algebra calculators, but were so close that I doubt I would hear the difference - 0.5004 or 0.4999 instead of 0.5 for example.
there is some rounding error in the UI due to the conversions back and forth between S and Q and the way the UI controls format that value. I've never bothered to fix that as there is no perceivable difference in practice, the dB error as a result is less than 0.001dB so you really do have golden ears if you can notice that :)

Disabled filters do display on the graph which was disconcerting at first, but are marked as disabled in the text, so easy enough to remove.
thanks for noting this, will fix

I'm presuming when the .dsp file is uploaded to JRiver it is converted back to cascaded BW2s as my understanding that is the only way JRiver can do a LR4. Is this correct? And are the shelving Qs converted back to S?
yes, what you see in beqd should be what you get in MC as beqd converts everything into filters supported by jriver using values for Q (or S) which jriver understands. This means converting between Q and S for shelf filters & generating as many butterworth filters as is necessary to represent higher and/or odd order low or high pass filters. Note that MC also has unconventional values for custom Q high/low pass filters so this problem is also worked around along the way.
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #6 on: June 13, 2021, 12:51:56 pm »

latest release fixes a couple of glitches in filter editing - https://github.com/3ll3d00d/beqdesigner/releases/tag/0.10.0-beta.13

Once I realised I had to split the filter pairs (eg L,R channels) in order to edit them it was straightforward.
in the build above, if you attempt to edit such filter in the filter list then it will offer to split them to per channel filters for you

this isn't strictly necessary though because you can also edit filters via the filter chain view, if you right click on a filter in that view then you'll get an add/edit/delete menu or alternatively double click  on one of those nodes and it will start editing for that particular channel. If you change that filter then it will automatically remove that channel from the multichannel filter and create a new filter for that individual channel instead.
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #7 on: July 02, 2022, 02:09:25 am »

another new version up  https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.4

the main change in feature terms is that beqdesigner now supports importing filters from Multi Sub Optimiser to MC DSP - see https://www.andyc.diy-audio-engineering.org/mso/html/tech-topics/jriver-export.html for further details on how to use this

there are a few incremental improvements driven by changes in MC29

* changes to DSP capability in MC29 (https://yabb.jriver.com/interact/index.php/topic,132284.0.html)
* automatic conversion between MC28 and MC29 format for Q (i.e. connect to MC28, download DSP config, connect to MC29, upload config)

Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #8 on: March 02, 2023, 09:42:41 am »

This is a fantastic tool, and I just found it by accident 2 days ago. Great work!!

Version: 0.11.0-beta.4

But.. When I load my existing DSP config into BEQ, I have two issues.
1. The subwoofer output is not displayed (Channel 13, 14, 15 & 16)
2. BEQ outputs this error: Warning: Could not load "C:\Users\humle\AppData\Local\Temp\_MEI276162\gvplugin_pango.dll" - The system cannot find the file specified.

The entire debug log file is here:
2023-03-02 16:37:53,723 - DEBUG - MainThread   - signal - calculate_average - Analysing default at 1.0 Hz resolution using Default avg windows
2023-03-02 16:37:53,725 - DEBUG - MainThread   - xy - interp - Interpolation from 501 to 32769 in 1.001ms
2023-03-02 16:37:53,725 - DEBUG - MainThread   - signal - __rescale_x - Interpolation from 501 to 32769 in 1.001ms
2023-03-02 16:37:53,725 - DEBUG - MainThread   - signal - calculate_peak - Analysing default at 1.0 Hz resolution using Default peak windows
2023-03-02 16:37:53,726 - DEBUG - MainThread   - xy - interp - Interpolation from 501 to 32769 in 1.001ms
2023-03-02 16:37:53,726 - DEBUG - MainThread   - signal - __rescale_x - Interpolation from 501 to 32769 in 1.001ms
2023-03-02 16:37:53,728 - DEBUG - MainThread   - xy - interp - Interpolation from 501 to 32769 in 1.001ms
2023-03-02 16:37:53,728 - DEBUG - MainThread   - signal - __rescale_x - Interpolation from 501 to 32769 in 1.001ms
2023-03-02 16:37:53,728 - DEBUG - MainThread   - signal - on_filter_change - Applying filter change to default
2023-03-02 16:37:53,730 - DEBUG - MainThread   - iir - get_transfer_function - freqz in 2.002ms
2023-03-02 16:37:53,737 - INFO - MainThread   - beq - __init__ - Ignoring unknown cached preference for display/show_filtered_signals - None
2023-03-02 16:37:53,761 - DEBUG - MainThread   - limits - propagate_to_axes - main Redrawing axes on limits change
2023-03-02 16:37:53,776 - DEBUG - MainThread   - limits - propagate_to_axes - spectrum Redrawing axes on limits change
2023-03-02 16:37:53,777 - WARNING - MainThread   - beq - ensurePathContainsExternalTools - No binaries paths set
2023-03-02 16:37:54,212 - DEBUG - Dummy-2   - urllib3.connectionpool - _make_request - https://api.github.com:443 "GET /repos/3ll3d00d/beqdesigner/releases HTTP/1.1" 200 None
2023-03-02 16:37:54,237 - DEBUG - Dummy-2   - urllib3.connectionpool - _new_conn - Starting new HTTPS connection (1): api.github.com:443
2023-03-02 16:37:54,908 - DEBUG - Dummy-2   - urllib3.connectionpool - _make_request - https://api.github.com:443 "GET /repos/3ll3d00d/beqdesigner/issues?sort=updated&state=closed&per_page=100 HTTP/1.1" 200 None
2023-03-02 16:38:43,639 - DEBUG - MainThread   - limits - propagate_to_axes - preview Redrawing axes on limits change
2023-03-02 16:38:47,766 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,767 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - ---   Sub common filters   ---
2023-03-02 16:38:47,767 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,767 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,767 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,767 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,767 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - ---   Shared Subwoofer Filters   ---
2023-03-02 16:38:47,768 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,768 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,768 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - ---   Sub Front Left   ---
2023-03-02 16:38:47,768 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,768 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - ---   Sub Front Right   ---
2023-03-02 16:38:47,769 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,769 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - ---   Sub Rear Center   ---
2023-03-02 16:38:47,769 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,769 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - ---   Sub Sink+Sofa   ---
2023-03-02 16:38:47,769 - DEBUG - MainThread   - jriver.dsp - __handle_divider - Ignoring divider outside complex filter parsing - --------------
2023-03-02 16:38:47,770 - INFO - MainThread   - jriver.dsp - __init__ - Parsed M:/Movies/DSP Preset better-bogus.dsp in 9.0ms
2023-03-02 16:38:47,774 - INFO - MainThread   - jriver.filter - __update_history - FiltCache: 1, idx: -1
2023-03-02 16:38:47,805 - INFO - MainThread   - jriver.filter - simulate - Generated 18 signals in 25.0 ms
2023-03-02 16:38:47,810 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.backend.piping.pipe(['renderer', 'formatter', 'neato_no_op', 'quiet'])
2023-03-02 16:38:47,811 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.backend.rendering.render(['renderer', 'formatter', 'neato_no_op', 'quiet'])
2023-03-02 16:38:47,811 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.backend.unflattening.unflatten(['stagger', 'fanout', 'chain', 'encoding'])
2023-03-02 16:38:47,812 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.backend.viewing.view(['quiet'])
2023-03-02 16:38:47,814 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.quoting.quote(['is_html_string', 'is_valid_id', 'dot_keywords', 'endswith_odd_number_of_backslashes', 'escape_unescaped_quotes'])
2023-03-02 16:38:47,814 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.quoting.a_list(['kwargs', 'attributes'])
2023-03-02 16:38:47,814 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.quoting.attr_list(['kwargs', 'attributes'])
2023-03-02 16:38:47,814 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.dot.Dot.clear(['keep_attrs'])
2023-03-02 16:38:47,815 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.dot.Dot.__iter__(['subgraph'])
2023-03-02 16:38:47,815 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.dot.Dot.node(['_attributes'])
2023-03-02 16:38:47,815 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.dot.Dot.edge(['_attributes'])
2023-03-02 16:38:47,815 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.dot.Dot.attr(['_attributes'])
2023-03-02 16:38:47,816 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.dot.Dot.subgraph(['name', 'comment', 'graph_attr', 'node_attr', 'edge_attr', 'body'])
2023-03-02 16:38:47,816 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.piping.Pipe._pipe_legacy(['renderer', 'formatter', 'neato_no_op', 'quiet'])
2023-03-02 16:38:47,817 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.saving.Save.save(['directory'])
2023-03-02 16:38:47,817 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.rendering.Render.render(['directory', 'view', 'cleanup', 'format', 'renderer', 'formatter', 'neato_no_op', 'quiet', 'quiet_view'])
2023-03-02 16:38:47,817 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.rendering.Render.view(['directory', 'cleanup', 'quiet', 'quiet_view'])
2023-03-02 16:38:47,818 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.unflattening.Unflatten.unflatten(['stagger', 'fanout', 'chain'])
2023-03-02 16:38:47,818 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.graphs.BaseGraph.__init__(['comment', 'filename', 'directory', 'format', 'engine', 'encoding', 'graph_attr', 'node_attr', 'edge_attr', 'body', 'strict'])
2023-03-02 16:38:47,819 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.sources.Source.from_file(['directory', 'format', 'engine', 'encoding', 'renderer', 'formatter'])
2023-03-02 16:38:47,819 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.sources.Source.__init__(['filename', 'directory', 'format', 'engine', 'encoding'])
2023-03-02 16:38:47,819 - DEBUG - MainThread   - graphviz._tools - decorator - deprecate positional args: graphviz.sources.Source.save(['directory'])
2023-03-02 16:38:47,820 - DEBUG - MainThread   - graphviz.backend.execute - run_check - run [WindowsPath('dot'), '-Kdot', '-Tsvg']
2023-03-02 16:38:47,898 - DEBUG - MainThread   - signal - calculate_average - Analysing L at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,904 - DEBUG - MainThread   - signal - calculate_average - Analysing R at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,910 - DEBUG - MainThread   - signal - calculate_average - Analysing C at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,916 - DEBUG - MainThread   - signal - calculate_average - Analysing SW at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,922 - DEBUG - MainThread   - signal - calculate_average - Analysing SL at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,928 - DEBUG - MainThread   - signal - calculate_average - Analysing SR at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,934 - DEBUG - MainThread   - signal - calculate_average - Analysing RL at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,940 - DEBUG - MainThread   - signal - calculate_average - Analysing RR at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,945 - DEBUG - MainThread   - signal - calculate_average - Analysing C9 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,951 - DEBUG - MainThread   - signal - calculate_average - Analysing C10 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,960 - DEBUG - MainThread   - signal - calculate_average - Analysing C11 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,970 - DEBUG - MainThread   - signal - calculate_average - Analysing C12 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,979 - DEBUG - MainThread   - signal - calculate_average - Analysing C13 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,986 - DEBUG - MainThread   - signal - calculate_average - Analysing C14 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:47,995 - DEBUG - MainThread   - signal - calculate_average - Analysing C15 at 1.0 Hz resolution using Default avg windows
2023-03-02 16:38:48,003 - DEBUG - MainThread   - signal - calculate_average - Analysing C16 at 1.0 Hz resolution using Default avg windows
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #9 on: March 02, 2023, 09:58:44 am »

Can you share your config?

Go to DSP studio and save it as a file then post that
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #10 on: March 02, 2023, 10:07:10 am »

Sure, here it is.
In the screenshot I shared, I had removed all the disabled filters but nothing else was changed.
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #11 on: March 02, 2023, 10:23:58 am »

Thanks, I will take a look

Fwiw the latest builds have some changes in as I have been working on adding support for matched delay subtractive filters to enable a linear phase response while still using our. There were various fixes along the way so it's possible that a newer version might work (if you want to try that before I get to look at your config)
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #12 on: March 02, 2023, 10:29:33 am »

According to github, v0.11.0-beta.4 is the latest?

I am struggling a little with the tool, something simple like making the same highpass filter for a number of channels? It seems like I have to make one filter at a time for each channel, hmm..
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #13 on: March 02, 2023, 10:35:08 am »

There are beta releases

https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.13

The peq screen is intended as the last resort. It is per channel only atm (possibly I could change it)

I use geq if I am doing some sort of shaping https://beqdesigner.readthedocs.io/en/latest/ui/manage_mc/#geq

And I use https://beqdesigner.readthedocs.io/en/latest/ui/manage_mc/#crossover-and-bass-management if I am doing crossover design/routing
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #14 on: March 02, 2023, 10:43:17 am »

I will fetch the latest, and see if the bugs are gone, thanks :-)

Regarding GEQ/PEQ or crossover-bass-management:
GEQ (where I can choose multiple channels) cannot do f.x. a high pass filter.
PEQ does not support multiple channels.
Crossover-bass-management, I will need to play with it, presently I find it difficult to make it do what I want :)
Logged
Working on my 12 channel JRiver entertainment center :-)

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #15 on: March 02, 2023, 10:59:59 am »

The latest version cannot open my .dsp file.
I use MC 29, but tried with 28, 29 and 30, same error.

Debug output and screenshot attached.

And, I still get the: Warning: Could not load "C:\Users\humle\AppData\Local\Temp\_MEI421002\gvplugin_pango.dll" - The system cannot find the file specified.
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #16 on: March 02, 2023, 02:43:17 pm »

it's a problem with not handling disabled filters properly when it comes to simulating the response

you can delete the disabled filter (specifically the disabled mix filters) or get 0.11.0-beta.14 once it has built to avoid the problem

it would be interesting to know your speaker setup btw, probably I can suggest how better to use beqd to represent those filters, i.e. generally I would suggest to use the features in beqd to create  filter features and let it translate those in actual MC supported filter types. It's not necessary though, you can just use it to create plain lists of filters instead. For me personally (multiway multisub multichannel setup), my list is really MSO filter set exported from MSO + XO filter + a few extra tweaks on top using GEQ.
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #17 on: March 02, 2023, 03:12:49 pm »

I have deleted all the disabled filters in BEQ, but it still does not show output for my subwoofer channels (channels 13, 14, 15, 16). It seems like something else is making the issue. It shows the response of U1, which I copy to the sub-channels, so part of the sub-filter-routing is simulated.

My setup is:
Fronts 2-way active
Center
Surrounds (left side, right side, center rear)
4 individual subs (Sometimes MSO, sometimes my own parameters)

I intend to adopt one of hulks bass-routings, to get rid of the front+sub => phase issue.
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #18 on: March 02, 2023, 03:25:52 pm »

if I delete the disabled filters in beta13 and select just C13-16, I see the attached which, at first glance (i.e. I didn't examine your filters in detail), seems ok

there are clearly some bugs I don't remember in beta4 which don't play nice with your filter set so just use the latest instead
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #19 on: March 02, 2023, 03:27:33 pm »

Update:
I tried building a simple version that illustrates the issue, and found a difference between beta4 and beta13.

0.11.0-beta.4
Copy L to U1 +6dB
Copy U1 to C13 +0dB
Copy L to C14 +3dB
Here I get no simulated output on C13, but output on C14 simulates correct.

0.11.0-beta.13
Copy L to U1 +6dB
Copy U1 to C13 +0dB
Copy L to C14 +3dB
Here I correct simulated output on both C13 and C14. So something with copy to/from U1 does not simulate in beta4.

Unfortunately beta13 cannot open my MC 29 dsp file, so I will try beta14 when it is ready.

Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #21 on: March 02, 2023, 03:31:08 pm »

This is odd. beta13 cannot open the .dsp file on my computer, but beta4 can.

But, if I open the .dsp file with beta4 and save it again, then beta 13 can open the file. Strange little work around, but it works.

I still have the missing plugin in the command window though.
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #22 on: March 02, 2023, 03:33:09 pm »

but the graph view of the filters still renders ok right?
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #23 on: March 02, 2023, 03:39:19 pm »

The graph view renders correct, yes..



And, another little thing. Avast complains about something BEQ does. Avast did not complain about beta4, but it does with beta13 and beta14.

I will just make an exception in Avast, but still..
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #24 on: March 02, 2023, 03:59:50 pm »

The graph view renders correct, yes..
and there is no error in the UI itself? just a message in the console? if so, ignore



And, another little thing. Avast complains about something BEQ does. Avast did not complain about beta4, but it does with beta13 and beta14.

I will just make an exception in Avast, but still..
no clue how to control AV apps producing dumb false positives, you're free to run it from source if you really want to (I can explain how). I have no idea what will happen if specific libs get swiped out from under it so I think you just have to trust i'm afraid.  Code is https://github.com/3ll3d00d/beqdesigner/ and the build process is https://github.com/3ll3d00d/beqdesigner/blob/master/.github/workflows/create-app.yaml (it uses https://pyinstaller.org/en/stable/ to bundle the app and its dependencies into a self extracting exe)
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #25 on: March 03, 2023, 10:18:02 am »

I have deleted all the disabled filters in BEQ, but it still does not show output for my subwoofer channels (channels 13, 14, 15, 16). It seems like something else is making the issue. It shows the response of U1, which I copy to the sub-channels, so part of the sub-filter-routing is simulated.

My setup is:
Fronts 2-way active
Center
Surrounds (left side, right side, center rear)
4 individual subs (Sometimes MSO, sometimes my own parameters)

ignoring assorted delays, looks like you currently

* sum L/R/C/SW into U1 then copy it to 4 separate output channels & filter individually
* sum RL/RR together and route to RR
* C is a single way (crossed to the sub with an LR4 120)
* LR is a 2 way (crossed to sub with LR4 100 then a symmetric LR4 at 250)

a few Qs

* I wonder why RL/RR are summed and not crossed to the sub?
* you don't see to handle the adjustment between LFE and main channels, is there no LFE channel?

in any case, to implement the above, I think I would

* add a XO filter to deal with LRC/SW (probably leave RL/RR as passthrough in that filter), group LR as one in that filter and set as a 3 way, leave C as is and mark as a 2 way, update routing matrix to ensure the routing the LRC/LFE channels are summed into the SW output, you can happily include the extra 3 SW outputs here & also invert the subs (and channel specific delays/gain adjustments can be added here too)
(NB: I don't allow overwriting input channels in the routing matrix as it makes the subsequent logic really way more complicated for little benefit)
* add mix operations for RL/RR summation
* add move operations if you need to keep your existing output channel mappings
(NB: I don't currently support the reorder channels option as it only supports 8 channel output at present so this is more tedious than it should be)
* add a PEQ block for SW output for the per sub filtering
* add a GEQ filter for the shared peak filter applied to the lower way in the LR

Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #26 on: March 04, 2023, 02:58:48 am »

definitely a couple of bugs in the latest impl of the XO filter in how it generates mix filters for your particular setup (combining RL/RR, cloning the SW to multiple sub outputs) so I'll have to look at those, nice test case for me as I hadn't thought of some of these as things to try

I also assume the .1 is an LFE channel so force the -10dB offset but you don't do that so I guess it really isn't an LFE channel?
Logged

eve

  • Citizen of the Universe
  • *****
  • Posts: 648
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #27 on: March 04, 2023, 06:22:17 am »

Dude this is sick.

Thank you so much. I'll probably play around with it later this weekend. I really appreciate you including the source, especially in light of how dumb virus scanners can be with false positives in these situations. It's just an illusion of security (unless you actually go and build it yourself) but it's a good show of faith <3


Honestly, checking out the screenshots here, the JRiver guys should integrate this workflow into the main software. As someone who's intimately familiar with JRiver's DSP functionality and has been using it well over a decade, this makes a ton of sense, especially for new users. It's a solid alternative paradigm.
Logged

retiredteacherguy

  • World Citizen
  • ***
  • Posts: 108
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #28 on: March 04, 2023, 06:56:40 am »

Dude this is sick.

Thank you so much. I'll probably play around with it later this weekend. I really appreciate you including the source, especially in light of how dumb virus scanners can be with false positives in these situations. It's just an illusion of security (unless you actually go and build it yourself) but it's a good show of faith <3


Honestly, checking out the screenshots here, the JRiver guys should integrate this workflow into the main software. As someone whose intimately familiar with JRiver's DSP functionality and has been using it well over a decade, this makes a ton of sense, especially for new users. It's a solid alternative paradigm.

Is this cross-platform?
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #29 on: March 04, 2023, 07:37:33 am »

Is this cross-platform?
yes

NB: I don't have a mac myself so am unable to test it directly, I'm told it works fine though
Logged

retiredteacherguy

  • World Citizen
  • ***
  • Posts: 108
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #30 on: March 04, 2023, 07:51:44 am »

Superb, thanks a lot
Logged

retiredteacherguy

  • World Citizen
  • ***
  • Posts: 108
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #31 on: March 04, 2023, 08:05:02 am »

Sorry to be a noob, but I have downloaded and launched the app on my Mac, but it is not clear to me how to link/use in conjunction with MC. Any assistance appreciated.
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #32 on: March 04, 2023, 08:09:51 am »

Sorry to be a noob, but I have downloaded and launched the app on my Mac, but it is not clear to me how to link/use in conjunction with MC. Any assistance appreciated.
take a look at https://beqdesigner.readthedocs.io/en/latest/ui/manage_mc/
Logged

retiredteacherguy

  • World Citizen
  • ***
  • Posts: 108
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #33 on: March 04, 2023, 08:26:29 am »

Great thanks. I'm able to authenticate to MC, but when trying to make a new file it throws an error. I don't think that path is correct for macOS?

If I should inquire about this on GitHub instead of here please let me know.
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #34 on: March 04, 2023, 09:11:52 am »

Great thanks. I'm able to authenticate to MC, but when trying to make a new file it throws an error. I don't think that path is correct for macOS?

If I should inquire about this on GitHub instead of here please let me know.
here or github is fine

that path is the usual macos tmp dir & the folder that has MEI in it is the usual place that this app extracts itself to, looks like I forget to add the file for MC30 to the package so fixed that in beta.17

https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.17
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #35 on: March 04, 2023, 02:25:11 pm »

definitely a couple of bugs in the latest impl of the XO filter in how it generates mix filters for your particular setup (combining RL/RR, cloning the SW to multiple sub outputs) so I'll have to look at those, nice test case for me as I hadn't thought of some of these as things to try

I also assume the .1 is an LFE channel so force the -10dB offset but you don't do that so I guess it really isn't an LFE channel?

The .1 is indeed an LFE channel, and I did have -10dB offset on the summation.

I have redone the entire signal chain via BEQ now, and will try it tomorrow. There are some bugs, or visual issues, with the view of the signal path, but it is a very nice overview.
Also I sometimes encounter an "unexpected error" when creating a peak filter. If I move position in the signal path and create the filter again it works, and after that I move the filter to the correct position.

I am still on beta14, but will download the latest again :-)
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #36 on: March 04, 2023, 02:34:45 pm »

There are some bugs, or visual issues, with the view of the signal path, but it is a very nice overview.
yes unfortunately it gets a bit confused with some mix operations since I changed it to show more of the actual filters, it's trying to minimise the no of redundant blocks in the graph to make it readable but failing to coalesce nodes properly at times (times which are commonly present in this sort of bass management operation). I plan to return to this once I finish fixing the filtering itself.

Also I sometimes encounter an "unexpected error" when creating a peak filter. If I move position in the signal path and create the filter again it works, and after that I move the filter to the correct position.
I have to fix this too but I've not yet been able to reliably reproduce it, if you do happen to find a way to do that then do lmk as then I can surely fix it.

fwiw the filter simulation is accurate on a per filter basis but I think it's difficult to be 100% sure about the routing that the XO filter can create, it is quite complicated to get this right without writing loads of unmaintainable code so pls do check this carefully. I would generally say measure (e.g. via REW) the digital only output as a sanity check after eyeballing the filters.
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #37 on: March 04, 2023, 02:44:32 pm »

the reason I rewrote the XO filter implementation is to support the matched delay subtractive filter approach that came up in this thread https://www.diyaudio.com/community/threads/why-not-iir-filters-a-global-phase-linearization-by-fir.393435/page-18#post-7227228

this is what the MDS button does on the XO filter dialog & it's implemented using an appropriately delayed set of mix operations with some tweaked bessel filters. It produces a linear phase result with a delay set by the DC group delay of the lowest crossover point. This currently has the following limitations:

* summation for bass management has to be done manually
* there is not normalisation of delays across channels if different MDS filters are used for different channels (i.e. each channel will have a linear phase result but the channels themselves will be misaligned)

both of these are easy to fix manually after the XO filter (though both aspects will be supported in the near future)



Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #38 on: March 05, 2023, 12:00:08 pm »

beta.18 will be up shortly with a few more fixes which sorts out a few more routing issues (as seen in @jjazdk's setup, example attached) and some of the rendering issues in the filter graph view

https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.18

Logged

StabMe

  • Member
  • *
  • Posts: 1
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #39 on: March 15, 2023, 07:35:33 am »

Great tool!

I am trying to get a hang of Crossover and Bass management module. So, i want to set up a configuration that will be used for Stereo processing.
Physically, my system is set up like this:

L -> Left midbass
R -> Right midbass
C -> Left tweeter
SW -> Right Tweeter
SL -> Sub1
SR -> Sub2
RL -> none
RR -> none
C9 -> Sub3
C10 -> Sub4

In the crossover matrix, intuitively i am trying to set it up like this:


But it returns an error. Something along these line:
model.jriver.ImpossibleRoutingError: Overwriting an input channel is not supported - [2.1 -> 4 COPY]

I suspect, that my intuition has failed me and i am setting up routing the wrong way.

What i want to achieve, is to route L signal of the stereo mix to channels L, C, SL, SR, C9, C10, where L and C are midbass and tweeter and SL, SR, C9, C10 are sub channels. Of course, applying crossovers. Same to the right side of the mix.

In the future i'll be adding center and sides, so would like to know how to handle this as well with this tool. (i have two spare channels for multiway center and two for sides).
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #40 on: March 15, 2023, 08:26:32 am »

The logic to implement routing is vastly more complex if I allow you to overwrite an input channel so I simply don't support. The preferred solution is to use reorder channels to deal with output channel routing of this type but MC currently doesn't support this beyond the first 8 channels so I haven't implemented that either so, for now, you would have to add your own mix filters after the xo filter to deal with channel routing.

I think you are treating columns as input channels as well but it's the wrong way round, columns are physical outputs and rows are outputs from each way

Ie L-1 is left input channel, 1st way

I should make the error more obvious

2.1 == L-2
4 == C

(2 is the channel index MC uses to refer to the L channel , 1 because it is 0 indexed)
 
Logged

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #41 on: March 19, 2023, 04:57:00 am »

beta.20 is building which has a few fixes (inc for a rather daft bug which was causing higher order filters to be completely wrong when generated via the xo dialog, this would have been blatantly obvious when looking at the filter response simulation so assume no one was actually affected)

https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.20
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #42 on: March 22, 2023, 02:42:55 pm »

beta.20 gives me an error when opening my DSP files. The files work fine in beta.18.


beta.20 is building which has a few fixes (inc for a rather daft bug which was causing higher order filters to be completely wrong when generated via the xo dialog, this would have been blatantly obvious when looking at the filter response simulation so assume no one was actually affected)

https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.20
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #43 on: March 22, 2023, 02:53:02 pm »

beta.20 gives me an error when opening my DSP files. The files work fine in beta.18.
Can you share the file?
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #44 on: March 23, 2023, 05:53:33 am »

Sure, here you go.

If I import it in beta.18, change a filter and saves it again, then it opens just fine in beta.20.

Can you share the file?
Logged
Working on my 12 channel JRiver entertainment center :-)

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #45 on: March 23, 2023, 05:59:43 am »

I just found a bug in beta.20.

When opening the dsp file with beta.18, all delays are correct, but..
Opening the same dsp file with beta.20, all delays are x100 in time.

Can you share the file?
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #46 on: March 23, 2023, 11:40:36 am »

I just found a bug in beta.20.

When opening the dsp file with beta.18, all delays are correct, but..
Opening the same dsp file with beta.20, all delays are x100 in time.

opens normally for me

what region is your OS set to?

I'm guessing it's in a region (e.g. european) which uses a comma for a decimal separator, right?
Logged

jjazdk

  • World Citizen
  • ***
  • Posts: 140
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #47 on: March 23, 2023, 11:44:39 am »

Yes, my OS is set to Denmark, with comma as the decimal separator.

It has worked without issues on all the other beta-builds :)


opens normally for me

what region is your OS set to?

I'm guessing it's in a region (e.g. european) which uses a comma for a decimal separator, right?
Logged
Working on my 12 channel JRiver entertainment center :-)

mattkhan

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 3932
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #48 on: March 24, 2023, 02:36:29 am »

Yes, my OS is set to Denmark, with comma as the decimal separator.

It has worked without issues on all the other beta-builds :)
I made a change in last build to use a "proper" localisation parsing of float values but clearly it goes awol in some situations, I'll revert to my previous hack instead in next build (https://github.com/3ll3d00d/beqdesigner/releases/tag/0.11.0-beta.22)
Logged

cvtaudio

  • Member
  • *
  • Posts: 3
Re: beqdesigner: a jriver dsp simulator and editor
« Reply #49 on: April 16, 2023, 07:31:51 am »

Just discovered it, what a great tool !

Is there any way to import biquads as part of the  peq configuration ?
Logged
Pages: [1] 2   Go Up