Author |
Message |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
Posted: Wed Nov 24, 2021 9:01 pm Post subject:
G2 Engine upgrade / mod to G2 |
 |
|
Hello,
It is possible to hack the NM G2 Engine using the G2 or G2x front panel, ie pluging the front panel of G2 onto the motherboard of the engine and use it as a controller?
It seems to me that the G2 / G2x / G2 Engine all use the same motherboard.
G2 / G2X:
G2 Engine:
 |
|
Back to top
|
|
 |
3phase

Joined: Jul 27, 2004 Posts: 1189 Location: Berlin
Audio files: 13
G2 patch files: 141
|
Posted: Fri Dec 10, 2021 9:55 am Post subject:
|
 |
|
probably..
but seens the engine is even more rare than the keyboard version.
seems the g2 will be an expensive classic..
still an unbeatable package with the 8 variation buttons. |
|
Back to top
|
|
 |
Electromagnetic Wave

Joined: Apr 28, 2013 Posts: 305 Location: Kebek
G2 patch files: 38
|
Posted: Sun Jan 09, 2022 8:51 pm Post subject:
|
 |
|
Hey,
Quote: | On the question of modding the G2 Engine with G2 key features I can quote the Clavia developers:
The key versions have their specific features on the panel circuit board, e.g. the A/D converter for the pedal input is on the panel board, also some of the mic preamp circuitry. As there is no panel board in the Engine there is no straightforward way to add those features to an Engine. On startup the motherboard detects the presence of a panal board, if it can't find one all software that handles the G2 key and G2X specific features is simply not loaded and can't be activated (meaning all panel board functions plus mic preamp plus control pedal input).
The G2X panel board has an A/D chip with two more channels as the 3 oct G2 key, to handle the two extra global wheels. These global wheels cannot be simply added to the 3 oct G2 key, as it lacks A/D channels to read them. |
https://www.electro-music.com/forum/post-59286.html#59286
Recently I wanted to do something similar > mod a G2 with some kind of switch to use the front panel to control a g2 keyboard and a G2 engine. I needed to understand how the OS would react if I assigned the front panel to the G2 engine while the G2 keyboard and G2 engine were already on. I believe this information closed the topic for me.  |
|
Back to top
|
|
 |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
|
Back to top
|
|
 |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
|
Back to top
|
|
 |
Electromagnetic Wave

Joined: Apr 28, 2013 Posts: 305 Location: Kebek
G2 patch files: 38
|
Posted: Sun Mar 06, 2022 9:56 pm Post subject:
|
 |
|
Thanks for sharing the service manual here! I think these 2 resistors are related to the extra controllers on the G2X. I did not follow the traces on the pcb but they must be connected. On the other hand, I doubt that the OS makes the difference between G2 keyboard and a G2 engine in the same way, with a resistor. But I'm not saying it's impossible to spoof / emulate G2 keyboard components and cheat the G2 engine OS. But it requires a little material, time .. and who wants to risk damaging his G2! But if you have other leads I can participate in the project (the one you are talking about at the start) and do some tests if I don't think it's too risky. I had in my possession a G2X, a G2 keyboard and a G2 engine. I changed some parts on some of them.
Quote: | Please vote if you would buy a controller with the same functionality as the G2 keyboard control panel.
It is possible according my research. I could implement such a controller based on the number of votes. |
I also did some research in this direction. When I wanted to convert the parameter names for the 'parameter pages' to send them to the screen of a novation SL mk2. At this point several people were suggesting sites that make custom MIDI control surfaces. I use the Novation SL mk2 to control many other machines, especially with sysex. So I use the Novation to control the G2 engine parameter pages I gave up making a custom controller for the G2. But you have my vote if you want to work on it, if it's quality, serious and it costs a few hundred dollars.
Can you give a little more detail on what you have in mind? Would the engine OS be able to recognize the custom control surface as a G2 keyboard? |
|
Back to top
|
|
 |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
Posted: Wed Jul 20, 2022 12:36 pm Post subject:
|
 |
