Send audio over wireless network
Anyone having much success with this? I see there are netsend~/receive~ objects although i haven't been able to use them as they're only in PPC format. Does anyone have an intel version?
And has anyone found any other reliable way to stream audio wirelessly from one laptop to another? Would be great to be able to do this but things like 'mxj net.maxhole' aren't capable of it..
thanks,
Alex
On Mac computers you can use the built-in AudioUnits AUNetSend and AUNetReceive.
In Max they are available as objects [audiounit~ 2 2 AUNetSend] and [audiounit~ 0 2 AUNetReceive].
The setup is simple due to the automatic Bonjour protocol. In my experience it works reliably.
Great, thanks for that! that seems to do the job very nicely.
sorry - how did you call up audiounits in your max patch - when i try [audiounit~ 2 2 AUNetSend] - get no such object. i am on Mac 10.6.8 and have those audio units....
also for network audio - i would recommend Jacktrip - very fast (minimal latency) audio transfer.
audiounit~ doesn't come with max, you have to download it.
Here's a link to the latest one (i think): https://cycling74.com/forums/audiounit-public-beta-4
cool, i'll check out Jacktrip.
Hi Alex,
if checking out please tell us your experience with Jacktrip compared to the AudioUnits.
yes please report back - there is
and also soundjack
and there is also this from Zach Poff
which i have not tested.
all worth checking out, and all are university research projects.
i have networked with Jacktrip and have been very impressed with the results (once you get past the finicky set up stage).
I wil be trying Soundjack in comparison next week at some stage.
thanks for the audiounit info
and please keep us posted here with any info!
Well i've had a go at setting up Jacktrip. Definitely a lot more hassle than AUNetSend/Receive!
It's working now (i think..) but i'm not sure the best way to set it up to send audio from max on one laptop and receive it on another over a wireless network.
Can any of you give an explanation as to how to do that? Would definitely save me some time!
Also is it possible with this, or any of the other options, to use multicasting? The AUNetSend audio units are just unicast so you have to set up direct connections. This will probably be a problem for me as i'm hoping to set things up for a group of 6 or more laptops.. multicasting would be very handy/efficient.
Thanks.
yes - i can help with this - finally i can be assistance to someone....
ok first you have to get Jacktrip installed.
You know it works if in terminal when you type jacktrip - the program loads (in terminal)
you also have to install jackosx - that is pretty simple - and will allow multi casting....
when you have both those done - you have to do this.....
open up jackosx and set the paramaters you want (sample rate buffer etc etc) default is good most of the time. if you are really doing 6 computers (you will need some serious upload and download speed) but anyway.
set up Jack to have 12 virtual (six stereo) ins and 12 virtual outs.
then go to abelton/logic and select jack osx as your audio interface (dont worry here - even though you have selected jackosx you will still hear audio).
when you have this done - now you have to set up Jacktrip. so call it up in terminal.
ok now its tricky. do you want the audio routed all back to one server?
if so you have to set up a client and server for every computer.
you will end up having 6 terminals up on the host (server) and one each on the nodes (clients). get me so far?
ok so on the server type this into jacktrip
jacktrip -s -n 2
this will set up a server channel (stereo).
then on a node (computer 1) type this
jacktrip -c ip.add.re.ss.here -n 2
this sets up the client (node) - you should see a connection established message. please note at this stage you will be using one port for this communication. for arguments sake 4344 (i am not sure the default)
ok so for every other computer you need to do the following.
on the server - IN A NEW TERMINAL PAGE -
jacktrip -s -n 2 o- 1
that -o 1 is very important - as this is the port offset for the next node (4345)
on the next computer type in
jacktrip -c ip.add.ree.ss here -n2 -o 1
and so on adding a 1 to every subsequent -o 1 message
so computer 3 becomes o- 2
computer 4 becomes o- 3
get me?
ok so once you have this established you need to set up the routing in jackosx
on the server you should see that new channels have opened up in jackosx
by default they are called
jacktrip
jacktrip-01
jacktrip-02 etc
each will have two ins and two outs - as we said in the setup -n 2 (2 channels)
by default these are connected weird (its a head wreck) but basically click on a connection - where you see red (you have to drop down the arrow) is where the audio is connected to. so configuire as you please.
anyhow let me know how you get on, or if you need any more help.....
Thanks umma08 for the explanations.
What happens if the computers are shut down and restarted?
Can the setup be saved and automatically restored?
In principle, multicasting is possible also with AUNetSend/Receive.
For this you would use multiple instances of AUNetSend on the main computer.
The receivers can then connect to the different instances with just two mouse clicks.
there is a program called jmess that stores the settings - i have not really tried it, as i am only using a three computer setup.
do you know anything about the hostcontrol~ and hostsync~ objects? i am having a nightmare with crashes with info sent over udp.
here is the crash thread - seems pretty much the same all the time
Thread 11 Crashed:
0 com.cycling74.MSPReWireDevice 0x1d823e71 rewiredevice_copyevents(_mceventbuf const*, ReWire::ReWireDriveAudioOutputParams*, long, ReWire::ReWireDriveAudioInputParams const*) + 177
1 com.cycling74.MSPReWireDevice 0x1d824947 RWDEFDriveAudio + 473
2 ...opellerheads.rewire.library 0x1dbe1d0a 0x1dbe0000 + 7434
3 ...opellerheads.rewire.library 0x1dbe6a89 RWPUnregisterDeviceImp + 1767
4 ...opellerheads.rewire.library 0x1dbe5798 RWM2DriveAudioImp + 64
5 com.ableton.live 0x004eca00 std::map, std::allocator > >::map() + 3583398
6 com.ableton.live 0x004ecc4c std::map, std::allocator > >::map() + 3583986
7 com.ableton.live 0x005063a2 std::map, std::allocator > >::map() + 3688264
8 com.ableton.live 0x001eb7c0 std::map, std::allocator > >::map() + 432998
After having experienced several problems with ReWire I've decided to not use it anymore.
In general I've found that synchronization of multiple applications is more or less problematic.
Fortunately with the power of M4L almost everything can be done in a single application.
- well i have got syncronisation - albeit with drift, but it is doable. i also have remote control of loop markers, tempo, start and stop etc. i just cant seem to be able to build a standalone of the patch now.
i tried syncronising at a sample level - but was in crash city. which wasn't great to be honest!
also having trouble building a standalone patch....
is syncronisation much easier in m4l? and is it sample accurate?
Synchronization is easy and perfect in M4L, but only with Live of course. Basically M4L runs like a plugin.
how does it work? i gather its a LIVE update - that allows you to drag a max standalone into LIVE?
and is it really 'perfect' i mean mine is pretty close, ie it keeps in time - probably as well as you would like over a network.
please explain how it is done with M4L
With M4L you can use [plugsync~] to run Max patches perfectly synced to Live.
But let's stay on topic of the thread which is audio over network.
Thanks for all the info on setting up jacktrip umma08!
Is there any way that one person could send out audio on a port and everyone could listen in on that port? Rather than setting up direct connections between each laptop?
i see, and i understand.
you see i am trying to sync to instances of live over a network. ie in remote locations.
thanks though
A Dwelling0
yes - for that purpose then the soundjack program is best
www.soundjack.eu
that should work. but there may be varying latency between the machines.
let us know how you get on....