MIDI in GeoShred
GeoShred supports both MIDI In, MIDI Out. MIDI controllers can be assigned to the Control Surface, and the MIDI Inspector, Menu->MIDI, is where devices, both real and virtual can be configured. Since the MIDI specification does specify a protocol for publishing/querying device capabilities, we came up with MIDI Presets to quickly set up common uses cases.
Generally you use either MIDI In or MIDI Out, it is not possible to use both at the same time, unless MIDI Thru is enabled for the device in question. In this case you can play MIDI In to GeoShred from an external controller and have it play notes in GeoShred while simultaneously sending notes to MIDI Out.
- Menu->MIDI: The MIDI Inspector contains a list of MIDI Presets for various scenarios. If you select the preset named None then MIDI will not be sent out or received. This is the default.
- Menu->MIDI->Edit: Here is where you edit a MIDI Preset. Tap the Edit button and then name of the preset you want to edit. This will display the MIDI Preset Editor. You can also make a copy of a MIDI Preset by tapping on the copy icon. Factory MIDI Presets cannot be deleted, but user MIDI Presets can be deleted (and re-ordered). You can modify a factory MIDI preset, in which case the title of it turns yellow.
- Menu->MIDI->Bluetooth Icon: The Bluetooth Inspector is where you can connect to a Bluetooth device (for both input and output)
- Menu->MIDI->DIN Connector Icon: The MIDI Devices Inspector is where you decide which MIDI devices you want to send/receive to/from.
MIDI Preset Editor
In the MIDI Preset Editor you specify parameters for MIDI Input and Output
- Name Edit the name for user MIDI Presets, you cannot change the name of factory MIDI Presets.
- Channel Mode
- Single Channel Mode Only one channel is used. Common case for old style MIDI keyboards
- Multi Channel Mode. Multiple channels used. Control Change messages are sent on ALL channels in the range (Min Channel, MaxChannel), so only specify the channels you really need or you can get up to 15 times more MIDI traffic than you need. This can cause problems, do don't let it happen. We recommend using MPE Channel Mode when possible.
- MPE Channel Mode.Master Channel is 1, the Min Channel is 2 and the MaxChannel has to be greater than the Min Channel. In MPE Channel Mode MIDI controllers are only sent on the Master Channel, which greatly reduces MIDI traffic. For this reason alone MPE Channel Mode is better.
- Send ARP/MMI Roots Normally this is on for recording to/from GeoShred and off MIDI out performance. Only the roots of Mono Mode Intervals and the roots of arpeggiated notes are sent out if this is enabled.
- Legato MIDI If not enabled, send noteOff to MIDI Out after every noteOn when doing legato. Set legato in Performance Settings->Config->Play Mode/Legato. If enable only send a noteOff when the final note on the string is ended. Most times this is off, unless the synthesizer is like GeoShred which can handle legato re-articulation. Note: It is not necessary to turn this on to set Legato Velocity.
- Legato Velocity Velocity (1-127) for playing of legato notes. This is used whether or not Legato MIDI is enabled.
- Mono Mode Per Channel Only make sense for MPE or Multi Mode. If enabled Min Channel goes to string 1, Max Channel goes to String 6. Often used in recording.
- Pitch Bend Range Pitch bend range the receiving device is expecting, RPN0 is updated when this is modified. Note if there is Whammy slider on the Control Surface this pitch bend range will be modified according to this equation:
bendInSemitones = bendInSemitones * (rangeOfWhammySlider/pitchBendRange);
- Send Pitch Bend Range If this is off then the Pitch Bend Range RPN will not be sent to MIDI output. Sometimes this needs to be turned off if receiving synthesizers do not properly interpret RPN 0
- MIDI Channel/Note If this is on then a new MIDI channel is used for each note, otherwise the MIDI channel is related to the string.
- Channel Mode Same as for MIDI Out
- Mono Mode Per ChannelSame as for MIDI In
- Mono Mode Per Channel Offset Subtract this value from the channel number to get the string number on which to allocate the voice. Can be useful if the MIDI In device uses a channel other than 1 for the lowest channel it will put out.
- Pitch Bend Range: Pitch Bend Range the sending device uses.
- Control Reset Time Number of milliseconds before applying optional Set Value On Release. Since MIDI controllers do not indicate when they have stopped moving, as opposed to touch screen, where you get a "touches ended" event, defining Control Reset Time to something like 1000 ms would mean that after you stop moving say a Modulation Wheel, 1000 ms later the release value would be sent for controllers mapped to the Modulation Wheel MIDI controller. This applies both to controllers and the expression pad.
- Disable Control Reset Time If turned on the Control Reset Time is not applicable. This is most often used for the case of the Record-Playback MIDI Preset
- Expr Pad Capture Delay Number of milliseconds to wait before taking a sample from MIDI Controllers mapped to the Expression Pad. Some MIDI Controllers need this to be set to something other than zero.
- Override Finger Bend Portamento If on, use the Finger Bend Portamento value for fingered pitch bend coming from MIDI In
- Finger Bend Portamento Number of milliseconds for fingered pitch bend portamento. Override Finger Bend Portamento must be on
- MIDI Remapping Convert one MIDI controller to another or flip the value of a MIDI controller. A known reason you would want to flip a controller value is for some sustain pedals. Normally if controller 64 is received with a value of 127 it means maximum sustain. If for some reason it does not, you could create a MIDI Remapping with Flip and Sustain (64)
- Key Y Curve: Optional curve applied to the MIDI controller assigned to Key Y (typically Controller 74, typically found on MPE style controllers).
- Channel Pressure Curve Optional curve applied to Channel Pressure.
- Note On velocity Curve Optional curve applied to noteOn velocity.
- Note Off velocity Curve Optional curve applied to noteOn velocity.
Menu->MIDI->Bluetooth Icon - here you can connect to a Bluetooth device (for both input and output). Once a connection is made the device will automatically be enabled for Note Input and Note Output in the MIDI Devices Inspector.
Bluetooth connections can be tricky, especially when connecting from GeoShred to a Mac. Here's a way you can always get it to work:
- Turn off Bluetooth on your Mac
- Turn off Bluetooth on the iOS device running GeoShred.
- Open Audio MIDI Setup on your Mac.
- Turn on Bluetooth on your Mac
- In Audio MIDI Setup, double-click on the Bluetooth icon.
- Click the Advertise button.
- Turn on Bluetooth on the iOS device running GeoShred.
- Open the MIDI Presets in GeoShred.
- Click on the Bluetooth icon.
- Your Mac should now be available to connect to.
MIDI Devices Inspector
Menu->MIDI->DIN Connector: Here you will see a list of MIDI sources (devices that send MIDI to GeoShred) and MIDI destinations (devices GeoShred can send MIDI to GeoShred). By default, Note Input for all devices is enabled when a device is first discovered. It is your choice to decide whether you want MIDI Clock or MIDI Thru, these are left off by default. You can (and should) turn off devices you are not using as this will lessen MIDI traffic. The Input/Output configuration is persistent across GeoShred launches.
Each device may have it's own idiosyncrasies regarding input and output. In general, you have to understand the settings on each device, as plug and play is only partially possible with MIDI.
The device labeled "Network Session 1" by default in particular requires a great deal of configuration to get going. From a Mac, what you typically do is connect your Mac and iPad to the same WIFI network and then use the Audio MIDI Setup app to connect your iPad to your Mac. A good description on how to do this can be found here
Having said this, we do not recommend using MIDI over WIFI for any serious production work or live performance, there can be timing problems and lost data. It is fine for experimenting though.
- Note Input Enable/Disable MIDI notes from being received
- Clock Input Enable/Disable MIDI clock from being received
- Thru Enable/Disable MIDI Thru
- Note Output Enable/Disable MIDI notes from being sent
- Clock Output Enable/Disable MIDI clock from being sent
- Port MIDI Port Alias to send to
You assign MIDI controller mappings from the Control Surface editor. This enables GeoShred to send MIDI controllers from the Control Surface. On MIDI Input, controls will "fly" in response to MIDI messages.
- Menu->Control Surface: Tap on any control, and then tap on the MIDI button on the top left
- Now you can decide whether this control Receives and Sends MIDI, which port it Sends On (there is no concept of Receive ports), and you can add/edit/delete MIDI Controllers to associate with this control.
In addition to using your ear to determine proper behavior, the Trace Window (Menu->Show Trace) will tell you if note/parameter values are being properly sent/received from MIDI and/or sent to the GeoShred synth engine.
IMPORTANT: Trace can affect performance, please turn it off before trying any fast playing experiments. The easiest way to turn off trace is to simply close the Trace Window, or Menu->Show Trace->Options->Reset. Nothing will be written to the trace log file if you close the Trace Window or reset trace options.
If you find a problem, please try to make it repeatable and demonstrate what is wrong both with the trace output and an audio recording, which you easily make with the Record button in the Trace Window.
We also very much appreciate video bug reports. You can just use your phone to make an informal video to send to us.
Everything that goes to the Trace Window is written to the trace log file, GeoShredTrace.log which is in the GeoShred Documents folder. If you tap the Clear button in the Trace Window, the file is reset. You can access the Documents folder with iTunes file sharing. We also like an app called Phone View for this purpose. Again, nothing is written to the trace log file if the trace window is closed or no trace options are active.
You also can copy the contents of the Trace Window (Menu->Show Trace->Copy) into an email message if device running GeoShred is not connected to a computer. Using the Notes app is another way to do this.
If you want to analyze trends in trace messages, most trace messages are written as tab-delimited text, which is good for use in Excel.
You can also open audio recordings in sound editing applications such as Audacity or Adobe Audition to do analysis on sound files. If you expect there are strange things going on with the sound (most commonly clicks, incorrect pitch bends etc.), this sort of analysis can help diagnose problems.
See the Options button on the trace window for all the things you can monitor in the trace window.
MIDI Recording and Playback
For the best timing use a digital Audio/MIDI interface to connect your iPad to your computer.
NEVER use a WIFI network connected to the Internet, or you will get very poor timing. In a future release we may integrate Ableton Link to address this issue - but there will be more latency -
You can use Bluetooth or an ad hoc network but the timing will not be as good.
MIDI Port Aliases
GeoShred has a concept of "MIDI Port Aliases". This provides a way to refer to actual MIDI ports that appear in the MIDI devices list in the MIDI Preset Editor without having to worry about the actual ports disappearing or changing. These ports are named Port 1 - Port 32.
- Pick MIDI Preset: Menu->Single Channel
- Connect a standard MIDI device, like an Oxygen-25
- Connect your MIDI device to your digital interface
- Next, go to Menu->MIDI->DIN Connector (MIDI Devices Inspector), and make sure your digital interface is connected in the input section.
- Make sure the MIDI I/O switch is turned to input (green)
- Play notes from your MIDI device and you should hear GeoShred make sound. Be sure to experiment with the Modulation Wheel and Pitch Bend Wheel on your MIDI device.
- Experiment with mapping MIDI controllers on your device to the GeoShred Control Surface
- Something wrong? Look at the trace window and tell us what you you see.
- Pick MIDI Preset: Menu->MIDI->MPE Channel Mode
- Start an MPE-compliant app such as ThumbJam and put it in MPE mode. If you start GeoShred first, ThumbJam will probably be listening to MIDI form GeoShred, but double-check.
- Next, go to Menu->MIDI->DIN Connector (MIDI Devices Inspector), and select ThumbJam for NoteOutput, deselect any NoteInput. (Note you should not need to do this as GeoShred will find new outputs automatically)
- Turn on Background Audio and turn off Power Saver in ThumbJam
- Make sure the MIDI I/O switch is turned to output (blue)
- Play notes and you should hear a mix of the GeoShred and ThumbJam sound.
- We now want to have separate volume control for ThumbJam and GeoShred.
- To do this, add a new knob to the Control Surface for sending Channel Volume (7) to ThumbJam. Do this by hitting a + button on the an empty control surface slot, then pick Performance->MIDI Out->knob. Then tap the MIDI button, deselect Receive MIDI, and change the controller to Channel Volume (7). You can name this knob "TJ" so you know it's for ThumbJam
- Play some notes, then move the Amplifier level all the way down, and the ThumbJam volume all the way up. Now ThumbJam is loud and clear.
- Go to the Trace Window and turn on MIDI Channel Voice Messages, the hit the ALL button. Go to the trace window and verify you are seeing output like this when you move the TJ slider:
 0.00000 1 7 62 midiOutController ThumbJam
 0.03501 1 7 66 midiOutController ThumbJam
 0.04886 1 7 67 midiOutController ThumbJam
 0.06439 1 7 68 midiOutController ThumbJam
 0.08363 1 7 69 midiOutController ThumbJam
 0.10295 1 7 69 midiOutController ThumbJam
 0.12933 1 7 70 midiOutController ThumbJam
 0.13910 1 7 70 midiOutController ThumbJam
 0.15135 1 7 69 midiOutController ThumbJam
 0.16948 1 7 67 midiOutController ThumbJam
 0.18492 1 7 65 midiOutController ThumbJam
- Run all the playing experiments described above using ThumbJam, with GeoShred's Amplifier volume set to zero, then try the same with a mixture with GeoShred's Amplifier mixed in.
Multi-device MIDI Out
GeoShred can send MIDI Out to multiple virtual (or real) devices at the same time, but it can also assign each device to it's own range of strings
- Pick MIDI Preset: Menu->MIDI->String to MIDI Port
- Open 3 apps (or devices) that can receive MIDI, (perhaps ThumbJam, SampleWiz and Animoog)
- Go to the MIDI Devices Inspector: Menu->MIDI->DIN connector
- Make sure your devices are there and enabled
- Make sure the MIDI I/O switch is turned to output (blue)
- Assign your Ports 1, 2 and 3 to each of the devices
- Now the top two strings (1, 2) play the device/app on Port 1, the next two strings (3,4) play the device/app on Port 2, and the bottom two strings (5,6) play the third device
- Experiment with creating MIDI Out knobs on the control surface to send Channel Volume to each of the three ports to verify you can get independent volume control
- Edit the MIDI Preset: Menu->MIDI->String to MIDI Port, then tap the Edit button in the upper right, then tap on name of the MIDI preset.
- Under the MIDI Out section, you will see row labeled String to MIDI Port. Tap on that row, and you will be brought to a view where you can modify the string/port mappings
- In the String to Port Mapping View you can map one or more string to a given port, set a pitch bend range for the port, and also optionally decide whether you want to ignore the octave button or not
- You might want to ignore the octave button if you want one set of strings do octave rounding (eg. a lead voice) and another set to always stay in the same octave (eg. a bass or comping voice).
- All other MIDI preset related parameters are inherited from the MIDI Preset. If you can think of anything else that needs to be independent please let us know.
- Our most common scenario is to use Logic running on a Mac for MIDI recording, so much of the follow discussion will be assuming this. We also assume you know how to set up MIDI tracks in Logic
- Download the MIDI Monitor on your Mac, if you don't already have it, it is extremely useful for analyzing the MIDI data in and out of the Mac. Use this in concert with the GeoShred Trace window.
- Also, we assume you are using a digital interface between your Mac and iPad, such as the iConnect Audio4+. While MIDI over WIFI and bluetooth are fine for experimentation, they are not reliable for production.
- We strongly suggest that you un-check File->Project Settings->Recording->MIDI Data Reduction in Logic for more accurate recording/playback
- Select the preset called MIDI Recording Test
- Select the MIDI preset called Record-Playback
- Turn off the Arp Enable, turn off Mono Intervals, select String play mode.
- In the MIDI Preset Editor, select the MIDI Devices Inspector, tap on "All On", or select all the input and output ports you wish to use for recording/playback.
- Set up Logic to listen to MIDI on the ports you chose, and then press the record button
- Set MIDI I/O switch to output (blue)
- In GeoShred play some notes, when you're done, hit the stop button in Logic then go back to GeoShred, and toggle the MIDI I/O switch to input (green)
- Play the notes from Logic
- Repeat the above steps with the following setupså:
- Turn on the arpeggiator, switch to Mono play mode and select ain interval, like min7. Notice GeoShred will only record single notes, not the entire arpeggio.
- Turn on the arpeggiator and mono mode intervals
- In the Record-Playback MIDI Preset, turn off the "Send Arp/MMI Roots" switch
- Now arpeggios will be recorded. If you want to hear them played back, you should turn off Mono Intervals and Arp Enable and switch the play mode to String or Poly
- If you play the arpeggiator in String or Poly play mode all notes will be recorded.
- Now try doing everything above, but use the Roli Seaboard for MIDI input. To do that, turn on the Thru switch next to the Roli Seaboard input in the MIDI Devices Inspector . You should also be able to simultaneously play from the Roli Seaboard and from the glass.
While you are trying the steps above, take note of what is happening in the MIDI recording. Look at both the Event window in Logic and the Trace window in GeoShred. Notice for all moves you do on the control surface and the expression pad, MIDI controllers are sent and received.
You can move seamlessly between arpeggiator playing mode, play mode and gliss mode without the sound stopping. Beware when you switch from Mono Intervals/Mono play mode to String play mode or Poly play mode. If you do that, running voices will decay keep ringing out until you hit the string they were ringing out on.
Mono Mode and MIDI recording
There are several cases of Mono Mode that you can experiment with. Be sure to try pitch bending in each mode (except Piano Gliss) and also try restriking keys that are already sounding.
- Mono Mode, Piano Gliss Mode, Legato On
- Mono Mode, Piano Gliss Mode, Legato Off
- Mono Mode, Guitar Gliss Mode, Snap On, Legato On
- Mono Mode, Guitar Gliss Mode, Snap On, Legato Off
- Mono Mode, Guitar Gliss Mode, Snap Off, fast Slide Speed, Legato On
- Mono Mode, Guitar Gliss Mode, Snap Off, fast Slide Speed, Legato Off
- Mono Mode, Guitar Gliss Mode, Snap Off, slow Slide Speed, Legato On
- Mono Mode, Guitar Gliss Mode, Snap Off, slow Slide Speed, Legato Off
- Mono Mode, Slide Gliss Mode, Snap On, Legato On
- Mono Mode, Slide Gliss Mode, Snap On, Legato Off
- Mono Mode, Slide Gliss Mode, Snap Off, fast Slide Speed, Legato On
- Mono Mode, Slide Gliss Mode, Snap Off, fast Slide Speed, Legato Off
- Mono Mode, Slide Gliss Mode, Snap Off, slow Slide Speed, Legato On
- Mono Mode, Slide Gliss Mode, Snap Off, slow Slide Speed, Legato Off
GeoShred implements a subset of the MIDI Specification, along with the proposed MPE Extensions. For full technical details on MIDI, see The MIDI Manufacturer's Association
- Channel Voice Messages
- Control Change, Note On, Note Off, Program Change, Pitch Bend Change, Polyphonic Key Pressure
- System Messages
- Sustain, Controller 64 is continuous and is always mapped to the Release Time parameter of the guitar
- Channel Voice Messages
- Control Change, Note On, Note Off, Pitch Bend Change, Polyphonic Key Pressure
- Channel Mode Messages
- All Notes Off, All Sounds Off, Reset All Controllers
- System Messages
Whenever a MIDI preset is loaded or a parameter in it changed, the relevant. RPNs are updated
MIDI Program Change
When GeoShred receives a program change message it switches to either the next or previous preset in the setlist. This means program change is relative, not absolute.
- If an attempt is made to increment past the number of available presets then the first preset in the setlist is selected.
- If an attempt is made to decrement past the first available preset in the setlist, then the last preset is selected
MIDI Panic Button
The MIDI Panic button is your friend. Use it if there are ever stuck notes or anything else you don't want to hear. You can record the panic sequence into the beginning of MIDI recordings if you like if you want to be sure the previous state of the GeoShred is cleared.
Interval Separation Time and MIDI Clock
In Performance Settings->Perform->Config, the Separation
Time for successive notes of a chord can be slaved to MIDI
Clock by enabling Performance Settings->Perform->Control
/ Master Rate / MIDI Clock.
The value of the Separation Time is in seconds, and it is
the inverse of the bpm of the MIDI Clock times 60.0.
Example: If bpm is 120, then a note occurs every half
second. You can further multiply the Master Rate by a
factor specified using the pop-up menu below
Performance Settings->Perform->Config->Master Rate.
Key Y handling, Controller 74
MIDI In: Typically listen to Brightness (74) and apply the controller value to the stack of controllers on Key Y
MIDI Out: Typically use a MIDI Out controller to send to Brightness (74)
Initial Key Y values send before noteOn
If you have a conventional MIDI controller you can use the Modulation Wheel to affect things typically mapped to Key Y