Totally blind electronic musician, looking for developers to help with a project to make VCV rack accessible to totally blind users

Hi everyone, hope you’re doing well and staying safe, I’m trey and I’m a totally blind electronic musician from the UK. For quite some time, now, myself and other blind musicians have been interested in using VCV rack. I know that it is open source though I do not know what programming language the user interface is written in. Or how much of the API is open source. I have no coding experience whatsoever though I do have previous software testing experience. I have some ideas as to how an accessibility solution for VCV rack maybe implemented. I am looking for coders volunteers to help me come and work on this project to make VCV rack accessible to blind users. If anybody is interested in helping with this project or knows anybody, that may be able to help please comment here or message me. This Post is being posted on both the forum and the sub Reddit. Thank you for taking the time to read this post, and I look forward to collaborating with you all respect and blessings, Trey.

6 Likes

Welcome to the forum, Trey! There are many infinitely more capable and experienced Rack coders than I am floating around here, but I have a fair degree of knowledge of the codebase and have written some interface-modifying modules that work well for me (nothing I’ve released, though I hope to someday, but stuff I’m actively using for music-making). This project sounds great. I’m passionately convinced that accessible interfaces are important both (obviously) for their own sake and because proper accessibility often yields tremendous and sometimes surprising benefits for all users (the curb cut effect is very, very real!)

Unfortunately, I don’t have time to take on a community project right now due to day job commitments (though I’d be interested in contributing later if time permits). That said, I’d be happy to answer questions or give first-round feedback on your ideas and their feasibility.

To get the ball rolling, the language is C++11 (with a pretty simple idiom; only a few mid-level C++ tricks are needed for typical modules) and the whole thing is open source except for the optional plugin (meaning VST, etc.) interface and some of the modules. And one of the things about the API is that modules have a tremendous (though not unlimited) ability to modify program behavior, which means that you can do, through modules, lots of things that would ordinarily require a fork and recompile. Another promising feature–which I’m leveraging in a project of my own–is that most of the user interface elements are quite standard, they all have unique identifiers (though not always meaningful ones), etc. Happy to discuss more, although forgive me if I appear and disappear–my schedule is very much not my own at this point!

I don’t code but I know a blind girl and I’m helping her with pc/music to pass the exam to get into a school.

I’m thinking about a command line based interface, because that would be impossible to deal with such a graphic environment for you. I know you use simultaneously a “vocal screen reader” (like NVDA, which is free and multiplatform) and a “braille display”, on which you totally rely on, and these devices are useless in a graphic enviroment. are you thinking to access to all the informations reading like a book, left to right and then row by row, not like a matrix, correct? kind of having a cursor, and moving from THIS to THAT block. so you should be able to read on the displays where you are, what is selected and what you can do. Please let me know if you have other thoughts on the subject, I’m curious, would be happy to follow this project, and even if I don’t have all that time available and I can’t code, I hope I could give some kind of help.

all the best, Alessandro

While VCV Rack is open source, it is officially closed to contributions. A project like this would require buy-in and cooperation from @Vortico. I recommend starting that conversation by opening a support ticket.

Even if Rack itself is fully accesssibility-enabled (using accesskit or some such), to be usable would likely require enablement and participation by the ecosystem of plugin authors as well. That is a whole another order of a challenge. There are thousands of modules. There are many modules that have inactive maintainers.

To be honest, you’re looking at a huge effort. First step would probably be to design and implement complete keyboard navigation and operation, because currently Rack is an extremely mouse-centered ui.

There is a long list of tasks that would need to occur, including getting all modules to label their controls, and other accessibility basics.

Good luck! Let us know what response you get from Andrew (Vortico).

Hi!

I implemented the accessibility in surge vst and we have a big blind user base and have spent some time thinking about how to do it in rack

My rough conclusion is : it’s very hard. And there’s two ways to go about it

The first way to go about it is to do roughly what juce did - add accessible handlers to the base widget class in the sdk rebuild all the plugins hope that people obey the component model etc. this is technically hard due to the ui kit and portability model rack uses and is also just hard even without that constraint. (Rack uses gl directly to draw so you would need an artificial accessibility side hierarchy which is basically how juce works)

And even then I’m not sure that would be too useful navigating these components with a screen reader would require the intermediate notes to be hidden (lights etc) and also require a tab ordering which would be tricky. I think you might be able to do it with an sdk change but probably modules would need adjusting. The menus would be even harder

The other idea I had then was basically to abandon the rack ui altogether. The modules advvertise their params inputs and outputs and most features work through that. So the other design I considered was a single module - and you would need that in a template to get started so may require setup first time from a sighted user alas - and that basically pops a console where you can query the modules in a sort of textual programming style with announcements and so on. Basically a rack repl. That might be fun for other reasons too but is also not an easy project - but is an easier one which does not require core cooperation

Oh and of course this is all Mac or win only. The Linux ally story is not good.

Anyway my coding stack is full - I have to make short circuit work with a screen reader like surge does this year! - but I’m happy to offer advice or thoughts if you do pull a team together

3 Likes

how can i be involved with the circuit testing please?

hi everyone thanks for your replies. firstly i dont think a CLI would be the way to go because it would be complex for a lot of people. would some kind of web style interface addon be an option?

The problem isn’t web or not; the problem is advertising items as components to the accessibility hierarchy. There’s lots of way to do that but they all involve doing hard work in the core and may require per module work also. Right now rack looks like a single opaque window to screen readers and if you render it with wasm and webgl with current code it would do the same

If you really want full screen reader navigation of rack you will need to be in the core or will need a separate build you do yourself. Probably.

Although as I type this you do make me think of a hacky idea……

Surge and short circuit convos for accessible testing happen in the accessibility channel of surge discord.