Compare commits
5
Commits
9b3839f621
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75f2b607a6 | ||
|
|
20ce8d0f58 | ||
|
|
5f3200c55f | ||
|
|
f18fc02e4c | ||
|
|
e7346411c1 |
@@ -9,10 +9,21 @@ To build this streaming node, you will need the following physical components:
|
|||||||
* **Raspberry Pi:** A Raspberry Pi 3B, 4, or Zero 2 W is recommended, along with a reliable power supply and MicroSD card.
|
* **Raspberry Pi:** A Raspberry Pi 3B, 4, or Zero 2 W is recommended, along with a reliable power supply and MicroSD card.
|
||||||
* **USB Audio Interface (ADC):** A device to convert the analog audio to a digital signal for the Pi.
|
* **USB Audio Interface (ADC):** A device to convert the analog audio to a digital signal for the Pi.
|
||||||
I had best restults with the [Behringer UCA202](https://www.amazon.ca/-/fr/Behringer-UCA222-Interface-audio-rouge/dp/B0023BYDHK/)
|
I had best restults with the [Behringer UCA202](https://www.amazon.ca/-/fr/Behringer-UCA222-Interface-audio-rouge/dp/B0023BYDHK/)
|
||||||
|
|
||||||
|
<img src="img/UCA202.jpg" width="200">
|
||||||
|
|
||||||
* **Turntable:** Your vinyl record player with analog output like the [Audio-Technica AT-LP60XBT-BK](https://www.amazon.ca/-/fr/dp/B07N3RFXRL)
|
* **Turntable:** Your vinyl record player with analog output like the [Audio-Technica AT-LP60XBT-BK](https://www.amazon.ca/-/fr/dp/B07N3RFXRL)
|
||||||
|
|
||||||
|
<img src="img/turntable_front.jpg" width="200" ><img src="img/turntable_back.jpg" width="200" >
|
||||||
|
|
||||||
* **[3.5mm to RCA Cables]((https://www.amazon.ca/VCE-adaptateurs-st%C3%A9r%C3%A9o-femelle-Plaqu%C3%A9/dp/B06XCR898P)):** To connect the turntable/preamp to the audio interface.
|
* **[3.5mm to RCA Cables]((https://www.amazon.ca/VCE-adaptateurs-st%C3%A9r%C3%A9o-femelle-Plaqu%C3%A9/dp/B06XCR898P)):** To connect the turntable/preamp to the audio interface.
|
||||||
|
|
||||||
|
<img src="img/35mm_to_rca.jpg" width="200" >
|
||||||
|
|
||||||
* **[3.5 mm Splitters](https://www.amazon.ca/-/fr/R%C3%A9partiteur-femelle-dextension-Adaptateur-Compatible/dp/B0CN8WRSNG):** To keep the connection available to your Home Theater or Speakers
|
* **[3.5 mm Splitters](https://www.amazon.ca/-/fr/R%C3%A9partiteur-femelle-dextension-Adaptateur-Compatible/dp/B0CN8WRSNG):** To keep the connection available to your Home Theater or Speakers
|
||||||
|
|
||||||
|
<img src="img/35mmsplit.jpg" width="200" >
|
||||||
|
|
||||||
## 💻 Software Prerequisites
|
## 💻 Software Prerequisites
|
||||||
|
|
||||||
The streamer relies on two core pieces of software: a capture/encoding client and a broadcast server.
|
The streamer relies on two core pieces of software: a capture/encoding client and a broadcast server.
|
||||||
@@ -27,6 +38,16 @@ The streamer relies on two core pieces of software: a capture/encoding client an
|
|||||||
|
|
||||||
## 🚀 Installation & Setup
|
## 🚀 Installation & Setup
|
||||||
|
|
||||||
|
### Hardware Flow
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[Turntable] --> |3.5mm|B[3.5mm Splitter]
|
||||||
|
B --> |3.5mm|C[3.5mm to RCA converter]
|
||||||
|
B --> |3.5mm|D[Home Theater]
|
||||||
|
C --> |RCA|E[Behringer UCA202]
|
||||||
|
E --> |USB|F[Raspberry Pi3]
|
||||||
|
```
|
||||||
|
|
||||||
### Option A: Bare-Metal Package Installation
|
### Option A: Bare-Metal Package Installation
|
||||||
|
|
||||||
1. Update your system and install the required packages:
|
1. Update your system and install the required packages:
|
||||||
@@ -37,52 +58,52 @@ The streamer relies on two core pieces of software: a capture/encoding client an
|
|||||||
2. Configure Icecast by following the prompts to set your broadcast passwords.
|
2. Configure Icecast by following the prompts to set your broadcast passwords.
|
||||||
3. Identify your USB audio device using `arecord -l` to find the correct ALSA card number.
|
3. Identify your USB audio device using `arecord -l` to find the correct ALSA card number.
|
||||||
you should see something similar to
|
you should see something similar to
|
||||||
```
|
```
|
||||||
**** List of CAPTURE Hardware Devices ****
|
**** List of CAPTURE Hardware Devices ****
|
||||||
card 1: Codec [USB Audio Codec], device 0: USB Audio [USB Audio]
|
card 1: Codec [USB Audio Codec], device 0: USB Audio [USB Audio]
|
||||||
Subdevices: 1/1
|
Subdevices: 1/1
|
||||||
Subdevice #0: subdevice #0
|
Subdevice #0: subdevice #0
|
||||||
```
|
```
|
||||||
4. Edit the `/etc/darkice.cfg` file to link your hardware capture device to the Icecast server.
|
4. Edit the `/etc/darkice.cfg` file to link your hardware capture device to the Icecast server.
|
||||||
```
|
```
|
||||||
[input]
|
[input]
|
||||||
device = hw:1,0 # OSS DSP soundcard device for the audio input
|
device = hw:1,0 # OSS DSP soundcard device for the audio input
|
||||||
sampleRate = 44100 # sample rate in Hz. try 11025, 22050 or 44100
|
sampleRate = 44100 # sample rate in Hz. try 11025, 22050 or 44100
|
||||||
bitsPerSample = 16 # bits per sample. try 16
|
bitsPerSample = 16 # bits per sample. try 16
|
||||||
channel = 2 # channels. 1 = mono, 2 = stereo
|
channel = 2 # channels. 1 = mono, 2 = stereo
|
||||||
```
|
```
|
||||||
5. Icecast streams: continue to edit the '/etc/darkice.cfg' file and add the configuration nof your choice, or both
|
5. Icecast streams: continue to edit the '/etc/darkice.cfg' file and add the configuration nof your choice, or both
|
||||||
MP3 is compatible with more devices but Opus has usually greater quality
|
MP3 is compatible with more devices but Opus has usually greater quality
|
||||||
```
|
```
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# Stream 1: High Compatibility (MP3)
|
# Stream 1: High Compatibility (MP3)
|
||||||
# URL: http://<RASPBERRY_PI_IP>:8000/vinyl.mp3
|
# URL: http://<RASPBERRY_PI_IP>:8000/vinyl.mp3
|
||||||
# ==========================================
|
# ==========================================
|
||||||
[icecast2-0]
|
[icecast2-0]
|
||||||
bitrateMode = cbr # Constant bitrate for maximum MP3 compatibility
|
bitrateMode = cbr # Constant bitrate for maximum MP3 compatibility
|
||||||
format = mp3
|
format = mp3
|
||||||
bitrate = 320 # High quality MP3
|
bitrate = 320 # High quality MP3
|
||||||
server = localhost # Or the IP of your Icecast container
|
server = localhost # Or the IP of your Icecast container
|
||||||
port = 8000
|
port = 8000
|
||||||
password = hackme # Must match ICECAST_SOURCE_PASSWORD
|
password = hackme # Must match ICECAST_SOURCE_PASSWORD
|
||||||
mountPoint = vinyl.mp3
|
mountPoint = vinyl.mp3
|
||||||
name = Vinyl Stream (MP3)
|
name = Vinyl Stream (MP3)
|
||||||
description = Turntable broadcast in MP3 format
|
description = Turntable broadcast in MP3 format
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# Stream 2: High Efficiency / Quality (Opus)
|
# Stream 2: High Efficiency / Quality (Opus)
|
||||||
# URL: http://<RASPBERRY_PI_IP>:8000/vinyl.opus
|
# URL: http://<RASPBERRY_PI_IP>:8000/vinyl.opus
|
||||||
# ==========================================
|
# ==========================================
|
||||||
[icecast2-1]
|
[icecast2-1]
|
||||||
bitrateMode = vbr # Variable bitrate is ideal for Opus
|
bitrateMode = vbr # Variable bitrate is ideal for Opus
|
||||||
format = opus
|
format = opus
|
||||||
bitrate = 128 # Opus sounds incredibly transparent at 128kbps
|
bitrate = 128 # Opus sounds incredibly transparent at 128kbps
|
||||||
server = localhost # Or the IP of your Icecast container
|
server = localhost # Or the IP of your Icecast container
|
||||||
port = 8000
|
port = 8000
|
||||||
password = hackme # Must match ICECAST_SOURCE_PASSWORD
|
password = hackme # Must match ICECAST_SOURCE_PASSWORD
|
||||||
mountPoint = vinyl.opus
|
mountPoint = vinyl.opus
|
||||||
name = Vinyl Stream (Opus)
|
name = Vinyl Stream (Opus)
|
||||||
description = Turntable broadcast in Opus format
|
description = Turntable broadcast in Opus format
|
||||||
```
|
```
|
||||||
### Option B: Docker Compose Deployment
|
### Option B: Docker Compose Deployment
|
||||||
|
|
||||||
@@ -100,3 +121,5 @@ docker compose up -d
|
|||||||
Once the services are running and a record is spinning, you can access the stream from any device on your local network by pointing your browser or a network media player to:
|
Once the services are running and a record is spinning, you can access the stream from any device on your local network by pointing your browser or a network media player to:
|
||||||
|
|
||||||
`http://<RASPBERRY_PI_IP>:8000/vinyl`
|
`http://<RASPBERRY_PI_IP>:8000/vinyl`
|
||||||
|
|
||||||
|
You can use a service like [Music Assistant](https://www.music-assistant.io/) to add that stream as an internet radio and cast to your Cast devices (google cast / Snap / Sonos/ etc)
|
||||||
Reference in New Issue
Block a user