All Projects → dh1tw → remoteAudio

dh1tw / remoteAudio

Licence: MIT License
Audio streaming application for Amateur Radio purposes

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects
javascript
184084 projects - #8 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to remoteAudio

rails-microservices-book
A guide to building distributed Ruby on Rails applications using Protocol Buffers, NATS and RabbitMQ
Stars: ✭ 23 (-80.99%)
Mutual labels:  protocol-buffers, nats
remoteRotator
remoteRotator lets you expose a local antenna rotator (azimuth / elevation) to the network
Stars: ✭ 32 (-73.55%)
Mutual labels:  amateur-radio, hamradio
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (+21.49%)
Mutual labels:  protocol-buffers, nats
pyhamtools
A Library with Amateur Radio specific Functions and Methods
Stars: ✭ 71 (-41.32%)
Mutual labels:  amateur-radio, hamradio
aprs-weather-submit
Manually submit weather station information to the APRS-IS network.
Stars: ✭ 17 (-85.95%)
Mutual labels:  amateur-radio, hamradio
klog
KLog is a multiplatform free hamradio logger. It runs natively on Linux, macOS and Windows.
Stars: ✭ 31 (-74.38%)
Mutual labels:  amateur-radio, hamradio
nats-connector-spark
A Spark Publish/Subscribe NATS Connector
Stars: ✭ 24 (-80.17%)
Mutual labels:  nats
protocell
Conjures up convenient OCaml types and serialization functions based on protobuf definition files
Stars: ✭ 18 (-85.12%)
Mutual labels:  protocol-buffers
rprotobuf
R Interface to Protocol Buffers
Stars: ✭ 62 (-48.76%)
Mutual labels:  protocol-buffers
natsclient
NATS 2.x Client Library
Stars: ✭ 37 (-69.42%)
Mutual labels:  nats
moleculer-go
moleculer go implementation
Stars: ✭ 17 (-85.95%)
Mutual labels:  nats
dalal-street-server
Server for Pragyan's Dalal Street
Stars: ✭ 65 (-46.28%)
Mutual labels:  protocol-buffers
antenna analyzer
Arduino Uno based graphical SWR HF/VHF 160-1.25m bands antenna analyzer, plotter based on Si5351 module
Stars: ✭ 18 (-85.12%)
Mutual labels:  amateur-radio
grpc-chat
Simple Chat Server/Client implemented with gRPC
Stars: ✭ 107 (-11.57%)
Mutual labels:  protocol-buffers
liftbridge-api
Protobuf definitions for the Liftbridge gRPC API. https://github.com/liftbridge-io/liftbridge
Stars: ✭ 15 (-87.6%)
Mutual labels:  nats
agentgo
Hi! Agentgo is a tool for making remote command executions from server to client with golang, protocol buffers (protobuf) and grpc.
Stars: ✭ 15 (-87.6%)
Mutual labels:  protocol-buffers
protopatch
protoc-gen-go patch utility
Stars: ✭ 58 (-52.07%)
Mutual labels:  protocol-buffers
opus-to-pcm
Decode raw opus packet to PCM without using any external library in your browser.
Stars: ✭ 47 (-61.16%)
Mutual labels:  opus
javascript-serialization-benchmark
Comparison and benchmark of JavaScript serialization libraries (Protocol Buffer, Avro, BSON, etc.)
Stars: ✭ 54 (-55.37%)
Mutual labels:  protocol-buffers
FT857d
CAT support for Arduino, simulating a Yaesu FT-857D
Stars: ✭ 31 (-74.38%)
Mutual labels:  hamradio

remoteAudio

Build Status Go Report Card MIT license GoDoc

remoteAudio is a cross plattform audio streaming application, built for Amateur Radio purposes. The most typical use case for this software is the remote operation of an amateur radio station. remoteAudio is written in Go.

remoteAudio supports multiple users and multiple audio sources (e.g. radios). This means that with a single click a user can switch between audio sources. At any time multiple clients can listen simultaneously on the same radio, although remoteAudio only allows one user to transmit.

ADVICE: This project is under development. The parameters, ICD and the behaviour is still not stable and subject to change.

Supported Codec

  • OPUS
  • extensible for other codecs (e.g. PCM)

Supported Transportation Protocols

  • NATS with go-micro on top
  • extensible for P2P protocol (UDP/TCP/ZEROMQ)

