IPB

Welcome Guest ( Log In | Register )

2 Pages V  < 1 2  
Reply to this topicStart new topic
Release: Dynamic DSP: gives custom effect chains for individual tracks, [was “dynamic dsp”]
WilB
post Apr 3 2014, 22:42
Post #26





Group: Members
Posts: 337
Joined: 20-July 06
Member No.: 33113



Thanks for doing this so promptly.
Go to the top of the page
+Quote Post
popatr
post Apr 4 2014, 16:33
Post #27





Group: Members
Posts: 72
Joined: 19-December 03
Member No.: 10558



ps, in the past I have looked into why the component crashes when launched from view/dsp. I have been unable to figure it out.

The bizarre thing is that when I test with the debugger attached, foobar does not crash, so it doesn't help to step through. What does happen in debug mode is that the chain configure window comes up blank with no dsps in the chain. If anyone has insights into the problem this is one issue I'd be very glad to fix. Although I almost wonder if there is a problem in the framework?

This post has been edited by popatr: Apr 4 2014, 17:29
Go to the top of the page
+Quote Post
EpicForever
post May 1 2014, 20:21
Post #28





Group: Members
Posts: 757
Joined: 14-September 11
From: Szczecin, PL
Member No.: 93712



After using this plugin for some time I need to ask some question about the way it works...
The question is - does Dynamic DSP insert content of its internally configured DSP chain and lefts rest of chain intact or just... replaces whole chain with the one programmed inside Dynamic DSP?

My normal DSP Chain looks like this:
Dynamic DSP
Skip Silence
Downmix multichannel to stereo
Playback Rate Shift - most of time just set to 100% (unaltered playback rate)
Skip Track

Dynamic DSP is used to occasionally change playback rate on selected tracks. I created additional DSP chains that are used for configuring Dynamic DSP plugin. In general they are copies of my normal regular DSP chain with removed Dynamic DSP and adjusted playback rate via Playback Rate Shift plugin. And I started thinking if this isn't source of my occasional problems with Skip Track component. Initially for some reason I thought that this is obvious that Dynamic DSP must fully replace original DSP chain - that's why all chains used by DDSP are nearly copies of my main chain. But now I wonder if don't cause that for some files (tagged to trigger DDSP) my DSP chain looks like this:

Skip Silence
Downmix multichannel to stereo
Playback Rate Shift - set somewhere between 95 and 107%
Skip Track
Skip Silence
Downmix multichannel to stereo
Playback Rate Shift (unaltered playback rate)
Skip Track

And I don't care for double Playback Rate Shift occurrence but about Skip Silence and especially about Skip Track...

Popatr - your answer, as the creator of this plugin will be much appreciated.
Go to the top of the page
+Quote Post
popatr
post May 2 2014, 21:25
Post #29





Group: Members
Posts: 72
Joined: 19-December 03
Member No.: 10558



QUOTE (EpicForever @ May 1 2014, 12:21) *
After using this plugin for some time I need to ask some question about the way it works...
The question is - does Dynamic DSP insert content of its internally configured DSP chain and lefts rest of chain intact or just... replaces whole chain with the one programmed inside Dynamic DSP?

My normal DSP Chain looks like this:
Dynamic DSP
Skip Silence
Downmix multichannel to stereo
Playback Rate Shift - most of time just set to 100% (unaltered playback rate)
Skip Track

Dynamic DSP is used to occasionally change playback rate on selected tracks. I created additional DSP chains that are used for configuring Dynamic DSP plugin. In general they are copies of my normal regular DSP chain with removed Dynamic DSP and adjusted playback rate via Playback Rate Shift plugin. And I started thinking if this isn't source of my occasional problems with Skip Track component. Initially for some reason I thought that this is obvious that Dynamic DSP must fully replace original DSP chain - that's why all chains used by DDSP are nearly copies of my main chain. But now I wonder if don't cause that for some files (tagged to trigger DDSP) my DSP chain looks like this:

Skip Silence
Downmix multichannel to stereo
Playback Rate Shift - set somewhere between 95 and 107%
Skip Track
Skip Silence
Downmix multichannel to stereo
Playback Rate Shift (unaltered playback rate)
Skip Track

And I don't care for double Playback Rate Shift occurrence but about Skip Silence and especially about Skip Track...

Popatr - your answer, as the creator of this plugin will be much appreciated.


