Elk-Pi Upgrading 0.11.0

I’ve just started with Elk OS for the development of a multi f/x unit for bass guitars; Elk ticks many boxes in terms of architecture, quality, performance and level of documentation in an outstanding fashion.

My initial steps are using the Elk OS Pi image with a HiFiBerry audio hat.

The update to Sushi v1.0.0 contains features that I really would like to be using!

What routes are available for me to update my dev environment?

  • Is it viable to download the latest Sushi AppImage to my 0.11.0 environment,and install the corresponding libraries (elkcpp/elkpi) be sufficient or is this likely to be brittle?

  • I am not experienced with the Yocto/Openembedded build system and so am not able (at present) to assess if the various repos (elkpi-yocto-layers/ meta-elk/ meta-elkpi/ meta-raspberrypi-elk) are actually sufficient for me to build an image. Is it possible for one of the the Elk Tech gods to confirm (or refute) that it is possible to do this? If so is it viable for me to fork these, update the references to various elements and build my own image? (This would also allow me to include a couple of dev tools I miss)

  • Is there a plan to produce an “official” Elk Pi image incorporating the various updates of the Elk and supporting components and if so what is the targetted release date?

Many thanks for your help,
S’manth

Hi @Smanth,
we’ll be releasing an updated image for the Pi soon (before the end of the year).

My bad! I just noticed that the latest tag buildable with the cross-compiling SDK was not pushed to Github. It is there now:

So, you should be able to build Sushi from that tag using the cross-compiling SDK - without setting up the full Yocto environment. It’s only missing a few things (mostly build configuration / portaudio stuff) so you should have the required features there.

Thank you @Stefano!

I’m having some troubles, I wonder if you might be able to point out what I’m doing wrong.

My system:


Operating System: Ubuntu 22.04
KDE Plasma Version: 5.24.7
KDE Frameworks Version: 5.92.0
Qt Version: 5.15.3
Kernel Version: 5.15.0-53-lowlatency (64-bit)
Graphics Platform: X11
Processors: 4 × Intel® Core™ i5-6300U CPU @ 2.40GHz
Memory: 7.6 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 520

gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
cmake version 3.19.5

I have installed and executed SDK for Elk Audio OS Beta 0.11.0 (RPi4 64bit) from https://github.com/elk-audio/elkpi-sdk/releases/download/0.11.0/elk-glibc-x86_64-elkpi-audio-os-image-cortexa72-raspberrypi4-64-toolchain-0.11.0.sh

I have checked out the tag you shared:

git clone git@github.com:elk-audio/sushi.git
cd sushi
git checkout 1.0-rc1_yocto_build
git submodule update --init --recursive

I have ‘activated’ the toolchain:

source /opt/elk/0.11.0/environment-setup-cortexa72-elk-linux

Which gives me

printenv
...
SDKTARGETSYSROOT=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
PKG_CONFIG_SYSROOT_DIR=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
PKG_CONFIG_PATH=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/pkgconfig:/opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/share/pkgconfig
CONFIG_SITE=/opt/elk/0.11.0/site-config-cortexa72-elk-linux
OECORE_NATIVE_SYSROOT=/opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux
OECORE_TARGET_SYSROOT=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
OECORE_ACLOCAL_OPTS=-I /opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/share/aclocal
OECORE_BASELIB=lib
OECORE_TARGET_ARCH=aarch64
OECORE_TARGET_OS=linux
CC=aarch64-elk-linux-gcc  -mcpu=cortex-a72 -march=armv8-a+crc+crypto   -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security --sysroot=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
CXX=aarch64-elk-linux-g++  -mcpu=cortex-a72 -march=armv8-a+crc+crypto   -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security --sysroot=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
CPP=aarch64-elk-linux-gcc -E  -mcpu=cortex-a72 -march=armv8-a+crc+crypto   -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security --sysroot=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
AS=aarch64-elk-linux-as 
LD=aarch64-elk-linux-ld  --sysroot=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
GDB=aarch64-elk-linux-gdb
STRIP=aarch64-elk-linux-strip
RANLIB=aarch64-elk-linux-ranlib
OBJCOPY=aarch64-elk-linux-objcopy
OBJDUMP=aarch64-elk-linux-objdump
READELF=aarch64-elk-linux-readelf
AR=aarch64-elk-linux-ar
NM=aarch64-elk-linux-nm
M4=m4
TARGET_PREFIX=aarch64-elk-linux-
CONFIGURE_FLAGS=--target=aarch64-elk-linux --host=aarch64-elk-linux --build=x86_64-linux --with-libtool-sysroot=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types 
CXXFLAGS= -O2 -pipe -g -feliminate-unused-debug-types 
LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now
CPPFLAGS=
KCFLAGS=--sysroot=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
OECORE_DISTRO_VERSION=0.11.0
OECORE_SDK_VERSION=0.11.0
ARCH=arm64
CROSS_COMPILE=aarch64-elk-linux-
OE_CMAKE_TOOLCHAIN_FILE=/opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake
OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX=
OPENSSL_CONF=/opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/lib/ssl-1.1/openssl.cnf
CMAKE_SYSROOT=/opt/elk/0.11.0/sysroots/cortexa72-elk-linux
CMAKE_PROGRAM_PATH=/opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/bin

