At the risk of over complicating things, any chance of a delay that can route its feedback loop through a send/return to one of the other pedals?
it’s really quite incredible—thank you yet again for sharing,
i would love to see a dedicated lo-fi effect, similar to the zvex instant lo-fi junky or strymon’s oft-employed tape age parameter—think janky compression plus filtering plus warble plus saturation.
been combining existing pedals into a solid approximation thus far—it’d just be great to have it all in one!
What’s interesting is that I may be able to kill two birds with one stone here – the “Lo-Fi” setting on the Delay pedal could be pulled into its own pedal (and made more expressive / customizable), and then you could route delay through it just like any other pedal. That said, I’ll have to think for a while about how to best do this – the SuperCollider work isn’t too hard (Delay already uses a generic feedback bus under the hood, so I’d more or less just have to have another pedal send to that bus), but the Lua work (both UI/UX and state management) may be a bit tricky. I’ll put it on the backburner and see if anything springs to mind about how to do it without making everything super complicated under the hood and in the UI.
What pedals are you currently using to simulate it? At what settings? Feel free to set it up, save the pset, then send over a
.pset file and I can take a peek if you don’t wanna type it all up I’d guess… Drive -> EQ -> Vibrato -> Comp, maybe in a slightly different order? If you try Delay pedal with Lo-Fi on at fully wet (so you’re only hearing the Lo-Fi echo), is that somewhat close? It’s noise -> saturation -> low-pass -> bit-crush -> high-pass & low-pass (so it’s missing the warble and janky compression, but it’s got noise and bitcrush instead). I’m actually hoping to get a lo-fi junky eurorack module sometime in the next few months, but I haven’t realllyyy dug into modeling its sound yet. Should be fun to try!
the very backbone of my strategy!
lo-fi delay at full mix, no feedback, and a tempo approximating the source clock —> compression at full mix, full drive, and sixty percent tone —> an almost negligible amount of additional bit-crushing and vibrato, with settings unhelpfully varied for intensity.
if you did this with the addition of janky compression, i’d be ecstatic!
While it’s not compression, I’ve managed to coax a pleasing janky compression-like effect from my Vermona Retroverb Lancet.
When the amplitude of the input signal reaches a threshold, the envelope generator is triggered and briefly lowers the LPF frequency. With the right settings it sounds lovely and janky and a bit lo-fi, so a simple emulation of this might be a good stand in for the requested janky compressor.
New pedals! I’ve spent the last few days working on Cyrene, a drummer in a box & sequencer for norns based on Mutable Instruments Grids, but that’s in a pretty good spot now and I’m back makin’ some pedals.
- Sub-Boost pedal: Pitch detection and envelope follower control a wavetable synth pitched N octaves below the detected pitch
- Lo-Fi pedal: Adapted from the Lo-Fi mode of the delay pedal plus y’all’s suggestions. Pumping compressor -> warble -> tape/vinyl-esque noise -> saturation -> bit-crushing -> LPFs and HPFs. It’s not that much like Lo-Fi Junky, but… it’s still pretty good, I think!
I’m feelin like gettin weird next, so it’ll probably be the Wavefolder and Ring Modulator pedals in the next release. Maybe the Resonator or Vocoder, too. It may be a little while longer than usual though, as I’m trying to keep up with Cyrene as well
- Wavefolder pedal: Fold some waves! Rather than clipping loud signals, “fold” them back away from the clipping boundary for a nice twist on classic distortion/overdrive sounds. “Amount” pre-scales the input to cause more folding. “Symmetry” (when low) offsets the input to cause folding to occur more on one “side” of the signal than the other. “Smoothing” smooths out the wave at the folding boundary, approaching sine shapes instead of sharp triangular corners. “Expression” has the output envelope match the input envelope (or keep Expression low for a compressor-like effect)
- Ring Modulator pedal: Ring-modulate the input carrier signal with a wavetable-based modulator. The modulator can either track your frequency (at a just-intonation interval) or be independent. Also has a tone control so you can tame some of that buzz
Could you make a default pedal “template” - to streamline the process of creating a new pedal to add?
(dunno if I have to chops for this, but might give it a go)
pulled source just now and I’m seeing this:
### SCRIPT ERROR: init /home/we/dust/code/pedalboard/lib/ui/board.lua:85: attempt to call a nil value (field 'set_num_input_channels') stack traceback: /home/we/norns/lua/core/norns.lua:128: in field 'set_num_input_channels' /home/we/dust/code/pedalboard/lib/ui/board.lua:85: in field 'action' /home/we/norns/lua/core/params/option.lua:51: in function 'core/params/option.bang' /home/we/norns/lua/core/paramset.lua:415: in function 'core/paramset.bang' /home/we/dust/code/pedalboard/pedalboard.lua:52: in global 'init' /home/we/norns/lua/core/script.lua:103: in function 'core/script.init' [C]: in function 'xpcall' /home/we/norns/lua/core/norns.lua:129: in field 'try' /home/we/norns/lua/core/engine.lua:91: in function </home/we/norns/lua/core/engine.lua:89>
is this anything to do with me working on a new pedal?
ignore me - i’m dumb and didn’t restart supercollider.
It should already be pretty templatized! As in, each pedal only declares things specific to itself and the rest is handled for you. You can e.g. just copy paste e.g. the vibrato pedal Lua and the corresponding SC into new files with new names, rename the classes, rename the IDs (make sure they match in Lua and SC), and then make the params (and corresponding SC
fxArguments) you want and you’re off to the races! If you want to see an example of just what it takes for a new pedal top to bottom, here’s the entite commit for Vibrato, nothing else needed: https://github.com/21echoes/pedalboard/commit/755a2697044758a77e34f870571edad5acbdbf5a happy to answer any questions if you run into anything!
FWIW - i don’t really understand what the parameter for
\var.kr() on a variable should be. Is that like the controlspec amount? Or a default value?
It’s a default value documentation here: https://doc.sccode.org/Classes/NamedControl.html
@21echoes Just want to say thank you for this wonderful app you’ve developed! Spent the afternoon jamming with Teletype + JF + Pedalboard and really enjoyed ther results. JF + a bit of tape echo, lofi, and pitch shifting = instant blissed out warm-organ.
Extremely covetous of just friends, can’t wait for one to pop up used!
Supposedly it’s coming back this summer, in case you weren’t aware of that.
Big thanks to @okyeron for working with me to get the Mutable Instruments-derived UGens in a place where they can be used in Pedalboard! We’re wrapping up some last little things, but it should be ready soon Here’s some teaser tracks (or honestly more or less one track, two takes):
Both tracks are a nord piano -> rings -> lo-fi -> clouds (yes, rings into clouds is coming to a norns near you )
Any plans to hook in delay BPM with the global Norns clock as an option? Would be tremendous!
To expand on this for specifically the use case I’d love this for:
Norns as the master, sending clock out to crow with audio back into Pedalboard’s synced delay.
For me, it’s not so much about Pedalboard responding to an external clock as it is Pedalboard running as the master clock!
Playing both takes together sounds amazing! Also cant wait to try these out when they are ready.
This release brings two pedals based on the Mutable Instruments modules Rings and Clouds to Pedalboard (once you follow these instructions: https://llllllll.co/t/31781)! Huge thanks again to @okyeron and @geplanteobsoleszenz for their work on porting the these over to the norns and SuperCollider ecosystem.
- New Pedal: Granular, based on Mutable Instruments Clouds
- Just about all of Clouds’s functionality is here: position, size, density, and texture controls. Freeze mode. Stereo spread and feedback controls. Recursive pitch shifting. Buffer quality settings
- We even have the “hidden” modes: “pure” pitch-shifting, looping, and spectral processing
- We did take out Clouds’s reverb – if you want reverb, just use the normal Reverb pedal
- New Pedal: Resonator, based on Mutable Instruments Rings
- All the standard Rings functionality is here: all six modes (modal, sympathetic strings, single string, FM, western chords, karplusverb), up-to-4-voice polyphony, resonant structure control, brightness, damping, and position controls
- It defaults to a “pitch follower” mode with customizable interval offset, as there’s no V/Oct input. You can also switch to a “free” mode, where you directly dial in the pitch of the resonator (or set it up via param mapping to follow MIDI input!)
- We also have the Rings easter egg “Disastrous Peace”. It’s a organ/string-machine synth, loosely based on the Roland RS-09. It’s a little strange to have in an effects chain, but… why not?
- Slapback mode for the delay pedal: exactly one copy of the delayed signal is heard, with no feedback tail
Granular and Resonator require some prior setup work outside of the script to make them usable. Specifically, you have to follow the instructions here: https://llllllll.co/t/31781. The app still works if you don’t, but when you try to choose those pedals we show an alert explaining what you gotta do first. I personally recommend the “Installer script” approach (just put it in
~/dust/codeand run it like any other script), as opposed to manually downloading the
scp-ing it onto your norns
- Some of the pedals (Reverb and Resonator in particular) are rather CPU-intensive. If you choose enough CPU-intensive pedals at the same time, we now show a brief warning that you may hear dropped samples (and show you each pedal’s CPU cost so you can maybe make some different decisions)
- Granular and Resonator require some prior setup work outside of the script to make them usable. Specifically, you have to follow the instructions here: https://llllllll.co/t/31781. The app still works if you don’t, but when you try to choose those pedals we show an alert explaining what you gotta do first. I personally recommend the “Installer script” approach (just put it in
- Small bug fixes:
- Don’t destroy & recreate pedals when moving them around the board (i.e., fix the clearing of the delay buffer when moving the delay pedal)
- Better handling of user input before the app is done launching
Some more sound samples!
Plain ol electric guitar -> Resonator in modal & static pitch mode -> Reverb:
Plain ol electric guitar -> Resonator in string & pitch-follower mode -> Wavefolder -> Granular: