Haha, yes, that's a very good start!
Haha, yes, that's a very good start!
Thank you for pointing this out. There is actually scaling bug on the SPDIF input for the RP2040 that results in 12dB of input volume reduction. This will be patched in a hotfix.Hi Troy,
Concerning the SPDIF input, I've noticed that when the toslink receiver is attached to the RP2040, the volume level (both visually on the input VU meters and audio-wise) is almost 6dB lower than when using the same receiver with the RP2350. Both Pico boards are running on factory default settings.
LR6 is missingDo you think these might cover most of the bases?![]()
dspictl command-line tool. It roughly does what the console does, but on the command line.$ dspictl
Control DSPi audio devices
Usage:
dspictl [command]
Available Commands:
bootloader Reboot into UF2 bootloader for firmware updates
buffer-stats Read buffer fill statistics
channel-name Read or write user-configurable channel names
clear-clips Clear clip detection latches
completion Generate the autocompletion script for the specified shell
config Hardware configuration
core1 Query Core 1 operating mode
factory-reset Reset live DSP state to factory defaults
help Help about any command
matrix Matrix mixer crosspoint control
mute Mute master volume
output Per-output gain, mute, delay, enable/disable
preamp Per-channel input preamp get/set
preset Preset slot management (slots 0-9)
status Show a summary of connected DSPi devices
targets List discovered DSPi devices
unmute Unmute master volume to firmware default (-20 dB)
usb-errors Read USB PHY error counters
volume Master volume get/set
Flags:
-h, --help help for dspictl
--target string Operate on a specific device by serial number
Use "dspictl [command] --help" for more information about a command.
Excellent work! I've been meaning to work on DSPi Terminal but it has been difficult to find the time. I'm sure this will really come in handy for Linux users.I just released v1.0.0 of mydspictlcommand-line tool. It roughly does what the console does, but on the command line.
Code:$ dspictl Control DSPi audio devices Usage: dspictl [command] Available Commands: bootloader Reboot into UF2 bootloader for firmware updates buffer-stats Read buffer fill statistics channel-name Read or write user-configurable channel names clear-clips Clear clip detection latches completion Generate the autocompletion script for the specified shell config Hardware configuration core1 Query Core 1 operating mode factory-reset Reset live DSP state to factory defaults help Help about any command matrix Matrix mixer crosspoint control mute Mute master volume output Per-output gain, mute, delay, enable/disable preamp Per-channel input preamp get/set preset Preset slot management (slots 0-9) status Show a summary of connected DSPi devices targets List discovered DSPi devices unmute Unmute master volume to firmware default (-20 dB) usb-errors Read USB PHY error counters volume Master volume get/set Flags: -h, --help help for dspictl --target string Operate on a specific device by serial number Use "dspictl [command] --help" for more information about a command.
I left the best part for the next release: EQ management, loudness, crossfeed, and volume leveller.
Currently the binaries are published for Linux only (AMD64, ARM64 and ARM, incl. Raspberry Pi 3 and later), but since it is written in Go it also runs on macOS and should run on Windows. I just haven't completed the build matrix yet.
Source code is available on GitHub as suhlig/dspictl. Please file bugs and feature requests there.
Thanks @Weeb Labs for the great DSPi project!
That's great! Needless to say I'm amazed by the speed you implement new stuffDo you think these might cover most of the bases?
View attachment 533425
Hello and thank you for the kind words! The 20Hz filter lower limit is just a UI quirk that I will be patching for the next beta release. The firmware will parse filters down to 10Hz.
Regarding I2S input, this is not yet supported but will be added very soon.
The above release squashes this bug!Hi Troy,
Concerning the SPDIF input, I've noticed that when the toslink receiver is attached to the RP2040, the volume level (both visually on the input VU meters and audio-wise) is almost 6dB lower than when using the same receiver with the RP2350. Both Pico boards are running on factory default settings.
LR6 has now been added to the crossover branch.LR6 is missingBut yes, most bases should be covered.
When I2S input becomes available, it will initially be master-only. Slave mode will come a little bit later but that would enable DSPi to be used as a drop-in replacement for the SM5840AP.Hi Troy, now that you're implementing I2S input a question. I'm planning to use a DSPi in an existing device. That has SPDIF in, conversion to I2S and then into a SM5840AP. See schematics. As you can see the now used, and very aged, DSP uses I2S in (pin 3 for data) but only the digital data out (pin 9). The other signals are directly linked from the I2S source to the SM5840AP. Would this work with DSPi the same way? Or should I modify the PCB, break the links and use all necessary signals from DSPi out and connect these to the SM5840AP?
View attachment 533932
Another question, more generic. I have a PCM5102 module. I2S in, analog out. Now I could control the volume at the I2S output but I rather would do that in the analog domain. Does anyone here know of a similar I2S to analog DAC module with remote volume control in the analog signal path? Or an add-on analog module for remote volume control? Thanks.
Hello, thank you and welcome!What a cool project! Congrats!
In fact after only reading here for a few years this finally made me register.
I started reading the whole thread but so far managed to get to page 14 or so..
Pls allow me some stupid questions:
I want to use this board for generating a centre channel and stereo base enhancement for my stereo setup.
Can the matrix mixer as is create the following:
Lnew = L -0.5R
Rnew = R -0.5L
and put those 2 new stereo channels out to a stereo TOSLINK channel?
I assume it can. You posted an image of the matrix mixer in post 180 where left input is always assigned to left outputs and right to right.
Can I assign to left output left input and additionally right input inverted and attenuated by 6dB? That should make up the formula.
The missing centre channel would the be recreated by just summing those 2 new stereo channels and giving them a 6dB rise. C = ( Lnew + Rnew ) +6dB
This operation will be done by my daisy chain of Hypex FA plateamps which also provide crossover and amplification for my 3 way speakers.
Obviously SPDIF input is already existing.
I assume it will also work with TOSLINK. Correct?
How many inputs are available? How do I select them?
Went through your readme on github but could not find the information there - nor schematics - which might just be me being a noob though.
Thanks for your help and the great project.
www.audiosciencereview.com
If you don't mind my 2c thoughts.
Thanks for sharing your feedback. For 2, this is a conscious choice, I plan to use only the Pico2's USB port and this is better for integration into my cabinet.If you don't mind my 2c thoughts.
1) I'm a fan of soldering stuff but for the first build I'm allergic. You never know what you'll decide is wrong or not working well enough. Especially, imho, with optical inputs and both outputs. Looking at your board... you might think about doing this twice. First board use sockets for the processors or other means to retrieve your more expensive components just in case. I would worry about possible bypass caps for the optical ports. I've seen a few different hookup schematics. I've also, honestly, not had great success with spdif in. I love these things:
View attachment 534954
2) I try to extend the USB ports off/near the side of the board so it's easy to get fatter usb cables into them. This kind of does the opposite.
3) The ESP32 may generate RFI. I'd probably try to leave more space between it and the Pico processor. Conversely, you don't want long leads to the io devices since they can pick up RFI.
I've got a couple of issues to report:
1) When my Pico power cycles all of the hardware port assignments revert to default. This can't be right. I have port settings not bound to presets and I'm not using the default ports for testing at the moment. So, I set the ports and it works and I click Save as necessary but then on a power cycle the ports are reverted and ...
2) I'm hoping to use SPDIF input and I'm currently using an optical receiver (DR2811 I think it is). I don't have a bypass capacitor on it but the signal looks good coming into the SPDIF input. However, it only works reliably at 16/48000. At 24/96000 it works kind of but there are a lot of dropouts. Should this be working? I'm using a Pico W 2 (2350) and piping from my I7 PC motherboard/sound optical output.
View attachment 535265
--24/96 signal view--
Thanks.
Also... I'm a bit confused by the volume settings. I change the Master volume with the console and it suggests that I save and says I've changed the User volume. What's up with that? Is there a new volume setting I'm missing?
In order for pin assignments to be loaded at boot, the “include pin assignments when loading presets” setting needs to be enabled (it is by default unless changed) and your desired preset needs to be set as the default.I've got a couple of issues to report:
1) When my Pico power cycles all of the hardware port assignments revert to default. This can't be right. I have port settings not bound to presets and I'm not using the default ports for testing at the moment. So, I set the ports and it works and I click Save as necessary but then on a power cycle the ports are reverted and ...
2) I'm hoping to use SPDIF input and I'm currently using an optical receiver (DR2811 I think it is). I don't have a bypass capacitor on it but the signal looks good coming into the SPDIF input. However, it only works reliably at 16/48000. At 24/96000 it works kind of but there are a lot of dropouts. Should this be working? I'm using a Pico W 2 (2350) and piping from my I7 PC motherboard/sound optical output.
View attachment 535265
--24/96 signal view--
Thanks.
Also... I'm a bit confused by the volume settings. I change the Master volume with the console and it suggests that I save and says I've changed the User volume. What's up with that? Is there a new volume setting I'm missing?
In order for pin assignments to be loaded at boot, the “include pin assignments when loading presets” setting needs to be enabled (it is by default unless changed) and your desired preset needs to be set as the default.
96KHz is not actively supported but will be patched in the next beta if possible.
Regarding master volume, please ensure that it is in the “global” mode.
The SPDIF RX documentation does specify that 96KHz is supported but that higher sample rates are unsupported by the pipeline. I will be overhauling some of the main documentation and readme shortly, so this will be made clearer.Thanks for the answers. Slight things...
a) It would be great if the online doc accurately portrayed the current status. The SPDIF doc claims support up to 192K. I don't mind that you aren't there but a note on what's implemented vs not would be a great timesaver.
b) I don't really get the 'load with presets' option. I assumed port settings were either globally saved or saved per preset. A setting with options of 'save the port settings' vs 'never save the port settings' seems obscure and not useful. Am I missing something here?