Elektroid, a GNU/Linux transfer application for Elektron devices

i’m running an error when i try to select my model: sample:

ALSA lib rawmidi_hw.c:233:(snd_rawmidi_hw_open) open /dev/snd/midiC3D0 failed: Device or resource busy
connector.c: Error while opening MIDI port: Device or resource busy
elektroid.c: Error while connecting

Welcome to Electronauts! :slight_smile:

This error happens when the MIDI port is already in use. At the moment, Elektroid opens the MIDI port exclusively, which means that if other application has the same port opened Elektroid will not be able to use it.

Close all MIDI related applications and try again.

If you want to know the culprit process, run this.

$ lsof | grep -i midiC3D0
elektroid 4543                           ***   15u      CHR              116,5       0t0      39561 /dev/snd/midiC3D0
elektroid 4543 4544 gmain                ***   15u      CHR              116,5       0t0      39561 /dev/snd/midiC3D0
elektroid 4543 4546 dconf\x20            ***   15u      CHR              116,5       0t0      39561 /dev/snd/midiC3D0
elektroid 4543 4547 gdbus                ***   15u      CHR              116,5       0t0      39561 /dev/snd/midiC3D0
1 Like

I couldn’t find any MIDI related applications open. I ran the command above and got this:

elektroid 17877 *** 13u CHR 116,17 0t0 370 /dev/snd/midiC3D0
elektroid 17877 17878 gmain *** 13u CHR 116,17 0t0 370 /dev/snd/midiC3D0
elektroid 17877 17879 gdbus *** 13u CHR 116,17 0t0 370 /dev/snd/midiC3D0

still running the same error

Looks like elektroid itself is causing the problem. Probably, it didn’t end properly.
Kill it with kill -9 17877 or killall -s SIGKILL elektroid and run it again.

Be sure to use the last version as there were some improvements about signal treatment, which might be related to your issue.

1 Like

When I kill them and try to reopen, it either simply doesn’t open up, or opens, then crashes once I select the device I’m using. It seems to only open up when I have another elektroid open, but the first one doesn’t show and hogs the MIDI port.

When elektroid starts, it looks for the available devices. If only one device is found, then it tries to connect to it; if there is more than one device, it does nothing so the user has to select the one they wants.
Besides that, when it tries to connect to the MIDI port and the port is already in use by another process, it does nothing at all because the port can’t be used but the interface shows up.

In your case, it seems that there is a problem when receiving messages from the device. The first process you run opens the port and tries to send and receive information (and looks like it does not receive anything so it hangs). The second one tries to open the port and as it can’t it does nothing but doesn’t hang.

There are two things to fix here if I’m not mistaken.

  1. Elektroid is not working properly when the device is not sending anything back and ends up hanging.
  2. The device is not answering the requests, or it seems so.

Regarding point 1, I’ve just taken a look at the code and hopefully fixed the bug in the most recently pushed commit (23c50f4).

Regarding point 2, check all the MIDI configuration in your device.

  • Are you using USB or the MIDI ports?

  • Can you try to receive MIDI data on your computer? If you activate MIDI send on your device you should see something.

$ amidi -l
Dir Device    Name
IO  hw:0,0,0  Elektron Digitakt MIDI 1
$ amidi -p hw:0,0,0 -d -c
  • Can you check that no other connections are created?
$ aconnect -lio
client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 16: 'Elektron Digitakt' [type=kernel,card=0]
    0 'Elektron Digitakt MIDI 1'

I’m out of ideas. Send me a PM if you need more help.

1 Like

Continuing the discussion from Elektroid, a GNU/Linux sample transfer application for Elektron devices:

wouldn’t let me PM you, sorry.

you’re saying my device should automatically be selected when elektroid opens if it’s the only device connected, and that would makes sense as to why whenever I launch elektroid (knowing no other elektroids are open), it yields unresponsive. The same thing happens when I have an elektroid open then plug in my device and select it. I’m hooking it up to my laptop with USB. I’m not sure what’s wrong but Elektroid just loads indefinitely when I select my device, until I do something to interrupt the message (like changing the USB mode on my device).

