Awesome, looking forward to your feedback! Happy to hear you’re going to try it as an FX send from a mixer – I know that “pedalboard” makes people think of guitars, but honestly I mainly wrote this to use with my modular. Most of my playing these days (well, before the quarantine) is free improv sessions at a friend’s place, so I keep my rig pretty small, and I wanted a way to bring a lot of effects without using up hp (effects that I wasn’t going to modulate with CV anyway). I liked the norns already for MLR or Compass or Foulplay or etc, so being able to use it for FX when I wasn’t using one of those was a perfect fit.
Going for a test drive today… and I’m wondering if I’m seeing odd or normal behavior from the Flanger unit.
I’m sending a drum machine thru and the flanger doesn’t seem to do much of anything interesting until I get the feeback up to like 97-98-99-100 and then it’s a fast train to crazytown.
Chorus also seems to be pretty subtle on a dum pattern.
Expected or ?
Very excited to try this out!! Also seems like a fun source for those looking to hack basic effects into other things for other reasons
Yeah I had a hard time tuning the Flanger and Chorus pedals . They were noticeable in headphones, but trying it out on speakers some more I think they could do with more exaggeration. Have you tried keeping Flanger’s feedback low, but really cranking the rate and depth? Also remember the mix dial on every pedal’s second page If you could let me know what settings to you sound like a noticeable-but-not-too-crazy flanger and chorus with your setup, I can try to put the midpoint baseline closer to that
So yeah - sounds like a bit more going on with headphones, but still subtle.
Playing with just Flanger Rate and Depth, it seems kinda the same to me below 50 or so, with more interesting stuff happening above like 75, then bringing up the feedback to 90+ things sound more flanger-y
(grasping at straws since i’m not sure how this works) should those controls be
exp instead of
lin? (or vice versa)
Update Edit - A curiosity - Assigning a parameter to midi cc and using an external controller (16n) does not update the Pedalboard UI (on screen ‘knob’ positions). So… would
Board:_add_param_actions() action need to set
screen_dirty to fix that?
Yeah, I haven’t done MIDI mapping before so I hadn’t wrestled with how to make sure the screen stays in sync. It would in fact be as simple as having this line https://github.com/21echoes/pedalboard/blob/master/lib/ui/pedals/pedal.lua#L127 set
screen_dirty, but the wrinkle is that
pedal doesn’t currently have any way of doing that directly (other than returning
key). Could do like we do with
board and pass in
mark_screen_dirty as a callback function. Do you have a link to instructions for MIDI mapping, btw? I’d love to set that up on my end so I could test it out.
I’ve also pushed up some improvements for Flanger and Chorus here: https://github.com/21echoes/pedalboard/archive/7a5a77d6867bc1144844f337fd74aa8b360402f6.zip Let me know what you think! The other pedal that’s giving me a headache is Sustain – there are some pops during the attack that I’ll have to work on getting rid of tomorrow or over the weekend.
This is great! Assignable envelope followers and LFO’s would be most excellent!
Alright, new version v0.9.2 is up! ZIP file
- Flanger and Chorus improvements (same as version v0.9.1)
- Mono mode (accessible in the parameters menu). While enabled, the left input is doubled into the right input and the right input is ignored
- You can add a pedal or swap to a pedal and have the pedal bypassed by default if you hold K2 and then do the normal K3-to-confirm. This allows you to set up some more / different pedals and tweak them before they start affecting your sound so you can more easily time precisely when you turn the effect on during a performance
- Added a Sample Rate control to the Bitcrusher
- Sustain pedal shouldn’t have as intense “pops” during transients
- Small dial tweaks (better positioning, both encoders control the dial if there’s only one dial in the section)
- Bug fix for MIDI mapped parameters updating the screen
Version v0.9.3 is up! ZIP file
- Delay pedal now knows about tempo and rhythm. Rather than a vague “time” dial, there’s a BPM dial and a “Beat division” dial (quarter note, triplet 8th note, whole note, etc.). You can also tap tempo to get your BPM by holding K2 and tapping K3
- Delay pedal now has many different quality settings: Digital, Analog, Tape, and Lo-Fi. Analog is a hint of softclipping and filtering, Tape is more aggressive softclipping and filtering plus a bit of noise, and Lo-Fi is like Tape with some bit-reduction and a hint of a high-pass filter.
- UI is slightly improved (bypass is now a label instead of some vague 0/1 dial). Under the hood this was honestly more about the significant rewrite of the Pedal UI classes. The rewrite pulls almost all behavior into the superclass so that new pedals are basically just a list of parameters, and the UI and interaction bindings and engine bindings are all handled for you. Here’s an example
Coming soon: multi-tap delay, varispeed delay, reverb shimmer, and tap-tempo for tremolo.
Hoping to reach 1.0 and add it to the Library by the end of the week, would love any more feedback before then
definitely looking forward to that tuner—everything’s been amazing so far with my electric violin!
This looks phenomenal, will give it a spin soon.
Any kind of granular fx would be rock.
This is a great idea! What I would personally like to see is a frequency shifter, which is readily available as a supercollider ugen. Preferably very small amounts of shifting should be possible, as this results in wonderful barber-pole phasing effects.
Another, more involved idea is macro control of multiple parameters with one MIDI CC. The Line6 M5 that I had made this wonderfully easy.
Expression pedal implementation
Start with the pedal in the toe position. Once you have your effect parameters settings as desired rock the expression pedal to its heel position. Now set your parameters to your desired settings. Now as you move your expression pedal from heel to toe you’ll see all of the adjusted parameters move between these settings. All parameters affected by an expression pedal will show a pixel notch at the top indicating a parameter’s setting for the toe position of the pedal. You’ll also see a notch at the bottom that indicates a parameter’s setting with the expression pedal in the heel position. NOTE: In any case, the bar graph will automatically never display in the areas above the right-most pixel or below the left-most pixel, since these are the extremes that the pedal’s parameter control are set to go to. If no expression pedal heel and toe values are set for a particular parameter, there will be no pixel cutout in the graphic. TIP: If you want to “clear out” your expression pedal settings: Disconnect your expression pedal momentarily, tweak any parameters that you want to “clear” the expression pedal control of, and reconnect your pedal to start fresh with setting up your expression pedal control settings for those parameters.
I had been planning to do a pitch shifter soon, rather than a frequency shifter (see the note in the ugen documentation about how overtones are handled, I think I’m reading it as saying e.g. a 440Hz + 660Hz perfect fifth would get
FreqShifted to 550Hz + 770Hz, which is a tritone). But maybe I’ll do it as a combo pedal with a mode toggle? I’ll give it a whirl sometime soon to see how I like it
On the “small shifts” note, I was going to do a vibrato pedal that would do LFO shifts of less than a semitone… that sounds somewhat similar to what you’re talking about, no?
I haven’t done granular FX implementation before, but I’m definitely excited to try! It may be a little white before I get to it though – there are quite a few simpler pedals I have on the TODO list first (the list definitely will change with my mood but right now it’s: EQ, Tuner, Pitch Shifter, Phaser, Auto-Wah, Vibrato, Noise Gate, and Amp Simulator. After that is less certain but Granulator and Freezer are in there with Sub Boost, Wavefolder, Ringmod, and Looper…)
The frequency shifter is actually closer to a ring modulator than a pitch shifter. The distinction is that a ring modulator produces both sum and difference frequencies, i.e., f + 10 and f - 10, whereas a frequency shifter only produces either f + 10 or f-10.
You’re completely right that the freqshift produces inharmonics, but this is part of the charm for me. And, as mentioned, small shifts result in phase modulation rather than chorusing: an example can be found in this video.
An elegant implementation would be to calculate both sum and difference frequencies and have a crossfade knob between them. This way with one knob you get negative freqshift in the counter-clockwise position, ringmod in the middle, and positive freqshift in the clockwise position. As a cherry on top, having a switch to do positive on left channel and negative on right channel would provide stereo shifting.
@21echoes; I haven’t even tried it out yet, but I was pondering using it with my modular the other night, and I was wondering if it’s possible to have more than one signal chain… The norns has two ins, so two chains (with different effects, natch) would be super-nice.
TL;DR: Sadly that’s not possible currently, no. I can put it on the roadmap to look into, but it may have more limitations than you’d want.
Right now the app is capped at 4 pedals at a time so that we don’t start dropping samples due to CPU constraints (reverb in particular is rather expensive). With two signal chains, that cap of 4 pedals would be shared across the two signal chains, so you’re looking at two pedals per input (or 3 and 1). I might be able to eke out some CPU savings by switching most pedals to mono processing when in two-chains mode, but it’s unclear how much of a win that’d be. Plus the big CPU hog is the reverb I’m using, and under the hood it’s stereo-only (obviously you can sum to mono, but my point is there’s no mono CPU savings to be had there).
And then once that’s all solved for, I’d have to rewrite how params are handled. Right now in the norns ecosystem params are for all intents and purposes a static list created at app launch time (which params even exist I mean, obviously their values are dynamic). This is one of the big reasons you can only have one copy of each pedal in the signal chain at a time today, because otherwise I’d have to make and maintain four separate params sets for each pedal (one for each slot). Going to two signal chains would have the same problem
So yeah, it’d be possible, but you’d still have at most four pedals total across the two chains, and there could only be at most one copy of each pedal across both chains. There may be some ways around those problems, but…
Version v0.9.4 (e4d95db) is up! This is more or less a v1.0.0 release candidate ZIP file
- There’s now an Equalizer pedal! Low Shelf and High Shelf with frequency and boost/cut, and Mid Peak with frequency, Q, and boost/cut
- There’s also a Tuner pedal! Shows detected pitch and how close to accurate its frequency is, both on the pedal page and on the main board. Provides a comparison tone when not bypassed, with volume controlled by mix% (pedal is always bypassed by default). Allows changing the A3 basis away from 440Hz (cc @autreland)
- Tap Tempo is now available on Tremolo in addition to Delay (hold K2, tap K3 while on the pedal’s page). Tempo on Tremolo is not synced to tempo on Delay (and vice versa) – this allows you to do fun little aliasing effects (try seting BPM on one to 120 and bpm on the other to 118). It’s also super fun when they are in sync, though! Try setting them to the same bpm but different note divisions
- Reverb pedal now has a shimmer setting
I don’t think I’ll have time to film a celebratory v1.0.0 demo video for release (v1.0.0 is tomorrow assuming no issues are found!), but the video is still on the roadmap Thanks for all the feedback and support, everybody!
No significant changes since v0.9.4, just a couple of tiny fixes:
- Fixed an edge case in loading psets. Previously, if your current pedalboard had some of the same pedals as the pset you were loading, but in a different order, you would be in a weird state where your effect was duplicated at multiple points in the effects chain with different settings. Pset loading should now work as expected
- Tweaked the levels for the Delay pedal to not lose so much gain on the dry signal at default wet/dry mixes
- Pedalboard now restores your monitor level, global reverb on/off, and global compressor on/off to where it was before Pedalboard was launched
- Add an initial input gain parameter and a final output gain parameter (helpful if you want to plug in an instrument-level input, even though you really shouldn’t be )
I’ve got a Phaser pedal, Pitch Shifter pedal, Auto-Wah pedal, Vibrato pedal, and Amp Simulator pedal in the works! Keep an eye out for those later this week once I’ve done some more thorough testing & tuning