|
Electromagnetic Wave wrote: | Thanks for sharing the service manual here! I think these 2 resistors are related to the extra controllers on the G2X. I did not follow the traces on the pcb but they must be connected. On the other hand, I doubt that the OS makes the difference between G2 keyboard and a G2 engine in the same way, with a resistor. But I'm not saying it's impossible to spoof / emulate G2 keyboard components and cheat the G2 engine OS. But it requires a little material, time .. and who wants to risk damaging his G2! But if you have other leads I can participate in the project (the one you are talking about at the start) and do some tests if I don't think it's too risky. I had in my possession a G2X, a G2 keyboard and a G2 engine. I changed some parts on some of them.
|
Thanks for your support.
Quote: | I also did some research in this direction. When I wanted to convert the parameter names for the 'parameter pages' to send them to the screen of a novation SL mk2. At this point several people were suggesting sites that make custom MIDI control surfaces. I use the Novation SL mk2 to control many other machines, especially with sysex. So I use the Novation to control the G2 engine parameter pages I gave up making a custom controller for the G2. But you have my vote if you want to work on it, if it's quality, serious and it costs a few hundred dollars. |
Are you able to control the Parameter Pages or other functions (like page buttons) via MIDI (Sysex not CC) commands? If so then I would go to that direction and make an external controller rather than hacking the hardware. Can you share more detail on the sysex implementation. I did not found any information on the internet other than what is written in the manual.
Quote: | Can you give a little more detail on what you have in mind? Would the engine OS be able to recognize the custom control surface as a G2 keyboard? |
The Engine main board is a population variant of Keyboard version board (some components are soldered differently). My original idea was to make a controller that could be connected to the Engine's main board (However it would be much more elegant to connect it via MIDI/USB).
My goal is to achieve the same user experience as the Keyboard version gives. |
|
Back to top
|
|
 |
Electromagnetic Wave

Joined: Apr 28, 2013 Posts: 305 Location: Kebek
G2 patch files: 38
|
Posted: Sun Jul 31, 2022 5:49 pm Post subject:
|
 |
|
Quote: | Are you able to control the Parameter Pages or other functions (like page buttons) via MIDI (Sysex not CC) commands? |
Not directly but with the non-official G2 editor in the middle yes. I discussed about it and I shared a youtube video here .
https://electro-music.com/forum/post-450758.html#450758
The final goal is not to use the moded editor for the GUI but only to make the bridge between the Novation surface control and the G2 engine > to control the parameter pages .. and everything else (patch settings > arp, tempo, etc.., slot selection, etc..). All texts will show on the Novation screens (for each 8 encoders / buttons) if I can understand how to sniff the parameter page text from the G2 screens. I know how to send it after to the Novation screens and I should be able to edit the texts in real time. |
|
Back to top
|
|
 |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
Posted: Mon Aug 01, 2022 5:54 am Post subject:
|
 |
|
Electromagnetic Wave wrote: | Quote: | Are you able to control the Parameter Pages or other functions (like page buttons) via MIDI (Sysex not CC) commands? |
Not directly but with the non-official G2 editor in the middle yes. I discussed about it and I shared a youtube video here .
https://electro-music.com/forum/post-450758.html#450758
The final goal is not to use the moded editor for the GUI but only to make the bridge between the Novation surface control and the G2 engine > to control the parameter pages .. and everything else (patch settings > arp, tempo, etc.., slot selection, etc..). All texts will show on the Novation screens (for each 8 encoders / buttons) if I can understand how to sniff the parameter page text from the G2 screens. I know how to send it after to the Novation screens and I should be able to edit the texts in real time. |
I also use the unofficial G2 editor with an AKAI Midimix. Actually the same method as you except I use a PC as intermediate interface.
I have dropped a message in the post you've mentioned for Bruno. Hope he will give us some insights about G2's USB protocol. |
|
Back to top
|
|
 |
brunov
Joined: Aug 03, 2011 Posts: 227 Location: delft
Audio files: 1
G2 patch files: 2
|
|
Back to top
|
|
 |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
|
Back to top
|
|
 |
brunov
Joined: Aug 03, 2011 Posts: 227 Location: delft
Audio files: 1
G2 patch files: 2
|
Posted: Wed Aug 03, 2022 6:35 am Post subject:
|
 |
