[HN Gopher] A low latency guitar effects processor suitable for ...
       ___________________________________________________________________
        
       A low latency guitar effects processor suitable for running on a
       Raspberry Pi
        
       Author : Audiophilip
       Score  : 188 points
       Date   : 2023-03-07 15:03 UTC (7 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | woudsma wrote:
       | Very cool, I've ordered a Raspberry Pi touchscreen this weekend
       | and it should arrive today. I want to make a MIDI sequencer with
       | it, or at least play with the idea. I hope my old Raspberry Pi
       | can work with MIDI (over USB) without too much latency..
        
         | mr_sturd wrote:
         | I've seen it done with the Pico, where it acts as a midi device
         | when plugged in to a host machine; not so sure about the main
         | boards.
        
           | zamnos wrote:
           | The pi zero hardware supports gadget mode and from there it's
           | a bit more work to get it to enumerate as a midi device. The
           | pi 4 supports this via the usb-c port.
           | 
           | https://raspberrypi.stackexchange.com/questions/71613/how-
           | to...
        
       | Diapason wrote:
       | https://mod.audio/ (I'm not affiliated - just a long time
       | follower)
        
       | chaosprint wrote:
       | have to compare with Bela when it comes to latency
        
       | sklarsa wrote:
       | > Note that since the server program exposes an HTTP server you
       | can actually navigate to the IP address of your PI from any
       | device connected to the same wifi and control your pedal chain
       | from there.
       | 
       | That's a killer feature for me, hiding at the end of the README.
       | I have a Fractal Audio FM3[0] at home, and the only way I edit my
       | patches is using their editing software over a USB connection to
       | the device. Adding the ability to program (and even control) my
       | patches live over any wifi-enabled device is even cooler!
       | 
       | [0] - https://www.fractalaudio.com/fm3/
        
         | obituary_latte wrote:
         | Always hear about the Fractal Axe FXIII--seems like the gold
         | standard in guitar FX. Didn't realize they had smaller, non-
         | rack-mount form factor devices. Very interested in trying out
         | the FM3 now that you brought it to my attention. Thanks!!
        
           | tecleandor wrote:
           | The Mod Dwarf (and its predecessors) also allows web control
           | and it supports standard LV2 plugins :)
           | 
           | https://mod.audio/dwarf/
           | 
           | https://wiki.mod.audio/wiki/LV2
        
             | Blackthorn wrote:
             | The first site is remarkably brief about its actual
             | capabilities. Is there somewhere with more information
             | about it?
        
           | vondur wrote:
           | I think the hip new guitar effects/sim is the Quad Cortex
           | from Neural DSP. I've seen Kiko from Megadeth uses it for his
           | live shows.
        
             | bjelkeman-again wrote:
             | I think the AxeFx has more virtual knobs, but the QC is
             | easier to use, and has Kemper-like sound capture tech.
        
         | mr_sturd wrote:
         | Don't go leaving it exposed if you connect it up to the venue's
         | WiFi, if you're playing live. ;)
        
           | worik wrote:
           | Don't run wifi and real-time software at the same time.
        
             | zamnos wrote:
             | What wireless technology would you recommend instead then?
        
             | [deleted]
        
             | darkwraithcov wrote:
             | The core audio driver does a pretty good job with this.
        
             | mr_sturd wrote:
             | The only signals going over WiFi here would be controls for
             | the virtual pedals.
        
               | jcelerier wrote:
               | Just the beacons you get from other routers around can be
               | enough to create disturbances
        
           | giantg2 wrote:
           | Audience participation show.
        
             | 867-5309 wrote:
             | _DefCon Big Band_
        
             | Our_Benefactors wrote:
             | I had sketched an idea for a web ui that would talk to a
             | VCV instance, outputting signals to a real eurorack device
             | with an expert sleepers module... need to keep hacking on
             | that.
        
               | smoldesu wrote:
               | That's awesome. I wonder if you could wire up a Raspberry
               | Pi's GPIO to CV? Someone smarter than me has probably
               | tried this...
        
         | nightowl_games wrote:
         | Somebody should make a device that plugs into a fractal axe FX
         | and hijacks the USB connection and exposes a web interface. Now
         | that'd be cool!
        
           | zamnos wrote:
           | There are a bunch of USB over IP boxes you can buy, so it
           | depends on the m what you're looking for, port-wise. That
           | plus a wifi router gets you what you're looking for.
           | 
           | Eg https://www.digi.com/products/networking/infrastructure-
           | mana...
        
       | 1024core wrote:
       | I'm guessing the harder part would be actually finding a Pi for
       | this?
        
       | jamesgill wrote:
       | As an amateur musician, three things stand out:
       | 
       | 1. I'd have a hard time seeing that small screen onstage, and my
       | big foot would likely mash the wrong effects button. Others might
       | find it easier.
       | 
       | 2. There are tons of good, cheap effects boxes out there, and
       | easy to find used. I like Pi boxes, but this seems like a
       | homebrew replication of what's on the market.
       | 
       | 3. All good boxes are low-latency, in my experience. It's a
       | fundamental thing I think most players need.
        
         | AlecSchueler wrote:
         | What are they? Am I missing a joke here?
        
         | Min0taur wrote:
         | I agree with both of these observations.
        
       | m12k wrote:
       | Very nice! A screenshot or two of the web UI would be a good
       | addition to the readme
        
       | qqqwwweeerrr wrote:
       | This is awesome. I'd be really interested to find out if a
       | Raspberry Pi can run an open source amp modeler like NAM
       | (https://github.com/sdatkinson/neural-amp-modeler).
        
         | woudsma wrote:
         | I'm not sure if the GPU is powerful enough on the RPi, maybe
         | something like a Jetson Nano could handle running ML models
         | better.
        
       | rtatay wrote:
       | This is really cool. I may have missed it (am on my phone and
       | just skimmed the readme) but what effects are available and can
       | you build your own?
        
         | tecleandor wrote:
         | Seems like there are already a couple dozen pedals defined, and
         | you can define your own using the Q framework...
         | 
         | https://github.com/Quinny/GuitarEffects/tree/master/pedals
        
       | metmac wrote:
       | While not a guitar effects box another project that does low
       | latency audio things with an RPI at it's core:
       | https://monome.org/docs/norns/
       | 
       | Open source version: https://monome.org/docs/norns/shield/
        
         | rotexo wrote:
         | Also Pisound (https://blokas.io/pisound/) which has the benefit
         | of built-in din MIDI, but without the active community sharing
         | software (you kind of have to build everything yourself with PD
         | or SuperCollider). Some people have gotten Norns running on
         | pisound, but I could never get it to work.
        
           | worik wrote:
           | I do not know about Noms, but I have a Pisound
           | 
           | It has audio in so needs no external usb sound hardware.
           | 
           | It also has a programmable button. A simple idea but very
           | useful
        
         | jnovek wrote:
         | This is a neat little box, but pre-soldered ones seem to be
         | only available on the used market. There are bare PCBs out
         | there, but I'm not very confident with SMD parts.
         | 
         | This is the thing that bums me out with DIY audio: people come
         | up with extraordinary designs, do a limited run and then never
         | (or rarely) make any more.
        
           | dhon_ wrote:
           | Surface mount soldering is not too hard. I can't view the BoM
           | on mobile, but from the photos the soldering looks achievable
           | for someone with experience soldering through hole. Take a
           | look at the document here https://github.com/monome/norns-
           | shield/tree/main/bom - if it's mostly 0805 sized components
           | you should be fine. Even a few 0603 would be okay if you have
           | good vision and a steady hand.
        
           | rvense wrote:
           | Norns is made and supported by Monome, and it is very much
           | supposed to be a Product That You Can Buy... except
           | unfortunately it's based on the Compute Module 3, which has
           | been unavailable for a good while. They have been available
           | in small batches occasionally over the last year, and
           | hopefully will be more available soon.
        
       | DeathArrow wrote:
       | I thought is hard to have low latency audio in Linux with stuff
       | like PulseAudio.
        
         | tcrenshaw wrote:
         | Nah, low latency audio is absolutely possible, but not
         | necessarily using pulse audio. Using either Jack for the low
         | latency stuff has been the advice for years, but with the
         | advent of pipewire you can mix and match without too much
         | difficulty.
         | 
         | A quick skim didn't turn up what audio backend this project is
         | using, but I'm using patchbox with modep on my Pi4 as a bass
         | pedal board and it's pretty much flawless low latency. I do
         | need to add a fan to my pi since it's mounted underneath a
         | pedal board and doesn't get quite enough air though.
        
           | weberer wrote:
           | Sep 2 of the build instructions says it requires RtAudio.
        
             | jcelerier wrote:
             | RtAudio is just an API wrapper which calls JACK, Alsa, etc
             | behind the scenes and does not add latency, just the
             | overhead of a couple c++ method calls
        
           | tsegratis wrote:
           | Wow, what fx are you running -- and does that or could that
           | include convoluted reverb?
           | 
           | (Convoluted reverb is utterly awesome but more processor
           | intensive than almost anything else)
           | 
           | Edit: and sorry, to be helpful, by low latency, could you
           | meantion how many ms that is -- because while I'm very happy
           | for you, and really interested, 15ms is very different to say
           | 5ms or lower
        
         | tsegratis wrote:
         | Possible with jackd etc
         | 
         | I switched to BSD and got much better latency on the same
         | hardware
         | 
         | But I think that was the alsa -> BSD oss driver swap, which is
         | possible on linux too. I had just never tried it, since I
         | assumed linux was best
         | 
         | (I'm only sharing this cus i think its interesting, and may
         | help you get good latency)
        
           | tsegratis wrote:
           | I'm enjoying the downvotes :)
           | 
           | Was anything I said wrong?
           | 
           | Seriously, I've spent a long time fixing up low latency audio
           | 
           | jackd + OSS on whatever OS u like is not bad advice fyi
        
             | Shared404 wrote:
             | I honestly have no idea.
             | 
             | Personally I'm very happy to see that info as I do use both
             | Linux and *BSD and wouldn't have ever tried setting up BSD
             | for audio until now.
        
           | giva wrote:
           | BSD has in-kernel audio mixing, IIRC.
        
           | officeplant wrote:
           | I've begun tinkering with GhostBSD lately just to learn more
           | about BSD. Pleasantly surprised to find a lot of familiar
           | linux audio tools were ported or can be easily made to work.
           | Also happy that my ancient Presonus AudioboxUSB works fine in
           | BSD. So much so that I get less random audio glitches than I
           | do under windows 10.
        
         | tecleandor wrote:
         | The RTAudio tools this is based on allows different backends to
         | be configured. I guess you could use Alsa or Jack if you
         | want...
         | 
         | https://github.com/thestk/rtaudio/blob/master/install.txt
        
         | liotier wrote:
         | Jack offers the low latency necessary for music production.
         | 
         | Pipewire is supposed to offer low latency as well - at least
         | lower than Pulseaudio, but I don't know how much.
        
       | silveira wrote:
       | Any samples or videos of this working? I would like to have a
       | feeling of the latency and how the effects sound.
        
         | tecleandor wrote:
         | There's a two years old small video on reddit...
         | 
         | https://www.reddit.com/r/raspberry_pi/comments/p0jkb3/guitar...
        
       | dontbesquare wrote:
       | This looks very promising. I'm interested in how to make effects
       | and learn more about it. What a cool project!
        
       | honkycat wrote:
       | I've had some amazing ( horrible ) adventures in low latency
       | music stuff lately. It has made me think about going back to the
       | hardware side of music production. Previously I was an ableton-
       | only dude.
       | 
       | All of the vst plugins are CPU bound and even though i have a top
       | of the line i7 and 32 gigs of ram, my computer slows to a crawl
       | when editing even moderate sized songs.
       | 
       | Specifically, there is an nvidia bug that introduces latency to
       | real time audio, making guitar and other live performance
       | unplayable.
       | 
       | It really sucks! At least it has finally been ack'd (Increase in
       | DPC latency observed in Latencymon [3952556]):
       | https://us.download.nvidia.com/Windows/531.18/531.18-win11-w...
       | 
       | This has been a problem for YEARS. Hopefully they will finally
       | fix it.
        
         | jzombie wrote:
         | I don't know how this compares to your i7, but I dabble around
         | using Pro Tools w/ about 15 or 20 tracks at a time with several
         | effects running in unison, on an M1 Pro processor w/ only 16
         | gigs RAM, and I typically stay under 20% usage according to
         | Activity Monitor.
         | 
         | I mostly play guitar and don't notice the latency in most
         | effect chains that I use.
        
           | honkycat wrote:
           | Yeah it should perform way better than it does currently.
           | There is a driver bug for Nvidia cards that causes it to run
           | slowly and poorly.
           | 
           | It is extremely frustrating.
        
       | shtoyer wrote:
       | [dead]
        
       | digitallyfree wrote:
       | I'm still patiently waiting for future digital mixing consoles to
       | do all processing in software on inexpensive x86 or ARM
       | processors. Currently due to latency and reliability requirements
       | all DSP work is done on dedicated chips or FPGA which brings up
       | the BOM and engineering cost. They often have a small ARM/Linux
       | module which is used for the displays and network control.
       | 
       | The CPU tech is here today, and modern general purpose processors
       | do a good job of handling low-latency audio. Someone just needs
       | to put all that together in a unified and stable package...
        
         | bob1029 wrote:
         | Modern CPUs are surprisingly good at low-latency _video_ as
         | well. SIMD on something like a Zen4 core is a really big deal
         | if used properly.
         | 
         | I've got some prototypes in C# that can draw a 1080p bitmap and
         | encode to JPEG in under 10ms. Using single threading, socket
         | mux servers and aggressive multimedia timers means my network
         | delay is usually right at 1ms.
         | 
         | I feel like if you are just worried about audio, there is
         | definitely enough bandwidth here to do what you need to per
         | unit time.
        
           | bluGill wrote:
           | While video needs more CPU power, it can tolerate higher
           | latency than sound.
        
         | huehehue wrote:
         | Not exactly what you're describing, but I've been running my
         | band directly into Logic Pro on an M1 (both for recording, and
         | live shows). Dry signals go through amp sims and effects
         | processors, and then route to both a FOH mix and an in-ear mix
         | all on the laptop.
         | 
         | Wish I had seen the OP's project months ago, but one bonus of
         | the setup I describe is the ability to swap effects after the
         | fact (by virtue of having the dry signal) and the ability to
         | automate effects (so I can engage distortion etc as soon as we
         | hit measure XYZ instead of having to click a pedal)
        
           | digitallyfree wrote:
           | I've done live mixing with a laptop, DAW, and interface in
           | the past and it does work but it's not something I would be
           | comfortable with for an important show. Even with something
           | like SAC (which is specifically designed for the task) the
           | chance of hangs, crashes, etc. go up as at the end of the day
           | it's just a program running on top of your OS. The setup and
           | config also gets a bit hacky and you'll be the only one able
           | to use it. As far as I know the only specialized system that
           | does this is the Waves LV1 which has a dedicated OS running
           | on top of x86 hardware for processing. While I haven't tried
           | it apparently it works quite well.
           | 
           | However I was more thinking of mixers like the QSC
           | Touchmix/X32/etc. where the DSP probably eats up quite a bit
           | of the unit cost, and how the price could be significantly
           | brought down if the innards merely contained analog I/O and
           | converters all tying into a powerful SoC.
        
         | TylerE wrote:
         | Modern CPUs are great if your watt (and thus thermal) profile
         | is unlimited.
         | 
         | Not so great when they aren't.
        
           | digitallyfree wrote:
           | Modern consoles are plugged into the wall and are large
           | enough for active cooling. For a 1U rack unit they can be
           | cooled with small server fans; noise is not an issue as the
           | amp fans are just as loud and the music will drown them all
           | out anyways.
        
           | londons_explore wrote:
           | Most processing of audio isn't CPU performance limited... For
           | most realtime audio mixing, it doesn't matter if you use 1
           | watt or 10 watts for your CPU - the big speakers will easily
           | be drawing far more, and the performers time will be costing
           | far more than the electric bill anyway.
        
           | strangetortoise wrote:
           | Does this form a problem for digital mixing consoles? As far
           | as I know, these already have fairly beefy fans for heat
           | exhaust, so I don't know if they couldn't just add more
           | airflow?
        
       | jojobas wrote:
       | What is he using for actual audio interface? RPi has something
       | awful onboard and none of the pictures show anything external.
       | USB would add 0.25ms latency just for being USB, best case.
        
       | WorkerBee28474 wrote:
       | From my understanding the Line 6 Helix uses two 450MHz SHARC
       | processors, ADSP-21469. Other effect/amp modelers use more or
       | newer of the same family[0].
       | 
       | Can anyone comment about the relative processing power of a RPi
       | vs the market solutions? Is the RPi theoretically good enough
       | that a pedalboard could be completely modelled?
       | 
       | [0] Interestingly, it sounds like SHARC chips were designed to be
       | low cost processors for single use applications in guided
       | artillery shells.
        
         | unwind wrote:
         | According to Analog's product page [1] for the ADSP-21469, it
         | delivers 2.7 GFLOPS at 450 MHz.
         | 
         | And Wikipedia's page of all the RPi models says that the latest
         | (4B) manages 8 GFLOPS at around 1.8 GHz.
         | 
         | If that means that the answer to your question is "yes" or "no"
         | is unfortunately a lot harder to Google and/or figure out. I
         | would assume that the SHARC-based devices run on the metal,
         | whereas most applications for the Raspberry Pi run under Linux,
         | for instance.
         | 
         | [1]:
         | https://www.analog.com/en/products/adsp-21469.html#product-o...
         | 
         | [2]:
         | https://en.wikipedia.org/wiki/Raspberry_Pi#Simplified_Model_...
         | 
         | Edit: grammarish.
        
         | bluGill wrote:
         | Generally this type of work is done on DSPs and FPGAs, because
         | they can generally get much lower latency than a CPU. While
         | this can get latency low enough that nobody will notice, it is
         | still there, and there isn't room for anything else in your
         | signal chain to also have latency and still be unnoticed.
         | 
         | They will still have a CPU on devices like this, but all it
         | does is run the UI, the sound processing is not done on a CPU.
        
       | Min0taur wrote:
       | This is a wonderful project, thank you for sharing your process!
       | I'm excited to try making a cute/custom FX brain with this.
        
       | kbr2000 wrote:
       | Well done!
       | 
       | For those interested: a predecessor called the "Jesusonic" was
       | once made by Justin Frankel (of Winamp and REAPER fame):
       | https://www.cockos.com/jsfx/
       | https://wiki.cockos.com/wiki/index.php/Jesusonic_Documentati...
       | 
       | :)
        
       | snarfy wrote:
       | > A Low Latency Guitar Effects Processor
       | 
       | What's the latency? I can't find numbers anywhere.
        
         | worik wrote:
         | Exactly
         | 
         | What is the expected latency of those cheap usb devices?
         | 
         | I had one that was unusable live. Noticeable latency. Have they
         | gotten better?
        
           | djbusby wrote:
           | IME it MUST be under 10ms
        
         | LgWoodenBadger wrote:
         | IME, if you can't find an important quantity like that
         | front&center in an advertisement, then its value is going to be
         | terrible.
         | 
         | Applies to many things related to an advertised product. Things
         | like price, quantity, material, country of origin, standards
         | met, certifications, scores, etc.
        
       | hendry wrote:
       | Surprised that a (local) Web call can be considered low latency.
       | Isn't this why people use grpc etc?
        
       | ElijahLynn wrote:
       | There is also Pisound for low-latency guitar effect processor
       | which is a hat for the Raspberry Pi. https://blokas.io/pisound/
       | 
       | The UI, MODEP, is based on the Mod Devices work on their open
       | source pedal (Originally Mod Duo) > https://mod.audio/.
        
         | bobleeswagger wrote:
         | I bought a PiSound to tinker with the Midi interface a bit, had
         | no idea it was this powerful.
        
       | ushakov wrote:
       | Reminds me of NeuralPi, which uses ML models to emulate real AMPs
       | 
       | https://github.com/GuitarML/NeuralPi
        
         | alex7o wrote:
         | I gave been using NeuralPi not on a Rpi and I have found the
         | results sometimes to be on par with neutral DSP.
        
       | rerdavies wrote:
       | Also see: https://rerdavies.github.io/pipedal/
       | 
       | which solves the problem with using a bar's Wi-Fi by using Wi-Fi
       | Direct.
        
       | worik wrote:
       | If you are interested in this see https://blokas.io/modep/
       | 
       | Hosting plug-ins is a very powerful way to go.
        
       | pengaru wrote:
       | I've found the RPi4B to be somewhat awful for low-latency audio
       | usage.
       | 
       | My particular use case is simply playing MP3s read from mmc
       | through an MBox1 on USB.
       | 
       | No matter how much irqbalance, isolcpus, taskset magic, it never
       | gets absolutely perfect. It gets better, but there's always
       | spurious delays exhibited as occasional pops and clicks in the
       | audio output.
       | 
       | I'm hopeful that [0] will improve the situation, but haven't had
       | time to really dig into it let alone build a custom bleeding-edge
       | mainline kernel - which I'm not even sure supports all the Pi4B
       | hardware.
       | 
       | It's asinine that an otherwise idle 4Cx1.8Ghz machine can't even
       | play MP3s on a USB MBox1 flawlessly with zero special effort...
       | 
       | [0]
       | https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
        
       | atoav wrote:
       | Nice project, but nonway on earth I am taking anything with a
       | breadboard and jumperwires onto stage -- except maybe if I plan
       | to make it part of the performance
        
       ___________________________________________________________________
       (page generated 2023-03-07 23:00 UTC)