When I run (for the first time)
./generate -t debug

I am getting the following output

Detected cross compile build. Not setting any machine optimization flags...
Generating Debug build directory:
-- Toolchain file defaulted to '/opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/share/cmake/OEToolchainConfig.cmake'
-- The C compiler identification is GNU 10.2.0
-- The CXX compiler identification is GNU 10.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-elk-linux/aarch64-elk-linux-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/elk/0.11.0/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-elk-linux/aarch64-elk-linux-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
XENOMAI_BASE_DIR is /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/xenomai
CMake Deprecation Warning at third-party/oscpack/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at third-party/oscpack/CMakeLists.txt:2 (PROJECT):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at third-party/oscpack/CMakeLists.txt:4 (OPTION):
  Policy CMP0077 is not set: option() honors normal variables.  Run "cmake
  --help-policy CMP0077" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  For compatibility with older versions of CMake, option is clearing the
  normal variable 'OSC_LIB_ONLY'.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Build spdlog: 1.8.1
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Build type: Debug
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
CMake Warning (dev) at third-party/rtmidi/CMakeLists.txt:29 (option):
  Policy CMP0077 is not set: option() honors normal variables.  Run "cmake
  --help-policy CMP0077" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  For compatibility with older versions of CMake, option is clearing the
  normal variable 'BUILD_SHARED_LIBS'.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Looking for jack_port_rename
-- Looking for jack_port_rename - not found
-- Found ALSA: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/libasound.so (found version "1.2.4") 
-- Compiling with support for: jack alsa
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Searching 16 bit integer - Using unsigned short
-- Check if the system is big endian - little endian
-- Found Regex: POSIX regex.h  
-- Found JACK: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/libjack.so;Regex::regex  
-- Found OSS: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/include  
-- Looking for sys/audioio.h
-- Looking for sys/audioio.h - not found
Vst3 Linux detected
-- [SMTG] Create folder: /home/samantha/git/sushi/build/debug/third-party/vst3sdk/VST3
-- [SMTG] SMTG_PLUGIN_TARGET_PATH is set to: /home/samantha/git/sushi/build/debug/third-party/vst3sdk/VST3
-- [SMTG] CMAKE_SOURCE_DIR is set to: /home/samantha/git/sushi
-- [SMTG] CMAKE_CURRENT_LIST_DIR is set to: /home/samantha/git/sushi/third-party/vst3sdk
-- [SMTG] Disable all VST3 samples
-- Looking for C++ include stdatomic.h
-- Looking for C++ include stdatomic.h - not found
-- [SMTG] SMTG_PLUGIN_TARGET_PATH is set to: /home/samantha/git/sushi/build/debug/third-party/vst3sdk/VST3
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
Building with Xenomai support
ENV_CMAKE_SYSROOT = /opt/elk/0.11.0/sysroots/cortexa72-elk-linux
XENOMAI_BASE_DIR is /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/xenomai
Building with Jack support.
Building with PortAudio support.
Building with alsa midi support.
Building with Vst2 support.
Warning! Could not find Steinberg SDK for VST 2.4
Building with Vst3 support.
Building with LV2 support.
Building with RPC support.
-- Found Protobuf: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/libprotobuf.so  
-- Found GRPC: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/libgrpc.so  
Building with Ableton Link support.
Configured audio buffer size: 64 samples
Found path: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/include and lib: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/libsndfile.so
-- Could NOT find Python (missing: Python_EXECUTABLE Interpreter) 
-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
/home/samantha/git/sushi/test/VST2_SDK_PATH
   used as include directory in directory /home/samantha/git/sushi/test

CMake Error at test/CMakeLists.txt:22 (add_library):
  Cannot find source file:

    VST2_SDK_PATH-NOTFOUND/public.sdk/source/vst2.x/audioeffectx.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc


CMake Error at test/CMakeLists.txt:22 (add_library):
  No SOURCES given to target: vst2_test_plugin


CMake Generate step failed.  Build files cannot be regenerated correctly.

Changing the CMakeFile.txt to have

option(WITH_VST2 "Enable Vst 2 support" OFF)

I still get a VST2 error!?

Detected cross compile build. Not setting any machine optimization flags...
Generating Debug build directory:
XENOMAI_BASE_DIR is /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/xenomai
CMake Deprecation Warning at third-party/oscpack/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at third-party/oscpack/CMakeLists.txt:2 (PROJECT):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Build spdlog: 1.8.1
-- Build type: Debug
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
-- Compiling with support for: jack alsa
Vst3 Linux detected
-- [SMTG] SMTG_PLUGIN_TARGET_PATH is set to: /home/samantha/git/sushi/build/debug/third-party/vst3sdk/VST3
-- [SMTG] CMAKE_SOURCE_DIR is set to: /home/samantha/git/sushi
-- [SMTG] CMAKE_CURRENT_LIST_DIR is set to: /home/samantha/git/sushi/third-party/vst3sdk
-- [SMTG] Disable all VST3 samples
-- [SMTG] SMTG_PLUGIN_TARGET_PATH is set to: /home/samantha/git/sushi/build/debug/third-party/vst3sdk/VST3
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
-- [SMTG] Linux architecture name is aarch64-linux.
Building with Xenomai support
ENV_CMAKE_SYSROOT = /opt/elk/0.11.0/sysroots/cortexa72-elk-linux
XENOMAI_BASE_DIR is /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/xenomai
Building with Jack support.
Building with PortAudio support.
Building with alsa midi support.
Building with Vst2 support.
Warning! Could not find Steinberg SDK for VST 2.4
Building with Vst3 support.
Building with LV2 support.
Building with RPC support.
Building with Ableton Link support.
Configured audio buffer size: 64 samples
Found path: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/include and lib: /opt/elk/0.11.0/sysroots/cortexa72-elk-linux/usr/lib/libsndfile.so
-- Could NOT find Python (missing: Python_EXECUTABLE Interpreter) 
-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
/home/samantha/git/sushi/test/VST2_SDK_PATH
   used as include directory in directory /home/samantha/git/sushi/test

CMake Error at test/CMakeLists.txt:22 (add_library):
  Cannot find source file:

    VST2_SDK_PATH-NOTFOUND/public.sdk/source/vst2.x/audioeffectx.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc


CMake Error at test/CMakeLists.txt:22 (add_library):
  No SOURCES given to target: vst2_test_plugin


CMake Generate step failed.  Build files cannot be regenerated correctly.

and I’m stuck figuring what to try next.

Many thanks,
S’manth

@Stefano ,
cmake is new to me, I’ve only used it as a magic black box before.
After doing some reading/digging/playing I found that WITH_VST2 was being cached as ON and the

option(WITH_VST2 "Enable Vst 2 support" OFF)

in CMakeLists.txt was not resetting it.

I changed it to

set(WITH_VST2 OFF)

and now I can successfully generate and build with

./generate -t debug -b

I can see binary files have been created;next step is to copy over to my ElkPi system to see if they run.

Is changing the cmake command from option to set likely to introduce any underlying issues that I have yet to trip up on?

Oh … I was able to get rid of the deprecation warning by updating sushi/third-party/oscpack/CMakeLists.txt to use cmake_minimum_required(VERSION 3.15).

Is there a mechanism for submitting a PR with this in it?

Thanks,
S’manth

@Stefano,

I built a debug release of sushi from the tag you shared, copied the sushi and libtwine.so.0.3 over to my Elk-pi, tweaked the ~/config_files/mda-v
st3-configs/config_mda_synth.json to use the new channels syntax and …
I am getting audio output when I play my midi keyboard! Very happy, thank you for your help.

1 Like

@Stefano I was looking for sushi >= 1.0 on the raspi. Are you still releasing an updated image for the Pi before the end of the year? Thanks for your work!

Happy new year, @Stefano!

Hi, I was wondering if there was any news around the new Pi release?
I want to start developing soon, and am wondering if I should wait for the new release or just get started with the current one.

1 Like

Hi @tim ,
it’s not ready yet but also not that far away.

In any case, most of the changes are not API-breaking so I’d recommend starting developing on 0.11.

Or, even better if it suits your case, you could use Sushi 1.0 on Linux/Mac which will be the same version released for the Pi later this year.

1 Like