SuperPlayer - The DSP_Engine (CamillaDSP) samplerate switching & ESP32 remote control

the file disappears from that folder on rebooting the system!
In piCorePlayer you must force the backup of any change you make to the file system by giving the command:
pcp bu

tried moving it to that path and no joy
You should first try launching camilladsp by hand in order to check that the installation is correct. And to this end, you must first create a valid configuration file.
If camilladsp starts with no errors, then you can try starting it automatically at boot by creating a service.
 
I'm afraid I confused Jesper's SuperPlayer with Henrik's classic CamillaDSP.
For the SuperPlayer and CamillaGUI you need to add the following lines the file /mnt/mmcblk0p2/tce/onboot.lst to load the required modules on boot (python alsa version):
camilladsp-1.0.1.tcz
camillagui-v1.0.0.tcz
superplayer-samplerate-v8.0.0.tcz
SuperPlayer-GameChanger.tcz

Then the SuperPlayer and CamillaGUI are launched automatically on boot by adding the following lines to /opt/bootlocal.sh (python alsa version):
sudo SuperPlayer-GameChanger alsa-cdsp > /dev/null 2>&1
camillagui > /dev/null 2>&1 &

Please make sure you have edited those files correctly and saved the changes with the "pcp bu" command.

I confirm that by precisely following Jesper's instructions on github, everything works as expected.
 
  • Like
Reactions: 1 user
Hi all...

I'm sorry that I cannot contribute more on this right now, having vecation and not actually using my own player at the moment :)

Well that said, the SuperPlayer was never intended to run on the 64bit dist. (I know someone here tried it allready)

The SuperPlayer is based on PicorePlayer, witch again is based on TinyCore Linux...
A lot of thing's are working, but using the GUI and saving some .yml files there does not actually save them for next reboot, because thing's aren't automatically saved.
I can only encourage you all to read about the TinyCore Linux http://tinycorelinux.net/

All my script's and .tcz files on github can be backengineered also. It's possible to unsquash them and change my code. Again I can only encurage you to try it, and read about it, it's an amazing distro and I love it :love:

Thank's all for using it, cant promise but eventually I will update to some newer versions!

Jesper.
 
  • Like
Reactions: 1 user
@lykkedk , thank you for your great work.

using the GUI and saving some .yml files there does not actually save them for next reboot, because thing's aren't automatically saved.
I overcame this limitation by replacing /home/tc/cdsp_template.yml and /home/tc/cdsp_template_active.yml with links to files on my file server.

the SuperPlayer was never intended to run on the 64bit dist.
I confirm that SuperPlayer+SamplerateChanger do not work on piCorePlayer 64-bit.

@doctored , if you are using piCorePlayer 64-bit, please switch to 32-bit version.
 
  • Like
Reactions: 1 users
Great...

I overcame this limitation by replacing /home/tc/cdsp_template.yml and /home/tc/cdsp_template_active.yml with links to files on my file server.
On the repo. there is a watchdog python I compiled back then, it's working as to look at changes and can do a filetool.sh - b everytime something is changed (could be the directory where GUI..yml files reside)
It's up to you guys to have it working through ;)...

I remember it as to be working, but can't remember howto.

Jesper.
 
Guide to upgrade to camilladsp 2.0.0 (Yay, Early Christmas present!)

1) Since camilladsp now has a more advanced built-in resampling system, you need to edit your config files to remove any "enable_resampling: false" lines. If you have unneeded lines specifying "capture_samplerate" then those need to be deleted as well (they're irrelevant for our purposes anyway).

2) Do a backup using the button on the main page of the PCP web interface so all your config file edits don't mysteriously vanish (...).

3) Go to the main page on the PCP web interface and click the "Extensions" button. Let it check connectivity, then click the "Available" tab. Click the down arrow on the "Available extensions" list and select "squashfs-tools.tcz", then click the "Load" button. Do the same with the "tar.tcz" module (this may not be necessary, included just in case).

