I’m not sure if I’m at the right place, but after weeks of search someone here might have an answer.
TL;DR: I’m looking for a “thing” with stereo in / out, preferably BPM detection and multiple effects like echo/delay, Reverb, flanger, filter, etc. and simple interface. And 100% wet signal.
There are commercial solutions, like Eventide H9, but oh my the configuration app is horrible. It’s just not fun to work with. 500 EUR
Union Audio LE FX comes very close, but after duty / tax / import it’s north of 590 EUR and limited when it comes to send/return effects, build for master insert.
And I enjoy open source project. I can do linux, programming and hold a soldering iron, even 3d print a case, but never touched anything effects / vst / audio processing.
Is zynthian a good starting point? With a bit of programming is it possible to add BPM detection? Maybe a simple interface where I have a rotary encoder to run through a short list of effects?
I did a very quick look into MOD audio desktop, but only found about 2 effects that where usable for my needs.
Perhaps you would like the Perfomix plugin, contributed by @gitnob some time ago. You will find it in the “modulation” category.
Briefly, it could be described as:
Build-up audio effects with looper function. The idea behind this plugin is driven by EZBot’s Performance mixer for the Octatrack, where the device is used as a complex effect’s chain for transitions during live performances.
I will order a pi 5, connect it to my interface (Xone 96) and start messing about. If it does not work out in a way I find useful, I can always re-use my Pi for other projects
I just looked into PureData and oh my, it will be an uphill battle
Will you please describe what you want to do with, “BPM detection”? It may help to understand what you want to do. As mentioned by @gitnob there are different workflows and meanings for this
For time based effects like delay / echo / loops I want to set the BPM just right. I dislike to TAP the bpm, or i might forget.
If I play some 4/4 electro it should be possible to detect the BPM automatically based on the incoming signal. When I play vinyl there is no midi signal with bpm data.
The end goal is to have a device similar to this:
Just .. different and DIY
Now if I use it as a send/return effects unit it will only get an audio signal when I actually want to hear the effect. So maybe I would also need to “lock” it and only auto adjust when I want. But that is a bridge to cross for when I get there.
AI seem confident it can create a Pd file that can do it. But then again AI is always confident.
We could add an audio to BPM module but it would require a feature twist and preferably some developer effort. Maybe what you have already done may form a starter.
I just opened the AI generated file from the confident AI to see what it does. I stopped looking at it when I saw that messages are connected wrong. Well, as you said, they are always confident, until you say “no, this is not correct”, and you’ll get another more confident answer
It’ll be better to use “classic” internet search for beat detection with puredata. Or just beat detection.
Like that one in the else library of pd. With different detection algorithms and lookup window sizes, and …
I could just make a puredata patch and send some BPM data via OSC to Zynthian’s CUIA for example. This could synchronize an audio input to the BPM of Zynthian’s internal metronome. I don’t get information about the beat or bar starts, but it could be helpful in @lord-carlos case.
But… as any detection it’s not 100% correct.
The Union Audio LE page says “and a BPM delay with automatic BPM detection that will allow timing to be overridden by a tap tempo button”. Hence both, and IMO it’s necessary because automatic detection could be unprecise or wrong. In your case it would perhaps helpful to use a foot switch for your BPM TAP button, to have both hands free and setting the BPM by foot?
@riban: Wouldn’t it just be better to have a beat detection option within the metronome code?
O no, it could be so easy, but I forgot that Zynthian is still on puredata version 0.53.1. The else library is not good enough for this. Would be nice to have the puredata version from the bookworm backport… 0.55.1 at least.
I’m going to try to install this backport version then without destroying my whole Zynthian system.
Question: Would it be an option to install the backport version for puredata in general on the distribution of Zynthian instead of the old bookworm version? Or does it make things too messy.
The trigger word is, “just”. Anything is possible, but nothing is easy! It would be good to have a beat detection module in zynthian as core functionality but someone has to write it. I haven’t had time to look. There may even be one written already, e.g. LV2 plugin???
Zynthian Will follow a MIDI clock or a slower GPI timing pulse, extrapolating to attempt a stray beat. If a software module can detect beats in audio, it could be merged into the zynthian tempo control.
What do you mean by module? I could try to write a zynthian engine in python, because there is a python module called aubio for audio analysis, which is exactly the base of puredata’s else/beat~ abstraction. Then it would be a special engine.
Or directly in the timer GUI. I’m not sure where exactly in the python codes of zynthian to implement a “core functionality” for the BPM detection. Would it be the best in zynthian_gui_tempo.py ?
You could do something similar to aubionotes which is integrated as an audio to midi device, early in the zynthian data flow model. It would be similar in that it needs a selectable audio input (like we can do with aubionotes). A high-level solution may be to create a pulse per detected beat onset and feed that to the zynseq beat detector, like we do with GPI for our analogue clock detection. This isn’t perfect but it is already there so, feeding into that would be a consitent beat detection which could be improved in the future.
A quick review of the code shows that state_manager has a function set_transport_clock_source() that sets zynseq to use internal, MIDI or analogue clock. There doesn’t seem to be any specific code in zynseq lib for analogue so I think we just convert pulses to MIDI CLOCK events and feed them to zynseq. We could start with that, i.e. a software module that listens for audio beat onset and sends a MIDI CLOCK for each beat. This is far simpler than the tempo detection that various models offer and may be suboptimal but we could add those models later, once we have the onset beat detection working.
If you ask me, how I would use Zynthian as an audio FX box for DJ-ing, the most easiest implementation would be to use a foot button as tap for setting more or less synchronized BPM and beat onset. This would be my preferred method. This is because the external audio sources are variant, and especially beat detection/beat onset synchronization is not reliable enough in more than some cases.
For delays, echos, etc. there is no automated synched beginning necessary. Looping in Perfomix is not synchronized to the beat, only the length is dependent from BPM.
Sidetracked maybe, but;
I have one DMX light at home that i bought many years ago and occasionally used as an autonomous light.
Now i’m thinking that something could be put together with Aubiochaines with beat detection, real time midi notes (live midi) and sequenced midi. If all those signals could go through something (internal/external) and produce light and other DMX related stuff in sync with whatever was playing on the Zynthian i would surely buy some more DMX gear.
I have only rudimentary understanding of these things, but i think that Zynthian could output OSC to a program like Lightjam (running on another maschine) and Lightjam in turn could act as a controller for the incoming signals and output in DMX format. Or even better everything could be contained inside Zynthian, plugin or what.
Is this just wishful thinking or maybe realistic?
Most DJs have enough time to do this with the hand.
That is actually what I used for a Desktop app that overlays the BPM from live audio input.
But I’m bad at python and never did any audio programming. I somehow had to do a bpm_estimate = self.tempo.get_bpm()*0.993 otherwise the BPM was not correct Though I’m sure a proper programmer can do better.
Thanks, I might have to look at that and update my code. I could even implement midi send to send the bpm to zynthian via my computer. As a stop gap solution. End goal is to have a thing that would work without computer.
My ~ideal~ setup:
FX select with rotary encoder
TAP button for manual BPM
Holding TAP button down starts Auto BPM, once you let loose the bpm is fixed. Maybe a setting for permanent Auto BPM? Unless you hammer TAP again.
a few rotary encoder for effects settings (1/2, 1/4, 1/16 echo etc.)
Not at all. There is a dev branch where DMX control is integrated with zynthian. If I find time over Christmas I may try to integrate it into the current dev branch.
This is already implemented in zynthian. There is a tap for tempo in the tempo page. We could map a footswitch to this to allow it to be done with foot or hand.
It is the same incredible thing every Christmas time! Wishes come true.
I will look forward to try it out, maybe i should just fiddle a little with de dev branch and have a look, i would guess some hardware is needed to engage with the DMX gear!