Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
276 commits
Select commit Hold shift + click to select a range
b1e533a
Color Balancing
eclab Jun 23, 2017
378fd63
tweaks
eclab Jun 23, 2017
868fd7f
tweaks
eclab Jun 23, 2017
e182aa2
spelling
eclab Jun 23, 2017
9215072
spelling
eclab Jun 23, 2017
4f546d1
improvements to arp pattern
eclab Jun 23, 2017
78af41b
preferences fix; per-tab CCs
eclab Jun 23, 2017
3933cbd
New Patch sync approach
eclab Jun 25, 2017
9ffaf85
new jar
eclab Jun 25, 2017
01a57d1
duplication options
eclab Jun 26, 2017
0ab48e8
Undo/Redo
eclab Jun 27, 2017
b5d554a
reformatting
eclab Jun 27, 2017
86bc50a
docs
eclab Jun 27, 2017
ba5477b
menu disabling
eclab Jun 27, 2017
6588953
Send Current Patch
eclab Jun 27, 2017
9ffab02
Menu disabling in undo/redo
eclab Jun 27, 2017
f9ae147
bug fixes; better mutation and merging
eclab Jun 30, 2017
c6f78f7
yo
eclab Jul 1, 2017
1b328e9
yo
eclab Jul 1, 2017
6db39c8
Patch Display added
eclab Jul 24, 2017
4d39ee4
full commit
eclab Jul 24, 2017
e06bab7
PreenFM2 Updated
eclab Jul 25, 2017
a338780
Parsing fixes
eclab Jul 25, 2017
57ea962
Documentation, fixes
eclab Jul 26, 2017
536fe83
preen fixes
eclab Jul 26, 2017
5110a90
Updated Blofeld Name scheme
eclab Jul 26, 2017
7170b60
sync removed; naming fixed
eclab Jul 28, 2017
c9dc0b6
sync removed; naming fixed
eclab Jul 28, 2017
3131f36
small revisions
eclab Jul 28, 2017
271726e
yo
eclab Jul 29, 2017
293db4e
yo
eclab Jul 29, 2017
7985a0a
added rel CC
eclab Jul 29, 2017
4660975
added rel CC
eclab Jul 29, 2017
67f29ed
yo
eclab Aug 3, 2017
adba70b
Added mutation restriction
eclab Aug 4, 2017
c2cf88e
scrollers
eclab Aug 5, 2017
08df455
yo
eclab Aug 5, 2017
47bfb27
Updated for building instructions
eclab Aug 5, 2017
7d3accd
Version 10
eclab Aug 9, 2017
a1651ad
Windows
eclab Aug 9, 2017
d4df05c
findbugs
eclab Aug 11, 2017
fe47408
Kawai K4 fixes
eclab Aug 17, 2017
d6f949e
stomping bugs
eclab Aug 18, 2017
e0ee613
init patches, M1000 bugfixes
eclab Aug 19, 2017
fe54a96
final checks; indent
eclab Aug 19, 2017
d922505
updated manual
eclab Aug 19, 2017
2a4118d
docs
eclab Aug 20, 2017
28b6f95
docs
eclab Aug 20, 2017
85579ae
missing legato portamento
eclab Aug 20, 2017
a01c8ae
missing m1000 legato
eclab Aug 20, 2017
5355842
undo errors; SimpleError weirdness in OS X; revised K4
eclab Aug 27, 2017
d8ff67d
fixes to NRPN parser
eclab Aug 27, 2017
98e308d
limit randomization of wavetables to non-user ones
eclab Sep 4, 2017
c98e74b
fixed detune
eclab Sep 4, 2017
d07c700
more PreenFM2 bugs
eclab Sep 4, 2017
7060b39
yo
eclab Sep 4, 2017
ec445d1
hill-climbing
eclab Sep 4, 2017
7201eed
Quit Handler
eclab Sep 4, 2017
95bfd50
Testing Hill-Climb
eclab Sep 4, 2017
cfad025
HillClimbing
eclab Sep 4, 2017
f0906c8
yo
eclab Sep 4, 2017
91e359c
oberheim tweaks
eclab Sep 5, 2017
2ee7ff1
multi-patch download, bug fixes
eclab Sep 14, 2017
5052d0d
Test Note Options; Documentation
eclab Sep 16, 2017
0814871
timer bugs
eclab Sep 16, 2017
e993ad4
println
eclab Sep 16, 2017
bdbe51e
Test Note Bugs
eclab Sep 18, 2017
e606ea4
proper right shift
eclab Sep 20, 2017
7487395
TX81Z Fixes
eclab Sep 24, 2017
3776929
per-synth bugfixes
eclab Sep 25, 2017
c015e44
Version 11
eclab Sep 25, 2017
a944892
Windows?
eclab Sep 25, 2017
15c709c
More Windows bugfixes
eclab Sep 26, 2017
9fb3f98
updated instructions
eclab Sep 26, 2017
d116d27
updated instructions
eclab Sep 26, 2017
eaa4868
updated instructions
eclab Sep 26, 2017
2d50b49
yo
eclab Sep 26, 2017
0c8ec0b
yo
eclab Sep 26, 2017
abbdf22
linux
eclab Sep 27, 2017
372825c
linux
eclab Sep 27, 2017
61a05af
linux
eclab Sep 27, 2017
2467d15
Kawai bugfixes
eclab Sep 30, 2017
635cdbc
Kawai bugs
eclab Sep 30, 2017
b8754e5
non-final
eclab Oct 1, 2017
ceb1b8c
tx81z bug fixes
eclab Oct 1, 2017
13a9160
yo
eclab Oct 1, 2017
c3157dd
TX81Z bugs
eclab Oct 2, 2017
48c705e
TX81Z bugs
eclab Oct 2, 2017
b8e71a5
new wave pics
eclab Oct 2, 2017
3615542
Operator 1 Has no shift
eclab Oct 2, 2017
dd3c1b8
Operator 1 Has no shift
eclab Oct 2, 2017
bedc487
loading external patches
eclab Oct 3, 2017
f763bdf
non-backward-compatible new header for PreenFM2 syx
eclab Oct 3, 2017
a759106
Korg SG Multi working
eclab Oct 4, 2017
c2e45a3
Double-click should only work in mutation parameter mode
eclab Oct 4, 2017
3fe1276
Updates
eclab Oct 4, 2017
8aa3215
KorgSG
eclab Oct 4, 2017
8a83515
yo
eclab Oct 4, 2017
8230024
Version 12
eclab Oct 4, 2017
a490c74
Envelope bug
eclab Oct 14, 2017
7281815
Final bug fixes for TX81Z
eclab Oct 14, 2017
43ff2ef
yo
eclab Oct 14, 2017
5eb579b
Loading now guesses at unknown sysex files
eclab Oct 14, 2017
2cb9f50
Loading now guesses at unknown sysex files
eclab Oct 14, 2017
b71b8a7
Bug fixes
eclab Oct 14, 2017
ff41f75
Korg Microsampler Added
eclab Oct 14, 2017
ccf18ac
AFL License
eclab Oct 14, 2017
6876fdf
yo
eclab Oct 15, 2017
7668bb4
indented
eclab Oct 17, 2017
f9adefb
reindented
eclab Oct 17, 2017
4ecc7db
Edisyn 12
eclab Oct 17, 2017
720bdd4
Edisyn 12
eclab Oct 17, 2017
6172b04
yo
eclab Oct 18, 2017
dcd8eca
Update
eclab Oct 18, 2017
8d5af9c
Microsampler Bugfixes
eclab Oct 19, 2017
289279d
Microsampler Bugfixes
eclab Oct 19, 2017
34fd8d1
Added Parva
eclab Oct 31, 2017
fe8b645
Added Parva
eclab Oct 31, 2017
a979a38
added pan
eclab Oct 31, 2017
1ba67bf
patch numbering
eclab Oct 31, 2017
ea9073c
proper CC/NRPN emits
eclab Oct 31, 2017
9ec45f1
Parva Tweaks
eclab Nov 1, 2017
f594585
Parva Tweaks
eclab Nov 1, 2017
46b2a66
yo
eclab Nov 6, 2017
4a0e5a6
Fixed One-Shot Envelope, manual is wrong
eclab Nov 26, 2017
080e298
yo
SeanLuke Nov 30, 2017
fd4e3c0
Channel Fix
SeanLuke Dec 8, 2017
48f3568
Added Patch Names
SeanLuke Dec 8, 2017
4e2c950
Initial FutureSonus Parva editor
SeanLuke Dec 8, 2017
a5b37be
added wave pics but may not use them
SeanLuke Dec 8, 2017
7cc8180
meh
SeanLuke Dec 8, 2017
ed2a5e6
meh
SeanLuke Dec 8, 2017
6cf6c9d
Initial K1
SeanLuke Dec 8, 2017
5d944b1
yo
SeanLuke Dec 8, 2017
b929789
updates
SeanLuke Dec 8, 2017
03160b3
updates
SeanLuke Dec 8, 2017
08bc5a6
filter type
SeanLuke Dec 8, 2017
87b1087
Kawai K1; MIDI test additions
SeanLuke Dec 13, 2017
04f850e
Added K1 Multi Init
SeanLuke Dec 13, 2017
72ffa3e
Recoloring
SeanLuke Dec 13, 2017
78badf1
Added PreenFM2 Merging
SeanLuke Dec 14, 2017
149b3bd
yo
SeanLuke Dec 15, 2017
a2a8c5f
yo
SeanLuke Dec 15, 2017
e1057cf
yo
SeanLuke Dec 16, 2017
291f029
added MicroKorg; refactoring
SeanLuke Dec 18, 2017
0385543
MicroKorg Initial Fixes
SeanLuke Dec 21, 2017
ffbb8c8
yo
SeanLuke Dec 21, 2017
d8fe891
Edisyn 13
SeanLuke Dec 21, 2017
78823d4
yo
SeanLuke Dec 21, 2017
aa653ca
Edisyn 13
SeanLuke Dec 21, 2017
809f807
yo
SeanLuke Dec 26, 2017
452dafd
Colors
SeanLuke Dec 28, 2017
4f85cc7
html color fixes
SeanLuke Dec 29, 2017
4f14275
Added
SeanLuke Dec 29, 2017
031ad1b
Send/Write Bugfix
SeanLuke Jan 13, 2018
1aac1d2
Send/Write Bugfix
SeanLuke Jan 13, 2018
6a64052
Kawai routing
SeanLuke Jan 15, 2018
c986eae
Oberheim Tweaks
SeanLuke Jan 15, 2018
d1c23e2
routed channel fix
SeanLuke Jan 15, 2018
9dd59d5
yo
SeanLuke Jan 18, 2018
959f985
yo
SeanLuke Jan 18, 2018
a436731
yo
SeanLuke Jan 18, 2018
b60b276
Version 14
SeanLuke Mar 4, 2018
63dcc1f
Version 14
SeanLuke Mar 4, 2018
26944ad
Version 14
SeanLuke Mar 4, 2018
f2ad16f
Patch-send Bug
SeanLuke Mar 6, 2018
1879c15
yo
SeanLuke Mar 10, 2018
29a3526
yo
SeanLuke Mar 10, 2018
422f082
hill-climbing bug fixes
SeanLuke Mar 10, 2018
7fec859
Wavestation SR hillclimbing improvements
SeanLuke Mar 10, 2018
2e13439
Delay test removed
SeanLuke Mar 31, 2018
520f2a2
K5 Preliminaries
SeanLuke Mar 31, 2018
8707463
dx7
SeanLuke Apr 14, 2018
da410c8
patchName fix
SeanLuke Apr 18, 2018
9c70509
cleanups
SeanLuke Apr 18, 2018
2f60fb8
added K5
SeanLuke Apr 18, 2018
9f33238
init and html
SeanLuke Apr 18, 2018
382c2f0
init
SeanLuke Apr 18, 2018
405b29c
Last Bugfixes
SeanLuke Apr 19, 2018
fd2f808
reindented for v15
SeanLuke Apr 19, 2018
a8a2da4
Edisyn 15
SeanLuke Apr 19, 2018
fdb6d43
DX7 V15
SeanLuke Apr 19, 2018
62b6505
new algorithmic description
SeanLuke Apr 28, 2018
36f887b
corrected LFO Waves
SeanLuke Apr 28, 2018
8bde91f
hillclimbing updates
SeanLuke Apr 28, 2018
48d2aa3
yo
SeanLuke May 1, 2018
9652c02
Variable-population Hill-Climbing
SeanLuke May 9, 2018
da6c780
test notes
SeanLuke May 9, 2018
5240567
Variable-population Hill-Climbing
SeanLuke May 9, 2018
05a6617
K5 Fixes
SeanLuke May 9, 2018
33d37e6
fixed stage
SeanLuke May 9, 2018
8bce4d6
yo
SeanLuke May 9, 2018
cb4f9bf
yo
SeanLuke May 10, 2018
2c6a96e
yo
SeanLuke May 11, 2018
0c5617a
hill climbing fixes
SeanLuke May 11, 2018
087475f
yo
SeanLuke May 12, 2018
c975bbc
filename improvements
SeanLuke May 12, 2018
a022ec7
hillclimbing fixes
SeanLuke May 13, 2018
de4c343
AM parameter fix
SeanLuke May 20, 2018
edf5e78
Keystrokes, extended population
SeanLuke May 21, 2018
7330bdb
documentation
SeanLuke May 21, 2018
bd0cff8
v16
SeanLuke May 21, 2018
a7a1182
keystrokes
SeanLuke May 21, 2018
0a8ac19
parameter emit bug fix
SeanLuke May 21, 2018
e88ca0e
v16.a
SeanLuke May 21, 2018
3d3f984
Hillclimber bugfixes
SeanLuke May 22, 2018
216fa5a
Hillclimber bugfixes
SeanLuke May 22, 2018
71bc00f
v.16b
SeanLuke May 22, 2018
69a5842
yo
SeanLuke May 23, 2018
d9309e5
DDA sustain
SeanLuke Jun 6, 2018
2cfed34
omni bug
SeanLuke Jun 7, 2018
42f7dda
yo
SeanLuke Jun 19, 2018
facc36b
preparation
SeanLuke Jun 28, 2018
16520ed
copy/paste/distribute tabs
SeanLuke Jun 28, 2018
de7d2d3
reformatted
SeanLuke Jun 28, 2018
11c6158
Edisyn 16
SeanLuke Jun 29, 2018
c26decf
various hillclimber errors
SeanLuke Jun 29, 2018
1efe1bc
Edisyn 16
SeanLuke Jun 29, 2018
dd66cd4
yo
SeanLuke Jul 1, 2018
ef89e33
joystick bugfix, bulk undo
SeanLuke Jul 1, 2018
6ea8471
bulk undo
SeanLuke Jul 1, 2018
44f62b9
bulk undo
SeanLuke Jul 1, 2018
ce8b5d4
load/save bugs
SeanLuke Jul 7, 2018
53e090f
docs
SeanLuke Jul 7, 2018
887ceb8
Block-Sending option
SeanLuke Jul 8, 2018
c915c51
docs
SeanLuke Jul 8, 2018
9cd8378
docs
SeanLuke Jul 8, 2018
e62fd59
rate envelopes for Yamaha
SeanLuke Sep 9, 2018
f435f2b
SeanLuke Sep 9, 2018
f3fe19e
all sounds off fixes
SeanLuke Sep 15, 2018
ee2b69e
all sounds off fix
SeanLuke Sep 15, 2018
32337d4
indented
SeanLuke Oct 27, 2018
729290f
yo
SeanLuke Oct 27, 2018
b453937
fix for broken 32-patch files
SeanLuke Oct 30, 2018
898a768
updates
SeanLuke Oct 30, 2018
7d35b19
Added EmuMorpheusMap
SeanLuke Oct 30, 2018
aa4c88e
init patches
SeanLuke Oct 30, 2018
63e5b5d
thanks
SeanLuke Oct 30, 2018
61103ce
reformatted
SeanLuke Oct 30, 2018
0575cd6
hill-climb preferences
SeanLuke Oct 31, 2018
7c97b32
indented
SeanLuke Oct 31, 2018
419c5f5
hill-climber
SeanLuke Oct 31, 2018
e344cdf
Edisyn 17
SeanLuke Nov 2, 2018
77106a8
Edisyn 17
SeanLuke Nov 2, 2018
f34bfe4
Version 17
SeanLuke Nov 2, 2018
962aee4
Verion 17
SeanLuke Nov 2, 2018
3fcfc4a
flow
SeanLuke Nov 5, 2018
09f57d1
tweaks
SeanLuke Mar 27, 2019
92d2529
documentation
SeanLuke Mar 27, 2019
a9bfbb5
Use Service Provider Interfaces to load synths
danielappelt Apr 6, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 59 additions & 94 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,140 +1,105 @@
# edisyn
Synthesizer Patch Editor (Version 7)
![Edisyn Splash Banner](https://raw.githubusercontent.com/eclab/edisyn/master/pics/Banner.png)

# Edisyn
Synthesizer Patch Editor (Version 17)

By Sean Luke (sean@cs.gmu.edu)

I've been asked where my Patreon page is. So, sure, here's my <a href="https://www.patreon.com/SeanLuke">Patreon page</a>.

## About

Edisyn is a synthesizer patch editor library written in pure Java.

Edisyn presently supports:

* Waldorf Blofeld and Waldorf Blofeld Keyboard (Single and Multi Modes)
* Waldorf Microwave II, XT, and XTk (Single and Multi Modes)

Ultimately Edisyn will have some more written for it as well as I get time; and of course the patch
editors I can write are restricted to the synths I own and can test on!
Edisyn has no graphical interface editor system like
Ctrlr, but it's designed to make the GUI pretty easy to write (well, for me anyway).
Related projects:

At present Edisyn *only runs on OS X* (well, I've only tried it on OS X, that's its target). If you try running
it elsewhere, you're on your own. We have confirmation that it runs fine under Linux.
* [Flow](https://github.com/eclab/flow), a fully-modular, polyphonic, additive software synthesizer.
* [Gizmo](https://cs.gmu.edu/~sean/projects/gizmo/), an Arduino-based MIDI Swiss Army knife


## Installation

For the time being, to install Edisyn you need to do the following two things.

1. Install the Java JDK.
2. Put the file `jar/edisyn.7.jar` where you like (it's Edisyn's executable).


## Running

- *On OS X:* Double click on the file `edisyn.7.jar`
- *On Windows:* I don't know. Anyone?
- *On Linux:* In Ubuntu, you'll first need to change the Properties of the jar file (see the "Open With" tab) to your Java VM. Thereafter you can just double-click on the file.
## About

Edisyn should launch and either present you with a window asking what MIDI interface you want to use, or tell
you that there are no available MIDI interfaces, and that you'll need to work offline.
Edisyn is a synthesizer patch editor library written in pure Java. It runs on OS X, Linux, and Windows.

Edisyn is particularly good at exploring the space of patches. It has to my knowledge the most sophisticated set of general-purpose patch-exploration tools of any patch editor available.

### The Editor Pane
Edisyn presently supports:

* DSI Prophet '08
* E-Mu Morpheus and Ultraproteus (Single, Hyperpreset, and MidiMap modes)
* Waldorf Blofeld and Waldorf Blofeld Keyboard (Single and Multi Modes)
* Waldorf Microwave II, XT, and XTk (Single and Multi Modes)
* Oberheim Matrix 1000
* PreenFM2
* Kawai K1, Kawai K1m, and Kawai K1r (Single and Multi Modes)
* Kawai K4 and Kawai K4r (Single, Multi, Drum, and Effect Modes)
* Kawai K5 and K5m
* Yamaha DX7 Family (Single)
* Yamaha TX81Z (Single and Multi Modes)
* Korg SG Rack (Single and Multi Modes) and Korg SG Pro X (Single Mode)
* Korg Microsampler
* Korg MicroKorg
* Korg Wavestation SR (Performance, Patch, and Wave Sequence Modes)

The editor pane should be self-explanatory. There are four tabs which together cover all of the parameters of
the synthesizer. The first tab, *Oscillators and Filters*, also contains an area called *Waldorf Blofeld* (or
some other synth) which
lets you set the patch name and category, bank, number, and Device ID. The bank, number, and ID are mostly
for saving out to sysex files: whenever you upload or download patch to/from the synth, you'll be prompted
to revise those if necessary.
Edisyn has infinite levels of undo, CC and NRPN mapping and learning, offline modes, randomization, merging, nudging, hill-climbing, patch constriction, per-parameter customization, real-time parameter updates, test notes, etc.

### The File Menu
## Manual

* *New* creates a new editor pane, set to the default (the synth's Init patch setting). Note that only the frontmost editor pane will receive MIDI. So if you for
some reason set up both editor panes with the same interface, then request MIDI from one pane, then quickly
switch to the other pane, you could in theory get the MIDI sent to the other pane. So don't do that.
Edisyn has an [extensive manual](https://github.com/eclab/edisyn/raw/master/docs/manual/Edisyn.pdf) which describes how to run it, and (if you are so inclined) how to make new patch editors.

* *Load...* loads a sysex file into the existing editor pane. It's called Load instead of Open because it
doesn't open a new window.
## Install and Run Edisyn

* *Close Window* closes, well, you know, it closes, um, the window.
Edisyn is cross-platform and will run on a variety of platforms (Windows, Linux) but I am personally developing on and for OS X. I'd appreciate feedback and screenshots of it running on Windows and Linux so I can tweak things.

* *Save* and *Save As...* save to a sysex file.

* *Export Diff to Text...* saves out to a text file a line-by-line description of every parameter which is *different*
from the default Init patch setting, plus the current value it's set to. The patch value is either a string (in the
case of the Patch name) or a number from 0...127: this may not be that useful to you, but the parameter names might
be useful if you want to publish your patch on a sebsite and need to know which parameter settings to mention.
### Installation and Running on OS X

First install Edisyn from the [Edisyn.app.zip](https://github.com/eclab/edisyn/raw/master/install/Edisyn.app.zip) file located in the "install" directory. Sadly, it's a whopping 70MB because it includes the Java VM. :-(

### The MIDI Menu

Note that you can *send* a patch to the synthesizer and you can *write* a patch to the synthesizer. The former
just temporarily updates the synth's current patch memory so you can play it. The latter actually writes the
patch to an address in the synth, replacing whatever is there.
Sierra has really locked down the ability to run an application that's not from a commercial, paying Apple Developer. And I'm not one. So you will have to instruct Sierra to permit Edisyn to run.

* *Request Current Patch* asks the synthesizer to load the current patch memory into the editor. Note that on
some machines (like the Waldorf Blofeld) when the patch is loaded, the bank and patch number are invalid and will
be reset to some defaults, which might be confusing!
Let's assume you stuck Edisyn in the /Applications directory as usual. Then:

* *Request Patch...* asks the synthesizer to load a specific patch into the editor. If the synthesizer complies,
once the patch is loaded, Edisyn will then send the patch to the synthesizer.
1. Run the Terminal Program (in /Applications/Utilities/)
2. Type the following command and hit RETURN: ` sudo spctl --add /Applications/Edisyn.app`
4. Enter your password and hit RETURN.
5. Quit the Terminal Program

* *Request Merge* asks the synthesizer to load a specific patch into the editor. If the synthesizer complies,
then the patch is *merged* with the existing patch, meaning that some *percentage* of parameters in the existing
patch are replaced with the old patch. Then Edisyn will then send the patch to the synthesizer.
Now you should be able to run Edisyn. Let me know if this all works.

* *Randomize* randomizes the editor's current patch, then sends it to the synthesizer.

* *Reset* resets the editor's current patch to its initialized state, then sends it to the synthesizer.
### Installation and Running on Windows

* *Send Patch* sends the current patch to the synthesizer. This isn't actually used much since other commands
send the patch automatically.
I believe that the following should work:

* *Write Patch...* writes the patch to a given location in the synthesizer.
1. [Download and install Java 11](http://www.oracle.com/technetwork/java/javase/downloads/index.html). The JRE should work fine.

* *Change MIDI* sets or updates the MIDI interface.
2. Download Edisyn's jar file, called [edisyn.jar](https://github.com/eclab/edisyn/raw/master/jar/edisyn.jar), presently located in the "jar" directory.

* *Disconnect MIDI* disconnects the MIDI interface.
3. Double-click on edisyn.jar to launch Edisyn.

* *Send All Sounds Off* sends the All Sounds Off message to all channels.
#### Important Note for Windows User

* *Send Test Note* sends a 1/2 second test note to the primary channel.
Java versions earlier than 11 (or so) do not handle high-resolution displays properly, so Edisyn will appear teeny-tiny. You need to upgrade to 11.

Also Edisyn makes heavy use of Java preferences to store persistence information: what menu option you chose last time, what should be the default synth editor to pop up, and so on. However there is a longstanding Java/Windows bug which makes Java preferences not work out of the box in Windows for earlier versions of Java. I think this is fixed as of Java 11 but you should check and let me know.

### The MIDI Interface

Edisyn makes up to three MIDI device connections. The *Receiving Device* is the MIDI device from which we will accept
patches. This is usually your synthesizer. The *Sending Device* is the MIDI device to which we will send
patches and parameter changes. We'll also need a channel for the Sending Device so we can send test notes.
### Installation and Running on Linux

Optionally you can route your controller keyboard through Edisyn to play the sounds directly if you wish. To do this,
the *Keyboard Device* is the MIDI Device of your controller keyboard. You'll also specify an incoming keyboard
channel of course. This can be set to "Any" for any channel (Omni).
I'm told that Edisyn works fine if you have installed *Java 8*. After this:

### Sending and Recieving Parameters
1. Download [Edisyn's jar file](https://github.com/eclab/edisyn/raw/master/jar/edisyn.jar) located in the "jar" directory.

If you change a widget in the editor, Edisyn will send the appropriate sysex command to the synthesizer to change it on
the synth as well. Additionally, if you change a parameter on the synthesizer and it forwards a *sysex* command to Edisyn,
then Edisyn will update the appropriate widget in the editor. At present Edisyn does't support CC commands from the
synthesizer (maybe later). So (for example) on the Blofeld you'll need to change the machine to *send sysex* -- not CC only -- when changing parameters on the synth.
2. You'll need to figure out how to make it so that double-clicking on the jar file launches it in java. In Ubuntu, here's what you do: right-click on the jar file icon and choose "Properties". Then select the "Open With" tab, and select your Java VM (for example "Open JDK Java 8 Runtime"). The press "Set as Default". This makes the Java VM the default application to launch jar files.

### Per-Synth Specific Notes and Bugs
3. Thereafter you should be able to just double-click on the file to launch Edisyn.

Gotchas and important things to know are contained in the <b>About</b> Tab in each synth editor window. You should read it before using the editor for that synth.

## Caveats
### Running from the command line (OS X, Windows, Linux)

To work around some bugs in OS X Midi and CoreMIDI4J, Edisyn's architecture at present does not let you
plug in new devices (or remove them) after Edisyn has been launched. If you need to do so, restart Edisyn
(for now).
1. Make sure Java is installed.

Randomize isn't very useful right now. I'm working on it.
2. Download [Edisyn's jar file](https://github.com/eclab/edisyn/raw/master/jar/edisyn.jar) located in the "jar" directory.

Everything has to be sent via sysex for the moment: I don't have code written to make it easy to send CC or NRPN
if you wanted to build a patch which did that.
3. Run Edisyn as: `java -jar edisyn.jar`

Popping up a new panel is slow. Profiling suggests that the primary reason for this is that JComboBox construction
is slow. So I can't get around it.

Binary file added docs/manual/0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/ConstrictorPanel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/manual/Edisyn.pdf
Binary file not shown.
Loading