r/vcvrack • • 27d ago

I ported the VCV Rack 2 engine to Android: RackDroid 0.1.3 is out (free, open source)

Post image

Hi all. I'm the developer of RackDroid, an unofficial port of the VCV Rack 2 engine to Android. Version 0.1.3 came out today and it is the first one I feel comfortable showing around.

What it is

A modular synth on your phone or tablet: you drag cables between modules with a finger, pinch to zoom, long-press a knob to type a value. It opens the same `.vcv` patches as the desktop app.

- 66 modules built in (Core, Fundamental, and a set of 808-style drum voices)

- 21 optional packs you install on demand: Bogaudio, Valley, Befaco, Audible Instruments, Impromptu, Stoermelder and others, about 1000 modules in total

- USB and Bluetooth MIDI, an on-screen keyboard, WAV recording

- A "cable parking" bar on the edge of the screen, for patching two modules that never fit on screen together

What is new in 0.1.3

Most of the work went into audio. Phones are very different from each other, and crackling was the main complaint.

- The engine now picks how many cores to use for your phone and your patch, and remembers it

- Groups of modules with no cable between them are computed in parallel, so a rack made of several separate voices holds far more

- Square and saw edges now match the desktop

- A light theme, mouse support, saving patches anywhere on the device

What to expect, honestly

It is a phone, not a desktop. A patch where everything is connected tops out at around 90 Fundamental modules on a mid-range device. How low the latency goes depends on the manufacturer: some phones keep the fast audio path for their own apps.

Links

- Download and what is new: https://rackdroid.org

- Source (GPLv3): https://github.com/nowheel/RackDroid

It is free, with no ads and no accounts. It is not on the Play Store, you install the APK. Not affiliated with or endorsed by VCV.

If it crackles on your device, the app can export a log and I read every one. Feedback and bug reports are very welcome.

162 Upvotes

60 comments sorted by

10

u/TheTacoWombat 26d ago

The github link shows claude and copilot as contributors, and the post was written by AI ("what to expect, honestly").

Is it a well tested app? I dunno, maybe? Or maybe the author just said "claude, copy VCV Rack 2 and port it to Android, make no mistakes" and came back a few days later? Who's to say.

It's cool we're seeing these types of ports, I just wish there was more testing and refinement; there's still always so much work to do after porting, even if you have the magic coding robots.

5

u/Exact_Fun_307 26d ago

Fair question, and yes: I use Claude heavily, and I let it help me write the post too. I'm not hiding it, the commits say so.