4) Open a SSH session with your RaspberryPi and enter the following commands:
Code:
mkdir -p camdsp2/usr/local/bin
If you're running 32bit PCP (needed for the alsa-cdsp module) then enter the following:
Code:
wget https://github.com/HEnquist/camilladsp/releases/download/v2.0.0/camilladsp-linux-armv7.tar.gz
tar -xvC camdsp2/usr/local/bin -f camilladsp-linux-armv7.tar.gz
If you're running 64bit PCP then enter this:
Code:
wget https://github.com/HEnquist/camilladsp/releases/download/v2.0.0/camilladsp-linux-aarch64.tar.gz
tar -xvC camdsp2/usr/local/bin -f camilladsp-linux-aarch64.tar.gz
Now enter
Code:
mksquashfs camdsp2 camilladsp-2.0.0.tcz
cp camilladsp-2.0.0.tcz /mnt/mmcblk0p2/tce/optional
Now edit your onboot.lst file (I assume you have the "nano.tcz" module installed from the Extensions page):
Code:
nano /mnt/mmcblk0p2/tce/onboot.lst
Alter the line saying camilladsp-1.0.1.tcz (or camilladsp-1.0.3.tcz if you upgraded earlier) to camilladsp-2.0.0.tcz and save (Ctrl-O) then exit (Ctrl-X).

5) Now reboot your RaspberryPi using the "Reboot" button on the main page of the PCP interface.
 
Last edited:
Ok, the tczs required for the new GUI were a bit more fiddly. so I've compiled the tczs required for the latest CamillaDSP 2.0.0, including the new GUI implementation and have attached a zip file with them to an issue on the git project:
https://github.com/Lykkedk/SuperPlayer-v8.0.0--CamillaGUI-v0.6.0/issues/1
I added the issue to the old project, duh! Oh well...

The instructions I gave here for integrating the GUI with the samplerate changer still apply, apart from the bit on creating a symbolic link to camilladsp_active.yml, which is no longer required (and the file link can be deleted if you have it). The only other change is that camillagui.yml now needs to be:

Code:
---
camilla_host: "127.0.0.1"
camilla_port: 1234
port: 5000
config_dir: "~/camilladsp/configs"
coeff_dir: "~/camilladsp/coeffs"
default_config: "~/camilladsp/configs/camilladsp.yml"
statefile_path: "~/camilladsp/statefile.yml"
log_file: "~/camilladsp/camilladsp.log"
on_set_active_config: /home/tc/camilladsp/processTemplate.sh alsacdsp {}
on_get_active_config: null
supported_capture_types: null
supported_playback_types: null

If using the python version of the ratechanger, then change
processTemplate.sh alsacdsp {}
to
processTemplate.sh pycdsp {}

You will need to update camillagui in /mnt/mmcblk0p2/tce/Camilla_Extensions/camillagui (the tcz just contains a shell script that runs the program here). This is quite easy:
Code:
cd /mnt/mmcblk0p2/tce/Camilla_Extensions/camillagui
wget https://github.com/HEnquist/camillagui-backend/releases/download/v2.0.0/camillagui.zip
unzip camillagui.zip

This implementation doesn't use the new statefile mechanism, but I think the whole ratechanger template system is bypassing the need for it anyway. A weakness of my GUI integration is that all changes to the dsp processes must involve saving to a file and then marking it as active (i.e. do not just click 'Apply to DSP', as that won't update the template file). I'm not sure if using the statefile might address that issue.
 
  • Like
Reactions: 1 user
One thing I forgot to add: when you update camilliagui to the latest version it will overwrite the camillagui.yml config file with a standard version. So if you have altered it (such as to add the active_config script I described earlier) then you’ll need to insert those changes again.
 
Jesper, how did you create py3.8-jsonschema-3.2.0.tcz? The latest version of camillagui requires a more recent version. I tried just bundling the python code from here into a new tcz but that failed, so I clearly did something wrong.
I found the thread, where I was helped building such packages here HERE!
Especially look at reply #3, where user Juanito explains it very good :)

I would really like to help, but I unfortunately don't have the time for it right now.
Please ask.

Jesper.
 
OMG, I think I've managed to work it out, even though my experience with Python is just one step up from "Hello World" ...

