• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Pi streamer/camilla DSP/phono integration

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
Trying to figure out a way to integrate everything nicely. Thinking I will route all of this to a USB DAC and then into a power amp. Here are my thoughts:

I would like to stick with LMS on a pi for Qobuz/spotify/radio paradise. I love the integration and interface of everything there; nothing else seems to integrate everything as nicely.

I would like to use a pi-based DSP and route the turntable through it also for general room correction. I am pretty inept at any sort of programming, but I did manage to install camilla dsp and get the GUI pulled up on picoreplayer/lms previously. Never put much effort into getting it working.

Thoughts:
Dac/ADC Pro as a hat for the pi to input a phono signal from a preamp.
USB Balanced Dac, which I already have, as an output from the pi.
Into a balanced power amp, likely nc252mp based.

Questions:
Would camilla dsp installed with picoreplayer/lms work to route the phono->DSP->USB out?
Would it be easier to install Moode onto a second pi and just play LMS/pcp->USB->second pi with moode/camilla->USB out?
Does Moode or LMS/pcp work with the dac/adc pro as far as anyone here knows?
Where to control the volume for this system?

Option three: Do I scrap the pi based DSP and just buy a miniDSP 2x4? Currently have a 2.1 and 2.0 setup, but considering 5.1 at some point, so not sure this would be the best option.

Thanks for the help, feeling overwhelmed with all of the options.
 
Last edited:

staticV3

Master Contributor
Joined
Aug 29, 2019
Messages
8,013
Likes
12,855
TT->Phono Pre->ADC->USB->Raspi->USB->DAC should totally be possible.

If you can find a turntable with built-in ADC, that would be pretty slick.
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
Look at the WaveInput plugin for LMS, it allows you to use an external device with LMS. This would allow you to leave your CamillaDSP configuration alone with no need to change capture devices when switching between the ADC and software playback.

Michael
 
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
TT->Phono Pre->ADC->USB->Raspi->USB->DAC should totally be possible.

If you can find a turntable with built-in ADC, that would be pretty slick.
Thanks! I’d prefer to keep my current tt. Pretty high end, kp-990. I’ve reached the point where I think my vinyl playback is maxed out on cost to benefit. Just wanna get it through the eq like the digital source. The difference is huge with eq!
 
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
Look at the WaveInput plugin for LMS, it allows you to use an external device with LMS. This would allow you to leave your CamillaDSP configuration alone with no need to change capture devices when switching between the ADC and software playback.

Michael
I’ll do this hopefully when I get home! Thank you!
 

flowolf

Member
Joined
Oct 15, 2021
Messages
43
Likes
86
I am running a Pi with a Hifiberry DAC+ADC Pro HAT with a turntable connected.
TT -> Phono Pre -> ADC -> RPi -> DAC -> Amp
I have a Volumio Premium subscription, but I think it works just fine with Moode etc.

For Volumio there is a CamillaDSP based plugin for room correction and sophisticated loudness compensation.


Everything works as it should, only thing annoying is the lack of pysical switches/controls. but that can be solved with a remote or streamdeck.
 
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
I am running a Pi with a Hifiberry DAC+ADC Pro HAT with a turntable connected.
TT -> Phono Pre -> ADC -> RPi -> DAC -> Amp
I have a Volumio Premium subscription, but I think it works just fine with Moode etc.

For Volumio there is a CamillaDSP based plugin for room correction and sophisticated loudness compensation.


Everything works as it should, only thing annoying is the lack of pysical switches/controls. but that can be solved with a remote or streamdeck.
Exactly the answer I was looking for. Thank you!
 
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
Look at the WaveInput plugin for LMS, it allows you to use an external device with LMS. This would allow you to leave your CamillaDSP configuration alone with no need to change capture devices when switching between the ADC and software playback.

Michael
I've installed CamillaDSP and the waveinput. Works great in LMS. However, I have to change the PCP squeezelite settings from USB to DAC/ADC pro then back again. Then this is listed:

card 2: sndrpihifiberry [snd_rpi_hifiberry_dacplusadcpro], device 0: HiFiBerry DAC+ADC Pro HiFi multicodec-0 [HiFiBerry DAC+ADC Pro HiFi multicodec-0]

It works until I reboot the picoreplayer and then I have to repeat the process in the picoreplayer interface again.

When it's working this is shown:

# default - Generated by piCorePlayer
pcm.!default {
# default
type plug;
slave.pcm "hw:0,0";
}

pcm.pcpinput {
type hw
card sndrpihifiberry;
device 0;
}

