Creating a "volume pedal" with nonlinear taper

I’ll state my ultimate question first, here:

How are other people achieving volume-swell volume pedal configuration on iOS, for guitar sounds?

I ask this because I’m not fully satisfied with any of the methods I’ve thus far tried, and maybe others have figured out something simple I’ve missed. I have tried a number of ways to create a full-sweep “volume pedal” in AUM on iOS using both MG3 and plugins; for example, I can connect a CC7 or CC11 expression pedal to:

  • The channel volume on an AUM audio channel;
  • An audio bus send amount on an AUM audio channel;
  • The output volume parameter of some plugins (e.g., IK’s MixBox);
  • Cascaded instances of the native Gain plugin in AUM; or
  • The output volume of the MG3 mixer.

While these all, technically, work, none are ideal. The first three options can certainly sweep from minus-infinity (or at least minus-enough) to 0dB in one go, but only with a linear “taper” on the expression pedal’s sweep. Volume swells a la Fripp / Hackett / Lifeson really need a nonlinear taper to sound right and be intuitively “playable”.

MG3 can configure a nonlinear taper quite nicely, which is awesome, but even this isn’t ideal because, using MG3 as a plugin in AUM, that plugin comes before the amp sim (to give me the pedalboard FX I’m after), where a volume pedal affects the amount or distortion/saturation during the sweep. I want foot volume it after the amp sim, where the quantity of dirt is the same throughout the volume sweep. Also, I want my volume pedal to come after any noise gates, not before them; an aggressive gate will ruin the bottom part of the sweep.