|
A knob on the parameter page refers to a parameter.
To change the value of a parameter through USB you have to send the following message:
(In file g2_mess.pas, line 3657)
function TG2MessSlot.CreateSetParamMessage( aLocation, aModule, aParam, aValue, aVariation: byte): TG2SendMessage;
begin
Result := TG2SendMessage.Create;
Result.WriteMessage( $01);
Result.WriteMessage( CMD_NO_RESP + CMD_SLOT + SlotIndex );
Result.WriteMessage( FPatchVersion);
Result.WriteMessage( S_SET_PARAM);
Result.WriteMessage( aLocation);
Result.WriteMessage( aModule);
Result.WriteMessage( aParam);
Result.WriteMessage( aValue);
Result.WriteMessage( aVariation);
end;
CMD_NO_RESP (Hex30) means it is a message that does not initiates a response
CMD_SLOT (Hex08) + SlotIndex refers to the slot the patch is in.
FPatchVersion is a number that increases every time a structural change is made in a patch.
S_SET_PARAM (Hex40)
aLocation refers to the VA or FX section.
aModule is the Module id in the location
aParam is the id of the Param in the module
aValue is the new value for the parameter
aValraition is the variation
The in-memory data structure of the G2 is more or less the same as the file structure. The file structure consists of "chunks". So there one or more "module" chunks, one or more "cable" chunks, "module name" chunks, "parameter" chunks, "parameter name" chunks, "knob" chunks, "cc assignment" chunks and so on.
A single "Knob" in a "knobs" chunk has this structure
(g2_file.pas, line 566)
TKnob = class
private
FAssigned : TBits1;
FLocation : TBits2;
FModuleIndex : TBits8;
FIsLed : TBits2;
FParamIndex : TBits7;
...
With USB you can upload/download complete chunks but you can also send/receive all kinds of messages, one of which is setting a parameter value.
with MIDI (SysEx), as far as I know, you can only request a complete patch or performance and send a (changed) complete patch or performance. _________________ My old OS NMG2 editor: http://sourceforge.net/projects/nmg2editor/?source=directory
My new G2 editor FMX: http://www.bverhue.nl/g2dev/?page_id=17
Source code: https://github.com/BVerhue/nord_g2_editor |
|
Back to top
|
|
 |
brunov
Joined: Aug 03, 2011 Posts: 227 Location: delft
Audio files: 1
G2 patch files: 2
|
Posted: Thu Aug 04, 2022 9:36 pm Post subject:
|
 |
|
I'll explain a bit more on how the usb connection is set up:
The os editor uses the libusb library.
You can interface with the library using this header file.
In unit G2_USB.pas there are the functions for:
Setting up the connection:
function TG2USB.Init : boolean;
Closing the connection:
procedure TG2USB.Done;
Reading an interrupt (small) message:
function TG2USB.iread(addr: byte; var buffer; size, timeout: longword): integer;
Reading a bulk message:
function TG2USB.bread(addr: byte; var buffer; size, timeout: longword): integer;
Writing a bulk message:
function TG2USB.bwrite(addr: byte; var buffer; size, timeout: longword): integer;
For reading messages from the g2 a listening thread is set up:
procedure TReceiveMessageThread.Execute;
This thread blocks waiting for an incomming interrupt message. Possibly this is then followed by a bulk message.
For sending messages a thread is used also, but this may not be necessary. _________________ My old OS NMG2 editor: http://sourceforge.net/projects/nmg2editor/?source=directory
My new G2 editor FMX: http://www.bverhue.nl/g2dev/?page_id=17
Source code: https://github.com/BVerhue/nord_g2_editor |
|
Back to top
|
|
 |
sellblue
Joined: Nov 24, 2021 Posts: 12 Location: Austria
Audio files: 3
G2 patch files: 1
|
Posted: Fri Aug 05, 2022 9:44 pm Post subject:
|
 |
|
brunov wrote: | I'll explain a bit more on how the usb connection is set up:
The os editor uses the libusb library.
... |
Thanks Bruno for your detailed description. I'll try to understand all information and try to implement something. |
|
Back to top
|
|
 |
mosc
Site Admin

Joined: Jan 31, 2003 Posts: 18235 Location: Durham, NC
Audio files: 222
G2 patch files: 60
|
Posted: Sat Aug 06, 2022 12:12 pm Post subject:
|
 |
|
3phase wrote: |
seems the g2 will be an expensive classic..
still an unbeatable package with the 8 variation buttons. |
Yep. It's been years since it was discontinued. I stopped patching it because of the discontinuation. I've been using it as a MIDI controller for playing out. Virtually all of my work is on IOS apps now. There a several nice "modular" apps there, but I'm finding the G2 is just as good or better than any of them. Easier to program as well.
As time goes on, I'm finding myself loading some patches from the archive here and finding them very useful in my music. I use the G2X on virtually every Twyndyllyngs performance live streams on e-m.
When we get this electro-music.com server migration issue sorted out, don't be surprised to see me posting some more patches. _________________ --Howard
my music and other stuff |
|
Back to top
|
|
 |
Electromagnetic Wave

