A Camomile tip I learned the hard way: audio units built using camomile (and presumably VSTs and lv2s too) will stop working if you rename them, as they rely on the bundle filename, the .txt configuration file and the main .pd patch all sharing the same base name in order to function.
Useful reference for anyone trying to get a monome grid working with vanilla puredata
Perhaps when I have developed it a bit more I will contribute a new tutorial to the monome docs website, and create a [serialosc] object for easily managing devices and connections.
As I can’t currently commit to building a new series of gurdies due to my living situation, I’ve been keeping myself busy developing the MIDI system for my instruments, to develop new extended, augmented playing techniques.
This video is the first demonstration of some hybrid electronic-acoustic experiments using the prototype MIDI system installed on my hurdy gurdy.
0:22 Technique: Pitch-shifting Polyphony
Gurdy MIDI and Audio → Apogee ONE → Macbook running a puredata patch
Monophonic acoustic gurdy signal is pitch-shifted down in real time to play chords and harmonies. Chords and intervals on the keyboard can also be used to pitch-shift the trompette signal (0:55) or the drones. Inspired by an idea from Sébastien Tron.
1:18 Technique: Expressive MIDI Controller
Hurdy Gurdy MIDI → DIY Hybrid Poly Synth based off Mutable Instruments Ambika
The keyboard and wheel sensors send MIDI note, expression and polyphonic aftertouch messages to a polyphonic synthesizer. In this case a split keyboard effect is used to play two sounds.
1:36 Technique: Layered Acoustic and Electronic Sound
Hurdy Gurdy Acoustic audio, Gurdy MIDI → DIY Hybrid Poly Synth based off Mutable Instruments Ambika
1:36 The acoustic string plays a melody, the bottom half of the keyboard controls a synthesizer with a long release for subtle held chords
2:08 Using trompette technique can send MIDI messages, used here to play synthesized percussion on an Ambika voice assigned to MIDI channel 10, whilst the keyboard plays chords.
2:30 Acoustic trompette and melody string sound layered over subtle polyphonic synthesized chords
Playing, Instrument and Software: Barnaby Walters https://gurdy.ishttps://waterpigs.co.uk
Polyphonic Pitch-shifting idea: Sébastien Tron
Filming, editing: Adriana Borger
Today’s late-night puredata madness: creating a 7-limit just intonation abstraction which takes standard 12TET MIDI note numbers and spits the 7-limit just version, expressed as a decimal MIDI note number:
Talking of [filterview] (gh), here’s the abstraction I made for it, incorporating stereo smooth filters and a nice mode switching UI made of a [hslider] hidden behind a bunch of canvases.
Each canvas has a receive ID of $0- plus the symbol for the relevant filter mode, making the message sending for changing the colours easy.
[biquad~] clicks and pops when changing coefficients, which is annoying when they’re coming from the [filterview] UI. The best way I found of smoothing them was to alternate between two biquad~ objects and crossfade between them over 3ms. This approach, while a little cludgy, is probably generalisable to a lot of similar Pd situations where smooth transitions are desirable.
#pd [freeverbcontrol] — I tried to make a little pd GUI abstraction for [freeverb~], but couldn’t find a simple (or even complicated) way of storing parameters which are unique per instance of the abstraction.
The approach I eventually came with up is simple, if a little cludgier than I’d like: provide a template patch with the actual GUI as a subpatch, which must be copied/pasted into the patch you actually want to use it in.
↪
Barnaby Walters:
typical Barnaby 01:00 insanity: implementing a patch browser and window manager in #puredata with weeeird semi-documented metaprogramming
For those unfamiliar with #puredata, the equivalent in python would be creating a script which, in order to get user input, writes another python script containing a reference to the first, which, when run by the user, sends its output back to the first script. Which then launches another python process (based on the results of the first sub-script), and manages it’s status.
It’s a programming paradigm which makes absolutely no sense in any other environment, but in puredata is surprisingly elegant — a pleasant side-effect of the programming environment and end-user environment being effectively the same.
Btw, this is the first experimental step towards the most exciting project idea I’ve had in quite some time… watch this space!
typical Barnaby 01:00 insanity: implementing a patch browser and window manager in #puredata with weeeird semi-documented metaprogramming
Initial draft of some musical experiments using puredata live with blockflute:
#puredata is so amazing! Recreated one of my favourite @solarference effects in about 20 minutes:
↪
a leathery bat:
Are there any modern (non-toy) programming languages that don't have control structures?
I’m getting too used to #puredata (puredata.info) — I just right-clicked a python class and expected a hypermedia “help” option with params, example usage etc.
Jetbrains PyCharm does have an inline documentation feature, which (when invoked via a complex keyboard “shortcut”), produces this gem:
Even when this feature does work, it shows code “documentation” in a monospace font, typically with no usage example or links to other relevant documentation, as is standard in puredata.
Our tools are inadequate.
Update: added puredata documentation for comparison:
In case it’s not clear from the screenshot, that usage example is live code — it can be interacted with, changed, copied and pasted, played with, experimented with. We typically can’t do that with existing text-based code, let alone mere usage examples.
More thoughts I want to add to this, but I will write them up as a full article.
It’s hard to beat cardboard, Arduino and puredata for quick electronic #music hardware prototyping:
Helpful #puredata tip: if you cannot move objects around in edit mode, it’s probably due to not having an audio device configured. Because that totally affects being able to drag boxes around.
My first puredata patch: Canoner! A cross between a delay and a looper, this patch allows you to play canons solo.
Hit Start/Round as you start playing, then again at a round point, and the patch will continue to play what you played with that delay until you hit Stop.
Extending the canoner to support n>2 part canons is left as an exercise for the reader.