Please just open source c6

Elektron folks, you really have us Machinedrum users by the throat here. I get that you don’t want to update it to 64 bit, so please let one of the thousands of users who also engineer for a living do the work please. You’ve completely hobbled our machine workflow by locking it up.

9 Likes

Much better would be to publish an API for the TM-1.

6 Likes

yes that too. like come on, either thing, there is no business advantage to tombstoning user experience, it only generates customer wariness and less likelihood of future purchase…look at what happened to clavia

1 Like

What happened to clavia?

It’s unlikely to be a question of business advantage as much as a question of allocating expensive engineering resources.

1 Like

the effort of opensourcing it is trivial especially if they find a trusted partner (e.g., someone they know external to elektron) to admin the repo. i’m sure many of you here have done it for your own work. there are hurdles to deal with such as which license you’re using and if they need to redact any proprietary info, but i’m really grasping at how anything in c6 could be defensive proprietary IP.

edit: yes i know opensourcing isn’t just pushing a button, i’m in software too. a journey begins with a single step, as they say. all it takes is elektron to say hey, we’re interested, can you help?

Not a great solution, but I just use the Windows version via the free VMware fusion and Windows on my Intel Mac. But it’s a whole lot of GBs for the few utility apps I need.

clavia screwed their NM G1 users and that affected sales & enthusiasm for G2 as everyone knew they’d just do it again.

that’s what i am doing too, but that’s a different thread than this :grin:

1 Like

Open sourcing a thing in a corporate context is as much a marketing decision as an engineering decision, and in this case a support decision. Finding a trusted partner takes work, more so if it’s the first time you’ve done it.

“It’s easy, just publish to GitHub” is like saying “making an album is easy, just upload it to Bandcamp!” - technically true, but there are a lot of hidden details that become important if you are managing a carefully curated boutique brand vs a basement hacker.

Regardless, I’d love to see C6 open sourced, or at least a documented API. I won’t hold my breath for either.

IIRC, in Sweden, Corporations have limited ability to own intellectual property. It’s possible that Elektron doesn’t even own the source to C6.

3 Likes

Just use linux and everything works without even needing C6!

Is it possible to use the TM-1 in high speed mode under Linux?

I thought it did work … but now I think about it, I’m not sure how it could. So maybe I misremembered and I just use it as a normal-speed USB-MIDI interface.

I bet it would be pretty easy for somebody with the right skills to sniff the USB traffic for the TM-1 and write a driver for it. Maybe @DG2 could add support for it to Elektroid? I guess it depends on whether it can be done in userspace or needs kernel drivers. I’d be willing to loan my TM-1 to somebody if they could reverse engineer how it works.

1 Like

It’s pretty rich to demand anything of one of the most prolific and successful open source maintainers, ever, but I wish Linus had taken a harder line against kernel space drivers back in the ‘90s.

Apple and Microsoft have no excuse. They let far too much kernel mode crap in because they simply want to move product.

Edit: if there are any USB experts in Chicago, my TM-1 is up for grabs (on a temporary basis) too.

1 Like

Maybe all that’s needed is to send the right sysex messages to the TM-1 to negotiate TurboMIDI mode, as documented in the MD manual. So no custom code needed, just plain ol’ sysex to say “please switch to TURBO mode!” and then the bandwidth of USB is already high enough that you can just blast the rest of the sysex to the TM-1 and it will blast it on to the MD at turbo speed.

I will try to test that in the next few days.

Edit: and I think the “turbo” button on the TM-1 should do that for you. But if you wanted to automate it from software (which is what C6 does) I hope that all you need to do is send some sysex messages.

2 Likes

Since our Megacommand/MCLs have TurboMIDI supported, i believe enough information exists for someone else to implement it in an OS X or Windows app:

5 Likes

It wouldn’t be so hard to implement this and we can create a feature branch so we can work together there.

Still, I don’t have either a TM-1 or a MD although my Digitakt shows a TURBO SPEED option. But no idea about it.

ATM, Elektroid only supports ALSA MIDI devices containing Elektron. Does the TM-1 show up in the device combo in Elektroid?

1 Like

I’ll test it in Elektroid. The device shows up as “Elektron TM-1” if I remember correctly.

The Megacommand repo has code to negotiate TurboMIDI, so it’s possible just with software.

2 Likes

