Hello everyone,
I just got the network sync to work on my computer between individual instances of Audiomulch, but unfortunately now I've moved on to trying to get my wireless laptop to chase my desktop. I even made a basic network between them with no such luck.
To my understanding, I just put "49152" into the UDP Port settings, then type the IP address of the computer I want to generate the network sync (i.e. my desktop) for both my laptop & desktop Network Sync preferences, and then presto. My laptop's AM should start whenever my desktop begins playing. Is this correct?
If I'm missing a crucial step, please let me know. I am dying to get this up and running.
All the best,
Edan
Anyooooone?...Anyooooooone...Bueeeeeller?
People have been asking about this on the YouTube channel too. I'll try to give a full answer here. I'm sorry that it's rather long winded. Please let me know if it helps. Also, if you could let us know where you got stuck/confused before that might be helpful to help other people. I'll make sure this finds its way into the help file.
To be clear, let's start with some definitions:
"Sender" is the instance of AM that's generating network sync. It's the one with "Generate Network Sync" selected in AudioMulch's Control menu. Sender sends sync pulses to the Receiver.
"Receiver" is the instance of AM that's chasing network sync. It's the one with "Chase Network Sync" selected in AudioMulch's Control menu. Receiver listens to sync pulses from Sender.
"IP address": Each network interface on each computer (e.g. WiFi, wired ethernet) has an IP address (e.g. 192.168.21.7). IP addresses are unique within a network (such as (1)your home network, (2)the open internet, (3)a corporate network etc).
"UDP port": Software sends and receives UDP data to "ports" on a particular computer.
UDP ports are numbers between 0 and 65535 -- there are special rules governing their use. Most importantly, those below 1024 are reserved for the OS and there are many officially "registered" ports in the lower range, but you can still use them unless another applicaion is (see below for a link to a list). (Note, TCP, used for example by web browsers, is a separate network protocol, it also has ports, but they are separate and not relevant here.)
So, given these definitions, we can say:
AudioMulch network sync works by sending timing sync pulses from one instance of AudioMulch to another. Sender sends sync pulses to Receiver.
Receiver listens on a particular UDP Port. Sender sends to that port. Sender directs it's sync pulses to Recever's computer. Receiver's computer and network interface is identified by an IP address.
So we need to configure AudioMulch as follows by going to the Network Sync page of the Settings/Preferences dialog.
On Sender we need to configure the network settings.
* Generate Network Sync settings > UDP Port
(set to the UDP port that Receiver is configured to listen on. this needs to match the Receiver's UDP port)
* Generate Network Sync settings > Send to address
(set to the IP address of Receiver)
On Receiver:
* Chase Network Sync settings > UDP Port
(set to the UDP port number to listen to. needs to match Sender's UDP port)
Once the settings are set, obviously you'll need to have AM running and then select the "Control > Generate Network Sync" menu item on the Sender and "Control > Chase Network Sync" on the Receiver. Then press play on the Sender.
Makes sense so far?
So for AudioMulch network sync to work, there are two critical things:
1. Sender needs to send to the same UDP port number as Receiver is listening to. Therefore, in the AM settings: "Generate Network Sync settings > UDP Port" on the Sender needs to match "Chase Network Sync settings > UDP Port" on Receiver. You've chosen 49152 for this number, that will probably be OK, but static port selection is kind of a messy business, so trying a different number might help (see below for advice on this). Just remember, whatever number you choose, Sender needs to send to the port that Receiver is listening to.
2. Sender needs to send to Receiver's IP address. If you're running two instances of AM on one machine, you can use 127.0.0.1 as the IP address. That's the loopback address -- it means "send to this machine." But if you're sending from one computer to another, you'll need to enter the Receiver's IP address in the Settings' "Generate Network Sync settings > Send to address" field. If you don't know Receiver's IP address, try googling "how to find a computer's IP address." (by the way, I've been thinking of displaying IP addresses in the settings dialog to help).
Things that can go wrong:
A). Network configuration. You need to make sure you have basic network connectivity between machines. One way to check this is using the "ping" command. Google "how to ping an IP address." Note that some machines may have ping disabled or firewalled.
B). This is kind of an extension of A) if you can't get ping working: Receiver has multiple ethernet interfaces (for example WiFi, and an ethernet jack). IP addresses are actually the address of a particular ethernet interface on a particular network. So you need to make sure you're addressing the correct interface (the one that connects the computers). (hint: the ipconfig command will give you a list of all network adapters and their IP addresses).
C). Windows firewall might be blocking UDP traffic on the Receiving machine. Make sure the UDP port you selected above is unblocked in your firewall settings. On my machine, the firewall software prompts me to allow the connection when I choose "Control > Chase network sync" but if you've clicked "Block" in the past you may need to go into settings and unblock it (or just start again with a different UDP port number).
D). Although unlikely, the UDP port on Receiver might already be in use, and so AM may silently fail. In this case the Receiver instance of AM won't be able to even start listening. For this reason port number selection is important. 49152 is the first port number that the OS may auto-allocate as an "ephemeral" port so I think there are better choices (eg below 49151 or somewhere way above 49151). Personally I'd choose something that's "unused" between 1024 and 49151 where unused means "not commonly used and not in use on your machine". The default of 7000 is probably safe. There's a list of commonly used and official ports here: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers If you want to know what ports are currently in use on your machine, on Windows the command line command "netstat -p UDP -a -n" will list all in-use UDP ports. On OS X the command will be similar. You can use this netstat command to sure that no other listener is active on the UDP port you've chose. When "Chase Network Sync" is selected in AudioMulch, netstat will report AM as listening to IP address 0.0.0.0:portnumber. The 0.0.0.0 means listening on all interfaces.
Thanks.
Wow! Thank you so much for the thorough response! This was just what I needed, and then some. I'd actually solved the problem (somewhat), and got it to work. My problem was I was using the Sender's IP address on the Receiver's setting, and vice versa on the Sender's.
I got the two AM instances to start up over my wireless network, the only issue now is that my clock tempo fluctuates a LOT on the Receiver's AM. I thought it was cool for a little bit, but when I play, say, an acapella file, it's almost unrecognizable. Is this a connection problem? Would it work better if I plugged the laptop into the router via ethernet?
Thanks again, this was a great overview. I will definitely come back to this for reference at one time or another, I'm sure.
There are two main possible causes of instability: (1) network timing jitter (will be higher on WiFi) and (2) ability of AM to derive a stable clock from your soundcard.
The sync should be more stable if you plug in with wired Ethernet rather than using WiFi. If you find that this doesn't help then it may be the other problem:
The timing sync is also affected by how well AM can determine your soundcard's clock. So using a different soundcard driver may help (On Windows, experiment with WMME, DSound and ASIO and see which works best).