Dynamic DSP does not replace the whole chain. If I understand your setup, then your illustration of DSP chain with duplicates is a correct understanding of what would happen when dynamic dsp triggers as you have it setup. How you set it up is up to you, but two ideas come to mind:

Main chain looks like this:
Skip Silence
Downmix multichannel to stereo
DynamicDSP
Skip Track

DynamicDSP setup:
chain named faster:
playback Rate Shift: 107%

chain named slower:
playback rate shift: 97%

In this case Dynamic DSP becomes a playback rate shift AND that's ALL it controls. Every other effect comes from the normal chain.

ALternate setup:
Main chain looks like this:
DynamicDSP

DynamicDSP Setup:
(titleformat script (forgive psuedocode): if %trackdsp% then %trackdsp% else "Default")

chain named "Default":
Skip Silence
Downmix multichannel to stereo
Skip Track

chain named "Slower":
Skip Silence
Downmix multichannel to stereo
playback rate shift 97%
Skip Track

chain named "faster":
Skip Silence
Downmix multichannel to stereo
playback rate shift 107%
Skip Track

Remember, you can put more than one dynamicDSP in a chain with different jobs. You can even put dynamicdsp inside itself.
my main chain looks something like this right now:
main effect
main effect
Dynamic DSP <-this one does drastic things to tracks labeled as poorly recorded speech
Dynamic DSP <-this one shifts playback rate
main effect
main effect

The main effects apply to ALL tracks including those which trigger dynamic DSP
The Dynamic DSPs can trigger independently or together depending on how the tracks are tagged. They each do their own job not knowing what else is going on in the chain.
Go to the top of the page
+Quote Post
EpicForever
post May 3 2014, 09:33
Post #30





Group: Members
Posts: 757
Joined: 14-September 11
From: Szczecin, PL
Member No.: 93712



Excellent answer !! Thank you !! smile.gif

EDIT:
I decided to do it in this way:
CODE
Main chain looks like this:
Skip Silence
Downmix multichannel to stereo
DynamicDSP
Skip Track

DynamicDSP setup:
chain named faster:
playback Rate Shift: 107%

chain named slower:
playback rate shift: 97%

as I need to have quick access to Playback Rate Shift plugin under normal circumstances (not triggered) - for example when I just want to play with playback rate on particular track. Hiding "Default" chain inside Dynamic DSP would be inconvenient in this case. Anyway - that's still great idea of setup.

This post has been edited by EpicForever: May 3 2014, 09:46
Go to the top of the page
+Quote Post
wiregrind
post Feb 26 2015, 18:24
Post #31





Group: Members
Posts: 1
Joined: 26-February 15
Member No.: 118749



I've been using this plugin a lot, it's great for automatically setting different low-pass filters to chiptune songs.

I'm basically necro-ing the thread but I'd like to be able to use values like "Less than" in the plugin, for example a chain that is triggered by any song with a Sample Rate Lower than 44100 Hz. I'm not sure if it's possible with the current version, is there any code to make this work?
It would be really useful, because it's hard to edit custom DSP tag info in chiptune / non-standard files.

This post has been edited by wiregrind: Feb 26 2015, 18:29
Go to the top of the page
+Quote Post
popatr
post Mar 3 2015, 17:18
Post #32





Group: Members
Posts: 72
Joined: 19-December 03
Member No.: 10558



QUOTE (wiregrind @ Feb 26 2015, 10:24) *
I've been using this plugin a lot, it's great for automatically setting different low-pass filters to chiptune songs.

I'm basically necro-ing the thread but I'd like to be able to use values like "Less than" in the plugin, for example a chain that is triggered by any song with a Sample Rate Lower than 44100 Hz. I'm not sure if it's possible with the current version, is there any code to make this work?
It would be really useful, because it's hard to edit custom DSP tag info in chiptune / non-standard files.


$ifgreater(%sameplerate%, 44099, , 'lowratechain')

Put that where you currently see [%trackdsp%]
That should work. As titleformat lets you do if,then,else etc, you should be able to accomodate very complicated setups.
Here is the titleformat reference:
http://wiki.hydrogenaud.io/index.php?title...25samplerate.25
Dig into that, put on your programmer's hat, and create a script that names the chain you want. It's possible. And nobody can tell you exactly what script will serve your purposes except you.

This post has been edited by popatr: Mar 3 2015, 17:46
Go to the top of the page
+Quote Post
popatr
post Mar 3 2015, 18:27
Post #33





