For full functionality of the editor you need to
install Libusb-win32, but you can aslo install only
the editor. In that case you can skip step one and go directly to step
two. The editor without the usb functionality lets you load/save
patches, edit patches, convert them to another format (fxp, sysex),
analyze them in the log window, or upload/download them to the G2 using
sysex. |
Feature | Clavia editor | Open source editor | Differences OS editor |
Runs on Windows | X | X | |
Runs on Mac | X | - | |
Runs on Linux | - | - | |
Main screen | See Main screen layout | ||
Toolbar | X | X | Seperate Synth toolbar and slot toolbars |
Perf: (name) | X | X | On patch manager window |
Master Clock | X | X | On Synth toolbar |
Slot buttons | X | X | Click on slot toolbar |
Connection indicators | X | X | On Synth toolbar |
Perf | X | X | On patch manager window |
New | X | X | File menu |
Init 1&2 | X | X | File menu |
Module Group selectors | X | - | Right click patch window to add modules, or "Add" menu |
Module Icons | X | X | On add module popup |
Patch Load, Cycles and Memory | X | - | |
Undo & Redo | X | X | Only undo |
Color | X | X | On Editor tools window |
Morph groups | X | X | |
Patch Name | X | X | |
Category | X | X | On patch manager window |
Voice Mode | X | X | |
Variation | X | X | |
Var Init | X | X | |
Patch Level | X | X | |
Visible cables | X | X | On Editor tools window |
Hide all cables | X | - | |
Shake cables | X | - | |
Patch window split bar | X | X | Position isn't updated yet when switching slots |
Popup menus in the editor |
|||
Patch window popup | X | X | Not complete yet |
Module popup | X | X | |
Parameter popup | X | X | |
Cable popup | X | X | |
Select popup | - | X | |
Add popup | - | X | |
Working in the editor | |||
Create a new empty Patch window | X | X | |
Add modules to a Patch | X | X | |
Rename a module | X | X | |
Move a module | X | X | |
Delete a module | X | X | |
Replace a module | X | - | |
Coloring a module | X | X | |
Connecting modules | X | X | |
Edit module parameters in a Patch | X | X | |
Voice Area and FX Area | X | X | |
Download a Patch to the synthesizer | X | X | Patch manager window |
Store a Patch | X | X | Patch manager window |
Delete a Patch | X | X | Patch manager window |
Creating Patch parameter Variations | X | X | |
Save a Variation | X | X | |
Copy a Variation | X | X | |
Variation Init | X | X | |
Edit parameter in all variations | - | X | Button on slot bar |
midi control of Variations | X | X | CC#70 |
Knobs and controllers | X | X | |
The Parameter Pages window | X | X | |
Assign a parameter to a knob | X | X | |
Assign all module parameters to a set of knobs | X | X | |
Parameter overview window | X | - | |
midi controllers | X | X | |
Auto assign midi controllers | X | - | |
Morph groups | X | X | |
Assign parameters to a Morph group | X | X | |
Deassign parameters from a Morph group | X | X | |
Edit parameters in a Morph group | X | X | |
Copy a Morph group to another source | X | - | |
Morph groups in separate Variations | X | X | |
Keyboard Morph and Pitch Stick morph | X | ||
The Editor and Performances | |||
Performance mode and Patch mode | X | X | |
Uploading a Performance to the Editor | X | X | |
Creating a Performance in the Editor | X | X | |
Keyboard Split (Keyboard Range) | X | X | |
Keyboard range and G2 panel split function | |||
Combining Split and Layer | X | X | |
The Global Parameter Pages | X | X | |
Storing a Performance | X | X | |
Storing in the synth | X | X | |
Saving on the computer | X | X | |
Renaming single Patches in Performances | X | X | |
Extracting Patches from a Performance | X | X | |
Extract a Patch and store it in the synth | X | X | |
Extract a Patch and save it on the computer | X | X | |
Deleting Performances in the synth | X | X | |
Exiting Performance Mode | X | X | |
Patch mutator | X | - | |
Patch adjuster | X | - | |
Additional functionality | |||
Jaws screenreading software compatibility | - | X | Experimental stage See Jaws compatibility |
Midi control of editor functions | - | X | See Midi control of editor functions |
Patch manager | - | X | See Patch manager |
Patch browser | X | X | See Patch browser |
G2 VST | - | X | See G2 VST |
Remote control | - | X | See Remote control |
System exclusive operation | - | X | See System exclusive operation |
Extra modules! driver and resonator | - | X | See Driver and resonator |
Message log | - | X | See Message log |
File Menu | |
There are no shortcuts in the file menu. | |
Edit menu and shortcuts | |
Ctrl + Z | Undo |
Ctrl + X | Cut |
Ctrl + C | Copy |
Ctrl + V | Paste |
Del | Delete |
Alt+V | Copy variation popup menu |
Alt+M | Edit module properties |
Alt+P | Edit parameter properties |
Other editting keys | |
Arrow Up | Increase selected parameter value |
Arrow Down | Decrease selected parameter value |
Ctrl + Arrow Up | Increase selected parameter morph value |
Ctrl + Arrow Down | Decrease selected parameter morph value |
Selection menu and shortcuts | |
S | Slot selection popup menu |
L | Patch location selection popup menu |
M | Module selection popup menu |
P | Parameter selection popup menu |
E | Cable selection popup menu |
Ctrl + A | Select all modules |
Other selection keys | |
1..8 | Select variation 1 to 8 |
F | Select patch location FX |
V | Select patch location VA |
A..D | Select slot A to D |
Arrow Left | Select previous parameter of module |
Arrow Right | Select next parameter of module |
Shift + Arrow Left | Select module left |
Shift + Arrow Right | Select module right |
Shift + Arrow Up | Select module up |
Shift + Arrow Down | Select module down |
Add menu and shortcuts | |
Shift + M | Add new module to patch popup menu |
Shift + E | Add new cable to module popup menu |
View Menu | |
Ctrl + P | Patch settings (not yet Jaws compatible) |
Ctrl + F | Parameter pages (not yet Jaws compatible) |
Ctrl + B | Patch manager (not Jaws compatible) |
Ctrl + B | Patch browser |
Ctrl + N | Patch notes (not yet Jaws compatible) |
Midi sysex shortcuts | |
F1 | Get active patch sysex |
F2 | Get active performance sysex |
F3 | Get patch sysex from bank |
F4 | Get performance sysex from bank |
F5 | Send patch sysex |
F6 | Send performance sysex |
Settings Menu and shortcuts | |
Ctrl + G | Synth settings (not yet Jaws compatible) |
Ctrl + R | Performance settings |
Application settings | (no shortcut) |
Button group | Midi Data Type | Channel | Parameter | Value1 | Value2 | Controller MODE | Controller Option | Display function | G2 Function |
Encoder group 1 (Buttons 4) | |||||||||
Rotary encoders (1) | CC | 1 | 40..47 | 0 | 127 | ABS | Bar | On | Parameter pages Knobs |
Buttons (2) Top row | CC | 1 | 48..55 | 127 | 0 | T ON | - | On | Parameter pages buttons |
Buttons (2) Bottom row 1..5 | CC | 1 | 32..36 | 127 | 0 | T ON | - | On | Select param page |
Buttons (2) Bottom row 6..8 | CC | 1 | 37..39 | 127 | 0 | T ON | - | On | Select param page column |
Push function encoders (8) | CC | 1 | 56..63 | 127 | 0 | T ON | - | On | Select variation |
Buttons (9) | CC | 1 | 105..108 | 127 | 0 | T ON | - | On | Select param page function (params, global, morph patch) |
Encoder group 2 (Buttons 4) | |||||||||
(Is a copy of encoder group 1, only different function for the push function of the encoders) | |||||||||
Push function encoders (8) 1..4 | CC | 1 | 101..104 | 127 | 0 | T ON | - | On | Select slot |
Push function encoders (8) 5 | CC | 1 | 60 | 127 | 0 | T ON | - | On | Patch manager Enable slot on/off |
Push function encoders (8) 6 | CC | 1 | 61 | 127 | 0 | TON | - | On | Patch manager slot keyboard on/off |
Push function encoders (8) 7 | CC | 1 | 62 | 127 | 0 | T ON | - | On | Patch manager slot Hold on/off |
Byte (Hex) | Meaning |
00 | Message size (determined on actual send) |
00 | Message size (determined on actual send) |
01 | Command type (80 = init, 01 = normal command) |
29 | First nibble 2 - editor expects and respons message from the G2. Second nibble 9 - Indicates slot B |
00 | Patch version counter (increased every time you load a new patcs in a slot) |
34 | Command for moving a module |
01 | Patch location (0=FX, 1=VA) |
01 | Module ID |
01 | Column |
09 | Row |
CC | Checksum (not shown) |
CC | Checksum (not shown) |
Command code | Message | Status | Meaning |
$01 | Unkown | ||
$02 | Q_SYNTH_SETTINGS | Known | Query synth settings |
$03 | S_SYNTH_SETTINGS | Known | Send synth settings |
$04 | Q_ASSIGNED_VOICES | Known | Query no of assigned voices |
$05 | R_ASSIGNED_VOICES | Known | Receive number of assigned voices |
$06 | Uknown | ||
$07 | Uknown | ||
$08 | Uknown | ||
$09 | S_SEL_SLOT | Known | Send select slot |
$0A | S_RETREIVE | Known | Send retreive patch from bank |
$0B | S_STORE | Known | Send store patch in bank |
$0C | S_CLEAR | Known | Send clear bank location |
$0D | R_STORE | Known | Receive store response message |
$0E | S_CLEAR_BANK | Known | Clear bank |
$0F | Uknown | ||
$10 | Q_PERF_SETTINGS | Known | Query performance settings |
$11 | C_PERF_SETTINGS | Known | Performance settings chunk |
$12 | R_CLEAR_BANK | Known | Receive clear bank response |
$13 | R_LIST_NAMES | Known | Receive bank patch list |
$14 | Q_LIST_NAMES | Known | Query bank patch list |
$15 | R_CLEAR | Known | Receive clear bank location response |
$16 | R_ADD_NAMES | Partly known | Sub message bank patch list |
$17 | S_PATCH_BANK_UPLOAD | Known | Send bank upload message |
$18 | R_PATCH_BANK_UPDLOAD | Known | Receive bank upload response message |
$19 | S_PATCH_BANK_DATA | Known | Send bank upload data |
$1A | Uknown | ||
$1B | Uknown | ||
$1C | S_ASS_GLOBAL_KNOB | Known | Send global knob assignment |
$1D | S_DEASS_GLOB_KNOB | Known | Send global knob deassignment |
$1E | S_SEL_GLOBAL_PAGE | Known | Send select global parameter pages |
$1F | Uknown | ||
$20 | Uknown | ||
$21 | C_PATCH_DESCR | Known | Patch description chunk |
$22 | S_ASSIGN_MIDICC | Known | Send midi cc assignment |
$23 | S_DEASSIGN_MIDICC | Known | Send midi cc deassignment |
$24 | Uknown | ||
$25 | S_ASSIGN_KNOB | Known | Send knob assignment |
$26 | S_DEASSIGN_KNOB | Known | Send knob deassignment |
$27 | S_PATCH_NAME | Known | Send patch name |
$28 | Q_PATCH_NAME | Known | Query patch name |
$29 | C_PERF_NAME | Known | Performance name chunk |
$2A | S_SET_UPRATE | Known | Send set module uprate mode |
$2B | S_SET_MODE | Known | Send set module parameter mode |
$2C | Uknown | ||
$2D | S_SEL_PARAM_PAGE | Known | Send select parameter page |
$2E | Q_SELECTED_PARAM | Known | Query selected parameter |
$2F | S_SEL_PARAM | Known | Send select parameter |
$30 | S_ADD_MODULE | Known | Send add module |
$31 | S_SET_MODULE_COLOR | Known | Send set module color |
$32 | S_DEL_MODULE | Known | Send delete module |
$33 | S_SET_MODULE_LABEL | Known | Send set module label |
$34 | S_MOV_MODULE | Known | Send move module |
$35 | Q_VERSION_CNT | Known | Query slot patch version counter |
$36 | Uknown | ||
$37 | S_SET_PATCH | Known | Send patch |
$38 | R_PATCH_VERSION_CHANGE | Known | Receive patch version changed (response to midi program change) |
$39 | R_LED_DATA | Known | Receive led data |
$3A | R_VOLUME_DATA | Known | Receive volume indicator data |
$3B | Q_MASTER_CLOCK | Known | Query master clock |
$3C | Q_PATCH | Known | Query patch |
$3D | S_MIDI_DUMP | Known | Send midi dump command |
$3E | S_SET_PARAM_MODE | Known | Set performance mode of synth on or off |
$3F | S_SET_MASTER_CLOCK | Known | Send set master clock |
$40 | S_SET_PARAM | Known | Send set parameter value |
$41 | Uknown | ||
$42 | S_SET_PARAM_LABEL | Known | Send set parameter label |
$43 | S_SET_MORPH_RANGE | Known | Send set morph range |
$44 | S_COPY_VARIATION | Known | Send copy variation |
$45 | Uknown | ||
$46 | Uknown | ||
$47 | Uknown | ||
$48 | Uknown | ||
$49 | Uknown | ||
$4A | C_MODULE_LIST | Known | Module list chunk |
$4B | Uknown | ||
$4C | Q_PARAMS | Known | Query parameter list |
$4D | C_PARAM_LIST | Known | Parameter list chunk |
$4E | Uknown | ||
$4F | Q_PARAM_NAMES | Known | Query parameter names |
$50 | S_ADD_CABLE | Known | Send add cable |
$51 | S_DEL_CABLE | Known | Send delete cable |
$52 | C_CABLE_LIST | Known | Cable list chunk |
$53 | Uknown | ||
$54 | S_CABLE_COLOR | Known | Send set cable color |
$55 | S_CTRL_SNAPSHOT | Known | Send midi controler snapshot command |
$56 | S_PLAY_NOTE | Known | Send play note |
$57 | Uknown | ||
$58 | Uknown | ||
$59 | M_UNKNOWN_2 | Uknown | |
$5A | C_MODULE_NAMES | Known | Module names chunk |
$5B | C_PARAM_NAMES | Known | Parameter names chunk |
$5C | Uknown | ||
$5D | R_EXT_MASTER_CLOCK | Known | Receive master clock |
$5E | Q_GLOBAL_KNOBS | Known | Query global knobs |
$5F | C_KNOBS_GLOBAL | Known | Global knobs chunk |
$60 | C_CONTROLLERS | Known | Controllers chunk |
$61 | Uknown | ||
$62 | C_KNOBS | Known | Knobs chunk |
$63 | Uknown | ||
$64 | Uknown | ||
$65 | C_MORPH_PARAM | Known | Morph parameters chunk |
$66 | Uknown | ||
$67 | Uknown | ||
$68 | Q_CURRENT_NOTE | Partly known | Query current note |
$69 | C_CURRENT_NOTE_2 | Partly known | Current note chunk (don't know the purpose of this data) |
$6A | S_SEL_VARIATION | Known | Send select variation |
$6B | Uknown | ||
$6C | Uknown | ||
$6D | Uknown | ||
$6E | Q_PATCH_TEXT | Known | Query patch notes |
$6F | C_PATCH_NOTES | Known | Patch notes chunk |
$70 | M_UNKNOWN_6 | Uknown | |
$71 | Q_RESOURCES_USED | Partly known | Query resources in use (cycles and memory) |
$72 | R_RESOURCES_USED | Partly known | Reseive resources in use (don't know how to interpret the data) |
$73 | Uknown | ||
$74 | Uknown | ||
$75 | Uknown | ||
$76 | Uknown | ||
$76 | Uknown | ||
$78 | Uknown | ||
$79 | Uknown | ||
$7A | Uknown | ||
$7B | Uknown | ||
$7C | Uknown | ||
$7D | S_START_STOP_COM | Known | Send start/stop led/volume message stream from G2 |
$7E | R_ERROR | Partly known | Receive error message from G2 (don't know meaning of error code) |
$7F | R_OK | Known | Receive OK message from G2 |
$80 | R_MIDI_CC | Known | Receive midi CC |
$81 | M_UNKNOWN_1 | Uknown | |
... |
Source | Site |
G2 patch file structure | http://dewb.org/g2/pch2format.html |
G2 patch file structure, midi, module info | http://www.iaf.nl/Users/BlueHell/ |
G2 USB messages,patch structure | https://github.com/msg/g2ools |
Polygon filling | http://www.sunshine2k.de/stuff/Java/Polygon/Filling/FillPolygon.htm |
Polygon filling | http://www.cs.rit.edu/~icss571/filling/index.html |
Polygon filling | http://www.malcolmmclean.site11.com/www/Bioinformatics/polygons.html |
Anti aliased disc | Nils Haeck M.Sc. www.simdesign.nl |
Anti aliased disk | http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Graphics/Q_23502480.html |
FPC Scanline alternatives | http://wiki.lazarus.freepascal.org/Developing_with_Graphics |
Cable simulation | http://www.charlespetzold.com/blog/2008/11/Simple-Cable-Simulation.html |
Cable simulation | http://lab.andre-michelle.com/cable-interface |
Cable simulation | http://wiki.answers.com/Q/What_is_the_formula_for_catenary_calculation#ixzz1iD2bBQpF |
Dlphi graphics | http://catch22.net/tuts/flicker |
Frequency calculation | http://www.phy.mtu.edu/~suits/NoteFreqCalcs.html |
Threads | http://www.delphicorner.f9.co.uk/articles/op1.htm |
Delphi DLL memory management | http://delphi.about.com/od/objectpascalide/l/aa103003a.htm |
Delphi listview | http://stackoverflow.com/questions/10835355/in-place-editing-of-a-subitem-in-a-tlistview |
Package | Site | Used for |
Libsub-win32 | http://sourceforge.net/apps/trac/libusb-win32/wiki | USB interface |
FPC | http://www.freepascal.org/ | XML reading, writing (made some changes to make it Delphi XE2 compatible |
Indy | http://www.indyproject.org/index.en.aspx | Network communication objects |
MIDIIO | https://bitbucket.org/h4ndy/midiio-dev/overview | Midi objects |
Tobybear's VST template | http://www.tobybear.de/ | Delphi VST template |