Supported Platforms

RemoteAudio has been tested on the following CPU architectures:

  • AMD64
  • i386
  • ARMv7 (e.g. Raspberry Pi 2)
  • ARMv8 (e.g. Raspberry Pi 3)

and the following operating Systems:

  • Linux (Ubuntu, Raspian, Armbian)
  • MacOS
  • Windows (7 and 10)

Users have reported performance issues with remoteAudio on single core ARMv6 SoCs, in particular the Raspberry Pi 1. Usage of the Raspberry Pi 1 is therefore not recommended.

Download

You can download a tarball / zip archive with the compiled binary for MacOS, Linux (ARM/AMD64) and Windows from the releases page. remoteAudio is just a single exectuable.

Installation / Dependencies

remoteAudio depends on some 3rd party libraries which can be installed on Linux and MacOS with the respective packet managers. On Windows the 3rd party libraries are included in the zip archive.

Linux (Ubuntu >= 14.04)

$ sudo apt-get install -y pkg-config libsamplerate0 libopus0 libopusfile0 libportaudio2

MacOS

$ brew update
$ brew install pkg-config opus opusfile portaudio libsamplerate

Requirements

In order to operate remoteAudio you need to either run your own NATS Broker which can be downloaded here for a lot of platforms & operating systems.

Getting started

List audio devices

If you are not sure about the name of your audio devices and their parameters, you can easily list the available devices:

$ remoteAudio enumerate

By default the standard input / output devices defined in your OS will be used.

You can find further tips about configuring your audio devices in the Wiki.

Configuration

Both, the server and the client provide extensive configuration possibilities, either through a configuration file (TOML|YAML|JSON), typically located in your home directory /home/your_user/.remoteAudio.toml. or through pflags.

An example configuration file named .remoteAudio.tomlis included in the repository.

All parameters can be set through pflags. The following example shows the options for

$ remoteAudio server nats --help
NATS Server for bi-directional audio streaming

Usage:
  remoteAudio server nats [flags]

Flags:
  -p, --broker-port int     Broker Port (default 4222)
  -u, --broker-url string   Broker URL (default "localhost")
  -h, --help                help for nats
  -P, --password string     NATS Password
  -Y, --radio string        radio name to which this audio server belongs (e.g. 'ts480')
  -U, --username string     NATS Username

Global Flags:
  -f, --audio-frame-length int           Amount of audio samples in one frame (default 480)
      --config string                    config file (default is $HOME/.remoteAudio.yaml)
      --input-device-channels int        Input Channels (default 1)
      --input-device-latency duration    Input latency (default 5ms)
  -i, --input-device-name string         Input device (default "default")
      --input-device-samplerate float    Input device sampling rate (default 48000)
      --opus-application string          profile for opus encoder (default "restricted_lowdelay")
      --opus-bitrate int                 Bitrate (bits/sec) generated by the opus encoder (default 32000)
      --opus-complexity int              Computational complexity of opus encoder (default 9)
      --opus-max-bandwidth string        maximum bandwidth of opus encoder (default "wideband")
      --output-device-channels int       Output Channels (default 2)
      --output-device-latency duration   Output latency (default 5ms)
  -o, --output-device-name string        Output device (default "default")
      --output-device-samplerate float   Output device sampling rate (default 48000)
  -R, --rx-buffer-length int             Buffer length (in frames) for incoming Audio packets (default 10)

Execute Audio Server

$ remoteAudio server nats

Execute Audio Client

$ remoteAudio client nats

WebUI

The Client provides a minimal Web Interface for basic control of the client and server side audio streams. Open a Webbrowser at: http://localhost:9090 to access the WebUI.

Alt text

How build remoteAudio

The Wiki contains detailed instructions on how to build remoteAudio from source code on Linux, MacOS and Windows.

Integration with 3rd party software

The remoteAudio client can be fully controlled through a REST API. Check the Wiki for more details.

Troubleshooting

remoteAudio does it's best to check if your sound hardware is compatible with the parameters you have set. However it's not entirely possible to check all the Settings.

Inexpensive (USB) Soundcards usually operate at 48kHz. They play the audio in Stereo and Record the Audio in MONO.

The Wiki contains a Troubleshooting section.

Feel free to open an issue if you encounter problems.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].