Configure mix server to send own signal back?
December 26, 2020 at 9:51 pm2 months ago(@fgmart)
Hi all – I’m with a group of 4 to 5 rock musicians and we’d like to use a SoundJack server to play together.
I have the simple server running – e.g. ./SJC201112 SERVER 1 256 2 50050. It’s configured, we all can connect to it.
The problem is that each of us can only listen to ourselves locally w/o latency… and this causes sync issues.
If one person is holding down the beat (let’s say it’s me, the bass player), everyone else hears me a bit after I do, then they play and their signal has to reach me, and so I hear everyone playing behind the beat.
Is it possible to configure the mix server to send my own signal back to me?
Then I could hear myself mixed and sync’ed with my bandmates and likewise they’d hear themselves mixed/sync’ed with me. Is there any way of doing this?
FredDecember 28, 2020 at 2:56 am2 months ago(@jgspix)
You can delay your own signal by using the “N sample buffers of self delay” below the volume slider in the left coloumn. Unfortunately you need to experiment a bit to find the correct number of buffers. You can try a mirror and adjust your own signal to the mirror so that it sounds tight.
Remember the network delay to the mirror as shown at the right of the mirror connection as well as the number of buffers for the self delay. Then make a connection to your mix server. The buffer delay can easily computed by the following formula: buffer delay in milliseconds is 1000 * sample_buffer_size / sampling_rate.
So for a 64 sample buffer this is 64000 / 48000 = 1.33 ms, for 128 samples 2.67 ms and for 256 samples per buffer 5.34 ms.
For example: if the network delay difference between mirror and mix server is 6 ms (mix server is quicker) and you use a sample buffer of 64, then you need to reduce the number of self delay buffers by 4 (5.34 ms) or 5 (6.67 ms).
BUT, you would get less delay if you make peer-to-peer connections. In that case you may need to forward the UDP port 50050 in all of the routers used by the participants to your individual local SoundJack-computers and connect to everyone else to hear everyone, but for a rhythmical oriented music this should give you much better results.
For electric instruments the self delay works more or less well. You need to adjust to playing in advance, but since you only hear the delayed sound of your instrument, that is not too hard to do. For an acoustic drummer, singer or wind instrument that is much harder because they hear the acoustic sound undelayed and isolation from the acoustically radiated sound is almost impossible.
It might be best to define the drummer as the time kepper (metronome) and all other have to adjust to his play. The drummer needs to ignore the late sound from the others or all others need to double the numbers of self delay (playing in advance of the drummer in their headphones) so that the drummer hears all members together. But that can lead to a very large paying ahead. You might need to make a compromise. But with a faster peer-to-peer connection (which should be possible with five participants) this problem is halved by itself.
I think a server is only useful for slower reacting ensembles like choirs. Alex does not recommend to use a server at all because of the doubled network delay.
Keep in mind that the diplayed delay is the network delay only. Depending on the operating system, driver/interface and sample buffer size you can add about 8 to 25 ms for the I/O delay on both sides together. So it can get very hard to impossible to keep the network + i/o delay under 20 ms. Any possibility to reduce the delay should be used as long as the computers are fast enough (ideally having more than 2 processor kernels) to receive and send without too many dropouts.
Good luck!December 28, 2020 at 4:40 pm2 months ago(@abramsdb)
Hi Jörg – I play keyboard (electronic) and sometimes sing (acoustic) in Fred’s band. Ideally, I’d send my keyboard sound (electronic only) and vocal (acoustic only) sound to the server (or peers), and by using good over-the-ear headphones and turning down my local loopback volume slider would hear my sound only coming back from the server – basically, that would let me hear my mixed electronic/acoustic sound as everyone else would hear it from me, at more or less then same time as everyone else is hearing me.
So, just following up on Fred’s question, I guess you’re saying that it is not currently possible to configure a mix server to send my own signal back to me, and there’s no plan to add that feature anytime soon? So the only alternative is for everyone to self-delay as you’ve so clearly described it in your response above? Understanding Alex’s concern because of the two-way network delay, is there a way to configure a server to include a player’s own sound in the mix he/she receives back from the server?December 28, 2020 at 8:10 pm2 months ago(@jgspix)
I’m sorry that I cannot answer your question, Don. You need to ask Alex.
I just wanted to make clear that you didn’t take the best route to a small delay where it would be possible (four or five connections should almost always be possible with most dual core processors) and explain what you can do to adjust your self delay like it would come back from a server (or arrive at the others using p2p).
Mixing all together is a lot more easy than taking out one voice for everyone (but in every case a different one). The same stream could be sent to everyone, so only one output stream would be needed. But this is not how SoundJack was designed.
Alex might not want to change the way it is now because with the self delay and your individual volume slider you might have a better control over your own playing than mixing all together, and changing that may take some time to make it work reliably.
As far as I know Alex always have more important things on his list to be solved than that, I think.
BTW, I’m not actively involved in development (beyond bug reporting and explaining my ideas to Alex), just a user who understands the technological side as well as the musical one and try to help if I can.December 31, 2020 at 2:14 pm2 months ago(@jgspix)
I just had a look at the “server”-tab. I recommend that you read that.
The simple server as shown in the command line by Fred doesn’t have control over the own signal to get routed back.
The complex server will have that ability, but is in beta stage now and not (yet?) available to the users.
I’m specualting that the Virginia Mass Server might be such a complex server (for many participants, currently up to 32), but control is only available to the developers since it is still in development.
- You must be logged in to reply to this topic.