@oblong issue with Model:Samples have been fixed. Thanks for reporting and helping with the issue.

There was a bug that prevented elektroid to work with Model:Samples. I’m not sure if the issue was related to an old firmware version but it should work on all versions now.

Besides that, another bug regarding timeout detection that was causing some freezings has been fixed as well.

1 Like

Hi !! First, thanks a lot for bringing us this piece of software :slight_smile:
I’ve compiled it (KDE Neon) and it does start and recognize my piece of gear : Elektron Model : Cycles.
I have an issue though. It seems the app doesn’t support the kind of soundpacks used on my device, which are not samples but “FM synthesis presets”. By any chance, would you consider supporting this in the future ?
Thank you so much,
cheers !

Thanks so much for making this. I’m successfully using the master branch with an Analog Rytm mkII on NixOS. I’ve pasted the derivation I’m using if it ends up being useful for anyone else.

elektroid.nix
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
, alsaLib, gtk3, libpulseaudio, libsamplerate, libsndfile
}:

stdenv.mkDerivation rec {
  pname = "elektroid";
  version = "git";

  src = fetchFromGitHub {
    owner = "dagargo";
    repo = "${pname}";
    rev = "e3a072f70d329a00a9da3d8151c57c5edf30242f";
    sha256 = "0pdm03sjhily79b791641pbl5g2k1bmyx0qdkv9pafgk75z17dpx";
    fetchSubmodules = true;
  };

  nativeBuildInputs = [ autoreconfHook pkgconfig ];

  buildInputs = [ alsaLib gtk3 libpulseaudio libsamplerate libsndfile ];
}
2 Likes

Welcome to Elektronauts, @bidinou!

At the moment, Elektroid only supports sample transfers but luckily this will change this year. However, it already sports a very basic send and receive SysEx options. These are located in the app menu.

I’m currently working on an issue and after it’s being solved I’ll release version 1.3. Then I’ll start working on the next features.

4 Likes

Hi ! Thanks a lot for your quick & nice reply ! Thanks again for your work !

After a long time, version 1.3 is just out. :tada:

Basically, it’s just a much more robust version. BTW, special thanks to @DNS for helping me testing this release thoroughly.

Other than lots of technical improvements and bugfixes that make it much more reliable, there a few new things.

  • Support for non-ASCII characters.
  • OS upgrade from the application menu. Now, it’s possible to upgrade without fiddling into the menus.
  • Support for keyboard shortcuts in sample lists.
    • Ctrl+U goes to parent directory.
    • Ctrl+Shift+N adds a directory.
    • Ctrl+R refreshes current directory.
    • Ctrl+Shift+R renames selected item.
  • Better integration with the desktop via the local browser popup menu.
  • Audio preview of samples while loading.
  • Support for Catalan (Valencian) translations.

It has been tested to work on i386 and amd64 PCs and on Raspberry Pi.

I hope you enjoy it.

7 Likes

great job! thank you so much for the great development! :slight_smile: :beers:

1 Like

Yeah, thank you so much !! :slight_smile:

Just compiled it with openSUSE Tumbleweed (CPE OS Name: cpe:/o:opensuse:tumbleweed:20210401, Kernel: Linux 5.11.6-1-default, Architecture: x86-64), and it works great!

Is there any possibility to pay you a coffee or beer?

2 Likes

Hi!

This is awesome!
Great job, it works as it should!

Thank you!

2 Likes

I really appreciate the invitation. Thank you! :slight_smile:

I’ve just added a sponsor button in GitHub.

After wasting so much time trying to get Transfer to work with Wine, always ending up booting to windows just for transferring samples to my Digitakt, I can’t overstate how happy I am to discover this. Thank you so much!

2 Likes

Maybe the issue was using a 32 bits app with a 64 bits wine ?
For some reason, I cannot install 32 bits wine on my distro – I had to resort to CrossOver to get self-contained 32 bits Wine installation. But this is a commercial app.

So happy to have a native app :slight_smile:

1 Like