Group: Members
Posts: 72
Joined: 19-December 03
Member No.: 10558



if you want to use trackdsp tag if present but fall back to samplerate logic, you could do this:

$if2([%trackdsp%],$ifgreater(%samplerate%,44099,,lowbitratechain))

but to reiterate you can do A LOT if you can puzzle it out. One thing I do, is create a custom playlist column which I title "DSP" and put my dynamicdsp titleformat script as the "pattern". Actually in my column, I surround my script with - chars because spaces at the beginning and end are unfortunately important, and the - chars help me determine that I've got no trimming issues. So in the playlist you can see which chain your script names for each song.
Go to the top of the page
+Quote Post
Mario66
post Apr 12 2015, 16:31
Post #34





Group: Members
Posts: 11
Joined: 21-March 15
Member No.: 118960



Hi,

I really like this component and I use it for some time now.
Recently, I began to experiment with the source code and added some features that I missed and I decided to share the result with you. I'm a passionate C++ developer, but I'm new to foobar2000 development, so don't expect miracles especially because the SDK documentation is quite limited. I mainly learned from examples provided by the SDK and here in the forum.
My component should be compatible with the original component, so you can just upgrade and all your scripts and chains should continue to work (except if you use the semicolon character in one of your chain names, see below). However, to be safe you may consider to backup your foobar200 AppData directory.

Changes (for users)
- Some GUI improvements (preview text box, added button to copy a DSP chain, ...)

- Added ability to activate more than one DSP chain at the same time by using the semicolon as separator character. For example, if your script evaluates to "Equalizer;Crossfeed", and you have a chain named "Equalizer" and another named "Crossfeed", then both will be applied. The order matters! In the example "Equalizer" will be applied first and "Crossfeed" second.
This feature is optional. You can turn it off, if you want to use the semicolon as regular character again.

- Added ReplayGain Scanner mode that takes a given DSP present into account. The motivation is that if you have different DSPs per track and some of the DSPs change the volume of your track, this may lead to loudness inequalities. With this new mode, you are first prompted to choose a DSP present, then the chosen DSP present will be applied to the tracks before they are forwarded to the build-in ReplayGain Scanner. [Requires ReplayGain Scanner component to be installed] You can access this mode via. the "ReplayGain" context menu > "Scan ... (plus DSP)".

- Updated to latest SDK, therefore requires foobar200 1.3 or later.

- Fixed crash if you call the configuration dialog from "View" > "DSP".*

Changes (for developers)
- Upgraded project to Visual Studio 2013 Update 4 and SDK 2015-01-15
- Replaced boost::bind by std::bind (C++11 feature)

Credits
- popatr for his great component and for sharing the source code.
- kode54 for sharing the source code of his R128Scan component from which I borrowed some code [only some GUI mechanics, not the algorithm]

Warranty
None. My component is provided "as-is", use at your own risk. Nevertheless feel free to post about any issues you have with my component.

Download

___
*
QUOTE
ps, in the past I have looked into why the component crashes when launched from view/dsp. I have been unable to figure it out.

If you launch the component from View > DSP, it will run in a different thread (different from the main thread), so you'll need a main_thread_callback for specific functions that will otherwise crash foobar. I had a forum discussion recently about a similar issue: http://www.hydrogenaud.io/forums/index.php?showtopic=108705
Go to the top of the page
+Quote Post
eahm
post May 8 2015, 18:31
Post #35





Group: Members
Posts: 1298
Joined: 11-February 12
Member No.: 97076



Mario66, first of all thank you for the component, I don't use it much but it can be really useful one day.

Second, I don't think you should call it v2, it's not the second version of the same component made by the same developer, it's a mod, a different version. I think "Dynamic DSP Plus or +", "Dynamic DSP Mod" or "Dynamic DSP M66" would work better.

Anyone?

This post has been edited by eahm: May 8 2015, 18:31
Go to the top of the page
+Quote Post
Mario66
post May 9 2015, 13:10
Post #36





Group: Members
Posts: 11
Joined: 21-March 15
Member No.: 118960



You are right. "Dynamic DSP Mod" would have been a better name that "Dynamic DSP v2" to avoid confusion.

Unfortunately I can't edit any of my posts or change any of my uploaded files any more. But I will consider your advice in the future.
Go to the top of the page
+Quote Post

2 Pages V  < 1 2
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 26th May 2015 - 07:14