G2 editor FMX

This is another editor I have been working on. It was given it the working title “G2 editor FMX”. FMX stands for the “Firemonkey” framework of the new Delphi compilers which is a vector based graphics framework. These compilers can target multiple operatiing systems.

Source code can be foud on github: BVerhue/nord_g2_editor

This editor might be useable on a touch screen monitor or mobile device. Might be, because I haven’t been able to really test it yet on a touch screen.

The back end of this editor, which handles the communication with the G2 hardware is the same as the previous editor, but I’ve redesigned the graphical user interface and also I’ve adapted the source code so it compiles for all the supported target platforms of Delphi Xe5: Windows 32/64, Osx, iOS and Android. So it will compile, but on iOS I’ve not been able to activate the USB connection.

I’ve tested it on a couple different computers and operating systems:

  • Windows XP : works, but graphics are not great
  • Windows 7 : works, graphics a bit better not as good as Windows 8
  • Windows 8/81 : works, graphics are good
  • OSX Snow leopard : works, graphcs are good, but a bit slower than Windows
  • Android : I will make a special application for Android
  • iOS : No USB connection possible

You can download the latest version here. If you want to try out the editor, please read the help file first. Although the part about the user interface is now a bit outdated, it is still usefull for installation. I’m going to update it of course…

Link Description Version Date Remark
 g2_editor_fmx_win_v0.4 Windows version 0.4 (Beta) 30-May-2014 Delphi XE5
 g2_editor_FMX_OSX_0.4 OSX version 0.4 (Beta) 30-May-2014 Delphi XE5
Help file Help file for the g2_editor_fmx 0.3 1-Feb-2014  Outdated 🙁

Version 0.4 fix (30-May-2014)

  1. Small up down buttons where switched on the knobs
  2. External clock didn’t show on in editor, now the background turns red when “Ignore external clock” is False and externally received BPM is shown
  3. Fixed an exception error at destruction of parameter objects when switching patches

Version 0.4 (29-May-2014)

  1. Solved bugs with connection to G2 VST in Windows
  2. Implemented USB send message thread for better control of USB message flow, mainly for Android
  3. Worked around a tab key order bug in the TTabControl
  4. Replaced the external files “ModuleDef_v3.xml”, “ParamDef_v3.xml”, ModilePanelDefs.txt with internal data
  5. Made loading of “Symbols.svg” optional
  6. Added another optional external file “g2EditorColorScheme.xml” for modification of part of the color scheme
  7. Replaced the “Tree view” patch browser with a list box and directory buttons, because the tree view is buggy and slow
  8. Replaced the old event handling system with the subject-observer method to seperate ui from backend
  9. Replaced the led and VU-meter handling system to seperate ui from backend
  10. Added “Auto assign midi” functionality in “App settings” frame and “Knobs” frame (enter midi CC value in edit boxes in the knobs frame)
  11. Solved bug with momentary buttons on modules
  12. Made the note sequencer slider bigger
  13. Solved bugs in the Pianoroll when shifting notes
  14. Changed some of the short cut keys – Shift + Arrows to move the cursor, Shift + Enter to add a module
  15. When moving the cursor with the keys, the viewport will move if necessary
  16. Changed the gui interface of the main window to make more room for the patch
  17. Replaced tabs with subforms for knobs, banks, patch settings, synth settings and application settings

Problems solved in v0.35 (2-Feb-2014)

  1. Solved a bug, which became apparent after switching to the clavia editor “Version corrupted, Ctrl assignment problem”, the reason was that I allowed some actions, specifically assigning morphs/controlers/knobs to parameters that the clavia software does not allow. For example assigning a controler to patch parameter “Volume level”. So now I’ve disabled these functions for a number of parameters/settings: Volume level, Clock tempo, Clock run, Voice count, Voice mode (the last four aren’t really patch parameters anyway).
  2. Solved a bug which caused an access violation when changing the morph value of a parameter with key Ctrl + Up arrow, or Crl + Down arrow
  3. Added the functionality Ctrl + Mouseclick for setting morph range

Problems solved in v0.3 (1-Feb-2014)

  1. Cleaner and faster termination of the USB connection on closing of the application.
  2. Changed the location of the ini file “g2editorfmx.xml”. On windows this will be in the application folder, on Osx this will be in the documents folder. If you experience problems on startup you can try to delete this file. Also if you install version v0.3 and you had installed v0.2 earlier, you should delete this file, because I changed something in the file layout.
  3. Added functionality “Auto assign midi to knobs”. You can enable this in the application settings. You can assign CC numbers to knobs in the “Knobs frame” (parameter pages). If “Auto assign midi” is enabled, these CC’s will be automatically assigned to the parameter associated with the knob on patch load.
  4. Changed the patch file browsing tree. Sub directories are only read if you expand a directory in the tree. This will make the application load faster and also prevent the application reading too much directories at once.
  5. A number of small bugs.
  6. Updated help file.