I’ve lately been experimenting with using the native Gain plugin in AUM, cascaded over multiple instances, to try and get the effect of a nonlinear taper to the sweep. The native Gain plugin will only go down -24dB, but three of them, all tied to the same expression pedal, will certainly go down below the audible threshold, and if I play a little bit with the exact start points of each one (e.g. they all sweep up to 0dB in the end, but if the first one sweeps only from -10 to 0, the second from -20 to 0, and the third from -24 to 0, it does seem to get me a little better taper than a single sweep using a different method. Theoretically one could add as many cascades as necessary to get the taper desired, but that whole enterprise just seems clunky.

I’m not sure why I haven’t been able to find an obvious “volume pedal plugin” that would have a finely configurable taper, or at least a mapping like you can do with, say, MG3 or with curves in the SWAM plugins, but maybe I’m missing something obvious.

Which brings me back to the question I started with: how are other people solving this problem?

1 Like

Welcome to the iOS volume pedal woe club. There is no such plugin, AFAIK. Like you said, simply using gain plugins or assigning MIDI controllers to the mixer faders does not quite cut the mustard.

This is on my list of plugins to make once I figure out how to make plugins :slight_smile:

Some guitar amp sim/fx siuites have volume pedal models (Amplitube, TH-U and ToneStack Pro) but they also do not have useful automation/MIDI functions when used inside a host like AUM.

You could use a real volume pedal in your signal chain, though hitting the front of your audio interface like that seems like trouble to me.

The plugin situation for modelling a volume pedal on macOS is much better.

I was afraid this might be the case. The absence of an atomic foot volume plugin seems…conspicuous, somehow, doesn’t it? Any idea why nobody has put one out yet?

You could use a real volume pedal in your signal chain, …

Indeed. I have tried, with my limited gear, to do this. It’s not a “real volume pedal”, but I do get noticeably improved tactile response using the foot volume module on my Boss MS-3 with an expression pedal. Using a simple 1x1 iRig USB as my audio interface on one of the MS-3’s effect loops, I can put the MS-3’s volume either before or after the interface. This works, but again is not ideal. If I put volume after the interface, where I’d usually want it, then I have to handle any post-volume effects (e.g. delay, reverb, looping) either onboard the MS-3, or with additional hardware units; or with a second send to an interface. If I put foot volume before the interface, I can use dirt pedals on the MS-3 and mitigate the “volume affects distortion level” problem at least somewhat, but a VP in this position means the only noise gate I can lean on, is the one on the MS-3, which again isn’t bad, but it’s limited.

I’ve also thought about getting an active volume/wah pedal, and placing it in the effect loop of my NUX Amp Academy. This might be a good answer for guitar sound, since you can place both the gate and send/receive blocks before or after amp and dirt pedal, and that will cover both volume and wah applications, but this also has limitations with interweaving the guitar chain with software/plugin effects. (And ironically, it is mostly MG3, with its pitch-shifting and overtone possibilities, that most makes me want to place a plugin before dirt, amp, and volume…otherwise I’d be reasonably content with sending a hardware-driven guitar sound on to plugins to handle rack and looper effects. :nerd_face: )

All this just starts to sound a lot more messy than being able to do it all-in-the-box.

A little experimenting wound up with some revelations that I think warranted a more generalized post, but as an update, I think the way forward for a true "audio volume pedal” is actually to use an atomic instance of MG3 with a simplified preset.

In a nutshell, this preset has MG3 take the expression pedal’s raw input, remap it to a nonlinear curve like MG3 can do with its Patchbay nodes, and then send that nonlinear output to the Gain plugin on an audio Chain. (Gain seemed smoother than connecting to the Mixer.) I had to tweak things a bit (e.g. configure the curve to not go above unity gain, find the right shape for a good volume swell sound, etc.) but it’s by far the best solution I’ve seen so far, and I think worth further experimentation.

And that’s where things got more generalized. I remembered–duh–that I might be able to take that remapped curve, and instead of sending to to Gain internal to the MG3 preset, send downstream as outbound MIDI–and therefore making it available to other elements in AUM. That discussion is elaborated further at the other post, but at least for now I think I have an acceptable “volume pedal” solution to go with! :nerd_face:

1 Like

Well, this effort has been nothing if not illuminating. Since this original post I have now been through multiple iterations of both using MG3 for re-curving incoming pedal control, and using the MIDI Messenger AUv3 plugin to brute-force a curve remapping.

To be clear: both of these methods work, but I came to prefer the MIDI Messenger approach as cleaner (after the trial-and-error phase anyway; the MG3 approach was just easy), and it didn’t give me as much “jitter” as the MG3-produced curve did. (I now believe that at least part of the jitter I get is just my inexpensive expression pedal–Zoom FP02M–not being perfectly smooth in its own internal response; but for whatever reason I seemed to get a bit more when it was MG3 producing the curve, not entirely sure why.) The whole exercise also taught me a whole lot about MIDI filters and mappings that I didn’t know before, and I’m always appreciative to learn useful new things.

But, I have now pinched enough pennies to have just take delivery of a proper MIDI host device (CME Pro H2MIDI Pro), and son of a gun, that thing can do the re-curving right on the device, elegantly and simply, using the free HxMIDI Tools app.

So, for anyone who runs across this thread and is in some way informed by it, I thought it would be courteous to come back here and say that in the end, for me–on this question of “what’s the best path to a non-linear-taper pedal curve for things like volume swells, using a standard, linear-taper MIDI expression pedal”–my findings can be summarized thus:


First choice: let a capable MIDI device do it. My new H2MIDI Pro host can take the incoming MIDI control from a hardware pedal and re-curve it before it ever sends it along to my plugin host (in my case AUM on iOS). Powerful, and architecturally elegant since it treats the re-curving problem right at the source.

Second choice: MIDI Messenger. I hadn’t known about MIDI Messenger before this effort, and dang, that’s a nifty little tool! Anyway, you can use it to program your own curve–you can even export/import it (JSON data) to create/edit the curve in a more efficient editor. Being a free app, it’s probably the best poor-man’s-solution to a custom curve, and it works great.

Third choice: Use the MG3 Patchbay. I created an MG3 patch that never sees audio input or output, all the Chains turned off and the MIDI Out skeletonized to send MIDI 1.0 output to channel 1; it takes incoming MIDI CC from my footpedal, re-curves it with the curve editor in the Patchbay, and cables it to CC7 on the MIDI Out module. (It’s just a MIDI mapping tool, nothing else.) This dedicated MG3 plugin instance lives on its own AUM Channel with no audio inputs or outputs, just incoming MIDI from the footpedal, and outgoing MIDI from the re-curved messages. This approach does seem to have some limits, and it does clutter the AUM Session with an extra Channel, but 1) it works, and 2) it’s really easy to go in and edit the whole curve right there in the Session. I’m hanging on to it in my “proof-of-concept” folder, and some day would like to try it again with a really high-quality expression pedal.


Anyway, I’ll move forward with the new MIDI host device, since that’s kinda what it does and it does nicely abstract my “floor control” away from whatever actual hardware that is supplying it. (I mostly use an XSonic AIRSTEP for “all in the box” work, but I also have an old Boss MS-3 which can do quite well just as a MIDI controller, plus also supply audio processing.) This whole effort may never get quite as exquisite as a good dedicated volume pedal can be, but it’s certainly good enough for what I’m capable of doing, and I’ll go with that. :nerd_face:

1 Like

