RemoteStudioLive is a real-time audio communication application built using Go. It enables two users to communicate live in a high-fidelity audio conversation with very low latency for musical jam sessions. The project leverages the Opus codec for audio encoding and decoding, and efficiently uses Go's features like channels and Goroutines.
This project is developed as my final project in the Electrical and Computer Engineering BSc program at Ben-Gurion University with the supervision of professor Chen Avin.
- High-Fidelity Audio: Utilizes the Opus codec to ensure high-quality audio communication.
- Low Latency: Designed to minimize latency for real-time musical jam sessions.
- Efficient Go Implementation: Makes use of Go's concurrency features like channels and Goroutines for efficient audio processing and streaming.
- Linux operating system for both server and client
- Go 1.15 or higher
- Opus library
- ALSA (for Linux users)
- PortAudio
-
Clone the repository:
git clone https://github.com/Ron-Zilber/RemoteStudioLive.git cd RemoteStudioLive
-
Install dependencies:
go get -u github.com/gordonklaus/portaudio go get -u github.com/hraban/opus
-
Build the project:
go build -o remotestudiolive main.go
To start the application, run the following commands:
- In /RemoteStudioLive/LocalServer, run the server with:
./run_server
The execution will return a string in the form of: Listening udp on: <server-ip>:<server-port>
- In /RemoteStudioLive/LocalServer/Client, run the client with:
./run_client <server-ip>