Release: Dynamic DSP: gives custom effect chains for individual tracks, [was “dynamic dsp”] |
![]() ![]() |
Release: Dynamic DSP: gives custom effect chains for individual tracks, [was “dynamic dsp”] |
Jul 18 2012, 16:17
Post
#1
|
|
|
Group: Members Posts: 66 Joined: 19-December 03 Member No.: 10558 |
I made this DSP and have been using it for months now to my satisfaction. So, first off thanks to those who helped me figure some things out: mudlord, foosion, Yegor, and Zao, and others who made SDK, Documentation, and samples. By no means does their help imply that they like my plugin or much less endorse it!
It is a DSP which is designed to switch effects based on the track being played. Usage: Sorry, documentation is not going to be great. But basically: 1)add the dynamicDSP to your DSP chain. It can be in among other DSPs, or even have multiple instances of itself in a chain but the way I use it is have a single instance of it as the sole DSP at the top level. 2)select and click configure to bring up the configuration window. 3)Enter a titleformat script in the large textbox at the top of the configure window, or use the one provided. The script you enter should evaluate to a single word, which is the name of the DSP Chain you want to use for that track. The titleformat will be run on each track as it is about to be played and provide the switching of chains. It's OK if this script evaluates to a Chain name which does not exist or blank, in which case no DSP will be applied to that track. 4)enter a DSP chain name in the little textbox to the left of the "Add Chain" button then click that button. The name will appear in the listbox just above. 5) doubleclick the chain name in the list box to bring up the configuration window for this Named chain. It is the stock DSP config window, you should be familiar with how to use it. Add DSPs and configure them, then click ok. 6)repeat steps 4-5 as many times as desired 7)click OK 8)click apply/ok That's it. If you use the stock titleformat script, you can just add a custom tag to any track called "TRACKDSP" with the value of the Named Chain you want to use. When that track is played that chain will activate. Other people may prefer to evaluate to a chain based on Genre tags or some other scheme which uses tags which already commonly exist in their tracks. I do not provide any titleformat scripts and it's not a strong area of mine. Feel free to create and share scripts which you like on this thread. (That is, if anybody likes this component besides me) Known Issues / Limitations This component is sensitive to track changes but has gone to some lengths to avoid using the needstrackchangemark thingy which breaks gapless playback. To the best of my ability to theorize or detect, gapless playback remains perfect IF the track currently playing and the track that is to follow evaluates to the same chain, or to no chain at all. BUT, if they evaluate to different chains there is in my tests the tiniest audible dropout between the tracks as the old chain empties and the new chain takes its place. I don't know how to avoid this so I don't intend to fix it. A corollary to my decision to avoid needing the needstrackchangemark thingy is that I cannot guarantee that 100% of the samples of a track go through their intended chain. Some may go through the previous chain so once again this is only an issue if the chain changes. It was beyond my ability to detect this though. But the final warning is that if you create a titleformat script which takes too long to evaluate then you could break gapless playback even if the chains do not change. I have not tested the threshold on this nor do I have any recommendations to offer except to try it and see. Using the titleformat I provide default, I could detect no flaw in gapless playback on Pink Floyd Dark side of the moon or a white noise sample I made copies of and played back to back. License I make no restrictions on what you can do with the the source code or component. Warrantee/Support None. Use at your own risk. I may consider fixing a bug or two if you find them but I don't spend much time here so if you find something bring it forward fast because I will probably stop visiting this thread regularly in a week or two. Download Dynamic DSP Building A release build is provided in the download above but if you want to build from source, note that you need to download the boost libraries, specifically releated to boost::bind, and you must add a new include directory to your VC setup. You also need WTL but I think that's common for foobar components. This post has been edited by popatr: Jul 18 2012, 16:31 |
|
|
|
Jul 18 2012, 18:06
Post
#2
|
|
![]() Group: Members Posts: 137 Joined: 23-May 06 From: Chile! Member No.: 31067 |
Thanks!! I'll give it a spin
|
|
|
|
Aug 16 2012, 20:42
Post
#3
|
|
|
Group: Members Posts: 609 Joined: 16-January 09 Member No.: 65630 |
Thanks for making this component
I needed it to control some misbehaved tracks automatically, and searching this forum seems like a lot of users requested such feature. And there it is There is also similar possibility with foo_yac if user doesn't mind creating impulses, which is a bit more involved... I wanted to use specific setting from certain VST plugin through Yegor's VST component, and guess what - it works perfectly, as saved DSP chain preset remembers even state from "external" VST plugin. Don't know if this is feature of VST component or foobar, i.e. if other VST component will behave like this. Some notes: 1. Don't drop the archive in component preferences because foobar won't pick the component, rather extract DLL file and drop instead. 2. Something I didn't find intuitive - if I define some chains inside Dynamic DSP, they will be reset if component is removed from foobar DSP chain. Solution - after defining chain(s) inside Dynamic DSP, save it as foobar DSP chain preset. 3. Gap thingy isn't show stopper for me, but if someone with more knowledge in foobar DSP can assist as source code is provided, it would be even greater Cheers -------------------- Scripts (mainly foobar2000 related): http://goo.gl/yje3h
|
|
|
|
Aug 16 2012, 22:46
Post
#4
|
|
|
Group: Members Posts: 609 Joined: 16-January 09 Member No.: 65630 |
I noticed an issue however with VST component, it's reported here: http://www.hydrogenaudio.org/forums/index....mp;#entry805537
-------------------- Scripts (mainly foobar2000 related): http://goo.gl/yje3h
|
|
|
|
Aug 20 2012, 21:18
Post
#5
|
|
|
Group: Members Posts: 66 Joined: 19-December 03 Member No.: 10558 |
I noticed an issue however with VST component, it's reported here: http://www.hydrogenaudio.org/forums/index....mp;#entry805537 I'll try it, thanks for your report. |
|
|
|
Mar 1 2013, 22:55
Post
#6
|
|
![]() Group: Members Posts: 406 Joined: 14-September 11 From: Szczecin, PL Member No.: 93712 |
works great
|
|
|
|
Mar 2 2013, 00:38
Post
#7
|
|
|
Group: Members Posts: 215 Joined: 20-July 06 Member No.: 33113 |
Since my media files are already replay gained, I find this plug-in useful for loading the EBU R128 Compressor and applying replay gain on the fly selectively for radio streams so that all radio streams and media library tracks are of similar sound level.
The EBU R128 Compressor automatically matches to the ReplayGain standard 89 dB using the standard R-128 algorithm and a reasonable look-ahead. I use a titleformat script of $if($strstr(%path%,'://'),Radio,). The Radio chain contains the EBU R128 Compressor. See also http://www.hydrogenaudio.org/forums/index....=0&p=823073 This post has been edited by WilB: Mar 2 2013, 00:42 |
|
|
|
Mar 4 2013, 19:45
Post
#8
|
|
![]() Group: Members Posts: 757 Joined: 17-September 06 Member No.: 35307 |
I took the liberty of making WilB's version work for any source without ReplayGain information (which still includes radio streams but also files without RG, such as the Windows 7 sample music MP3 files) and posted it in that other thread, excerpting the key info here.
CODE $if($or($strstr(%replaygain_album_gain%,' dB'),$strstr(%replaygain_track_gain%,' dB')),,R128Comp) I then set up the Chain called R128Comp to contain just the EBU R128 Compressor DSP from mudlord's foo_dsp_effects bundle. -------------------- Dynamic – the artist formerly known as DickD
|
|
|
|
Mar 6 2013, 03:37
Post
#9
|
|
![]() Group: Members Posts: 757 Joined: 17-September 06 Member No.: 35307 |
I made a mistake. In the previous post, it was the EBU R128 Compressor from kode54's foo_r128_norm.dll that I used. No ReplayGain matched compressor is in foo_dsp_effects bundle.
|
|
|
|
Mar 7 2013, 11:34
Post
#10
|
|
![]() Group: Members Posts: 757 Joined: 17-September 06 Member No.: 35307 |
kode54 made a good point about the use of Dynamic DSP in that other thread I referred to.
Normally you should put Dynamic DSP at the top of the list of DSPs so that upon track changes it doesn't force a whole bunch or previous DSPs to flush their buffers (especially those with a 10 second lookahead like kode54's EBU R128 Compressor). There will be certain times that the order is important, though, and it might be necessary to put other DSP first. |
|
|
|
Apr 8 2013, 20:29
Post
#11
|
|
![]() Group: Members Posts: 406 Joined: 14-September 11 From: Szczecin, PL Member No.: 93712 |
I got small problem with this plugin. I had to reinstall foobar. I kept all configuration files from previous istall and placed them into my new installation. Everything was configured and was working as it was before, except foo_dynamicdsp. It missed all the chains that were added to its configuration dialog. Fortunately I saved them just as regular DSP chains so I could easily import them into foo_dynamicdsp. Anyway I was very baffled when several of my files were playing without shifted playback rate... It took some time to perform investigation... Is it possible that it will be fixed and plugin configuration was fully preserved in some .cfg file?
|
|
|
|
Apr 25 2013, 21:44
Post
#12
|
|
|
Group: Members Posts: 66 Joined: 19-December 03 Member No.: 10558 |
I'm gratified to find that some people are finding dynamicDSP useful. I kept meaning to look into romor's report earlier, but I've just always been so busy. Now I have a new baby and have even less time. I wish I could give a more hopeful answer.
|
|
|
|
Apr 27 2013, 14:31
Post
#13
|
|
![]() Group: Members Posts: 406 Joined: 14-September 11 From: Szczecin, PL Member No.: 93712 |
(...) Now I have a new baby and have even less time. (...) Hahaha For some operations dynamicDSP is the best what could be ever invented. It cuts necessity of creating new components that have very tiny and rarely used functionality (like my proposal of plugin that lets inverse phase of chosen audio channels based on tags) and bothering other developers for adding new functionalities to their components (like my request for mudlord and his dsp_effect/Playback Rate Shift plugin). |
|
|
|
May 1 2013, 21:45
Post
#14
|
|
![]() Group: Members Posts: 406 Joined: 14-September 11 From: Szczecin, PL Member No.: 93712 |
I found that even changing DSP chain causes that dynamicDSP "forgets" it's configuration... Or removing it from DSP chain...
|
|
|
|
May 2 2013, 08:50
Post
#15
|
|
|
Group: Members Posts: 11 Joined: 24-July 10 Member No.: 82498 |
EpicForever, see post #3
Something I didn't find intuitive - if I define some chains inside Dynamic DSP, they will be reset if component is removed from foobar DSP chain. Solution - after defining chain(s) inside Dynamic DSP, save it as foobar DSP chain preset. and many thanks to popatr for this component which didn't hope anymore |
|
|
|
Jun 14 2013, 00:04
Post
#16
|
|
|
Group: Members Posts: 4 Joined: 23-February 13 Member No.: 106823 |
I added [Downmix channels to stereo] and [Convert mono to stereo] to this DSP and tried it.
But Those DSP is already like the true bypass. |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 19th June 2013 - 10:24 |