Music Software Development: What We Develop and How Much It Costs?
Tags: webrtc, music, showdev
Published: 2021-10-22 14:23:42

Musicians can survive the pandemic with [WorldCastLive.com](https://worldcastlive.com/). The band connects in a video call, invites the fans to watch, and they jam online remotely at a live concert. 100% in sync, with less than a second delay.

##Features for virtual music jam by a video chat

###🎶Audio quality

**Synchronization**

Why not make music online with friends and strangers in any video chat? I take the guitar, call Joe with drums, add Sarah with a piano, and we all play. Because it doesn’t work: participants’ sound is not in perfect sync. It’s ok for a talk but not for a real time video music collaboration app.

We develop video conferences for musicians to play together, learn and teach, and hold concerts.

**Sync for listeners**

Each musician produces an audio track. Our software marks them, recognizes delays for each one of them, and syncs them into one audio file on the server. It’s streamed to the audience.

But if this happens afterward on the server, how can the musicians perform together? They have to hear each other in sync right now to play together.

**Sync for the musicians**

We calibrate audiotracks: start sound at one node, and listen to it when it reaches the other node – thus measure the delay. Let’s imagine we have a drummer, a guitarist, and a singer. The drummer starts, his audiotrack goes to the guitarist. The guitarist starts, the 2 audio tracks go to the singer in sync: the delay is added to the drummer track with which it goes to the guitarist. It snowballs from there: each next musician hears the previous musicians only. The singer hears the guitarist and the drummer, the guitarist hears the drummer only, the drummer does not hear anyone.

**Clear sound: right audio codec with right settings**
![music-software-sound](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyyboz9bzw4jekvs4qbf.png)
In WebRTC the developer picks an audio codec. Some are better for voice, some for music. Choose Opus: the best sound quality plus low latency – [Mozilla thinks so too](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_codecs#choosing_an_audio_codec).

To pick Opus is not everything. By default, WebRTC is set for voice calls so that the voice would sound clearer and louder. So, for music jam online in real time we need to make 3 adjustments:

Background noise removal distorts sound when playing music. We switch it off.
~40 kb/s is a standard bitrate for a voice call. Music needs 128 kb/s minimum. [Opus supports up to 510 kb/s](https://opus-codec.org/) – so we increase it.
We increase the number of audio channels from 1 to 2: from mono to stereo.

###🚀 Real-time streaming

**Jam online with no latency**
Subsecond latency is a norm in video chats – otherwise speaking to each other would not be possible. In video broadcasts to thousands of people, a few-second latency is a norm. When jam online with other musicians remote by a video chat, latency must be subsecond even though thousands are watching. Read how we do it [in the article](https://forasoft.com/blog/article/minimizing-latency-to-less-than-1-sec-for-mass-streams-315).

**Monitoring to prevent latency: Internet connection, sound card, audio output**
![no-lantency-virtual-concert](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11c5wcnseuhdypks2gnm.png)
See the sound quality of each musician in real-time: green for good, yellow for decent, and red for unacceptable. Quality parameters: Internet connection, sound card latency, audio output.

For example, if one participant has slow Internet, the video conference won’t be real-time and low latency music collaboration is not possible. So his Internet shows red, and the slow user knows that he needs to fix the problem.

###🎸 Connect professional musical equipment
![connect-instruments-online](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5g5wmev3ls8ifwlo07k.png)

**Output: sound cards and audio interfaces**
For sound output, connect a sound card or an audio interface for professional sound. Show a volume bar for that output that displays volume in real-time.

**Input: professional microphones, musical instruments, and amplifiers**
For sound input, connect a guitar or other electronic instruments directly to the video conference. Or connect the instrument to an amplifier to increase the power of a signal and plug the amplifier in the conference. See the input’s signal level change in real-time.

###🥁 Professional tools for musicians
![software-for-musicians](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ky3ejajwixzdeq22t139.png)

**Crossfader**
Set different volumes for different audio channels. Make your own instrument louder than the call, set it to the same volume, or listen to the call louder than your instrument. Mute audio channels.

See the volume set for each instrument in the music jam over the Internet. The range can be from (-12)dB up to (+12)dB with a step of 1 dB.

**Equalizer**

A list of ranges with sliders to raise and lower the volume of the frequency range between 32 Hz, 64 Hz, 125 Hz, 250 Hz, 500 Hz, 1 kHz, 2 kHz, 4 kHz, 8 kHz,16 kHz. Change how everything sounds: sound volume, noises, the effect of moving closer and farther. Remember the settings and apply them to other calls.

**Metronome**

Add a metronome and choose BPM for better music collaboration.

###💬 Communication tools

**Talkback**

The band coordinator gives feedback to musicians during the live concert. Speak privately to one musician to not disturb the others. Push to talk, release the button to mute yourself.

**Text chat**

Let the audience talk without interrupting the performance. Send text messages, emojis, images, even documents. See the participant list.

**Recording**

Record the concert and let those who haven’t seen it live watch it. Record lessons to re-watch.

##Use cases when a video conference with music in sync comes in handy

* A platform for online virtual concert live
* Online band or choir rehearsal with remote musicians from different locations
* E-learning for music
* Virtual karaoke party online

##Devices that Fora Soft develops for
![music-software-development-company](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y68cwbs37w5unlxqi0vl.png)
* Web browsers – use without download
* Smartphones and tablets – iOS and Android
* Desktop PCs and laptops
* Smart TVs – Samsung, LG, Android-based STBs, Apple TV
* Virtual reality (VR) headsets

##💵 How much development of a conference with synchronized music costs

We develop custom applications tailored to your needs. That is why firstly we plan it, draw a wireframe, then estimate. To give approximate indications:

✅ The simplest 1-on-1 video chat component adjusted for music 

* 2-4 weeks 
* About $7,000
* Could be useful for teaching music lessons
It is not a fully functioning system with login, payment, etc. – just the video chat component. You can integrate it into your application. 

✅ The simplest video conference component for musicians from different places to perform for audiences of thousands of people

* 1,5-2,5 months 
* around $28,000
Not a fully functional system with registration, payments, etc. – just the video conference component. You can integrate it into your solution.

✅ Simplest fully functional e-learning system with 1-on-1 video chat adjusted for music 

* 3-4 months 
* About $36,000
A fully functioning system with registration, teacher list, payment. Applicable for 1 platform, e.g. web, or iOS, or Android.

✅ The simplest fully functional video conference system with music in sync

* 4-5 months 
* around $54,000
It is built from the ground up for one platform, such as web, iOS, or Android. Users register, pay, and play music together for audiences of thousands of people.

✅ Big musical video conferencing solutions 

We assign a dedicated team and work ongoing. These are products that proved their success and generated profit.

[Send us your requirements](https://forasoft.com/contacts) – we’ll get back with an approximate estimation. Or let’s have a call to clarify what you need.