Raspberry Pi with Piano2.1 DAC DSP and Volumio2

Piano Firmware 2.2-7 - FAST/WAW 2way using LR2

This replacement 2.2 firmware is for implementing FAST or WAW configurations where a woofer and a full range are used together. These XO points are higher than used for a subwoofer [60..200] but lower than used for a tweeter [1000-3000]. So This addition sets the XO at [200-1000] using a modest 2nd order filter (LR2).

The mapping between the Volumio menu and actual XO is:
Code:
- to select the XO point using Volumio mode 2.2 settings using this cross ref
		- mode2.2 sel -> XO freq
		- 60 -> 200 Hz
		- 70 -> 250 Hz
		- 80 -> 300 Hz
		- 90 -> 350 Hz
		- 100 -> 400 Hz
		- 110 -> 450 Hz
		- 120 -> 500 Hz
		- 130 -> 550 Hz
		- 140 -> 600 Hz
		- 150 -> 650 Hz
		- 160 -> 700 Hz
		- 170 -> 750 Hz
		- 180 -> 800 Hz
		- 190 -> 900 Hz
		- 200 -> 1000 Hz

The schematic, readme, projects files and the firmware (2.2-7) are listed below.
 

Attachments

  • DSCN3226 crop_text.jpg
    DSCN3226 crop_text.jpg
    203 KB · Views: 446
  • TI Pure Path Left.jpg
    TI Pure Path Left.jpg
    247.4 KB · Views: 435
  • TI Pure Path Right.jpg
    TI Pure Path Right.jpg
    246 KB · Views: 446
  • ReadMe + Project.zip
    261.3 KB · Views: 87
  • 2.2-7.zip
    154.6 KB · Views: 78
Last edited:
Don, my piano 2.1 is currently somewhere between Mumbai and the Antipodes....

If the reindeer make haste I may be configuring for Christmas..!!

All the very best to you and yours and a huge !!! thank you for your efforts and taking the time to document them... you rule !!:D
 
wow Don. thanks a lot. this is great. you have offloaded my burden in one go :cheers: :spin:

You're welcome, enjoy. Once the design processes (config+scripts) are setup generating firmware builds does not require too much effort.


Don, my piano 2.1 is currently somewhere between Mumbai and the Antipodes....

If the reindeer make haste I may be configuring for Christmas..!!

All the very best to you and yours and a huge !!! thank you for your efforts and taking the time to document them... you rule !!:D

You're welcome. Hopefully you'll get your parts and some time over Xmas to try them out.

Keep in mind the phase relationships when using these filters. You may have to invert polarity on a driver when using 2nd order filters. I also added an index in post#1 to easily find the other firmware in this thread. You can mix&match keeping in mind that "*_0.bin" files are for DAC#0 and "*_1.bin" files are for DAC#1.
 
finally got the sw from TI :D

@DonVK: I am using one of your project file as starting point. with that i only need to go into biquad window and alter as per requirement.
btw, i noticed there is no support for LR2. is there a way to implement LR4?

Here too ! :) They must have started back after the Christmas close-down.

Contrats! hopefully TI will be making it easier in the future. I think self registration should be enough to get a "self-serve" download.

sorry. my bad. missed that you have already givn firmware for LR4 config

No problem. I've also added an index to post#1 to help find some key posts that contain firmware builds and the java file (cfg->bin) converter. It converts all cfg files in specified directory for DAC#0 bin, but you can rename the files to get DAC#1 (ie. rename _0 to _1).
 
Last edited:
Don, do you (or anyone else) have any opinion on the sound quality of this combo vs the basic minidsp 2x4?
I really want to mess around with some new hardware, but if it's not an upgrade in quality or features, then it becomes hard to justify real quick...
I also need reasonably low delay in processing, over 20ms or so actually has an impact.
 
I don't have both systems so I can't provide a valid comparison (ie. same speaker, same room, same content, same measurement system, same ears, etc).

I can provide an opinion. I like the SQ of the RPI+Piano2.1 and it compares favorably to my DAC integrated amp with the same speakers/room/music. The RPI+Piano2.1 is playback only and has better DACs than the MiniDSP (IMO) and more memory and processing power (RPI 3B+ Piano DAC DSPs) and fewer conversions. The minDSP is alot easier to configure (plug-n-play) and has very nice GUI's.

When you say low delay, I'm assuming that you're sync'ing to another system, or it's for "live" processing (eg. guitar effects). Both those have different issues depending on where the content source is located. It would help if you could specify the application. I don't know what processing you're doing and that has the most impact on delay. At 48K sampling, 20ms = 960 samples,.. so that's alot of IIR filters or a small DRC FIR.
 