One other thought, because my brain works like that: it occurred to me as I went to cross-link this with another post, that one advantage the MG3 and MIDI Messenger approaches both have, over doing the re-curving on the MIDI host device, is that they are fully portable within the AUM Session that defines them. The MIDI host device of course relieves the plugin host of having to define the curve at all, which results in simpler Sessions, but the portability can be its own advantage in some cases! :nerd_face:

I have had this on my mind for a VERY long time, and as of today, I have a prototype for the AUv2 and VST3 plug-ins, shown here loaded in Logic Pro 12:

The GUI certainly needs polish! Interestingly, I’ve run into the same problems with the AUv3’s GUI not reloading properly on macOS as we’ve seen in MIDI Guitar 3 Hex AUv3 and the dropdown menus in the AUv3 only become unresponsive so I’ll have to figure that out before releasing it.

Anyway, I’m pretty happy with the result so far.

EDIT: I released it!

1 Like

Whoa, this is cool news. Forgive me if you’ve already addressed these questions, but…I get excited. :nerd_face:

  • What will be the cost of a license?
  • If you’re planning an AUv3 version, when do you think that might appear?

I’m very happy that you are excited!

The full license price of the macOS version is $29.99 AUD (roughly $20 USD). There’s a 14-day free trial so interested parties can test it out.

I’m planning the AUv3 version for iPadOS/iOS only, not for macOS. “Volume Pedal AUv3” will be a separate product and aligned with App Store prices for AUv3 plug-ins, at around half of the macOS price. I’m hoping to release it in 2-4 weeks, but if all things go well, it could be even sooner.

Oh hot diggity. An iOS AUv3 that soon, at that price point, sounds fabulous. (I’m almost entirely on iOS at the moment, mostly on the strength of AUM as a plugin host, and the affordability of things like SWAM instruments.)

Thank you for bringing this to the landscape; I look forward to wringing it out!

1 Like

Undoubtedly preliminary, but it is definitely on its way.

The macOS version is now stable at 1.0.2 with some decent improvements that have laid the groundwork for iPadOS.

Congrats again! Another beautiful little plugin.

1 Like

The AUv3 versions are functionally finished for iOS/iPadOS/macOS.

I’ve modified the GUI quite a bit to establish consistency between the different plugin versions.

I’m working to finish a Windows VST3 version. Hopefully it’ll be release-ready across the various operating systems this week (v1.0.3).



VST3 versions for Windows (x64, x64ARM and x64ARMEC) are now live on GitHub.

macOS AUv2/VST3 have been updated to version 1.0.3 to match.

And…

The iOS/iPadOS/macOS AUv3 should be available soon.

Fantastic news. Of course it’s not the right week for having lots of time to wring out a new toy, but I’m all about practical solutions as well. :nerd_face:

Version 1.0.3 has been approved by App Store Connect but the product-linked macOS AUv3 version seems to not be visible yet.

I already have a new version ready to push since the approval process took so long! :sweat_smile:

1.0.3 in hand (on device) now, and I look forward to giving it some attention in the next day or two. Thank you for bringing this to the landscape!

1 Like

I submitted an update (version 1.0.4), which has a fix for flipped grid handle behaviour and some cosmetic improvements, to Apple earlier today. Hopefully it will be available soon.

Version 1.0.4 was also posted on GitHub today for the macOS/Windows plug-ins.

Oh, this is exciting. I’ve just had a brief few minutes for a first test, but I am ecstatic to say that this appears to completely fix the biggest problem I’ve had thus far with all the other methods I’ve tried, and that is artifacting. Eliminating the artifacting, alone, makes this worth its cost.

Apparently I got the new version 1.0.4 overnight, because that’s what I saw when I went to do the test this morning (I’m in Alaska, US). It threw me for a loop at first because it took me a minute to figure out what you’d done with the UI, rendering the different curve types as factory presets whereas before they’d been direct UI controls. No problem there, of course, but it did make me wonder about tapping in the UI for some basic help, or at least the splash screen you get when you open standalone.

(As to that, would you be interested in me, as a user disconnected from the design history and details, writing up some user doc for you? I would be very happy to do that. :nerd_face: )

Okay, stipulated that I think the basics here–the core things that add value–are fabulous, I do have some suggestions based on this first sit.

The ideas

Quick help direct from the plugin. I don’t think you need anything fancy here, like “tooltips” over each feature, but an obvious tappable element that brings up a basic help page (ideally an executive summary, scrollable to more detail) might go a long way, especially for people who may not know either about what they can get out of a volume pedal, or who may not know about plugin parameters, direct assignment, etc.

