Work in progress: mobile/web app for live GR-55 patch editing

Started by motiz88, December 17, 2022, 09:11:11 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

motiz88

Hi GR-55 fans! Thanks to the awesome body of knowledge on this forum and @gumtown's expert work on GR-55Floorboard, I was recently able to start building a prototype of a mobile app for controlling the GR-55. I thought I'd share the news and get some early feedback from y'all.

Why build a new app? I'm mostly interested in live use cases - imagine mounting a cheap Android tablet on a mic stand and being able to access all of the GR-55's features without bending down to use the hardware controls. Or arranging patches into setlists without physically copying them around in the GR-55's memory. GR-55Floorboard is indispensable, but isn't something I would try to use live while also holding a guitar. I'm excited about what's possible with a bottom-up redesign for touch screens.

Where does it run? I'm building it simultaneously for Android and the web, using React Native (and my own implementation of the Web MIDI API on Android). iOS support is very possible, but probably isn't coming soon because I don't own any iOS devices to test on (and the iOS Simulator doesn't do MIDI, as far as I know).

What does it do? At the moment I'm focusing on patch editing, and have not implemented anything for patch saving, patch switching, patch backup/transfer or setlists (but I expect to get to these things in due course). I've added basic controls for a large chunk of the patch memory map (excluding all MASTER and SYSTEM settings for now). I've implemented bass mode features where relevant (e.g. the different modeling tones) but have not tested them, as I only use mine in guitar mode.

What does it look like? It's very bare-bones right now - I'm basically starting with a 1:1 copy of GR-55's hardware menus for simplicity, and will be looking into fancier visuals and controls later. Ultimately, I'd love to build a more visual and engaging interface that would feel at home on a Headrush unit (but with the tonal possibilities of the GR-55).

That said, here are some screenshots of the current state:

You cannot view this attachment.
You cannot view this attachment.
You cannot view this attachment.   

When will it be ready to use? Can't promise anything yet :) I'm doing this in my spare time and have only been hacking on it for a couple of weeks. Watch this space for updates.

Can I try it? (Updated) The latest, continuously updating web build of the app is available at https://gr55-editor.netlify.app/. If you use a MIDI-capable browser and have a working MIDI connection to your GR-55, you should be able to see your current patch and make changes. There are still some issues with the native Android MIDI implementation (mostly around reconnections and general reliability), so I will share an Android build later.

Please remember that this is an early prototype!
1. I'm not responsible if this somehow bricks your GR-55 or wipes important data. I was definitely able to get mine to freeze and need unplugging by sending a bad MIDI command once or twice 😅 The current version should be safe, but is provided with zero guarantees.
2. The app is incomplete. I'm sharing it mostly to gauge interest and see if anyone would like to collaborate (e.g. by helping test future builds, testing bass mode, working on iOS support, etc). Let me know if that sounds like you!

motiz88

Quick updates:

1. There's now a GitHub repo with the code, and continuous deployments of the web build to https://gr55-editor.netlify.app/.
2. iOS support is happening!
3. I'm working towards a version that can go on the App Store / Play Store. Let me know if you'd be interested in testing pre-release builds on either iOS or Android in the meantime.

admin


motiz88

#3
Instructions for testing the app on Android:

1. Download a test build here, or scan the QR code below using the Camera app.
2. You may need to click through a number of security warnings to get Android to let you install the app.
3. If you're connecting to the GR-55 over Bluetooth, first pair your Android device with the adapter, using MIDI BLE Connect.
4. Start the GR-55 Editor app, go to Setup and select the correct MIDI port under both Input and Output. The GR-55 should appear under Connected devices.
5. The app should now show your current patch and let you edit parameters. Enjoy!

Notes:
* Parameter changes take effect immediately but are not saved - use the WRITE button on the GR-55 to save patches.
* If you select a new patch on the GR-55, the app will update automatically to show it. If this doesn't happen, ensure SYSTEM > MIDI/USB > GENERAL > PC TX SWITCH is set to ON.
* The web version of the app is also fully functional on Android - make sure to use Chrome and follow the Bluetooth pairing step mentioned above (as needed).


Chrismiami

Nice work and great ideas, motiz! I'm doing much the same thing for the GR-33! And I think we are definitely on the same page WRT the things an app that communicates with these synths can do for musicians in live scenarios!

After the patch library is nailed down, I've considered some things like a playlist library (using an Apple watch to sequence patch changes using a swipe)(or a colored board like the Maschine).

A lot of what I want to do focuses on a better editing experience with the thought that not everyone has enough knowledge to make fiddling with the knobs and numbers meaningful. So I'll include audio samples, musical values, and allow auditioning as the patch is created (either by playing, or by sending MIDI notes the user set up in advance, or using the in-app keyboard).

After I get MIDI comms down, the plan is to switch from iOS only to React Native multi platform.

I wasn't aware that MIDI could break out of the browser sandbox so I never thought about that as a target. Very cool you're doing that!

I can't wait to see what you come up with! Go for it!!

motiz88

@Chrismiami, that sounds amazing! I did actually design some of my app's infrastructure to _in principle_ be reusable with different Roland devices. I'd be more than happy to give you a tour of the codebase if you wanted to use that as a starting point for the cross-platform version of your app. (My version is under heavy enough development that I probably wouldn't try to directly target both synths from the same codebase... yet)

motiz88

BTW, I am still actively working on this app! Attaching some new screenshots as proof of life. :)

Recent developments:

* I have an iPad now so that's my main focus as far as the target platform goes. The app will continue to fully work on Android and the web through the magic of React Native.
* Added support for assigns. You can long-press any assignable parameter to assign it to a controller!
* Added PEDAL/GK CTL and OTHER, so now 100% of patch parameters are editable.
* Fixed stability and reliability of the native MIDI layer on Android and iOS.
* Greatly improved stability and responsiveness by figuring out the correct way to space out SysEx messages sent to the device, cancel stale data requests, prioritise data requests required for the current screen, etc.
* Built a scrollable, searchable patch library screen.
* Added dark mode support.

Plans for the future:

I've been using the app at jam sessions lately, and it's getting to be pretty solid for what it does. Next on my list is the ability to save/rename patches directly from the app, and then I'll look to make a beta release on the App Store and Play Store for more folks to try out.

After that first release, I want to add more support for editing SYSTEM settings (at this point, why not) and work on more radical improvements to the editing experience (departing from the mostly 1:1 translation of the hardware menus I have now). Things like graphical EQs, envelopes and routing, and generally fitting more information/control on the screen at a time.

Chrismiami

Quote from: motiz88 on May 01, 2023, 07:00:21 AM@Chrismiami, that sounds amazing! I did actually design some of my app's infrastructure to _in principle_ be reusable with different Roland devices. I'd be more than happy to give you a tour of the codebase if you wanted to use that as a starting point for the cross-platform version of your app. (My version is under heavy enough development that I probably wouldn't try to directly target both synths from the same codebase... yet)

Thank you so much! As soon as I can pull my head out of the weeds I'll take you up on that! No code's better than the the code you didn't have to write!

👍

motiz88

Back with another progress update! That beta release is still coming (eventually).

I've implemented the first version of patch saving and renaming (on Android and iOS - the Web UI for this still needs wiring up). The options are:

  • Quick Save: write directly to the current patch (only enabled for USER patches)
  • Save As: select a USER patch slot to write to (similar to the WRITE function on the GR-55 itself

Having done that, I'm really keen to build an Auto Save toggle which just continuously saves your changes directly to the USER area. Auto Save will likely be opt-in (off by default) because GR-55 users are used to edits being non-destructive. (Any thoughts on this?) Implementation-wise, I can leverage some clever queueing/scheduling to do this in the background so that the app doesn't feel 2x as slow as a result of writing every parameter twice. (SysEx is slow, y'all.)

At any rate, I realised Auto Save would pair really well with some form of undo/redo functionality, making it safe to experiment with parameter changes even on your "important" patches. So I'm building that too 😇


Separately, I've also started experimenting with new concepts for the UI, for example a DAW-inspired mixer view (see below). This is likely further out from being completed and might not be stable in the initial release. (I'll try to include it behind an experimental toggle, though.)



motiz88

It's happening - iOS testers wanted! Please message me if you would like an invite to test the app on iPhone or iPad. I'll use the feedback from early testers to prepare a public release on the App Store.

An Android beta version is close behind though a lower priority for me - let me know if you're interested in it specifically.

I've run into some difficulties with the undo/redo and auto-save features, so I've yanked them out for now. Undo/redo will probably come back when I get around to it, but I have to declare defeat on auto-save: Writing patches on the GR-55 makes the device unresponsive for a few seconds, and resets the state of certain inputs such as CTL and the expression pedal, so it really gets in the way of fluid patch editing.

motiz88

The GR-55 Editor app is now in open beta for iOS and Android! You can get it at https://gr55.app/.

If you do try the app, please let me know your thoughts afterwards. I'm really keen to make this a broadly useful app for GR-55 users.

gumtown

Haven't tried it with the GR-55 yet,
 but looks good,
great effort !! :)
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

baatkarlo

@motiz88:

I've got the app installed via Testflight on my iPhone 15 Pro Max. I also ordered a Roland WM-1 Low Latency MIDI Adapter for my GR-55. I will report back after testing this setup on my thoughts regarding your app.

Excellent idea to develop this app! Thank you for your passionate work! I'm also curious if the app allows writing to the GR-55 USB memory directly from the iPhone for WAV and AIFF backing tracks wirelessly? This would be superb.

Also, any thoughts about a GR-55 VST 3 plugin for DAWs? That would be a true gift for GR-55 integration into recording with DAWs. If Fishman TriplePlay can do it, why can't we have one for GR-55, GR-20, GP-10 and VG-99?

UPDATE:

I am able to use the GR-55 app on my iPhone via Testflight. It connected to the Roland WM-1 BT device and is working flawlessly. It frees me from lugging a laptop around for USB connectivity and control for live performances!

One thing I want to request @motiz88:
The System settings are unavailable in the mobile app unlike in Gumtownbass PC app. Any chance these can be added to the UI in the mobile app?
Eat sleep get up play. Eat sleep get up play. Eat sleep get up play.