This is all super cool and I’m glad we can use Megacommand repo code to help with TurboMIDI in Elektroid! Also I don’t want to distract from the main ask that they just opensource C6 :grin:

1 Like

The message header is quite alike.

Whenever you wish, could you post here the output of these commands? It might not work but…

$ elektroid-cli ld
0 Elektron Digitakt MIDI 1
$ elektroid-cli info 0 -vv
DEBUG:elektroid-cli.c:647:(main): Operation: 'info'; filesystem: '' (0)
DEBUG:connector.c:2368:(connector_init): Initializing connector to 'hw:0'...
DEBUG:connector.c:2377:(connector_init): Setting blocking mode...
DEBUG:connector.c:2389:(connector_init): Stopping device...
DEBUG:connector.c:1006:(connector_rx_drain): Draining buffer...
DEBUG:connector.c:989:(connector_tx): Raw message sent (13): f0 00 20 3c 10 00 00 00 00 00 00 01 f7
DEBUG:connector.c:995:(connector_tx): Message sent (5): 00 00 00 00 01
DEBUG:connector.c:1126:(connector_rx_raw): Buffer content (48): f0 00 20 3c 10 00 04 00 03 00 00 01 0c 23 00 01 02 03 05 04 50 52 00 51 10 13 11 12 20 21 00 22 23 30 31 32 36 40 00 41 42 46 53 54 55 56 00 57
DEBUG:connector.c:1126:(connector_rx_raw): Buffer content (18): 58 59 5a 5b 5c 5d 00 44 69 67 69 74 61 6b 00 74 00 f7
DEBUG:connector.c:1293:(connector_rx): Raw message received (66): f0 00 20 3c 10 00 04 00 03 00 00 01 0c 23 00 01 02 03 05 04 50 52 00 51 10 13 11 12 20 21 00 22 23 30 31 32 36 40 00 41 42 46 53 54 55 56 00 57 58 59 5a 5b 5c 5d 00 44 69 67 69 74 61 6b 00 74...
DEBUG:connector.c:1302:(connector_rx): Message received (51): 00 03 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:utils.c:421:(load_device_desc): Failed to open file “/home/david/.config/elektroid/devices.json”: No such file or directory
DEBUG:utils.c:427:(load_device_desc): Falling back to /usr/local/share/elektroid/devices.json...
DEBUG:utils.c:487:(load_device_desc): Device 12 found
DEBUG:connector.c:1006:(connector_rx_drain): Draining buffer...
DEBUG:connector.c:989:(connector_tx): Raw message sent (13): f0 00 20 3c 10 00 00 00 01 00 00 02 f7
DEBUG:connector.c:995:(connector_tx): Message sent (5): 00 01 00 00 02
DEBUG:connector.c:1126:(connector_rx_raw): Buffer content (26): f0 00 20 3c 10 00 04 00 04 00 01 02 30 30 00 36 34 00 31 2e 33 30 00 42 00 f7
DEBUG:connector.c:1293:(connector_rx): Raw message received (26): f0 00 20 3c 10 00 04 00 04 00 01 02 30 30 00 36 34 00 31 2e 33 30 00 42 00 f7
DEBUG:connector.c:1302:(connector_rx): Message received (16): 00 04 00 01 82 30 30 36 34 00 31 2e 33 30 42 00
DEBUG:connector.c:1006:(connector_rx_drain): Draining buffer...
DEBUG:connector.c:989:(connector_tx): Raw message sent (13): f0 00 20 3c 10 00 00 00 02 00 00 03 f7
DEBUG:connector.c:995:(connector_tx): Message sent (5): 00 02 00 00 03
DEBUG:connector.c:1126:(connector_rx_raw): Buffer content (18): f0 00 20 3c 10 00 06 00 05 00 02 03 09 5c 60 0e 38 f7
DEBUG:connector.c:1293:(connector_rx): Raw message received (18): f0 00 20 3c 10 00 06 00 05 00 02 03 09 5c 60 0e 38 f7
DEBUG:connector.c:1302:(connector_rx): Message received (9): 00 05 00 02 83 89 5c 8e b8
DEBUG:connector.c:2478:(connector_init): UID: b88e5c89
DEBUG:connector.c:2486:(connector_init): Connected to Digitakt 1.30B (Digitakt)
Digitakt 1.30B (Digitakt) filesystems=sample,data,project,sound
DEBUG:connector.c:2221:(connector_destroy): Destroying connector...

Properly identifying the device is our first stop.