“HOST CONTROL” toast. This is a specific one. I like the fact that this quick toast appears when plugin control is in use–I think that’s really handy in a plugin that can accept both plugin parameter control and direct MIDI–but at least initially I did find it a bit visually distracting for it to size-adapt the whole Position control dial. Perhaps put that toast up along with the title of the Position container, analogous to where the “Reverse” control is in the Response container? (Also, just curious: is the Position parameter the only thing exposed to direct MIDI control, or are other elements as well?)

Widened controls for different expression pedals. I was able to test two different cheap expression pedals here–Behringer FCV100 in passive CV mode, and Zoom FP-02M–and was a little surprised at how differently they responded underfoot. (Kudos to this plugin for actually making those nuances noticeable in the first place–you’ve enabled a whole new region of subtlety here!) I started with the Zoom, and even with the slowest rise I could get with the Response controls, I found I had to be very “hard on the heel” to get a smooth start to the swell. Even reducing the Range’s “Min” value from -96 to -60, which improved it noticeably, I wanted to delay the rise more than the controls allow, so that the audible rise could happen in the middle of the pedal’s sweep, rather than so much right-off-the-heel. These are the settings I arrived at:

After that, I tried the Behringer pedal, which has a very different feel underfoot (being both much bigger physically and with a “longer rock” to its sweep) with the above settings, and that was glorious–much closer to what I would consider truly a perfect feel.

This was a useful discovery for me–clearly the two pedals must have a different sweep internally, somehow. I haven’t had a chance yet to test my other cheap pedal, the M-Audio EX-P, but I’ll probably have a chance to do that in the next few days as well.

At any rate, with the noticeable difference in just these two pedals, I’m sure that other makes will introduce still other behaviors and biases. Given that, I think it would be useful for the plugin to have Response control handles that–this nomenclature may not be perfect but I’m describing it in the context of the v1.0.4 UI–can be dragged in the X-axis as well as in the Y-axis. As it is, each handle has essentially a fixed X value, and at least in my specific desire to delay the rise, I found I wanted more available range in the Response control handles. (As I write this it occurs to me that you could also introduce a separate “response minimum” parameter, in which you can set the curve to begin responding only after a minimum incoming CC threshold value is reached. In that case the existing curve controls might remain as they are. Maybe?)

Now, that said, I found it very effective to use the Range “Min” control to bring up the floor to help bring the rise more “off the heel” (again, I brought it up from -96 to -60, which is still effectively inaudible (-60dB is the level at which I gate my dry input)) and together with both Response controls dragged all the way down, the result on the Behringer pedal is outstanding. I would think that the Zoom pedal could be brought to a similar place, if we could just delay that rise even more.

S-curves. I love the idea of an S-curve for a volume swell, since it can introduce additional nuance to the toe end of the pedal sweep. The above idea about expanding the “X-value” options in the Response controls would be even more noticeable with an S-curve, and I would love to see an S-curve with both a delayed rise and nuance on the top end.

Thank you!

I’ve got more testing to do obviously, but that was everything I saw in the first run with those two pedals, and I’m pretty tickled already. I think this is a great addition to the landscape, especially for those of us on iOS!

For those contemplating the plugin, I figured I’d also post this capture of the plugin parameter set, which fits neatly on one capture:

Note that the “Focus” parm is the right-side control handle in Response, and “Taper” is the left-side control handle. And there are several factory presets (variations in manipulating both the Response and the Range controls) to get you started. (Note in particular the “Rhythm to Lead” preset, which turns your volume pedal into a pedal-actuated boost, rather than the full volume sweep that I’ve focused on here.)

Anyway, off to other things for now, but that was a great beginning. Smooth VP response on iOS at last, with promising controls for picky nerds like me!

Thanks so much for this detailed feedback. Your original post was actually one of the things that made me think this was a useful problem to solve, so it’s great to hear that your first proper test is promising. I’m already considering version 1.0.5 based on aspects of your feedback.

I feel it is important not to turn the Jam Origin forum into a support/development thread for a separate plugin, especially given my moderator role here. Volume Pedal is intended as an adjacent utility that can be useful for MG3 users’ workflows, but this forum should stay focused on MG3 itself.

So, I’d be very happy to continue discussing Volume Pedal through my own site’s email support channel⁠. In particular, it would be very useful to understand more about what you meant by “artifacting” — whether that was jitter/stepping/lumpy swell behaviour from previous control methods, audible zipper noise/clicks, or something else.

And thanks again — I really appreciate you taking the time to test this so thoughtfully. I’m also very grateful to @jamo for maintaining this forum, since the original discussion here helped point me toward the problem in the first place. :folded_hands: