How do I transfer patches to the Ion/Micron?
To do this you will need:
- A MIDI interface on your computer
- A MIDI cable, preferably two
- Software able to send/receive SysEx messages
MIDI interface and cables
For the MIDI interface, the first thing to check is whether your computer has a Game port. It is possible to use your sound card's Game port (ie. the port for old joysticks/gamepads) as a MIDI interface. Cables are available for Game port <-> MIDI which do a good job.
Failing this, if your sound card is decent it could possibly have proper MIDI connections on it - one for "in" and one for "out". (and if you have paid for a dedicated MIDI interface, then... well, it should definitely have a MIDI connection on it!) Check for a port that looks like this. In this case, you need a straight MIDI to MIDI cable, preferably two. Connect your sound card's MIDI out to your synthesiser's MIDI in, and the synthesiser's MIDI out to your sound card's MIDI in.
The third option for the actual interface is to go for a USB to MIDI converter. These can be fairly inexpensive, with varied amounts of success - they are generally fine for sending and receiving SysEx data.
Software and setup
Once you have got a MIDI interface set up with the correct cables connected to the correct ports, you will need a piece of software which can send and receive SysEx data. One popular program is MIDI-OX, and while being a fairly comprehensive MIDI program, the SysEx side of things is fairly simple.
- Install it
- Go to Options > MIDI Devices
- Select (single click so it gets highlighted) the input and output sides of your MIDI interface
- Go to View > SysEx
- From this window go to File > Send SysEx File
- Choose a file, cross your fingers, and hopefully watch the patch appear on your Micron or Ion :)
Troubleshooting
If you are having problems - first, try a few different patches. Most of the patches available on the yahoo group will load straight to the edit screen, but there are a few rogue ones which go to specific patch numbers and don't get shown automatically when they are sent.
The next thing to check is that your cables are definitely installed properly. In to out, out to in. Failing this, make sure they do not run over or parallel to any other cables in your room, especially ones carrying mains electricity or data.
Sending from Ion/Micron to computer
To send patches back to your computer from your synthesiser - as long as you have two cables set up as described above, and have a SysEx program running at the time (in this example MIDI-OX again) then it is just a case of using the Store function to send the selected patch over MIDI rather than storing it to the synth. The data should appear within MIDI-OX from where you can save it for backup purposes or (more importantly) sharing your tasty sounds on the web!
Are there any good piano sounds for the Ion/Micron?
There is no real piano sound on the Ion or Micron by default. Its design and simple FM modes make it difficult to create a convincing real piano sound. Below are some patches that either try to emulate the real piano sound, or focus more on an electric piano sound, which is more achievable on these synthesisers. Found on the Yahoo group (thanks Uralmoto2001):
- Alains' folder: Rhodes and Wurli EP.
- Bens' folder: SOS Piano.
- Carmols' folder: FM Piano.
- FYs'folder: FY inst Piano.
- Uralmoto2001 poly keys sub-folder: AnaTonk1, SOS E.Piano.
Some videos:
- Building a piano on the Ion
- A piano on the Micron it is not going through
- Here is a real nice piano sounds for Alesis Micron, created by Mike (patches on the youtube text): https://www.youtube.com/watch?v=sn9bEbTmXoo
Software editors
Free:
- Microntrol (in the Yahoo group) Windows, VST?
- MicronAU Mac
- Micronizer 1.7.5.2 Windows, Mac (old beta-3 version: http://mrbook.org/micronizer/)
- Micronedit cross platform (old site: http://pwp.ibl.bm/~rgonzale/audio/midi/micronedit.html)
- Ion librarion in the Yahoo group
- micronit Mac and PC
- miniaktools windows C# with source code.
Paid:
- Microzune Windows, VST
- midiCTRL Windows
- Hypersynth Windows, VST. Ion, Micron and Miniak variants.
- Miniak Patch Editor Windows, Os X.
- megamicron iPad, iOS 6.0+
MIDI implementation
A preliminary version of the midi implementation, put together from the documents on the Yahoo group, and some evil reverse engineering. It still contains quite a few mistakes, will fix later.
CCs - Can be used for S/H and MOD Sources. Albeit you get 7 bit range of out them.
Program change must be sent to modify the patches. That is both bank and program should be sent.
Controller data is also used to turn on/off the latch arp (0xb0, 0x50, 0x7f switches it on, 0xb0, 0x50, 0x00 switches it off).
NRPNs
Edit
The majority of the internal parameters require NRPNs (non-registered parameter numbers). WARNING: Alesis, and hence AKAI, did not follow the MIDI standard here. If you want to use a hardware controller PLEASE do some research up front if you are to avoid disappointment.
How do I send a NRPN?
Edit
NRPNs consist of at most 4 midi CCs.
- /* Type of message to be sent
- 0016F35A 1 -- B0 63 00 1 --- CC: NRPN MSB
- 0016F35A 1 -- B0 62 2F 1 --- CC: NRPN LSB
- 0016F35A 1 -- B0 06 00 1 --- CC: Data Entry MSB
- 0016F35A 1 -- B0 26 0C 1 --- CC: Data Entry LSB
*/
Once you have set the "address" (0x63 and 0x62), you can then send the "value" (0x06 and 0x26).
And until you want to change the address, you only need send the new values.
The "non-standard" parts are:
- MIDI insists MSB is sent for 7 bit NRPNs
- Alesis seemed to assume LSB is sent. As a programmer, this makes sense ... BUT it isnt the midi standard. If you want to use "button" type NRPN controllers, they tend to only send the MSB.
- The BCR 2000 can, with Mark van den Berg's BC Manager software, cope. See BCR2000 Yahoo group
- Of course, in software you can code what you like.
- MIDI insists NRPNs are unsigned 14bit
- Alas, again Alesis insisted on using a "signed" 14bit
- therefore value ranges like [-100, 100] are really [16284, 16383] [0, 100]
- most hardware interpets this as [0,100] ... [16284, 16383]
- either a large gap in the middle (not very practical)
- most will not over/underflow to only choice is to use 2 controls
- one for the -ve range, one for the +ve range.
- Best to use a suitably programmed VST, or write your own tool.
- And NO you cannot use MIDI-OX (not at time of testing on version 7)
- it only modifies 7 bit cc's.
Hardware controllers
Edit
I have been successful with the BCR2000. I use 6 presets to expose all of the knobs/buttons. But note: you have to use Mark's software. Behringer are reluctant to change their hardware for us non-standard chaps.
Other folks have use the UC33, bespoke hardware and some iOS app with mixed success.
NOTE: As I said. NRPNs are 4 midi CC messages. You can use 4 pots to control, but it is not easy. The ION wins for ease of control.
Some problems:
- You can enable and disable entries in the modulation matrix as much as you like, but it won't change the amount of active ones. The best thing is to add them all at level 0 on the hardware.
- some parameters are slow with updating, sometimes it's just the display that is slow with updating.
- NOTE: Be careful how you interpet the NRPN value. Take 692 patch cable source. This arguably should be 180. If you assign a parameter to one of the available X, Y, Z knobs, the Y add 0x02 to the MSB value, and the Z adds 0x04 to the MSB value. IE 256 and 512 respectively.
- All parameters have a "root" value in range [0, 256]. If you find NRPNs larger than this, chances are they are "knob Y" or "knob Z" versions. Generally wiser to use the "root" versions.
- The arpeggiator pattern therefore _could_ be interpreted as 0. Which would clash with the polyphony. Infact on the Miniak I dont find these 512 values to work. I assume this functionality was dropped from Miniak.
NRPN | Meaning | min | max | notes |
---|---|---|---|---|
0 | polyphony | 0 | 1 | |
1 | unison voices | 0 | 3 | |
2 | unison detune | 0 | 100 | |
3 | portamento enabled | 0 | 2 | |
4 | portamento type | 0 | 3 | |
5 | portamento time | 0 | 127 | |
6 | pitchwheel type | 0 | 1 | |
7 | analog drift | 0 | 100 | |
8 | oscillator sync type | 0 | 4 | |
9 | FM amount | 0 | 1000 | |
10 | FM type | 0 | 5 | |
11 | oscillator 1 waveform | 0 | 2 | |
12 | oscillator 1 wave shape | -100 | 100 | |
13 | oscillator 1 octave | -3 | 3 | |
14 | oscillator 1 transpose | -7 | 7 | |
15 | oscillator 1 pitch | -999 | 999 | |
16 | oscillator 1 pitchwheel range | 0 | 12 | |
17 | oscillator 2 waveform | 0 | 2 | |
18 | oscillator 2 wave shape | -100 | 100 | |
19 | oscillator 2 octave | -3 | 3 | |
20 | oscillator 2 transpose | -7 | 7 | |
21 | oscillator 2 pitch | -999 | 999 | |
22 | oscillator 2 pitchwheel range | 0 | 12 | |
23 | oscillator 3 waveform | 0 | 2 | |
24 | oscillator 3 wave shape | -100 | 100 | |
25 | oscillator 3 octave | -3 | 3 | |
26 | oscillator 3 transpose | -7 | 7 | |
27 | oscillator 3 pitch | -999 | 999 | |
28 | oscillator 3 pitchwheel range | 0 | 12 | |
29 | Oscillator1 level | 0 | 100 | |
30 | Oscillator2 level | 0 | 100 | |
31 | Oscillator3 level | 0 | 100 | |
32 | RingModulation level | 0 | 100 | |
33 | Noise level | 0 | 100 | |
34 | ExtIn level | 0 | 100 | |
35 | Oscillator1 balance | -50 | 50 | |
36 | Oscillator2 balance | -50 | 50 | |
37 | Oscillator3 balance | -50 | 50 | |
38 | RingModulation balance | -50 | 50 | |
39 | Noise balance | -50 | 50 | |
40 | ExtIn balance | -50 | 50 | |
41 | series level??? | 0 | 100 | |
42 | noise type | 0 | 1 | |
43 | filter 1 type | 0 | 20 | |
44 | filter 1 frequency | 0 | 1023 | |
45 | filter 1 resonance | 0 | 100 | |
46 | filter 1 key track | -100 | 200 | |
47 | filter 1 envelope amount | -100 | 100 | |
48 | filter 2 relative to 1 | 0 | 1 | |
49 | filter 2 type | 0 | 20 | |
50 | filter 2 frequency absolute | 0 | 1023 | |
51 | filter 2 resonance | 0 | 100 | |
52 | filter 2 key track | -100 | 200 | |
53 | filter 2 envelope amount | -100 | 100 | |
54 | filter 1 level | 0 | 100 | |
55 | filter 2 level | 0 | 100 | |
56 | pre-filter level | 0 | 100 | |
57 | filter 1 pan | -100 | 100 | |
58 | filter 2 pan | -100 | 100 | |
59 | pre-filter pan | -100 | 100 | |
60 | pre-filter source | 0 | 6 | |
61 | filter 1 invert phase | 0 | 1 | |
62 | drive type | 0 | 6 | |
63 | drive level | 0 | 100 | |
64 | program level | 0 | 100 | |
65 | fx mix | -50 | 50 | |
66 | envelope 1 attack time | 0 | 255 | |
67 | envelope 1 attack slope | 0 | 2 | |
68 | envelope 1 decay time | 0 | 255 | |
69 | envelope 1 decay slope | 0 | 2 | |
70 | envelope 1 sustain time | 0 | 255 | |
71 | envelope 1 sustain level | 0 | 100 | |
72 | envelope 1 release time | 0 | 255 | |
73 | envelope 1 release slope | 0 | 2 | |
74 | envelope 1 velocity to envelope | 0 | 100 | |
75 | envelope 1 reset every note | 0 | 1 | |
76 | envelope 1 free run | 0 | 1 | |
77 | envelope 1 loop | 0 | 3 | |
78 | envelope 1 sustain pedal | 0 | 1 | |
79 | envelope 2 attack time | 0 | 255 | |
80 | envelope 2 attack slope | 0 | 2 | |
81 | envelope 2 decay time | 0 | 255 | |
82 | envelope 2 decay slope | 0 | 2 | |
83 | envelope 2 sustain time | 0 | 255 | |
84 | envelope 2 sustain level | -100 | 100 | |
85 | envelope 2 release time | 0 | 255 | |
86 | envelope 2 release slope | 0 | 2 | |
87 | envelope 2 velocity to envelope | 0 | 100 | |
88 | envelope 2 reset every note | 0 | 1 | |
89 | envelope 2 free run | 0 | 1 | |
90 | envelope 2 loop | 0 | 3 | |
91 | envelope 2 sustain pedal | 0 | 1 | |
92 | envelope 3 attack time | 0 | 255 | |
93 | envelope 3 attack slope | 0 | 2 | |
94 | envelope 3 decay time | 0 | 255 | |
95 | envelope 3 decay slope | 0 | 2 | |
96 | envelope 3 sustain time | 0 | 255 | |
97 | envelope 3 sustain level | -100 | 100 | |
98 | envelope 3 release time | 0 | 255 | |
99 | envelope 3 release slope | 0 | 2 | |
100 | envelope 3 velocity to envelope | 0 | 100 | |
101 | envelope 3 reset every note | 0 | 1 | |
102 | envelope 3 free run | 0 | 1 | |
103 | envelope 3 loop | 0 | 3 | |
104 | envelope 3 sustain pedal | 0 | 1 | |
105 | lfo 1 tempo sync | 0 | 1 | |
106 | lfo 1 rate (free) | 0 | 1023 | |
107 | lfo 1 reset | 0 | 6 | |
108 | m1 slider influencelfo 1 | 0 | 100 | |
109 | lfo 2 tempo sync | 0 | 1 | |
110 | lfo 2 rate (free) | 0 | 1023 | |
111 | lfo 2 reset | 0 | 6 | |
112 | m1 slider influencelfo 2 | 0 | 100 | |
113 | S&H tempo sync | 0 | 1 | |
114 | S&H rate(free) | 0 | 1023 | |
115 | S&H reset | 0 | 4 | |
116 | S&H input | 0 | 1 | |
117 | S&H smoothing | 0 | 100 | |
118 | tracking input | 0 | 111 | |
119 | tracking preset | 0 | 9 | |
120 | tracking gridsize | 0 | 1 | |
121 | tracking point -16 | -100 | 100 | |
122 | tracking point -15 | -100 | 100 | |
123 | tracking point -14 | -100 | 100 | |
124 | tracking point -13 | -100 | 100 | |
125 | tracking point -12 | -100 | 100 | |
126 | tracking point -11 | -100 | 100 | |
127 | tracking point -10 | -100 | 100 | |
128 | tracking point -9 | -100 | 100 | |
129 | tracking point -8 | -100 | 100 | |
130 | tracking point -7 | -100 | 100 | |
131 | tracking point -6 | -100 | 100 | |
132 | tracking point -5 | -100 | 100 | |
133 | tracking point -4 | -100 | 100 | |
134 | tracking point -3 | -100 | 100 | |
135 | tracking point -2 | -100 | 100 | |
136 | tracking point -1 | -100 | 100 | |
137 | tracking point 0 | -100 | 100 | |
138 | tracking point 1 | -100 | 100 | |
139 | tracking point 2 | -100 | 100 | |
140 | tracking point 3 | -100 | 100 | |
141 | tracking point 4 | -100 | 100 | |
142 | tracking point 5 | -100 | 100 | |
143 | tracking point 6 | -100 | 100 | |
144 | tracking point 7 | -100 | 100 | |
145 | tracking point 8 | -100 | 100 | |
146 | tracking point 9 | -100 | 100 | |
147 | tracking point 10 | -100 | 100 | |
148 | tracking point 11 | -100 | 100 | |
149 | tracking point 12 | -100 | 100 | |
150 | tracking point 13 | -100 | 100 | |
151 | tracking point 14 | -100 | 100 | |
152 | tracking point 15 | -100 | 100 | |
153 | tracking point 16 | -100 | 100 | |
154 | program category | 0 | 8 | |
155 | Knob X | 0 | 161 | |
156 | Knob Y | 0 | 161 | |
157 | Knob Z | 0 | 161 | |
158 | filter 2 frequency relative | -400 | 400 | |
159 | lfo 1 rate (follow tempo) | 0 | 24 | |
160 | lfo 2 rate (follow tempo) | 0 | 24 | |
161 | S&H rate(synced) | 0 | 24 | |
180 | patch cable 1 source | 0 | 77 | |
181 | patch cable 1 destination | 0 | 77 | |
182 | patch cable 1 level | -1000 | 1000 | |
183 | patch cable 1 offset | -1000 | 1000 | |
184 | patch cable 2 source | 0 | 114 | |
185 | patch cable 2 destination | 0 | 77 | |
186 | patch cable 2 level | -1000 | 1000 | |
187 | patch cable 2 offset | -1000 | 1000 | |
188 | patch cable 3 source | 0 | 114 | |
189 | patch cable 3 destination | 0 | 77 | |
190 | patch cable 3 level | -1000 | 1000 | |
191 | patch cable 3 offset | -1000 | 1000 | |
192 | patch cable 4 source | 0 | 114 | |
193 | patch cable 4 destination | 0 | 77 | |
194 | patch cable 4 level | -1000 | 1000 | |
195 | patch cable 4 offset | -1000 | 1000 | |
196 | patch cable 5 source | 0 | 114 | |
197 | patch cable 5 destination | 0 | 77 | |
198 | patch cable 5 level | -1000 | 1000 | |
199 | patch cable 5 offset | -1000 | 1000 | |
200 | patch cable 6 source | 0 | 114 | |
201 | patch cable 6 destination | 0 | 77 | |
202 | patch cable 6 level | -1000 | 1000 | |
203 | patch cable 6 offset | -1000 | 1000 | |
204 | patch cable 7 source | 0 | 114 | |
205 | patch cable 7 destination | 0 | 77 | |
206 | patch cable 7 level | -1000 | 1000 | |
207 | patch cable 7 offset | -1000 | 1000 | |
208 | patch cable 8 source | 0 | 114 | |
209 | patch cable 8 destination | 0 | 77 | |
210 | patch cable 8 level | -1000 | 1000 | |
211 | patch cable 8 offset | -1000 | 1000 | |
212 | patch cable 9 source | 0 | 114 | |
213 | patch cable 9 destination | 0 | 77 | |
214 | patch cable 9 level | -1000 | 1000 | |
215 | patch cable 9 offset | -1000 | 1000 | |
216 | patch cable 10 source | 0 | 114 | |
217 | patch cable 10 destination | 0 | 77 | |
218 | patch cable 10 level | -1000 | 1000 | |
219 | patch cable 10 offset | -1000 | 1000 | |
220 | patch cable 11 source | 0 | 114 | |
221 | patch cable 11 destination | 0 | 77 | |
222 | patch cable 11 level | -1000 | 1000 | |
223 | patch cable 11 offset | -1000 | 1000 | |
224 | patch cable 12 source | 0 | 114 | |
225 | patch cable 12 destination | 0 | 77 | |
226 | patch cable 12 level | -1000 | 1000 | |
227 | patch cable 12 offset | -1000 | 1000 | |
230 | fx balance | -50 | 50 | |
231 | fx type 0 | 0 | 6 | |
232 | fx param a | -128 | 127 | |
233 | fx param b | -128 | 127 | |
234 | fx param c | -128 | 127 | |
235 | fx param d | -128 | 127 | |
236 | fx param e | -128 | 127 | |
237 | fx param f | -128 | 127 | |
238 | fx param g | -128 | 127 | |
239 | fx param h lfo synced | 0 | 24 | |
245 | fx2 type | 0 | 6 | |
246 | fx2 param a | -32768 | 32767 | *** |
247 | fx2 param b | -32768 | 32767 | *** |
248 | fx2 param c | -32768 | 32767 | *** |
249 | fx2 param d | -32768 | 32767 | *** |
250 | fx param a synced | 0 | 24 | |
512 | arpeggiator pattern | 0 | 31 | ** |
513 | arpeggiator pattern multiplier | 0 | 6 | ** |
514 | arpeggiator length | 0 | 14 | ** |
515 | arpeggiator octave range | 0 | 4 | ** |
516 | arpeggiator octave span | 0 | 2 | ** |
517 | arpeggiator note order | 0 | 5 | ** |
518 | arpeggiator enabled | 0 | 2 | ** |
519 | arpeggiator program tempo | 500 | 2500 | ** |