Problems solved in v0.2 (12-Jan-2014)

  1. Osc didn’t show zero Herz correctly in partial mode
  2. Changed border for selected modules to dark gray in stead of white, to make them stand out better
  3. Spaced modules out a few pixels in the patch window also to make the selected ones stand out better
  4. “Init variation” function wasn’t implemented correctly, also added a button “Copy to init” on the Param tab.
  5. Added “Select all VA” en “Select all FX” on Module tab.
  6. Implemented the “Paste params” function (Ctrl+E), also added a “Paste params” button on the Module tab.
  7. Implemeted function “Change morph labels”: select Morph in Knobs frame, select a slider, on the Params tab you can edit the label.
  8. Added a knob Default value on Params tab.
  9. Corrected an error on renaming performances
  10. Icons of the level shift controls on LFO’s didn’t match the selected value, corrected that.
  11. Sustain pedal morph button has three modes “Sust pd”, “G Wh 1” and “knob”, I had only put in two, corrected that.
  12. Corrected an error in the Delete buttons of the Add Cable popup frame.
  13. A number of small bugs.

22 thoughts on “G2 editor FMX

  1. Enrico Cosimi

    many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many many THANKS!!! 🙂

    Reply
  2. James

    WOW this is incredible great news! I want this to use on ipad. I hope this has the genetics/mutate function the same as original g2 editor!

    Can you make this work with a midi output so it can be used on any other synth too ?

    THAT is EXACTLY what i have been waiting for! I have a G2, but i would also LOVE to use it as an editor/patch genetics mutator for other synths too!!!

    Any idea how long until ios version is available? I hope it will work on 2nd gen ipad…

    THANKS!

    Reply
    1. Bruno

      Whoa James 🙂 Thanks for your enthousistic reply but I must temper your expectations a bit, because I haven’t been able to setup a usb connection on iOS, Apple basically doesn’t allow it. Midi maybe possible though, but also the patch mutator is something I haven’t even tried to build in the editor yet.

      But you have some interesting ideas, it all will take some time to see what’s possible and what not…

      Bruno.

      Reply
      1. Nico Raftis

        I’m not sure if I understand the issue with iOS? I use my zoom h6 as an audio interface, and I use midi controllers like the qunexus with the iPad, I just had to get the camera connection kit to plug in the USB jack to the iPads proprietary port.

        I found out that the iPad mini fits perfectly in the empty area of the g2 at the top right where the logo is. Also with the magnetic iPad mini Smart Cover it magnetically holds itself right in place! It’s such a cool combination for live performance and jamming. I really want to have an editor for iOS so that I can use this like a bad ass little workstation!

        What type of data needs to be passed back and forth from the editor? I am certain that it will work, but you may need to get a peripheral sdk for the iPad. I would be super down to help out with this in any way I can. My app coding skills are a bit novice, but I would be interested in learning in order to make something like this. I feel like there could be some really cool possibilities for touchscreen integration.. Like have the sequencers setup so you can view a few with nice touchscreen sliders, or a patch generator! That could randomly generate patches.

        Reply
        1. bverhue Post author

          Here is a description of some of the messages that are exchanged between the G2 and the editor : http://www.bverhue.nl/G2EditorHelp/G2_messages.html

          The USB connection uses interrupt and bulk transports and it uses a vendor specific protocol for the exchange of messages.

          I’m not a low-level programmer so for things like usb programming I rely on finding examples on the internet. So far I haven’t found anything I could use for ios. You can have a look yourself for example by googling “ios usb programming”.

          What I understand is that you can basically only connect to devices that are in the mfi programm, or you could use a special cable from redpark but then the software you develop for that is not accepted in the apple store etc. ect. You cannot just plug in any usb device in an ipad, there are a lot of restrictions, so that is basically the reason why I have given up on ios for now.

          I don’t have an ipad myself, so I can’t test if the g2 is even recognized as an usb device when you plug it into an ipad or that the whole thing is going to explode when you try.

          Reply
          1. Nico Raftis

            what about something clever like roland did fro their modular configurator utilizing the dac outputs from the audio jack to send data signals, I am realizing that sounds crazy but with some sort of hacked adaptor cable it could work. Also, I bet the USB is easier then you think. I used to say the same thing “I am not low level enough for this or that” but then I started looking at data sheets for SPI chips and the serial language in general is really simple. Its just a stream of binary formatted to a certain clock timing and however it is that it works on your PC and android software will likely be easily adaptable. Maybe apply for a dev account at apple and they probably have an easy to use SDK for this. I would be down to help out. I recently hooked up my teensy 3.1 arduino to the ipad and it was recognized just fine as a class compliant midi controller, I guess at the end of the day what I am saying is “if there is a will, there is a way” and I have a serious will 😛

    1. Bruno

      Well I’m rewriting parts of the code at the moment to decouple the user interface from the g2 specifics. But apart from that,it will involve a serious amount of work to develop the g1 specific interface, or a generic midi interface as James suggested. Most of the g1 file structure and messages are already known thanks to the Nomad project. It’s maybe something for later, have my hands full at the g2 at the moment.

      Reply
  3. ian urson

    first of all, a big THANKS for the new editor! the clavia modulars are very deep machines, and they don’t deserve to be forgotten so soon just because clavia suddenly decided to make organs and e-pianos.
    i am eager to test your new editor on my g2!

    thank you, thank you, thank you!!!!!

    and please don’t neglect the g1 as soon as you find some time. it needs some love too!
    🙂

    Reply
    1. bverhue Post author

      The main difference is that it unlocks 2 extra modules: the driver and the resonator. And you can use the editor in combination with a vst that is part of the prevous (old) open source editor. On the other hand, it doesn’t have the patch mutator. The cpu/memory usage calculation is bit off. Some may not like the user interface, I thought I try to make it ready for touch screen but haven’t been able to test that. Please remember that it’s just a hobby project that got a bit out of hand, I wish I had some more time to work on it, but that’s not going to happen soon.

      But the most interesting thing for patching are the two extra modules, these are available in the old open source editor also.

      The old editor looks a bit more like the nord editor but can’t be used on a mac. The vst is also only windows.

      Reply
  4. R Lawrence

    (Consolidated request)
    Wow! I am reviving my G2 modulars and was looking for the best way to move forward with them.
    This looks wonderful!!!
    I have a wish list / question list / and if possible to do, would be happy to “hire” your time to do them…
    Or if you know someone who is best to make it happen… Thank You!
    #1) Could it be possible to control multiple G2 devices from one editor ( I believe the first generation could control “four” units from the editor according to Sound on Sound… I think I had it going on my (3) first gen nord’s years ago too).
    #2) A big one for me… Could a module be made to do phase reverse / and time-adjust samples delays (one at a time like Avid/Digidesign’s “Time adjuster” plug-in. Which has a smaller version to go from 1-256 and bigger for longer times)? My ears tell me: when I have an oscillator, and have patched parallel module chains, (different modules patched to different number of modules running parallel chains into mixers), that there are “out of phase” issues and “sample delay” issues causing phase problems and eating bottom or top-end, etc. This could be a simple way to help keep everything fat, warm and big with giant patches. it would be helpful to have a chart of the sample delays of each module too. Lining up sample delays in-time works- wonders.
    #3) To be able to receive poly aftertouch from another controller or sequencer (Logic etc.) ! 🙂
    for CS80 / GX-1 style patches.
    #4) There is a new 3d-poly pressure standard that the Roli Seabord, Linnstument , Madrona, and other are adopting … it’d be great to control a Nord Modular G2 rack with a Roli Seaboard.

    Thank you again! R Lawrence

    Reply
    1. bverhue Post author

      Hi,

      Thanks for your comment.

      about your questions:

      #1: Yes the editor supports max 3 G2’s at the moment.
      #2, #3, #4: I’m afraid these things can’t be changed by the editor software. These things are all part of the G2 firmware and I can’t make modifications in the firmware of the G2.

      Bruno

      Reply
    2. Nico Raftis

      #2 the delays:
      I believe this is already possible using the delay node, or some kind of mixer feedback trickery. Look on the forum for z-1 or single sample delay, I believe I had seen a whole slew of clever patches that made custom oscillators from the bottom up using mixer nodes and feedback. Also worth looking into are all pass filters, those can shift phase of certain frequencies and are pretty simple but I don’t think there is a module for them so again it would be some single sample feedback with an inverter and summing mixer.

      3/4: this should all be possible, I might suggest checking out pure data to see if there is a patch or external that converts the data. or if you don’t mind paying Im fairly certain MAX 7 can do this pretty easily. These would require a bit of searching to see what has been done in the community already and if someone hasn’t already made a patch to convert the multi sensor data to midi at worst case you would have to make a patch, but it should be pretty straight forward.

      Reply
  5. Datanois

    bverhue: First, thank you very much for this! I am looking for a way to “headless” (from the terminal / commandline on OSX / LInux) upload pch2/prf2 to the G2, because I am working on a big, automated library of sound samples (over 4000) of the G2.

    Could you help me with a headless load-only version? I just want it to take one argument which is the filename, load it into the G2 and then just exit.

    That would be great!

    Reply
  6. Datanois

    The process for my library is as following:
    – Upload patch to G2
    – Start “sox record” to record audio upto 1 minute, or if silence is detected (in background)
    – In the Background play Audio (for Audio In patch testing) and one of my test midi files simultaneusly (for interactive patches)
    – Stop recording and playback
    – Start over with next patch

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *