OscProxy


#1

ok, this one is a bit strange… but I think some will find it really useful … others will say “what? why?” :slight_smile:

what it does is, allow you to run your Organelle patch on your Desktop, and use your Organelle to control it.
so you use the real mother.pd not the desktop version, and it will look on organelle as if its running there.
(of course you will need the appropriate externals on your mac/linux desktop)

its purpose is simply ti ease patch development by allowing patch development on you desktop, but using as if its running on the Organelle.
I find this better than ‘emulating’ the Organelle on the Desktop (e.g. using desktop mother), as that never feels or behaves the same as when running on the Organelle.

… anyway, if you’ve followed it this far, and sounds interesting, it might be its useful to you … if not dont worry, its probably not for you :wink:

there are install instructions in the zip file , READ them , it involves a little more than just copying to your USB stick

https://patchstorage.com/oscproxy/

directories:
OscHost is for Organelle
Clients - contains releases for Windows/Mac/Linux (64bit)

basically what we have is :

Organelle <-> OscProxy/OscHost <====== NETWORK =====> OscProxy/Client <-> Pure Data/OTC

Change Log

1.0 - 18 Nov 2017 - Initial release
1.1 - 19 Nov 2017 - Added Windows release, fixed missing library issue for linux/macos
1.2 - 20 Nov 2017 - Windows release no longer requires MSVC runtime


#2

bless you

cool idea


#3

One more step into integration :wink:
Think I invision many uses I’m sure! More OSC around us in the studio.
Will investigate.


#5

sorry, I dont understand…
as in the first post it uses the network, so via wifi (or could be ethernet,if you have a usb ethernet dongle) , is that what you mean?.. thats why you have to edit the run.sh to put in the correct ip of your computer.

this was a reply to a comment subsequently deleted, nothing to see :wink:


#6

Ah yes, I realised it was osc based and deleted my comment.


#7

This is cool, something I’ve always wanted to try, now it is easier to do. Thanks!

How is latency over the network? I guess this depends on many factors…

also, couldn’t you change the osc send address in mother.pd on the desktop machine, and then you don’t need to run anything else? (or is the idea to use mother.pd completely unchanged)


#8

seems absolutely fine as far as Ive seen… we really aren’t sending that much data

exactly, the idea is I don’t want to change anything in the mother patch or ‘synth’ patch at all , I want it to run out of the box :slight_smile:

