Elektroid, a GNU/Linux transfer application for Elektron devices

Looks like you need to install a header file. If you Google that file name and which apt package needs to be installed, you should be able to find it.

What is that /home/nedcr/miniconda3/envs/ana/bin/x86_64-conda_cos6-linux-gnu-cc path? You’re not using a simple gcc package installed by Kubuntu, it looks like some cloudy anaconda thing. That won’t look for headers in /use/include because it has its own sandboxed environment.

The solution is probably to use the system compiler, not that one. Maybe simply by doing:

PATH=/use/bin:$PATH

and then starting again.

Hello @DG2 !!
I just felt the need to sign-up to elektronauts just to say THANK YOU !! for Elektroid !!
This is really a great thing !
I just made a donation via github sponsor button . It’s a small amount, but I hope you can appreciate that anyway .

2 Likes

Welcome to elektronauts, @clastano!

I really appreciate your words and your gesture. The amount is more than fair. :blue_heart:

Also, I’m glad you liked Elektroid and find it useful. :slight_smile:

1 Like

Version 1.4 is just out.

This version only includes usability and visual improvements.

  • Almost fully support for drag and drop. Every source and destination is implemented but, sadly, dragging from the device to the desktop file manager couldn’t be due to technical limitations.
  • Status bar shows usage percentage of both +Drive and RAM.
  • Cancel button cancels all tasks, not just the one that is currently running.
  • Local browser self refreshes when changes on disk are detected.
  • Redesign of popup menus.
  • New icons.

But, perhaps, the most interesting thing is that I’m already working on project and sound management.

5 Likes

Elektroid 2.0-beta is just out.

This release just adds management for project, sound and other kind of data for every Elektron machine. Other than this, and Portuguese (Brazilian) translations, there have been lots of changes internally and now there’s even an internal API to define device filesystems. If a device provides a directoy listing and some operations over the elements, it will be easy to add support for it on Elektroid.

I don’t know the Model:Cycles ID but this is super easy to fix. Skip to the end.

The reason it’s a beta release is because it has only been tested on Digitakt and I can not test it wih the remaining actual machines. So I need your help here if you’re interested.

Also, it’s a beta because I’d like to know which directories you see in the data filesystem with this command.

$ elektroid-cli list-data 0:/
D  -1 0000 0 0         0B projects
D  -1 0000 0 0         0B soundbanks

The reason is that these directories are not compatible with each other so a virtual filesystem could be defined to provide direct access to that directory. This is what I’ve done in the Digitakt and it offers projects and sounds filesystems besides the samples filesystem. (I named the filesystem “sounds” instead of “soundbanks”. Much better I think.)

These are the technical details.

The Digitakt is defined as the following for you to try.

static const struct connector_device_desc DIGITAKT_DESC = {
  .name = "Digitakt",
  .alias = "dt",
  .id = DTAKT_ID,
  .fss = FS_SAMPLES | FS_DATA_PRJ | FS_DATA_SND,
  .storages = STORAGE_PLUS_DRIVE | STORAGE_RAM
};

But the remaining devices, they are defined like this.

static const struct connector_device_desc DIGITONE_DESC = {
  .name = "Digitone",
  .alias = "dn",
  .id = DTONE_ID,
  .fss = FS_DATA_ALL,
  .storages = 0
};

As you see, FS_SAMPLES, FS_DATA_PRJ, FS_DATA_SND and FS_DATA_ALL are all filesystems and are the only ones available at the moment. FS_DATA_PRJ, FS_DATA_SND are virtual filesystems that are just redirections to access the projects and soundbanks directories that FS_DATA_ALL provides.

In the case of the Digitone, the field fss could be defined as FS_DATA_PRJ | FS_DATA_SND but I thought I would leave it like this for the 2.0-beta as it is safer because instead of “soundbanks” it might have “presets”. Same applies to every other device. Perhaps there’s even a song directory for some devices.

So, let me know what are your thoughts on these things.

PR are always welcome.

I hope it’s useful for Linux users.

How to add the Model:Cycles ID

The ID I talked about is the 6th byte in the first message received. In the Digitakt case, it is 0x0c as you can see.

$ elektroid-cli ld
0 Elektron Digitakt MIDI 1
$ elektroid-cli -v info-device 0
DEBUG:connector.c:1982:(connector_init): Initializing connector to 'hw:0'...
DEBUG:connector.c:1991:(connector_init): Setting blocking mode...
DEBUG:connector.c:2003:(connector_init): Stopping device...
DEBUG:connector.c:875:(connector_tx): Message sent (5): 00 00 00 00 01
DEBUG:connector.c:1182:(connector_rx): Message received (51): 00 fe 00 00 81 0c 23 01 02 03 05 04 50 52 51 10 13 11 12 20 21 22 23 30 31 32 36 40 41 42 46 53 54 55 56 57 58 59 5a 5b 5c 5d 44 69 67 69 74 61 6b 74 00
DEBUG:connector.c:875:(connector_tx): Message sent (5): 00 01 00 00 02
DEBUG:connector.c:1182:(connector_rx): Message received (15): 00 ff 00 01 82 30 30 35 33 00 31 2e 33 30 00
DEBUG:connector.c:2093:(connector_init): Connected to Digitakt 1.30 (Digitakt)
Digitakt 1.30 (Digitakt)
DEBUG:connector.c:1842:(connector_destroy): Destroying connector...

You just need to put this value in connector.c line 50.

5 Likes

I’m trying to use this with the Model:Samples and I keep getting timeout errors. These don’t seem to affect the Model:Cycles for some reason.

$ elektroid-cli -v df 2
DEBUG:connector.c:2364:(connector_init): Initializing connector to 'hw:2'...
DEBUG:connector.c:2373:(connector_init): Setting blocking mode...
DEBUG:connector.c:2385:(connector_init): Stopping device...
DEBUG:connector.c:1070:(connector_tx): Message sent (5): 00 00 00 00 01
DEBUG:connector.c:1377:(connector_rx): Message received (41): 00 11 00 00 81 19 14 01 02 03 50 52 51 10 13 11 12 20 21 22 23 30 31 32 40 41 42 4d 6f 64 65 6c 20 53 61 6d 70 6c 65 73 00
DEBUG:connector.c:1070:(connector_tx): Message sent (5): 00 01 00 00 02
DEBUG:connector.c:1377:(connector_rx): Message received (15): 00 12 00 01 82 30 30 33 30 00 31 2e 31 32 00
DEBUG:connector.c:2475:(connector_init): Connected to Model:Samples 1.12 (Model Samples)
Storage               Size            Used       Available       Use%
DEBUG:connector.c:1070:(connector_tx): Message sent (6): 00 02 00 00 05 01
DEBUG:connector.c:1137:(connector_rx_raw): Timeout!
DEBUG:connector.c:1070:(connector_tx): Message sent (6): 00 03 00 00 05 02
DEBUG:connector.c:1137:(connector_rx_raw): Timeout!
DEBUG:connector.c:2224:(connector_destroy): Destroying connector...

I apologize if this isn’t the best place for this - I can certainly make a Github issue if that’s better.

I prefer GitHub issues for technical issues but perhaps yours is not so it’s OK.

As you said, the device is not replying to the requests and hence the timeouts. By looking at the trace, you’re using the OS 1.12 while 1.13 is out. Is there any reason for this?

Elektron does not publish their machine’s SysEx protocols and therefore these do not appear in the OS release notes so this might work with the last version. Let me know if this is the case, please. BTW, you can use Elektroid (GUI) to upgrade your firmware.

Elektroid could have device descriptions per OS version to define devices more safely but it is a lot of work to keep tracking of the changes and it’s not very useful so I’m not gonna do this.

2 Likes

Thank you so much for your quick reply. You are absolutely right. I neglected to check the M:S and Elektron site for OS versions and assumed a new unit would be shipped with the latest OS :man_facepalming: I updated and It’s working great now.

Thanks again for the nice tool.

3 Likes

Just a small update on Elektroid 2.0.

Support for M:C has needed some development but it’s almost ready. If you want to try it, use the raw_fs branch for now. It will be merged into the masterbranch in a few days.

However, Elektroid 2.0 is gonna take even longer. The reason is that Elektroid projects and Transfer projects are not compatible with one another. Elektroid just provides support for native projects, i.e. the ones that you can directly download directly from the machines, while Transfer packages this project and all the related resources in the same file. For instance, in the case of a Digitakt it zips the project and the samples in its sample pool. But this is not the only case and it might apply to sounds on some machines too (at least the ones using samples) or in other cases.

Project uploading needs the opposite: uncompress the zip and upload the project and all related resources.

All this is super useful if we plan on sharing sounds, samples or projects with Elektroid or load the official Elektron sound packages with it.

As I want to include this in the 2.0 version and it’s quite a lot of work, it’s gonna take some time.

3 Likes

I am a Linux user. I installed and used the Elektroid GUI on my Linux computer today and transferred samples to my DT. It worked flawlessly the first time. Thanks for your awesome gift to the community, @DG2!

I am relatively new to the community. My first Elektron box was a Digitone, and I have performed sysex dumps (backups and restores) using the amidi utility with zero issues on my Linux laptop.

When I get my nerves up, I will perform full system restores of the DN and DT (not necessary at this point as they are pretty new).

2 Likes

Right now, the master branch provides project and sound transfer capabilities for every Elektron device the same way Elektron Transfer does.

But as I can only test it on a Digitakt I can’t be sure 100 %.

No official release yet though.

1 Like

Has anyone here tried Elektroid with an Analog Four? It’s the only machine I have no working confirmation.

Release is really close and I just want to close a few loose ends.

Will try it with my A4 soon, been a while since I used this tool actually.

Anything in particular you need checked with it?

Not really. Just wanted to know if projects and sounds transfers work properly or if is there an issue with the device.

So far able to import/export objects, browse my sounds, upload/download them. Seems to be working beautifully.

Also great work on it, so glad to see love on this. Just had to pull out a Windows laptop earlier today to do a transfer.

2 Likes

Nice to know it’s working well. Thanks for taking the time to test it.

:heart:

1 Like

Hi ! Thank you so much for your commitment on Elektroid ! Much appreciated !
I hope Elektron will provide us with firmware updates for the Model series too ! Such a great piece of hardware which could be significantly better with not that much more work IMHO :slight_smile:

Cheers & happy new year !

1 Like

Hi, fellow elektronauts!

After a long time, Elektroid 2.0 is out!

Basically, this version adds support for all the Elektron machines already supported by Transfer as well as all the different data types in them and makes the transfer format fully compatible with Elektron sound banks.

It’s been confirmed to work with all the current products plus the MKI versions, but I have no confirmation about any Analog Heat.

These are another minor improvements.

  • Add functionalities including firmware upgrade to elektroid-cli to match the ones the GUI has.
  • Let CLI be built independently from the GUI (useful for small or embedded systems).
  • Speed up some operations.
  • Add Portuguese (Brazilian) translations.
  • Store preferences in disk (Auto Play and last visited local directory).
  • New icons.
  • Improve audio playback (now playback is done in its own thread).
  • Refactor all the different transfer operations under a common API.

It’s been a lot of work and many people have contributed one way or another. So thank you all very much for your contributions!

I hope you enjoy this.

9 Likes

A big thank you !! :slight_smile:
Just saw this cool youtuber is using Elektroid :wink:

2 Likes