It turns out that the advice Juanito gave is out-of-date, as setup.py is now deprecated (yes, that's the sound of hair being torn from my scalp).
I'll document the way that works now, since I'll probably forget in a week:
1) Load in the required extensions so the libraries can be built
Code:
tce-load -i compiletc python3.8-dev gcc python3.8-pip squashfs-tools
(I loaded in a bunch of others just to be sure, but these are the ones that are definitely needed.)
2) Update pip to the current version
Code:
pip install -U pip
3) Make a directory for building the libraries
Makefile:
mkdir /home/tc/tmpbuild
cd /home/tc/tmpbuild
4) Have pip download and build the new libraries (alter version number in the dir name as appropriate).
Code:
pip install -t aiohttp-3.9.3/usr/local/lib/python3.8/site-packages aiohttp
pip install -t jsonschema-4.21.1/usr/local/lib/python3.8/site-packages jsonschema
pip install -t websocket_client-1.7.0/usr/local/lib/python3.8/site-packages websocket_client
5) Now you can create the tcz files
Code:
mksquashfs jsonschema-4.21.1 py3.8-jsonschema-4.21.1.tcz
mksquashfs websocket_client-1.7.0 py3.8-websocket_client-1.7.0.tcz
mksquashfs aiohttp-3.9.3  py3.8-aiohttp-3.9.3.tcz
6 ) Copy the tczs to the extension directory
Code:
cp *.tcz /etc/sysconfig/tcedir/optional
7) Setup the dependencies for the new version of camillagui
Code:
cp camillagui-v1.0.0.tcz camillagui-v2.1.0.tcz
then
Code:
nano camillagui-v2.1.0.tcz.dep
and paste in
Code:
py3.8-websocket_client-1.7.0.tcz
py3.8-jsonschema-4.21.1.tcz
py3.8-aiohttp-3.9.3.tcz
pcr-libyaml.tcz
py3.8-PyYAML-5.4.1.tcz
py3.8-pycamilladsp-2.0.2.tcz
py3.8-pycamilladsp-plot-2.0.0.tcz
(I removed references to a lot of the other libraries you created, since it seems they are automatically included by pip as dependencies. Not sure about pcr-libyaml and PyYAML-5.4.1, so I kept them in.)
8) Edit /etc/sysconfig/tcedir/onboot.lst and change the reference to camillagui to camillagui-v2.1.0.tcz
9) Now upgrade camillagui to version 2.1.0
Code:
cd /mnt/mmcblk0p2/tce/Camilla_Extensions/camillagui
cp config/camillagui.yml camillagui.ymlbak
wget https://github.com/HEnquist/camillagui-backend/releases/download/v2.1.0/camillagui.zip
unzip -o camillagui.zip
rm -f camillagui.zip
cp config/camillagui.ymlbak camillagui.yml
Here's the camillagui.yml that I'm using now, it has a few changes to yours (note that camilla_host is now "0.0.0.0"):
Code:
---
camilla_host: "0.0.0.0"
camilla_port: 1234
bind_address: "0.0.0.0"
port: 5000
ssl_certificate: null
ssl_private_key: null
config_dir: "~/camilladsp/configs"
coeff_dir: "~/camilladsp/coeffs"
default_config: "~/camilladsp/configs/camilladsp.yml"
statefile_path: "~/camilladsp/statefile.yml"
log_file: "~/camilladsp/camilladsp.log"
on_set_active_config: /home/tc/camilladsp/processTemplate.sh alsacdsp {}
on_get_active_config: null
supported_capture_types: null
supported_playback_types: null
10) Camillagui complains if you're running CamillaDSP without a statefile argument, so my /etc/asound.conf (for the alsacdsp module) is now
Code:
#    --- sound_out is the real hardware card ---
#    --- SuperPlayer default ---
pcm.sound_out {
type hw
card 0
device 0
}

ctl.sound_out {
type hw
card 0
}

#   --- CamillaDSP with Seashell's alsa-plugin ---
# Howto here : https://github.com/scripple/alsa_cdsp
pcm.camilladsp {
    type cdsp
      cpath "/usr/local/bin/camilladsp"
      config_in "/home/tc/camilladsp/configs/alsa_cdsp_template.yml"
      config_out "/home/tc/camilladsp/configs/camilladsp.yml"
      cargs [
        -o "/home/tc/camilladsp/camilladsp.log"
        -l error
        -p "1234"
        -s "/home/tc/camilladsp/statefile.yml"
      ]
      channels 2
      rates = [
        44100
        48000
        88200
        96000
        176400
        192000
        352800
        384000
      ]
      extra_samples 0
}
11) Finally, my processTemplate.sh file has a line to backup everything on setting a new active config, but that can slow things down a lot (if you've got a directory with lots of library code ...) so comment out the pcp bu and the end of the file (though this means you need to do a manual backup before any reboot).

This seems to be working on a few in initial tests. I'll test it further for a few days and post the updated tczs to an issue on your github if nothing crashes and burns.