(we later could consider a concept of service discovery if we wanted this to be more user friendly, but honestly, this started just as a tool for me… and I thought I might as well share it (but was a little unsure, as its not really ‘user friendly’)

what nice about this approach is, its pretty much 99% the same as running on the Organelle, since not only is the patch talking OSC, but its talking to mother.pd, so all the graphics mode etc work too.
so I find it really hand for developing patches

background:
Im also developing cross-platform externals , so Im doing most of that dev on the mac, to test on the Organelle, i was having to do initial testing on macOS with ‘dummy patches’ , then check it in, build the external on organelle, run the organelle patch, debug that there - so this along with other ‘tools’ , helps to just smooth the process a bit.


ok, Im not going to get into really how to run this too much, as I don’t have the bandwidth to support this.
but hopefully if others start using, then others can dive in to help … its not complete once you’ve got it working

configuring mac for using mother.pd

anyway some tips on how to get mother.pd working on macOS when using, this… so our goal is to run PD like this on the mac:

/Applications/Pd-0.47-0-64bit.app/Contents/Resources/bin/pd -path ~/Library/Pd/Organelle ~/Documents/Organelle/mother.pd Basic\ Poly/main.pd

obviously your paths may differ…

to get this to work, the main thing is putting macOS version of all the externals mother.pd needs into ~/Library/Pd/Organelle , which are

override.pd

routeOSC.pd_darwin	
unpackOSC.pd_darwin
packOSC.pd_darwin	
udpsend.pd_darwin
udpreceive.pd_darwin	

tb_peakcomp~.pd_darwin	

vnu~.pd_darwin

override.pd , I copied from the Organelle (@oweno, we should probably have the externals directory in Organelle_UI)

the OSC/udp externals, are freely available, I compiled these from mrpeach which Id installed via Deken.

tb_peakcomp~ , I got from here , (if you dont have this , you’ll get no audio :wink: )

vnu~.pd_darwin, you’ll need to compile from here, but if you dont have it , you’ll just not get the audio meters at the top of the display

so takes about 5 minutes to setup, but then your desktop is pretty much the same as running on the Organelle

(of course, if the patch uses externals you will need to compile/source these for macOS, but thats the same as before when using desktop mother)

I guess I (or someone) could package all this up, but as above, I don’t really want to get into support on this…

advance usage:

you’ll get a warning about not being able to read from /tmp/patch …
if you need a patch to be 100% correct, you should create a symbolic link from the patch directory to /tmp/patch before your start the patch… but most patches do not need this.
(if you have patches trying to access /usbdrive inform the patch developer to stop doing it, its unnecessary :wink: )


taking further

ok, i dont really have time to do much on this , but if someone wanted to take this further, this could be taken such that end-users could use this as an alternative to desktop-mother.pd , what would be needed is quite simple

  • build/collect externals needed by mother.pd , and place in a package (basically what ive described in text above)
  • do for all windows/mac/linux … OscProxy is cross-platform
    done
  • service discovery… its possible to change OscProxy such that it ‘announces’ itself on a subnet… this would means a user could simply run the host on Organelle, and another one on the desktop, and they would ‘see each other’ and cross connect… i.e. zero configuration.

advanced future: Organelle mother host, currently assumes one client/patch on localhost, port 4000.
we could create a service discovery protocol external for Pd, so the patch announces to mother host where it can be contacted (including host:port). this would be a useful extension, as not only would it allow for remote patches, but opens up the potential of running multiple patches, since the 4000 port is not hard-coded


#9

Is this in any way compatible with a Windows laptop or no? Very cool development!


#10

@Wannop - you must have heard me banging away at the keyboard :slight_smile:

Version 1.1 … added windows support, and fixed a missing oscpack library issue for mac/linux


#11

Ah! Fantastic!


#12

My antivirus had a bit of an issue with the .cmd file - created an exception and ran as admin
Upon opening the .exe file I get the error "The program can’t start because MSVCP140D.dll is missing from your computer. Try reinstalling to fix this problem"
I believe I’ve followed instructions, any advice?


#13

your antivirus is being paranoid, this is just a text file :slight_smile:

ah, ok, this is part of the VC runtime - I’ll see if i can compile it without , or provide it. likely tomorrow some time.


#14

ok, 1.2 is released on PatchStorage, and now you should not get the error with the missing dll.


#15

cheers man :slight_smile:


#16

I never actually got this working… Really would like to though. Is it possible to create some more thorough instructions or quick walk through to getting this going? I’ve followed all instructions thus far but not sure of a way forward.


#17

what have you done so far?
really the only thing you need to do is edit the files (as per patchstorage instructions) to put the IP address of your windows/mac computer.
but yeah, I can see for some its probably a bit confusing… proxies are a bit mind bending anyway :wink:

im a bit busy at the moment, and even documentation and videos take time…
but when I get some time, I’ll try to find a more ‘user friendly’ way to do the setup, and then do a walkthrough video - though can’t promise when that’ll be :frowning:


#18
  1. Entered my laptops IP after the ‘&’ in the Run.sh held within OscHost folder
  2. Saved that folder in the System directory on my Organelle
  3. Placed the ‘Clients’ folder my my laptops desktop.
  4. Connected to Wifi on Organelle (tested, file transfer working fine)
  5. Run run_windows.cmd, DOS window pops up on desktop - seems like thats what should happen.
  6. Open a PD patch on Laptop
  7. Wiggle some knobs - nothing happening.

Hopefully there’s some super simple step I’ve missed.

You don’t owe a duty of service, just checking :slight_smile: If seemless integration ever happens, great!


#19

I assume after 2, you then ran OscProxy on the Organelle?

after? it should be before

e.g. its says something like
./OscProxy 4000 192.168.1.58 4000 &

you need to change 192.168.1.58 to your windows ip address (and leave everything else un changed ;))

also on your windows machines, check you can ‘ping’ organelle.
if not you may have to change the run_windows.cmd, which has
.\windows\OscProxy.exe 4001 organelle 4001


#20

Theres mistake #1! Haha.
Back soon!


#21

I don’t understand the last part of your advice regarding Pinging the organelle I’m afraid, how might the .cmd file have to read differently depending on my setup?
Is there a recommended order to opening either PD or the desktop launcher file (.cmd on windows) first?
Does this host communicate with the desktop mother patch, or any given main.pd file in a folder?
I’m finding when i ‘click’ with the encoder on the OscHost folder on the organelle, there is no confirmation message that follows. Is this normal behaviour?