이것은 Sonos 설치에서 Raspberry Pi를 사용하여 무선으로 USB 출력이 있는 최신 턴테이블을 재생하는 방법에 대한 빠른 가이드입니다. 이 가이드는 이 사용 사례에 중점을 두고 있지만 오디오를 스트리밍할 수 있는 거의 모든 장치에서 재생할 수 있는 MP3 스트림을 생성할 예정이므로 다른 스피커로 스트리밍하는 데에도 사용할 수 있습니다.
먼저 SD 카드에 Raspbian을 새로 설치해야 합니다. 그래픽이나 특별한 것이 필요하지 않으므로 Raspbian Lite를 사용하면 됩니다. 또한 많은 디스크 공간이 필요하지 않으며 아마도 2GB 이상이면 좋을 것입니다. 설치 후 SD 카드는 1.5GB만 사용하고 있습니다.
설치에는 Raspbian OS Lite의 Buster
릴리스(2022년 9월)를 사용했습니다. 최신 버전을 사용해 볼 수도 있지만 이는 테스트되지 않았습니다.
Raspberry Pi Imager https://www.raspberrypi.com/software/를 통해 Raspberry Pi OS Lite(64비트)를 설치합니다.
고급 옵션을 보려면 기어 아이콘을 클릭하세요.
vinyl
로 설정하고,Raspberry Pi를 연결하고 SSH를 통해 다음을 실행하세요.
smorton@homepc: ~ $ ssh [email protected]
vinyl@vinyl: ~ $ cd /tmp && wget https://github.com/stephencmorton/USB-Turntables-to-Sonos-with-RPi/archive/master.zip && unzip master.zip && USB-Turntables-to-Sonos-with-RPi-master/scripts/install.sh
"찜이 작동하는지 확인"으로 건너뛰세요.
이제 USB를 사용하여 턴테이블을 Raspberry Pi에 연결합니다. arecord -l
명령을 사용하여 장치가 감지되었는지 확인할 수 있습니다. 내 것은 이것을 보여줍니다 :
vinyl@vinyl:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: CODEC [USB AUDIO CODEC], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
제 경우에는 카드 번호 1
(" card: 1
")을 기록해 두거나 이름(위의 "CODEC")을 더 잘 적어 두세요. 이는 귀하에게도 동일할 수 있지만, 다를 경우 이를 기억하고 다음 단계에 따라 변경해야 할 수도 있습니다. 아래 asound.conf
파일을 사용합니다.
ALSA는 가장 낮은 수준의 Linux 사운드 하위 시스템입니다. darkice가 사용할 수 있도록 입력을 구성하고 있습니다.
대부분의 USB 턴테이블에는 하드웨어 볼륨 조절 기능이 없고 입력 볼륨이 원래 볼륨의 절반 정도에 머물기 때문에 소프트웨어 볼륨 조절 기능을 추가해야 합니다. /etc/asound.conf 파일을 생성하고 편집하여 다음 내용을 추가합니다.
pcm.dmic_hw {
type hw
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
channels 2
# format S16_LE # Use this if "format dat" doesn't work. Only difference is S16_LE = 44.1 kHz sampling vs dat = 48 kHz
format dat
}
pcm.dmic_mm {
type mmap_emul
slave.pcm dmic_hw
}
pcm.dmic_sv {
type softvol
slave.pcm dmic_hw
control {
name "Boost Capture Volume"
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
}
min_dB -5.0
max_dB 20.0
}
다음으로, 이 명령을 실행하여 alsa 상태를 새로 고치고 입력 볼륨을 테스트하기 위한 VU 미터도 표시합니다.
arecord -D dmic_sv -r 48000 -f dat -c 2 --vumeter=stereo /dev/null
(레코드 플레이어에서 무언가를 재생할 때까지 볼륨이 0으로 표시됩니다.)
볼륨이 너무 낮다는 것을 알 수 있습니다. 그렇다면 alsamixer
사용하여 볼륨을 변경할 수 있습니다. F6
눌러 USB 턴테이블 장치를 선택하고 부스트 슬라이더가 나타날 때까지 TAB
누릅니다. 내 설정에서는 65
로 설정되어 있지만 시도해 볼 수도 있습니다. 볼륨을 너무 높이지 않도록 하십시오. 그렇지 않으면 클리핑으로 인해 음질이 저하될 수 있습니다.
다음 명령을 실행하십시오.
sudo apt-get update
sudo apt-get install -y darkice icecast2
Icecast를 구성하려면 Yes
선택하세요. 모든 것을 기본값으로 둘 수 있지만 비밀번호를 변경하는 경우 다음 단계의 구성에서 비밀번호를 변경해야 합니다.
Darkice는 USB 장치에서 녹음하고 이를 MP3로 인코딩하는 소프트웨어입니다. 이를 구성하려면 /etc/darkice.cfg 파일을 생성하거나 편집하고 다음을 입력하세요.
# this section describes general aspects of the live streaming session
[general]
duration = 0 # duration of encoding, in seconds. 0 means forever
bufferSecs = 1 # size of internal slip buffer, in seconds
reconnect = yes # reconnect to the server(s) if disconnected
realtime = yes # run the encoder with POSIX realtime priority (default==yes)
rtprio = 4 # scheduling priority for the realtime threads (default==4)
# this section describes the audio input that will be streamed
[input]
device = dmic_sv # OSS DSP soundcard device for the audio input
sampleRate = 48000 # other settings have crackling audo, esp. 44100
bitsPerSample = 16 # bits per sample. try 16
channel = 2 # channels. 1 = mono, 2 = stereo
# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections
[icecast2-0]
bitrateMode = cbr
format = mp3
bitrate = 320
server = vinyl
port = 8000
mountPoint = turntable.mp3
name = Turntable
description = Music from our record player
# highpass = 18
# lowpass = 20000
url = http://vinyl.local:8080/
genre = vinyl
public = no
password = hackme # or whatever you set your icecast2 password to
이 파일과 변경할 수 있는 매개변수에 대한 자세한 내용은 darkice.cfg 맨페이지를 참조하세요.
Darkice와 icecast는 구식 init.d 컨트롤을 사용합니다. 우리가 하는 동안 그것들을 현대화합시다.
# Remove old-fashioned init.d controls
sudo update-rc.d darkice remove
sudo update-rc.d icecast2 remove
아래 코드를 /etc/systemd/system/darkice.service 및 /etc/systemd/system/icecast2.service에 복사합니다. 그런 다음 실행
sudo systemctl enable icecast2
sudo systemctl enable darkice
darkice.service
[Unit]
Description =DarkIce Icecast Network Audio Streamer
After =icecast.target
[Service]
Type =simple
ExecStart =/usr/bin/darkice -c /etc/darkice.cfg
ExecReload =/bin/kill -HUP $MAINPID
User =root
Group =root
# WorkingDirectory=/usr/share/icecast2/
Restart =always
RestartSec =5
[Install]
WantedBy =multi-user.target
icecast2.service
[Unit]
Description =Icecast Network Audio Streaming Server
After =network.target
[Service]
Type =simple
ExecStart =/usr/bin/icecast2 -c /etc/icecast2/icecast.xml
ExecReload =/bin/kill -HUP $MAINPID
User =icecast2
Group =icecast
# WorkingDirectory=/usr/share/icecast2/
Restart =always
[Install]
WantedBy =multi-user.target
Raspberry Pi를 재부팅하여 모든 것이 올바르게 설정되었는지, 일부 구성 파일을 변경했는지 확인하고 Darkice가 실행 중인지 확인하세요.
이제 브라우저를 열고 http://vinyl.local:8000
(기본 icecast2 포트)으로 이동하세요. 거기에 Mountpoint Mount Point /turntable.mp3
표시되어야 합니다. 그렇지 않은 경우 돌아가서 설명대로 모든 작업을 수행했는지 확인하세요. M3U 링크(오른쪽 상단)를 마우스 오른쪽 버튼으로 클릭하고 링크 주소를 복사하세요. 이것이 귀하의 스팀 URL입니다. iTunes, VLC, 브라우저 또는 스트리밍을 지원하는 기타 오디오 클라이언트에서 이 파일을 열 수 있습니다.
데스크톱에서 Sonos 앱을 엽니다(모바일에서는 작동 하지 않음 ). Manage
> Add Radio Station...
로 이동하여 스트림 URL을 붙여넣으세요. 원하는 이름을 선택할 수 있습니다. Sonos에서 스트림을 재생하려면 Radio by TuneIn
> My Radio Stations
으로 이동하세요. 귀하의 스트림이 거기에 나타날 것입니다! 원하는 경우 마우스 오른쪽 버튼을 클릭하여 즐겨찾기에 추가하세요! :-) 모바일 장치에서 재생을 시작할 수 있지만 , 네트워크 스트림을 추가할 수는 없습니다.
Raspberry Pi의 부팅 시간을 단축하려면 다음을 수행하십시오.
이는 독자의 연습 문제로 남겨두지만, Fastboot.sh에는 기술 노트 및 참조의 다양한 링크뿐만 아니라 살펴볼 다양한 코드 조각이 있습니다.
또한보십시오