Joined: Apr 28, 2013 Posts: 305 Location: Kebek
G2 patch files: 38
|
Posted: Thu Sep 08, 2022 3:55 pm Post subject:
|
 |
|
Awesome! Thanks for this additional info in gold brunov.
I asked you a question in "NMG2 Open Source Editor" topic. Do you have an idea how to collect controllers names (with OSC or whatever) from the parameter pages box on the G2? I want to mimic G2 display and pots with a Novation SL mk2. I know how to send/change knob names in real time with sysex for the Novation SL mk2. if I understand how to sniff parameter names in real time, I should be able to code a small tool that will do the conversion to sysex and send it to the Novation screen. I thought it might be easier from your editor to send the name of the parameters to an external tool than with the official editor
The Novation has 8 infinite knobs and 8 aligned buttons, then a screen at the top of each knob like the G2.
Cheers! |
|
Back to top
|
|
 |
brunov
Joined: Aug 03, 2011 Posts: 227 Location: delft
Audio files: 1
G2 patch files: 2
|
Posted: Fri Sep 09, 2022 4:15 am Post subject:
|
 |
|
Probably the simplest way is to initiate a patch/perf sysex dump from the g2 over midi and extract the knob assignments and parameter names from this data.
The complicated way would be to create a program that gets the data over the usb interface, as explained in the above posts.
There is also maybe a third way, that is you can connect to NMG2 OS editor using TCP/IP. The editor must be opened and connected to the G2 of course, but then you can get (or send) G2 messages over TCP/IP to the editor. These are the same messages you would use over the USB interface.
The TCP/IP port and host are on the "Application settings" dialog, tab TCP/IP.
This can be a bit complicated too of course, depends on your programming sklils. What programming language do you use? _________________ My old OS NMG2 editor: http://sourceforge.net/projects/nmg2editor/?source=directory
My new G2 editor FMX: http://www.bverhue.nl/g2dev/?page_id=17
Source code: https://github.com/BVerhue/nord_g2_editor |
|
Back to top
|
|
 |
Electromagnetic Wave

Joined: Apr 28, 2013 Posts: 305 Location: Kebek
G2 patch files: 38
|
Posted: Fri Sep 09, 2022 2:18 pm Post subject:
|
 |
|
Your first option is brilliant and simple. But I don't have a clear idea how I can only display the parameters of the current 'parameter page' on the 8 knobs of the Novation SL mkii. I assigned control changes on Novation SL mkii buttons to change the parameter pages (1,2,3,A,B,C,D,E) of the G2 with NMG2 OS editor. I imagine that a solution to make the bridge in real time would be to send the value of the ccs assigned to the 'parameter pages' to the tool to be programmed. After the value for the letter and number of a 'parameter page' (A,B,C,1,2,3,4,5) are sent the tool will update the name of the 8 knobs on the Novation SL mkii by sending the name of the parameters converted into sysex messages.
Quote: | The complicated way would be to create a program that gets the data over the usb interface, as explained in the above posts. |
This is the option that looks like this that I was considering the most. I was wondering if it was not possible to modify the editor to retrieve the name of the parameters. Then send the 'pameter names' to the tool which will convert the names to the Novation screen.
Quote: | There is also maybe a third way, that is you can connect to NMG2 OS editor using TCP/IP. |
If I understand correctly this solution is similar to the previous one but using TCP/IP instead of USB?
I know visual basic. I can open a project in delphi and understand a bit but I'm not comfortable coding. What seems certain is that even if I make a tool to transfer the names of the 'parameter pages' I will continue to use the NMG2 OS editor in parallel to control the knobs of the 'parameter pages' in real time on a G2 engine |
|
Back to top
|
|
 |
brunov
Joined: Aug 03, 2011 Posts: 227 Location: delft
Audio files: 1
G2 patch files: 2
|
Posted: Mon Sep 12, 2022 1:03 am Post subject:
|
 |
|
Yes I think it is possible to send midi messages in response to label changes on the parameter pages. Only I don't think it is a good idea to build in code in the editor for a specific type of controller, this should be something that is generic.
I mean, you should be able to create some kind of config file in which you can define how to convert de label data into a SysEx message that is specific for your controller.
But, let's see wat sellblue ideas are on this.
[/img] _________________ My old OS NMG2 editor: http://sourceforge.net/projects/nmg2editor/?source=directory
My new G2 editor FMX: http://www.bverhue.nl/g2dev/?page_id=17
Source code: https://github.com/BVerhue/nord_g2_editor |
|
Back to top
|
|
 |
|