Last edited:
Thank you, I will read up on it more, some increase in setup difficulty is not a concern.

The application is primarily sound for games, video and my music library.
I like using IIR filters, since you can get very good results and hardly any delay at all.
Just a little bit of delay makes the sound off by a full frame. Might not seem like much, but it is.

OT:
In terms of frame rate and fluid motions I still think LCD and derivative tech is far behind a half decent CRT monitor set to 90hz.
Using scope visualizations you can easily see tearing on 60hz refresh rate, or if you switch on vsync you get a judder effect.
 
Are you wanting full range on DAC#0, and just HF for tweeters on DAC#1 ?

I would like this one but with tweeter from this instead LP.

It sounds like you have a large full range that needs a tweeter. Why not use this firmware Raspberry Pi with Piano2.1 DAC DSP and Volumio2 .
I have soundbar with subwoofer (DAC0), and two monitors witch tweeter function (DAC1)... which they are supposed to do for the background.
However, 2.2-2 has too many lower registers for my setup and pass thru front from 2.2-5 sounds great!
 
Firmware 2.2.8 - DAC0 passthrough, DAC1 LR4 HP

For @ngfy, try this firmware.

DAC#0 is L+R pass through and DAC#1 is L+R LR4 HP with XO points listed in the table. Firmware 2.2.8 has been added to the index in post#1.

Code:
		- mode2.2 sel -> XO freq
		- 60 -> 1000 Hz
		- 70 -> 1100 Hz
		- 80 -> 1200 Hz
		- 90 -> 1300 Hz
		- 100 -> 1400 Hz
		- 110 -> 1500 Hz
		- 120 -> 1600 Hz
		- 130 -> 1700 Hz
		- 140 -> 1800 Hz
		- 150 -> 2000 Hz
		- 160 -> 2200 Hz
		- 170 -> 2400 Hz
		- 180 -> 2600 Hz
		- 190 -> 2800 Hz
		- 200 -> 3000 Hz
 

Attachments

  • TI PP Projs.zip
    840.5 KB · Views: 62
  • firmware 2.2.8.zip
    152.8 KB · Views: 62
  • DAC1 MidTweet HP.jpg
    DAC1 MidTweet HP.jpg
    313.8 KB · Views: 310
  • DAC0 front pass through.jpg
    DAC0 front pass through.jpg
    271.5 KB · Views: 333
  • RPI RCA pinout V2.2.8.jpg
    RPI RCA pinout V2.2.8.jpg
    159.7 KB · Views: 325
@ngfy, reverb requires a delay of 10's of ms. This may be from a very large room or a differential path delay (usb vs wifi). I don't know what you are using as a media player on the RPI but it too could have introduced a delay large enough to cause reverb.

Here is an alternate pin out for you to try. The XO table is the same as before.
 

Attachments

  • RPI RCA pinouts V2.2.8b.jpg
    RPI RCA pinouts V2.2.8b.jpg
    159.6 KB · Views: 293
  • DAC0 Left Pass + HP.jpg
    DAC0 Left Pass + HP.jpg
    327.4 KB · Views: 296
  • DAC0 Right Pass + HP.jpg
    DAC0 Right Pass + HP.jpg
    327.6 KB · Views: 84
  • firmware 2.2.8b.zip
    156.4 KB · Views: 65
  • TI PP Projs 2.2.8b.zip
    891.9 KB · Views: 63
@ngfy, reverb requires a delay of 10's of ms. This may be from a very large room or a differential path delay (usb vs wifi). I don't know what you are using as a media player on the RPI but it too could have introduced a delay large enough to cause reverb.
The new firmware sounds great and the reverb is minimal in the highest registers. It seems to me that the delay was due to two DACs.
I use Volumio in the version with the 2.2 system working properly (2.457). Once again, BIG thanks!
 
I'm trying to wrap my head around the idea of delay as samples rather than time. I think I've got it. If I want 8.25ms of delay and my sample rate is 44,100Hz the math looks like this: .00825/(1/44,000) and I need to delay by 364 samples (actual result is 363.825). Is that right? And based on the number of samples I need to delay by I'll probably need to use Pac_Dec_Delay.

hi,
just wanted to confirm if this calculation worked for you? did you use any measurement setup to verify this?
 
The calculation is correct, "#samples=delay * sample_rate" where delay in "sec" and sample_rate in "Hz".

I thought the size of the delay quoted was wrong, and should have been closer to 0.08ms if you're trying to address driver position differences (ie. 344m/s * 0.08ms = 2.7cm path diff). So you would need 0.08ms * 48K = 3.84 samples. What are you correcting for, that requires such a long delay?

Another discussion on delay at Raspberry Pi with Piano2.1 DAC DSP and Volumio2