#---ALSA EQ Below--------
pcm.sound_device {
type plug
etc........
Then when I reboot the "card sndrpihifiberry" is changed back to headphone. Not sure how to make it stick!

Edit: the arecord -l command in the terminal also doesn't show the card sndrpihifiberry; device after a reboot until I repeat the above mentioned process.
 
Last edited:
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
Another way that would ideally be more simple: how would I go about plugging TT into M4, routing that to the PCP/LMS/CDSP setup, then back over USB to the M4? I'd also like the ability to stream via LMS ...
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
Sorry it is not working seamlessly for you. When I was using LMS / squeezelite it wasn't on PCP, just normal raspberry pi OS and later ubuntu server. I haven't used PCP, so I am feeling around in the dark troubleshooting.

When I used the wave input plugin, I directly specified the device, I believe by specifying "wavin:hw:sndrpihifiberry" in the plug-in. Are you doing this or using a default audio device? Regardless, if arecord -l isn't reporting the device it seems like you will need to solve that issue first.

Again, I am not familiar with PCP, but on a normal CamillaDSP setup one way to switch between analog inputs and streaming is to switch CamillaDSP configurations. You can have one configuration that uses the M4 as a capture device (analog input) and one that uses an ALSA loopback as a capture device (streaming). The tutorial linked in my signature talks through this, but it is for ubuntu server, not PCP. Of course, switching to raspberry pi OS or ubuntu server might solve your wave input issues as well, but I understand many people really like PCP.

Michael
 
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
Michael, I just want to say thank you for how much I’ve learned from your posts here.

I finally figured it out, I believe. I just had to leave the output device as the adc/adc in the PCP interface. Then in camilladsp I left input as “stdin” and the output to the M4. Hopefully my struggles help someone out if they may stumble on this. This setup allowed me to use the wavin :hw : in the waveinput favorite field to specify the dac/adc. Previously the picoreplayer was removing the overlay to use the dac/adc, but with this setup it’s saved.

Now to try and figure out how to get sound when use the M4 as the input..
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
Glad to hear you got it working.

With the M4, you should be able to specify it in a similar manner as the hifiberry ADC in the wave input plugin, wavin:hw:M4.

Coincidentally I've used both the M4 and Hifiberry DAC+ADC Pro for turntable input on a LMS system.

Michael
 
OP
M

mskis

Member
Joined
Feb 5, 2023
Messages
24
Likes
32
Glad to hear you got it working.

With the M4, you should be able to specify it in a similar manner as the hifiberry ADC in the wave input plugin, wavin:hw:M4.

Coincidentally I've used both the M4 and Hifiberry DAC+ADC Pro for turntable input on a LMS system.

Michael
Any idea if I can input TT into M4, then route USB from M4, to LMS USB, through CDSP/LMS, then back to M4? Or would I need an alternate way to send it back? I have no idea if a USB can simultaneously send and receive audio signal from the M4/to the pi
 

Daverz

Major Contributor
Joined
Mar 17, 2019
Messages
1,309
Likes
1,476
Any idea if I can input TT into M4, then route USB from M4, to LMS USB, through CDSP/LMS, then back to M4? Or would I need an alternate way to send it back? I have no idea if a USB can simultaneously send and receive audio signal from the M4/to the pi

Yes, it can. You just specify the M4 as both capture and playback device. Sorry for old-style config. I don't believe you have to define the volume filters anymore. The important thing is that the line level inputs are inputs numbers 2 and 3 (the front inputs are 0 and 1; I use outputs 0 and 1 for my subwoofer).

YAML:
devices:
  samplerate: 48000
  buffersize: 8192
  enable_rate_adjust: true
  capture:
    type: Alsa
    channels: 4
    device: "hw:CARD=M4,DEV=0"
    format: S32LE
  playback:
    type: Alsa
    channels: 4
    device: "hw:CARD=M4,DEV=0"
    format: S32LE

filters:
  volume:
    type: Volume
    parameters:
      ramp_time: 200

mixers:
  Phono_2.0:
    channels:
      in: 4
      out: 4
    mapping:
      - dest: 2
        sources:
          - channel: 2
            gain: 0
            inverted: false
      - dest: 3
        sources:
          - channel: 3
            gain: 0
            inverted: false

pipeline:
  - type: Filter
    channel: 2
    names:
      - volume
  - type: Filter
    channel: 3
    names:
      - volume
  - type: Mixer
    name: Phono_2.0

One thing I'd like to do is set up recording so I can record LPs by just pressing a button on my remote. And it should be easy to add a rumble filter and a mono mode. Also, it would be great to have some kind of tick and pop filter, but I haven't looked into how that could be done.
 

mdsimon2

Major Contributor
Forum Donor
Joined
Oct 20, 2020
Messages
2,515
Likes
3,371
Location
Detroit, MI
Any idea if I can input TT into M4, then route USB from M4, to LMS USB, through CDSP/LMS, then back to M4? Or would I need an alternate way to send it back? I have no idea if a USB can simultaneously send and receive audio signal from the M4/to the pi

This should be fine. To be transparent, I never exactly did this with my LMS setup, I was only using the M4 as an ADC. One thing to note is that LMS / wave input adds quite a bit of delay. I don't think this will be an issue but if you end up getting buffer over / under runs in CamillaDSP I'd turn on asynchronous resampling and rate adjust and see if that helps.

As @Daverz mentioned you can certainly bypass LMS completely and use the M4 as both a capture and playback device in CamillaDSP. Although, from what you have said earlier I think you would like to avoid the need to change configurations in CamillaDSP.

Michael
 
Last edited:

Watire

Member
Joined
Jan 1, 2024
Messages
19
Likes
25
Location
Martinique, FWI
[Hi everyone, first post here !]

One could go to the extreme :
Plug the turntable directly to the ADC without a preamp.
Task CamillaDSP to apply the RIAA curve and push some gain... or vice-versa.
It actually works with MM pickups at least. The mileage will vary with the quality of the ADC and the voltage output of the cartridge. DJ cartridges push a louder volume.
At least it's a getting started solution. From there you can tailor the frequency response to your liking, fighting the "cartridge loading" issues and save for a premium preamp down the line.

Reference :
Phono preamp: RIAA EQ using IIR digital filters

A CamillaDSP 1.x configuration file.
 

Attachments

  • RIAA-CamillaDSP.yml.txt
    2.3 KB · Views: 16
Top Bottom