I thought I’d share this patch in the hopes that someone might be able to help improve upon it. I am by no means even semi competent with PD and jumped into this task without actually bothering to learn the basics of PD or RPi, but nevertheless here we are: maybe you can share a better implementation.
Mods/experienced folks, if I am sharing irrelevant/wrong/confusing info, mea culpa and please correct me.
I wanted to make a patch for PD in Raspberry Pi that would do 3 things:
- Get the abl_link~ temp data over wifi
- Create a midi clock output using a 5-pin midi adapter (I have one of the cheapo usb-to-midi cable things here)
-simultaneously create an audio pulse ‘clock’ output such as those used by volcas, Teenage Engineering Pocket operators, and the like (I am not sure if such an audio signal over a 3.5mm jack would be hot enough to be considered a CV pulse too, maybe you can help clear that up?)
As I say, after much struggles I have globbed something together that sort of does this.
A couple of things for newcomers like myself:
The abl_link~ object in the patch isn’t initially part of the standard pure data install as I write. I was able to use deken (ie the code that powers the ‘help/find externals’ bit of PD) to look for abl_link~. Search for it. At the time of writing there is a version for Arm7 devices like the Raspberry Pi 3 which was put together by the illustrious mzero with code from antlr. Go ahead and install the abl_link~ object. (Possibly you may have to uncheck the ‘hide foreign architectures’ box to get the arm7 version to show up. This is usually a safeguard to stop users from trying to install versions of externals that won’t work on their systems. So long as you see ‘arm7’ in the description it should hopefully be the one you want) PD will ask where you want to store the external, and I would just leave it at the default unless you have a special reason to do otherwise.
To get the patch to hook up to your preferred audio and midi outputs by default you may have to take certain steps. In my version of it I have deemed the built in audio and my cheapo USB midi output to be good enough for this task.
[As part of my troubleshooting process I ended up installing amidiauto which is linked to here: https://community.blokas.io/t/script-for-launching-pd-patch-with-midi-without-aconnect/1010/2
I undertook several installations in support of amidiauto which may be helping my system to see and link up my USB midi and PD, but nothing worked until I took the step in the following paragraph about startup flags in PD. (It may also be that I did not need to put in amidiauto at all. Maybe I’ll try that on another card to see if it simplifies the process. I’m saying you might want to try it without amidiauto first to see).]
Midi: - (ALSA is the onboard audio and midi solution that is part of Raspbian). To have PD use ALSA midi at the start I made the following setting in the preferences/startup dialog - within that window there is a section (initially blank) for startup flags. Here you can set instructions for PD to take note of when it starts up. I put in -alsamidi to tell it that alsamidi will be my preferred midi output. (I also took the step of going to file/preferences/midi settings, then ‘apply’ and ‘ok’ to confirm the Alsa midi ports that showed up. Then I went back to file/preferences/save all preferences. This seems to have (fingers crossed) saved the connection to my USB midi output.
Audio: I used the terminal and sudo raspi-config to set my audio out to the internal sound card (advanced options/audio/3.5mm jack). Since I had a fairly unused installation of PD I’d never asked it to do anything but work with the system defaults so getting audio out was fairly simple.
[nb I initially stuck this patch together on my Mac where everything worked pretty trouble free in terms of audio and midi selection]
About the patch. Obviously it is sort of horrible but there it is. It is a combination of stuff I cribbed from the demo example of abl_link~ in the example, and two example patches created by users NoDSP and jpg in this forum post https://forum.pdpatchrepo.info/topic/9545/generate-midi-clock-messages-from-pd/2
As well as some basic synthesis to make the bip bip noises I learned from LWMs youtube channel
Any and all errors and bad practice are mine alone.
The patch has some comments in it that doubtless expose my own lack of understanding more than anything. Undoubtedly many users can do a better job than I can.
Some observations on limitations/screwups of the patch:
If you disconnect from the stream for a bit, it will attempt to catch up. There will be a massive flurry of notes and/or audio bips as it plays all the intervening notes.
It doesn’t seem to be too fussy about where in the bar it is getting started (It will be "on" the beat but sometimes the ‘1’will be the ‘2’ etc. This is okay if I’m using internal sequencers from scratch (in the volca, say) but not if there is an existing pattern that I am trying to have come in 'on the 1'.
My solution to more detailed subdivision of bars was to make a big old list of numbers up to 32 so that abl_link~ can count up to more than 4. There’s probably a better solution for this. If you find that you need even more subdivisions because you are making some sort of inhumanly manic speed gabba, add even yet more numbers and connections.
I haven’t tested this much. And since it’s taken me the better part of 18 months to do this at all, I’m really not your guy to make it work any better. I’m posting here so that wiser souls can do a better job and maybe share what I think has the potential to be a useful midi sync tool.
I plan to revisit https://community.blokas.io/t/script-for-launching-pd-patch-with-midi-without-aconnect/1010/3
for some pointers on setting this up to launch the patch at startup to give me a small, portable midi Link sync device for 5-pin and audio-pulse clocked devices.
This is my first ever bit of quasi productive input to any technical community (mostly I just hang around asking dumb questions… So be kind and please use your giant brains to make it better) I look forward to spending some time learning the basics now. link-sync.pd
@whale-av I can't wait to have a go. Thank you so much for taking the time to go into this for me. I'll look up the versions of the OS and pd when I get home later today in 6 hours or so. I was able to use apt-get to update/upgrade to whatever the currently-approved version of pd is on the Raspberry Pi repository, and as far as the OS, it's just whatever Noobs currently had me install. I realize that's not very informative so I'll check up shortly. Thanks again for your generosity and patience.
No good here. I was searching for abl_link~ without success in the raspberry pi installation. I downloaded @francis666's version as compiled for stretch lite but at the moment I resemble a small child attempting to wrangle a square block into a round hole. I don't even know where to find the externals folder into which I should fling the compiled .pd object! Unfortunately searching for details on this is full of wrong turns for me. Thanks for trying I need to learn more about using GitHub, compiling stuff and where on earth anything is on the Pi. again thanks for trying. I'll have to come back when the dumb is a little less strong in me.
What might help is something that gives basics on manual installation of objects and libraries for pd-vanilla in the raspberry pi version. I have looked at information for various deprecated methodologies for this on several other platforms, but there's so much out there that isn't helpful that it is rather difficult to get started. I'll keep looking.
@whale-av I'll try again, checking my spelling .
Not sure if I was trying the hyphen or underline at the time (I'm away from the pi at the moment). Hopefully it was as dumb as that and it'll be easy...
Thanks for the assistance and I'll report back in 8-10 hours or so. (I fear I will be doing some headscratching if I have to try to compile it myself.)
My goal is to install the abl-link~object successfully using Deken.
With a fresh install of pd on the raspberry pi zero, (used "sudo apt-get install puredata" and took what was given me). I've searched for "abl_link~" in the find externals box. The result is a list of various versions of Deken. I believe the significance of this is that the version of Deken currently installed can't cut it to install abl_link~ for me. I think what I have to do is install a newer version of Deken.
However, when I start this process off, Deken just downloads the new version of Deken to pi/home and thereafter I'm stuck.
I've tried searching for answers about how to manually install deken using this file, but unhelpfully the answers I can find all relate to the readme included with deken which talks about some do's and don'ts of manual installation without telling one how to actually go about it, and a lot of the other stuff I've found has been superseded at various points, (all of which is fair enough given that it's a free thing). Can someone point me in the direction of advice about how to manually install deken? Am I just saving it in the wrong place & it'll just work if I bung it in the right directory?
Thanks for any help, sorry for being dim.