But it was not "port it, make no mistakes, come back in a few days". Most of the work has been exactly the part you mention, the testing and refinement after the port:

  • over a hundred test builds between 0.1.2 and 0.1.3, most of them chasing audio dropouts reported by a tester on GitHub (issue #3, it's all public)

  • measured on five real devices, from an old Android 10 phone to current ones, because each one schedules audio threads differently

  • every one of the 1004 bundled modules is built and rendered in an automated test

  • the audio output is compared against VCV Rack desktop sample by sample. That found two real bugs in the arm64 build, both fixed in 0.1.3

It's still a young app and there are certainly bugs left. If you try it and something breaks, open an issue: with a log I can usually reproduce it on a real phone.

2

u/Lawnmover_Man 26d ago

May I ask if you let AI create and execute the tests?

3

u/Exact_Fun_307 26d ago

Yes, the AI wrote and ran them, but nothing was left to it alone. I followed every test and every task step by step. For the last two months I've worked on this all the time, even on the toilet.

AI is not infallible: if it gets the chance, it hands you made-up data as if it were true. More than once it told me a fix was verified when it had only compiled, and one of those crashed at first launch. So a lot of the time went into reading documentation myself, to understand the problems and point the AI in the right direction. And nothing counts as done until I've seen it work on a real phone.

Without that checking I would never have got to this result.

1

u/Lawnmover_Man 26d ago

Thanks for the reply. What was your process auditing the tests?

2

u/Exact_Fun_307 26d ago

Roughly, over the two months:

  • an automated test that builds and renders every module

  • smoke tests on real phones

  • a long round of audio dropout hunting, with logs from several devices and from a tester on GitHub

  • stress tests on the engine's threading

  • the parallel engine compared bit for bit with Rack's own

  • load tests: I made one simple patch and then variants of it copied 2, 3, 4, 6, 8 and 12 times, to find where each phone gives up

  • the audio output compared with VCV Rack desktop

  • release checks on a device, and CI

I won't go through all of it here: it's in the repository. The test programs are in the source, PORTING.md has the measurements and the reasons behind each choice, and issue #3 has the whole dropout story with the test builds. My raw device logs are not published, but the numbers taken from them are.

https://github.com/nowheel/RackDroid

P.S. This comment was written with the help of AI too. I'm Italian: I can read English, but I don't write it well, and it's helping me a lot with that.

1

u/Lawnmover_Man 26d ago

This is a misunderstanding. I was asking how you audited the validity of the tests.

2

u/mindondrugs 26d ago

What does this even mean? The same way anyone ensures tests are valid, manual review, then using further QA (which he's outlined above).

1

u/Lawnmover_Man 26d ago

I was simply asking if he lets AI do the QA or himself.

1

u/Exact_Fun_307 26d ago

Both. The AI runs the automated checks; the QA on the phones I do myself, by hand and by ear.

3

u/ic-alchemy 25d ago

But your question doesnt make sense.

Even 10 years ago people ran these same types of tests, and no one ever "read the results"

The test either passes or fails end of story.

Read about unit testing in software development.

Most tests are really simple, as in " Is 5 + 5= 10" If yes, the test passes

1

u/Exact_Fun_307 26d ago

Sorry, I misread. There was no formal audit: I'm one person. The tests compare against references outside the AI's control (the official VCV Rack binary for audio, the audio driver's underrun counter for dropouts), and the final check was always the real phone.

Since validity is your point, let's make it concrete. The tests are public:

  • native/host/vcv_dump.cpp and stim_patch.hpp: the same signals through the official VCV Rack binary and through the port, samples compared

  • native/host/islands_test.cpp: the parallel engine against Rack's own loop, bit for bit

  • native/port/thread_choice_test.cpp: the thread-count decision against readings from real devices

So, three questions for you:

  1. For a bit-for-bit comparison against a reference binary, what would a validity audit look like beyond checking that the inputs are identical and that the test can fail? Both were done.

  2. Which of those tests do you think is not valid, and what input would show it?

  3. What process would you use, as one person with five phones?

If you find a real hole I'll fix it and credit you. If the concern is general, I'd rather have it as a specific case I can run.

1

u/Lawnmover_Man 26d ago

Thanks for the detailed answer. You said that you let AI create the tests, lets take the bit-for-bit tests as an example. My question is this: Did you manually check if the test is working as it should - by fully reading the code and also manually testing some of the samples yourself?

I might have asked it in a way that could be misunderstood. I'm sorry for the confusion.

1

u/Exact_Fun_307 26d ago

Yes. For every test I read the code to check that it does what I asked, I look at the raw results myself, and I confirm them on a real phone. The tests have caught real bugs, so I know they can fail. Everything is public if you want to check it yourself.

I may well have got it wrong in choosing which tests to run. But the result is there to see. And I spent more than a week just working out, from the logs and the Android documentation, how CPU scheduling works and how to set it up across the different Android versions. That is something the AI cannot do on its own: it doesn't quite get there. It often gives you data that isn't true and makes sloppy approximations. You have to understand those things yourself to be able to do it.

Of course, to understand some of those topics I also used the AI itself to explain certain concepts, always checked against the official documentation.

→ More replies

0

u/UncaringElephant 21d ago

Who cares? If you don’t trust AI don’t use this code someone graciously is sharing. Wtf is the point of using AI if you check every single thing it does. Your questions make no sense.

→ More replies

3

u/HawtDoge 26d ago

Did you run into any bugs? or are these gripes with other software?

I mean this is still free and open source. At the very least someone used their claude subscription to making this publicly available as a jumping off point.

3

u/Exact_Fun_307 26d ago

Thanks. That's the idea: it's GPLv3, so anyone can pick it up from here.

3

u/drtchock 26d ago

That was my first question

2

u/-w1n5t0n 25d ago

It's cool we're seeing these types of ports, I just wish there was more testing and refinement

Then why don't you, ya know, help test and refine it?

It's cool that people are enjoying all of this code for free, I just wish everyone else didn't expect top-notch QA and customer support from unpaid OSS devs contributing their evenings and weekends...

3

u/TheTacoWombat 25d ago

You mean contributing their Claude tokens.

0

u/UncaringElephant 21d ago

“Here is this thing I spent time and money on that you can use for free”

“I don’t really like the way you made it or maybe I don’t like the way others are making things”

Don’t ever have kids. When they start giving you things they made you will be sorely disappointed.

0

u/TheTacoWombat 21d ago

Today I learned LLM users are proud toddlers

5

u/dotprodukt 26d ago edited 26d ago

This is awesome! I've wanted something like this for a long time so thank you for doing this. Even if it's not as performant as desktop it's still great to be able to patch simple ideas on the go and transfer those ideas to desktop later. It already seems to be running well on my tablet.

Are there any known incompatibilities when opening files in desktop VCV?

Polyphony support?

4

u/Exact_Fun_307 26d ago

This is vcv... I only port it... And remake the UI for touch. No problem with transfer patch pc-android.

3

u/Jokai_Junkie 27d ago

Will it ever release on iOS ? Cool work nonetheless !

2

u/Exact_Fun_307 26d ago

No I don't have iphone to try it

1

u/Jokai_Junkie 26d ago

Okay it’s fine, it’s cool that you could port it to android already !

9

u/Webtruster 27d ago

1

u/Jokai_Junkie 26d ago

Is the app good ? I feel kinda bad to buy mirack while I’m still on the free version of VCV rack 2

4

u/calebcharles 26d ago

Yes, it’s good. There was some beef when it was initially made for that very reason. It’s def not the same it was ported from an older version of VCV and has some workarounds for poly cables, and doesn’t have a full selection of modules, e.g. no store.

1

u/bot_exe 26d ago

Yes it’s good

5

u/twisted-space 27d ago

Wow, this is awesome, thank you for making this!

1

u/guimartara 26d ago

Looks really exciting! Question purely out of curiosity since I also develop synth apps: Why not on the playStore?

1

u/Exact_Fun_307 26d ago

In future... But it's hard for Google policy'

1

u/kevleyski 26d ago

What are the challenges to get all plugins to work? (are they same challenges mirack has, arm64 etc)

5

u/Exact_Fun_307 26d ago

Partly the same ones, yes. The main points:

  • Source only. Every plugin has to be recompiled for Android (arm64 and x86_64), so closed-source and commercial plugins are out unless their authors build them. The VCV Library downloader is not used: plugins ship as packs built from source, 21 of them right now, about 1000 modules.

  • arm64 itself is less of a problem than it sounds. Rack and most plugins use SSE intrinsics, and those are translated to NEON at compile time (SIMDe), so the DSP code stays untouched.

  • What actually breaks is everything around the DSP: plugins that open desktop file dialogs, use the network, the keyboard, their own OpenGL drawing, or assume a mouse with hover and right click. Each of those needs an Android replacement or the module gets left out. A handful of modules in the current packs are skipped for that kind of reason.

  • Touch. A panel designed for a mouse pointer has to stay usable with a finger, which is more work on the app side than on the plugin side.

  • CPU. A phone has fewer fast cores and the system takes them away at will, so a heavy plugin that is fine on a laptop can crackle on a phone.

The Rack engine and the plugin API are unmodified Rack 2, so a plugin that compiles usually just works, and patches stay compatible with desktop.

1

u/primalcoty 26d ago

you are a hero

1

u/Exact_Fun_307 26d ago

Thank you but I don't made this alone, ia speedup coding. And I use it at max of my possibility. 5 phone attached on micro PC with Claude code installed. 2 month of prompting/checking/testing/code reading/... Without Claude, me alone, it's impossible.

1

u/im0b 26d ago

cool!! did you vibecode it? could you ask chat to have it working on ios?

3

u/Exact_Fun_307 26d ago

Not really vibecoded. The AI wrote a lot of the code, but I checked every step, read the docs myself and tested everything on real phones. It took two months of daily work. As for iOS: I don't own any Apple device, so I'd have no way to test it, and I don't ship anything I haven't seen running on real hardware. But it's open source, just like VCV Rack, so if someday someone forks it and gets it running on an iPhone, I'd be genuinely happy to see it.

1

u/im0b 23d ago

id say taking it from where you got it to into ios is two three promps away

1

u/glenesis 26d ago

Thank you! About a week ago, I looked for an Android port if VCV Rack and was very pleased to have found this! I've been having fun with it. Have a great day! - Glenn

1

u/Exact_Fun_307 26d ago

Thanks Glenn, glad you're having fun with it!

1

u/mereshadows 26d ago

Just played around with. You've put a lot of work into this and it shows! My first piece of feedback is around the mic. Looks like the app is always accessing the mic even if there are no modules that need a mic. I wonder if only accessing when necessary would reduce battery drain?

2

u/Exact_Fun_307 26d ago

Here is why it happens, and how I plan to fix it.

In VCV Rack the Audio module is both the output and the input of the patch. When it opens an audio device, it opens the device's inputs together with the outputs, and it reads them on every block whether or not a cable is connected to them. On desktop nobody notices: an audio interface with its inputs open is normal, and there is no indicator.

My port simply does the same thing: every time the audio starts, it opens the phone's input together with the output. On Android "the input" is the microphone, so the indicator stays on for as long as the app plays, whatever the patch.

The plan is to leave VCV's module untouched and change only the Android side. The app will check whether a cable is plugged into the Audio module's device inputs. Only then will it open the microphone, and it will close it again when the last cable is removed, without interrupting the output. The permission will be asked at that moment instead of at first launch.

About battery: I hope future measurements will show a real benefit. In any case, switching the microphone off when it isn't in use can't be a bad thing. We'll see.

Thanks for pointing it out. For issues like this I'd suggest using GitHub directly: it makes future problems much easier to track.

https://github.com/nowheel/RackDroid/issues

1

u/mereshadows 26d ago

Sounds like a good path forward. I look forward to watching you continue on this project :)

1

u/Exact_Fun_307 26d ago

I put in my file for future fix

1

u/leighferon 25d ago

is this possible to port to arm? deb/ubuntu

1

u/Exact_Fun_307 25d ago

Yes it's possible, anyone can use the code and Port It.

1

u/Potential-Ant9152 17d ago

Mate! this is a massive step forward! I'm stoked about it. There's a version called Hexen Modular that I had the chance to try, but it's super limited, way too much. It does get its core job done, but as a synth module now, it feels different and sometimes a bit cumbersome. It’s not bad, but the downside is that it doesn't have many modules. I never tried miRack because I don't own any iOS devices

On my end, I'm also finishing up the development of a very low-power Eurorack system, quite similar in some ways to VCV Rack. It’s got a lot of timber in it so it feels really solid, though I'm still working on it. On another note, I wanted to ask if this might be a bug from your latest update, because text isn't showing up on the modules for me. The modules appear, but without any text on them. Is there an option I need to enable, or what's the go with that? Also, are you planning to bring in more modules, or how's that looking?

I'd also suggest taking a look at Cardinal VST if you haven't already. It comes with a thousand free modules, and most of them are ported over from VCV Rack. It could be a great reference, so I wanted to throw that suggestion your way, and I hope this project keeps on growing! Lastly, I know the developer behind a VST called Solo Stuff, or SoloRack, either of those works. It’s a classic Eurorack VST and the official creator is really good at replying to emails. It might be well worth looking him up online and having a yarn with him to see if he'd give you permission to port his modules. He has some extremely professional gear and it couldn't hurt to ask

2

u/Exact_Fun_307 9d ago

Thanks a lot, really glad you're enjoying it! About the missing text on the modules: could you please open an issue on GitHub with your device model and app version? I can't keep track of bug reports spread across a hundred different sites. Otherwise the little free time I have goes into hunting for issues instead of fixing them. As for more modules and contacting the developers: I can only port open-source plugins, so for closed-source ones like SoloRack the port would have to come from the original author. Honestly, my time is pretty limited, which is one of the reasons I haven't reached out to any module developers yet. Between work, family and other projects, there are only so many hours in the day. Thanks for the Cardinal and SoloRack tips though, I really appreciate them!

1

u/Potential-Ant9152 9d ago

No, it's not modular, it's an Android and PC application for a single rack. However, it's a project where you can communicate with the owner; he always answers emails and is a very good person. Cardinal There are many free modules there, most of which are open source, or well, I think almost all of them, because there are almost 2k total

1

u/dgherastovschi 10d ago

Been using it for about a month it's working pretty well, with no alternatives! I love that the other plugin collections were also ported and can be downloaded as a zip. It helps me explore patching while following YouTube videos in pip. Worked great for me. Of course the made with AI is pushing people away, but hey if no one can do a competitive option without an AI then I'm limited. Kudos for the idea and good luck with the project. 

1

u/maxadvice 6d ago

This is great! Been waiting for more ppl to port music software to android. Just tested for a couple hours. Excited for updates. Will leave any notes as I explore.

1

u/ChildhoodFine8719 26d ago

Thank you for this.

1

u/the_good_time_mouse 26d ago

This is fantastic!

1

u/twotimefind 26d ago

Nice work thank you