---
slug: "grandma3-osc-keys"
title: "GrandMA3 OSC Hardkeys Plugin"
date: "2025-12-05"
modified: "2025-12-05"
description: "A free MA3 LUA plugin to emulate key presses as if they were entered on a console or command wing"
---

Back when I decided to invest in some MA hardware of my own, I only had budget for a command wing at most. At the time MA2 was already more or less discontinued, and MA3 wasn't really ready to be used on shows yet. So, instead of a command wing, which would lock me in MA2 or MA3, I decided to buy a GrandMA3 OnPC 2port node to unlock my parameters, and build my setup around that. 

That setup started out with a little midi controller for faders, and using the keyboard of my laptop to do my programming using keyboard shortcuts. Shortly after, I custom-built a keyboard to enter MA's specific keyboard shortcuts with single key presses. This was a big improvement, but working through keyboard shortcuts had it's problems. One big nuisance was constantly having to switch keyboard shortcuts on and off if I wanted to do different things, and they buttons would still do random other actions if programs other than MA3 OnPC were currently highlighted.

I figured out pretty early on that it would be aMAzing to be able to trigger MA's specific programming keys through OSC, but I never figured out a way to do so, until now!

I present to you: the MA3 OSC Keys plugin.

It works quite simply. First, it creates a block of 10 blank quickeys, generally somewhere out of the way. It then assigns these 10 quickeys to 10 executor buttons (also somewhere out of the way, and configurable). When the plugin is called with a command, such as "STORE press", it figures out the first available quickey slot. It then sets it's keycode to STORE, and "presses" it's corresponding executor button. When the plugin then receives a "STORE release" command, the executor button is "released" and the quickey slot is marked as free. This makes it so you can press and hold a number of keys in various overlapping sequences without any collisions or needing a separate quickey and executor for each possible keycode.

You can download the plugin (and any other ones i've made) [over here](https://git.riksolo.com/RikSolo/GrandMA3-Plugins/releases/tag/latest).

> **Note:** This is the very first iteration of the plugin, and it's not been tested very thoroughly yet. Things are bound to change or need fixing, so keep an eye on this page for updates.

# Installation & Usage
1. Download the plugin from the link above.
2. Take both of the files of the "grandma3-plugins/OSC Keys" folder and put them where you normally put your MA3 plugins
	- If you're not sure where that is, your best choice is probably on whichever USB stick you also keep your showfiles, the folder will be `/ma/ma3_library/datapools/plugins`
3. Open up MA3
4. Edit an empty slot in your Plugins pool in MA3, hit the "import" button on the bottom of the dialogue, and find the plugin.
5. If you haven't gotten an OSC input set up yet, create one:
	- In the MA3 menu, go to "In & Out", then into the OSC tab
	- Create a new OSC entry with the following settings:
		- Port: What port to listen on.
		- Receive: Yes
		- Receive Command: Yes
6. Open the plugin back up, select the first (and only) line in the table, and hit the Edit button on the bottom of the window.
7. Change the variables at the top of the plugin to your liking. There are comments above each one to tell you how they work.
8. Run the plugin once to initialize it.
9. From your OSC software, send a "String" type message to the IP of your machine, at the port you set in your OSC configuration earlier. The address should be `/cmd`, and the data should be something like `Plugin "RBOSCKeys" "STORE press"` or `Plugin "RBOSCKeys" "MA1 release"`.
	- If you change the name of the plugin, you should rename the first value after the "Plugin" keyword. 
	- `STORE` can be replaced with any valid MA3 keycode. This list is the same of codes that are available for use in Quickeys
	- the last word can be "press" or "release". For proper functionality of the plugin, it's very important that whenever you send a "press" event for a keycode, you also send a "release" event afterwards. The reason there aren't just one single action is for keys which also have functionality when held, such as the MA key. 

# Support
I maintain this plugin in my free time. This plugin is available free, and the code is free for you to edit. If you have any issues with the plugin, feel free to contact me through the contact info on this website, but please don't expect me to respond right away. 

If this plugin makes your life better, you can consider buying me a beer through [ko-fi](https://ko-fi.com/riksolo)