From the original SynthMaker forum (2004–2014), with its members’ names and dates.
flamingRedDingo ·
I've been updating the plate Monkey looper. I've added mix buttons to allow portions of one loop to be copied to any of the others ... I accomplished this by updating my NPT Stereo Looper module to include direct access to the wave read/wave write connections inside the loop. When you mix from 1 to 2 a couple of multiplexers handle routing from loop 1 to loop 2
when no mix is being performed, the multiplexers dead-end... This is where I ran into click/popping issues...
trogluddite said something about forcing a reset of code segments, so I'm wondering if maybe that is what's going on..
Maybe I just need to apply a dezipper to the mix buttons, but even though I've had some luck here, I'm not sure that it's 100% reliable...
Here's the precursor to plateMonkey RC3 ... any suggestions on how to fix the pop/click noise issues would be much appreciated... the areas that are problematic may be the multiplexers that lead from the stereo loop modules in the 4x code (in the module with all 4 UI panels ). At least, when I added these, that's when I started having problems...
It could be that I need to do some filtering in the loop module itself... I'm still investigating...
Failing all of this, does anyone know of a good "declicking/depopping" filter I could run over the loop output that wouldn't muddy the sound in a significant way?
Regards,
flamingRedDingo
trogluddite ·
Unless you have any variables etc. explicitly reset in a stage(0) section, then the schematic 'recompiling' shouldn't be a problem.
The most likely cause would be that the route via the multiplexers/selectors is cutting the audio dead - leaving a (theoretically) infinitely fast transient as the audio drops to zero over the course of just one sample. Always sticks out like a sore thumb, due to the tiny burst of nasty aliasing.
So your idea of the dezipper would be the right approach - effectively creating a short crossfade - it would then be a matter of ensuring that the multiplexer doesn't disconnect before the crossfade has finished, as that would still lead to a truncation (though at a slightly lower level). Turning on/off at zero crossings in the audio ought also to work - but the logic would probably be a lot more greedy CPU wise.
Also, I would check your windows CPU monitor just to be sure that there's not a big CPU spike at switchover - unlikely, but it's not always easy to predict when ths might be a problem.
I would definitely try these before looking for a de-click algorithm - to avoid playing hell with transients in your audio, you would need something pretty processor intensive - and most 'audio cleaning' type algorithms need a bit of 'look-ahead' delay - which is a definite no-no for a live audio tool where you want to minimise latency.
Sasu Honka ·
Dear mr/mrs Dingo
How can You do it? Don´t You ever sleep? I can not believe the speed you go forward!
I was looking at the multiplexers inside your NPT Stereo Looper and I thought You could replace the multiplexer with a router logic like this:
This is very ugly, but it should de-zip anyway.
I have not had time to test it, I can´t tell if it works or not.
Your ideas have helped me with a project that I have been working on for over 2 years!
With your pace of developement You will very soon be an SynthMaker guru!
Thank You for letting us see your exellent osm!
Yours:
Sasu
MichaelBenjamin ·
and have a look at this:
De-glitched Selector for mono streams...
might help, i used it somewhere in the past and it worked.
also the recompile the selector causes on switch somehow depends on the size of the recompiled chain behind, so you may run into asio buffer hiccups at some point that may sound similar to clicks.
also if none of this works good enough, you can still try to manually shutdown in asm with a jump, and lpfilter everything in question, but its the most tedious.
Disco_Steve ·
you can't do the switching in green
when you bounch the track down at greater than real time it will fail. (but will apear to work fine when running in real time)
you need to do all of it in blue. sorry.
I may have gone compleatly mad, but I dont think so.
Steve
flamingRedDingo ·
Sasu,
thanks. I'm glad I could help you out, too... Truth be told, I've been writing code since 1986, so synthmaker is like playing with legos to me =)... maybe that's why I've caught on quickly... in a way I'm new at it, but I'm also not so new at it =)
I've reviewed your schem, and it does reflect an idea that I had to overcome the problem. The reason I haven't taken that route yet is that I'd like to avoid constantly running the copy streams. Although there are only 8 copy channels max (in the current implementation) I would like this framework to eventually support even 16 stereo loops without gouging the CPU...
so I thought the multiplexing vs. CPU mix leveling would save some bandwidth.. not much right now, but imagine it running with 4x the number of loopers it has now... I've got my eye towards that goal... even if I never do it, it doesn't hurt to aim high 😀
Cheers
flamingRedDingo ·
Micheal B.,
Ding Ding Ding, we have a winner (i think)... I'll definitely be trying your suggestion.. if I use it I'll add you to the acknowledgements in plate monkey... Thanks!
flamingRedDingo ·
I've begun to incorporate it, but since I'm using it w/ a multiplexer I need to test a bit more, then I need to optimize it (at least for stereo).. I'll add you to the acknowledgments in RC4 - I used it in RC3 but I simply don't have room to add another name to the layout yet!- since I'm significantly modifying the UI in RC4 I'll add you then... =P
Thanks for your contribution. as it turns out, it was remarkably helpful.
Cheers,
flamingRedDingo
Sasu Honka ·
Dingo,
I used to code in the early 80s, started with BASIC and assembler on VIC20. I even used FORTRAN, PASCAL and C, but left computing when the first PCs arrived.
I started messing with SM about 3 years ago and I stll find SM quite confusing. I miss easy multi-dimensional arrays like x(y,z) and the signal flow is somewhat strange: the yellow signals seem to be going upstream...
I find the component and code documentation to be really poor. If the documentation was better we would not need to do all sorts of hacks and detours like the one Michael B showed -which is by the way quite brilliant and new to me.
Your OSM is really inspiring, I like the way you expand ideas.
Cheers,
Sasu
flamingRedDingo ·
SM is a bit odd if you are not used to pipelining, state based automata, and functional languages (like LISP or F#)...
if you have much experience with any of these, many of the bits and pieces of these different paradigms apply to SM with respect to how it handles looping, triggers, et al... I guess since I've worked extensively with all of this stuff, SM is pretty natural to me. However, it's completely different than traditional software development using imperative languages like C++... (although things like windows message loop eventing share some similar ideas as SM trigger flow behavior)...
Certainly SM certainly has it's fair share of quirky behavior - sometimes it is downright ugly, and I'm totally with you on the documentation part too, but at least SM has an engaged community of users...
I wish Malc had more help. I've got my eye on flowstone, because it appears to be SM "all grown up" =)
notice he's targeted Flowstone towards industrial automation and process control... I've used flow based frameworks for similar stuff in development, which is what I was getting at in the first paragraph =P
Cheers
Wrote something here? To have a post removed or your name hidden, write to [email protected].