Compare commits

...
5 Commits
Author SHA1 Message Date
menekis 75f2b607a6 adding images 2026-07-20 13:39:04 -04:00
menekis 20ce8d0f58 flow fixes 2026-07-20 13:29:53 -04:00
menekis 5f3200c55f add hardware connection flow 2026-07-20 13:28:36 -04:00
menekis f18fc02e4c adding M-A info 2026-07-19 14:52:14 -04:00
menekis e7346411c1 formating fixes 2026-07-19 14:49:40 -04:00
+62 -39
View File
@@ -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)