├── .gitignore ├── fh2_configurator ├── images │ ├── zzz.icns │ ├── zzz.ico │ └── zzz.png ├── src │ ├── index.js │ └── index.html └── package.json ├── README.md ├── index.html ├── LICENSE ├── fh2_screenshot_tool.html ├── fh2_scala_tool.html ├── fh2_launchpad.html ├── fh2_access.html └── fh2_preset_tool.html /.gitignore: -------------------------------------------------------------------------------- 1 | fh2_configurator 2 | -------------------------------------------------------------------------------- /fh2_configurator/images/zzz.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expertsleepersltd/FH-2_tools/HEAD/fh2_configurator/images/zzz.icns -------------------------------------------------------------------------------- /fh2_configurator/images/zzz.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expertsleepersltd/FH-2_tools/HEAD/fh2_configurator/images/zzz.ico -------------------------------------------------------------------------------- /fh2_configurator/images/zzz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/expertsleepersltd/FH-2_tools/HEAD/fh2_configurator/images/zzz.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FH-2_tools 2 | Open source tools relating to the FH-2 Eurorack module 3 | 4 | View this project as a web page (for ease of downloading scripts): https://expertsleepersltd.github.io/FH-2_tools/ 5 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 8 | 9 | 10 |13 | Open source tools relating to the FH-2 Eurorack module. 14 | 15 |
16 | Copyright ©2024 Expert Sleepers Ltd. 17 | 18 |
19 | The GitHub project page is here. 20 | 21 |
24 | fh2_access.html 25 | 26 |
27 | fh2_config_tool.html 28 | 29 |
30 | fh2_launchpad.html 31 | 32 |
33 | fh2_preset_tool.html 34 | 35 |
36 | fh2_scala_tool.html 37 | 38 |
39 | fh2_screenshot_tool.html 40 | 41 |
44 | Please use the forum. 45 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Expert Sleepers Ltd 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /fh2_configurator/src/index.js: -------------------------------------------------------------------------------- 1 | import { app, BrowserWindow } from 'electron'; 2 | 3 | // Handle creating/removing shortcuts on Windows when installing/uninstalling. 4 | if (require('electron-squirrel-startup')) { // eslint-disable-line global-require 5 | app.quit(); 6 | } 7 | 8 | // Keep a global reference of the window object, if you don't, the window will 9 | // be closed automatically when the JavaScript object is garbage collected. 10 | let mainWindow; 11 | 12 | const createWindow = () => { 13 | // Create the browser window. 14 | mainWindow = new BrowserWindow({ 15 | width: 1600, 16 | height: 900, 17 | }); 18 | 19 | // and load the index.html of the app. 20 | mainWindow.loadURL(`file://${__dirname}/index.html`); 21 | 22 | // Open the DevTools. 23 | //mainWindow.webContents.openDevTools(); 24 | 25 | // Emitted when the window is closed. 26 | mainWindow.on('closed', () => { 27 | // Dereference the window object, usually you would store windows 28 | // in an array if your app supports multi windows, this is the time 29 | // when you should delete the corresponding element. 30 | mainWindow = null; 31 | }); 32 | }; 33 | 34 | // This method will be called when Electron has finished 35 | // initialization and is ready to create browser windows. 36 | // Some APIs can only be used after this event occurs. 37 | app.on('ready', createWindow); 38 | 39 | // Quit when all windows are closed. 40 | app.on('window-all-closed', () => { 41 | // On OS X it is common for applications and their menu bar 42 | // to stay active until the user quits explicitly with Cmd + Q 43 | if (process.platform !== 'darwin') { 44 | app.quit(); 45 | } 46 | }); 47 | 48 | app.on('activate', () => { 49 | // On OS X it's common to re-create a window in the app when the 50 | // dock icon is clicked and there are no other windows open. 51 | if (mainWindow === null) { 52 | createWindow(); 53 | } 54 | }); 55 | 56 | // In this file you can include the rest of your app's specific main process 57 | // code. You can also put them in separate files and import them here. 58 | -------------------------------------------------------------------------------- /fh2_configurator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fh2_configurator", 3 | "productName": "FH-2 Configurator", 4 | "version": "1.15.0", 5 | "description": "Configuration tool for the Expert Sleepers FH-2", 6 | "main": "src/index.js", 7 | "scripts": { 8 | "start": "electron-forge start", 9 | "package": "electron-forge package", 10 | "make": "electron-forge make", 11 | "publish": "electron-forge publish", 12 | "lint": "eslint src --color" 13 | }, 14 | "keywords": [], 15 | "author": "Expert Sleepers", 16 | "license": "MIT", 17 | "config": { 18 | "forge": { 19 | "make_targets": { 20 | "win32": [ 21 | "squirrel" 22 | ], 23 | "darwin": [ 24 | "zip" 25 | ], 26 | "linux": [ 27 | "deb", 28 | "rpm" 29 | ] 30 | }, 31 | "electronPackagerConfig": { 32 | "icon": "./images/zzz", 33 | "appCopyright": "Copyright © 2021 Expert Sleepers Ltd", 34 | "appBundleId": "com.expert-sleepers.fh2configurator", 35 | "appCategoryType": "public.app-category.music", 36 | "osxSign": true, 37 | "packageManager": "yarn" 38 | }, 39 | "electronWinstallerConfig": { 40 | "name": "fh2_configurator" 41 | }, 42 | "electronInstallerDebian": {}, 43 | "electronInstallerRedhat": {}, 44 | "github_repository": { 45 | "owner": "", 46 | "name": "" 47 | }, 48 | "windowsStoreConfig": { 49 | "packageName": "", 50 | "name": "fh2_configurator" 51 | } 52 | } 53 | }, 54 | "dependencies": { 55 | "electron-compile": "^6.4.4", 56 | "electron-squirrel-startup": "^1.0.0" 57 | }, 58 | "devDependencies": { 59 | "babel-plugin-transform-async-to-generator": "^6.24.1", 60 | "babel-preset-env": "^1.7.0", 61 | "babel-preset-react": "^6.24.1", 62 | "electron-forge": "^5.2.4", 63 | "electron-prebuilt-compile": "4.0.0", 64 | "eslint": "^3", 65 | "eslint-config-airbnb": "^15", 66 | "eslint-plugin-import": "^2", 67 | "eslint-plugin-jsx-a11y": "^5", 68 | "eslint-plugin-react": "^7" 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /fh2_screenshot_tool.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |95 | 96 | 97 | Send to MIDI port: 98 | Listen on MIDI port: 99 |
100 | 101 | 102 | 103 |
104 |
105 |
106 | 107 | 141 | 142 | 220 | 221 | 222 | -------------------------------------------------------------------------------- /fh2_scala_tool.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |95 | 96 | Send to MIDI port: 97 | Listen on MIDI port: 98 |
99 | 100 | 101 | 102 |
103 |
|
106 |
107 | 108 | 109 | to slot 116 | |
117 |
118 |
119 | 120 | 121 | to slot 128 | |
129 |
| 133 | | 134 | |
137 | 138 | 164 | 165 | 288 | 289 | 290 | -------------------------------------------------------------------------------- /fh2_launchpad.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 | 206 | 207 | 208 |
209 | 210 | 373 | 374 |
| 377 | 381 | |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
286 |
562 |
563 |
564 |
565 |
566 |
569 |
570 |
571 |
572 |
573 |
583 | 584 | 585 | 586 |
587 | 588 |
589 |
590 | Show Globals
591 |
592 | Show Portamento/Transpose/Envelopes
593 |
594 | Show Arpeggiators
595 |
596 | Show Triggers
597 |
598 | Show Euclidean Patterns
599 |
600 | Show Sequencers
601 |
602 |
603 | Show FH-2 Output Configurator
604 | | Show FHX-8CV Expander Outputs:
605 |
611 |
612 | Show SR Random
613 |
614 |
| Tempo | 618 |Swing | 619 |||||
|---|---|---|---|---|---|
| 622 | | Type | Amount | Position 1 | Position 2 | Position 3 | 623 |
| 628 | | 638 | 644 | | ||||
| 659 | | Portamento | 660 |Transpose | 661 |Envelopes | 662 |Random | 663 |Envelope shapes | 664 |Scala | 665 |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 668 | | 669 | | 670 | | Attack | Decay | Sustain | Release | Range | Depth | Velocity Depth | 671 |672 | | Attack | Decay | Release | 673 |Enable | .scl | .kbm | 674 |
| Arpeggiator | 778 |||||||
|---|---|---|---|---|---|---|
| 781 | | Mode | Range | Gate Length | Latch | Rate | Reset | 782 |
| Triggers/Gates | 831 |
|---|
| Euclidean Patterns | 848 ||||||||
|---|---|---|---|---|---|---|---|
| 850 | | Pulses | Steps | Rotation | Rate | Gate Length | Accent Rate | Reset | 851 |
| Shift Register Random | 907 |||||||||
|---|---|---|---|---|---|---|---|---|
| 909 | | Direction | Length | Randomness | Rate | Attenuator | Scale | Key | 910 |Gate Length | 911 |
| Sequencers | 932 ||||||
|---|---|---|---|---|---|
| |||||
| |||||
1096 | 1103 | 1104 | 1105 | 1106 | 1341 | 1342 | 1570 | 1571 | 1572 | -------------------------------------------------------------------------------- /fh2_configurator/src/index.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
816 |
817 |
818 |
819 |
820 |
821 |
822 |
823 |
824 |
825 | 826 | 827 | 828 |
829 | 830 |
831 |
832 | Show Globals
833 |
834 | Show MIDI/CV Converters
835 |
836 | Show Portamento/Transpose/Envelopes
837 |
838 | Show Arpeggiators
839 |
840 | Show Clocks
841 |
842 | Show Triggers
843 |
844 | Show Euclidean Patterns
845 |
846 | Show Sequencers
847 |
848 |
849 | Show FH-2 Output Configurator
850 | | Show FHX-8CV Expander Output Configurator:
851 |
857 |
865 |
866 | Show Gamepad
867 |
868 | Show HID Keyboard
869 |
870 | Show CV/MIDI
871 |
872 |
| Legato velocity |
876 | Global transpose |
877 | Trigger length |
878 | Ext Clock Multiplier |
879 | Ext Clock Run Control |
880 | Euclidean Accent |
881 | Preset Program Change | 882 |Soft takeover |
883 | Tap Tempo | 884 |Start/Stop | 885 |Internal tempo | 886 |Display mode/item | 887 ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Channel | 890 |Type | Channel | Note or CC | 891 |Type | Channel | Note or CC | 892 |Channel/CC | Min | Max | 893 |Channel/CC | Channel/CC | 894 ||||||||
| 899 | | 906 | | 913 | | 920 | | 923 | | 930 | | 938 | 939 | | 940 | 941 | | 944 | | 947 | | 950 | 951 | | 955 | | 958 | | 961 | 962 | | 967 | | 972 | | 977 | 978 | | 983 | | 988 | 989 | |
Enable | MIDI Channel | Note range | Type | 1001 |Base Output | Base Gate |
1002 | CV | Gate | Velocity Gate | Velocity | Release Velocity | Trigger | Envelope | Aftertouch | Random | Y |
1003 | Gate | Aftertouch | Bend |
1004 | Gated Aftertouch |
1005 | Sustain | 1006 |Voice allocation | Prevent stealing | Voices | Stride | Last channel |
1007 | Bend range |
1008 | Mono retrigger |
1009 | Interrupt gate |
1010 | Env zero |
1011 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1014 | | Per voice outputs | 1015 |Paraphonic outputs | 1016 |1017 | | 1018 | | 1019 | | Up | Down | 1020 |1021 | | 1022 | | 1023 | | ||||||||||||||||||||||
| CC | 1025 | | |||||||||||||||||||||||||||||||
| 1236 | | Portamento | 1237 |Transpose | 1238 |Envelopes | 1239 |Random | 1240 |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 1243 | | 1244 | | 1245 | | Attack | Decay | Sustain | Release | Range | Depth | Velocity Depth | 1246 |1247 | |
| 1251 | | Preset Items - Channel/CC | 1252 ||||||||||
| Arpeggiator | 1339 ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1342 | | Mode | Range | Gate Length | Latch | Rate | Reset | 1343 |Add | Remove | Rest | Truncate | Transpose | Transp. in key | Set root | 1344 |
| 1348 | | Preset Items - Channel/CC | 1349 |Commands - Channel/CC | 1350 ||||||||||||
| Clocks | 1447 |||||||
|---|---|---|---|---|---|---|
| Output | 1449 |Type | Base | Multiplier | Length | Shift | 1450 ||
| Triggers/Gates | 1503 ||||||
|---|---|---|---|---|---|
| Output | 1505 |Type | Channel | Note | Envelope Settings | 1506 ||
| Euclidean Patterns | 1544 ||||||||||
|---|---|---|---|---|---|---|---|---|---|
| Output | Off Output | 1546 |Pulses | Steps | Rotation | Rate | Gate Length | Accent Rate | Reset | 1547 ||
| 1549 | | Channel/CC | Channel/CC | Channel/CC | Channel/CC | 1550 |Channel/CC | Channel/CC | Channel/CC | 1551 |||
| Sequencers | 1616 |||||||
|---|---|---|---|---|---|---|
| MIDI channel | Internal | USB C | USB A | DIN | Clock source | |
| Note sequencers | (for rate 0) | |||||
| Drum sequencers | ||||||
| HID Gamepad | 1838 |||||
|---|---|---|---|---|
| Output | Usage | 1840 |Scale | Offset | 1841 ||
| HID Keyboard | 1877 ||||||
|---|---|---|---|---|---|
| Output | Type | Key | 1879 |Release | Press | 1880 ||
| CV/MIDI | Output to | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Enable | Type | Channel | CC or Note | 0V | 5V | 1927 |Internal | USB A | USB C | DIN | 1928 ||