Most, or at least many, audio IO devices for computers support ADAT optical IO although these ports are often configured as S/PDIF by default. The difference is that ADAT supports 8 channels while S/PDIF is stereo or Dolby. I'm not aware of any real-time dolby encoders so using S/PDIF is limited to 2 channels.
Also, although Mac headphone jacks also support digital optical, I'm not aware of any ADAT drivers for the Mac
In the audio window in EigenD, you can pick an output to use. The internal channel mixer mixes to stereo and is connected to an audio agent which, in the factory setups, has two audio channels numbered 1 and 2.
For use as a performance instrument you simply select an output device to which you have an audio system connected. To record, you need some way of routing the audio into your DAW such as Jack or Soundflower, an external mixer with virtual channels, or an IO device using loopback (or a return bus if it has one)
Typically, one might put an optical cable between the S/PDIF out and in which will then present the stereo audio to the DAW.
The problem is that the signal is pre-mixed in EigenD which is perfect for (stereo) performance but problematic if you want to do post on a DAW.
Here is the solution.
Set the optical IO on your interface to ADAT
Put an optical cable from the ADAT out to the ADAT in
Determine the channel numbers associated with ADAT (You can see this in AUDIO/MIDI setup on a Mac)
Open your instrument setup in EigenD and in Workbench
Locate the audio agent (lower right corner)
Open the agent (click the disclosure triangle)
Locate the audio inputs (yes, the inputs to the agent are the outputs from EigenD)
Open the list of outputs
Note that there are two, one for left and right, that they are wired to the channel mixer, and are channel 1 and 2
Click the + bubble on the output parameter (not on the individual channel)
A popup will appear, enter the 1st channel number associated with the ADAT output of your interface)
Repeat adding channels for the rest of the ADAT channels
Delete the wires from the channel mixer to channel 1/2
Add wires from the channel mixer to ADAT 1/2
Delete wires from the audio rigs you wish to separate to the channel mixer
Add wires from the desired audio units to the remaining ADAT channels
The result looks like this (click to enlarge):
Now just select the interface in your daw and create tracks for each of the ADAT inputs (not outputs).
In addition to recording things separately for post this will let you do things like creating a surround mix, ducking channels (live or inpost) and so on.
With the advent of the Workbench tool in Eigenlabs version 2 software there is now a great way to explore the setups that configure the instrument visually.
While workbench is primarily a tool for creating setups, it can also provide deep insights into any existing setup.
One of the challenges for people who might be interested in an Eigenharp is that they are difficult to find in a retail setting and, even if you do, there is typically no knowledgable person to walk you through what the instrument is capable of.
My hope is that this free book will help in that regard.
There seems to be a process that most new (or even potential) Eigenharp players go through that they find challenging and or upsetting. This is quite unfortunate and unnecessary. I hope this post helps.
The first thing is: Don't PANIC
This is a big purchase. You did your homework. You have a list of ways you want to use it in many applications. You've been told, yup, that is possible. Now you want to know how and you keep being frustrated. Don't PANIC
Here are some thoughts and suggestions that might make you much happier and let you have some fun.
First: Get the latest software.
It ships with the current stable software. Virtually every player uses the current testing version and many use the experimental versions. Download *only* the software not the resources. Loading them does not remove the older versions so, if you should have an issue just step back.
Second: set aside, for the moment, your goals...
....and explore what the Eigenharp does by itself and how it is controlled. This is fun, rewarding, and removes a layer of complexity so that you can focus on your goals later.
Third: Learn the instrument as a stand alone thing
There are two dimensions to this. Controlling the instrument, playing the instrument.
The booklet is a reference to the instrument while the video tutorials give initial "how to" information.
Watch the videos, read the booklet, work through the booklet trying each control overlay. You won't remember them all but you will know how to find them and those that you use will quickly become familiar.
Here is one reasonable progression to follow. These are *all* covered in the video tutorials:
A) The first thing you need to know is how to select the instrument to play... focus on that and then select the piano in split one and play it for a while. It will be set for C major so, if you want to use some sheet music find a couple of songs that you like in C with no accidentals. Here is a mapping of the keyboard in C major. Get comfortable with the key layout and, most importantly, the sensitivity of the keys. The piano is a good starting point because it is not sensitive to pitch and yaw.
B1) Second, work on changing the root and scale. This will give you many more songs to play and is great for just noodling and improvising. I'd suggest staying away from chromatic for a bit. The downside is you won't have access to accidentals. The upside is that you can't accidentally hit 'wrong' notes while improvising.
B2) Try some of the other pre-loaded sounds. Particularly the cello which is very responsive to control input. At the same time, explore some other splits and using multiple keygroups.
C1) Third, work on loading your own AUs and Soundfonts. You will find that many such instruments are designed with a keyboard in mind and they use all sorts of techniques to make the sound more variable and lifelike. On an Eigenharp, you can do this yourself using pitch, yaw, and pressure so be sure to try some sounds that you previously felt were static and flat. You will find them a good match.
C2) Try some stand-alone modules or HW synths. This will require you to set up a MIDI path and that will be specific to you system and the SW you choose to use. On a Mac I use MIDI Patchbay
D) Explore the drummer and try some looping. This is great fun and will give you some experience with playing on several smaller keygroups.
E) Work with a focus on chromatic settings. Try out the scripts to lite the root keys (they help a lot). Here is a chromatic keyboard mapping. I left this to last but this is a matter of personal choice. If you are a keyboard player you might be more interested in this than improvising in scales but one of the great powers of the instrument is improvising in scales and looping.
Personally, I'd do all the above without using stage initially. Stage is easy and quick but it takes you away from the instrument and your arrangement. It is great for making a setup but not so great for actually playing. So, if you start with the keyboard control mechanisms you will be all set to play in a way that might be a longer journey if you rely on stage.
Finally: Re focus on the goals you had in the first place. All the stuff above will be out of the way and you will be familiar in an overall way with the instrument
Presently the Eigenharp does not have a CV output (it does have an i2c port on the base station pro but it is not implemented). However, Effective with EigenD 1.3.x there is a very effective ability to manage the MIDI outputs in great detail (including 14bit controllers). So the topic of MIDI to CV is most interesting.
As you can see in the earlier post, one can send 14bit controller info directly to a Voyager but the case study at Haken is interesting. Using CC's to crete an envelope may not be an everyday thing but it creates some possibilities that are compelling.
So, rather than work directly with the voyager, I tried a little experiment with the MP201. The current SW has MIDI>CV and even the older SW has MIDI CC> CV expression. Importantly, the smoothing can be switched off. Perhaps more importantly, the MP201 can receive MIDI over USB and does not seem to mind high data rates
I wish I had the voyager patch used in the case study above to affirm my experiment but here is what I tried:
- using the factory MIDI>CV setup I changed channels 3 & 4 to be expression channels listening to MIDI CCs 70 and 71
- I patched pitch and gate as expected and CC70>Volume CV
- in EigenD I mapped pressure to CC70 (7bit, no decimation)
As far as I can tell, I can include the attack phase of the envelop on the Voyager handily.
Now, I'm not claiming this is a better solution than having CV on the controlling device but it *is* workable
Well, I do not hear much difference The Alpha strikes me as a bit more 'crunchy' as the sound evolves. Clearly the curve differs (it is rather difficult to modulate the breath control identically to turning a pot). It is worth noting that the Voyager does AD/DA on the pot itself
So lets *look* at a spectrogram.
This is a spectrogram made in soundtrack pro (which was also used for recording the sound. Exactly the same signal path was used in both instances). hmmmm.... something is happening.
Lets look at the data for CC19's start to cc19= about 10.
From the breath control:
13:17:01.896From Eigenlabs 1Control15120
13:17:01.896From Eigenlabs 1Control1190
13:17:01.907From Eigenlabs 1Control15181
13:17:01.907From Eigenlabs 1Control1190
13:17:01.919From Eigenlabs 1Control15131
13:17:01.919From Eigenlabs 1Control1193
13:17:01.931From Eigenlabs 1Control15139
13:17:01.931From Eigenlabs 1Control1193
13:17:01.942From Eigenlabs 1Control15155
13:17:01.942From Eigenlabs 1Control1193
13:17:01.954From Eigenlabs 1Control15171
13:17:01.954From Eigenlabs 1Control1193
13:17:01.966From Eigenlabs 1Control151111
13:17:01.966From Eigenlabs 1Control1193
13:17:01.977From Eigenlabs 1Control1517
13:17:01.977From Eigenlabs 1Control1194
13:17:01.989From Eigenlabs 1Control15139
13:17:01.989From Eigenlabs 1Control1194
13:17:02.000From Eigenlabs 1Control15163
13:17:02.000From Eigenlabs 1Control1194
13:17:02.012From Eigenlabs 1Control15171
13:17:02.012From Eigenlabs 1Control1194
13:17:02.024From Eigenlabs 1Control15195
13:17:02.024From Eigenlabs 1Control1194
13:17:02.047From Eigenlabs 1Control151103
13:17:02.047From Eigenlabs 1Control1194
13:17:02.059From Eigenlabs 1Control151111
13:17:02.059From Eigenlabs 1Control1194
13:17:02.070From Eigenlabs 1Control151127
13:17:02.070From Eigenlabs 1Control1194
13:17:02.082From Eigenlabs 1Control15115
13:17:02.082From Eigenlabs 1Control1195
13:17:02.093From Eigenlabs 1Control15123
13:17:02.093From Eigenlabs 1Control1195
13:17:02.105From Eigenlabs 1Control15147
13:17:02.105From Eigenlabs 1Control1195
13:17:02.117From Eigenlabs 1Control15155
13:17:02.117From Eigenlabs 1Control1195
13:17:02.128From Eigenlabs 1Control15171
13:17:02.128From Eigenlabs 1Control1195
13:17:02.140From Eigenlabs 1Control15195
13:17:02.140From Eigenlabs 1Control1195
13:17:02.151From Eigenlabs 1Control151103
13:17:02.151From Eigenlabs 1Control1195
13:17:02.163From Eigenlabs 1Control151127
13:17:02.163From Eigenlabs 1Control1195
13:17:02.175From Eigenlabs 1Control15123
13:17:02.175From Eigenlabs 1Control1196
13:17:02.186From Eigenlabs 1Control15139
13:17:02.186From Eigenlabs 1Control1196
13:17:02.198From Eigenlabs 1Control15155
13:17:02.198From Eigenlabs 1Control1196
13:17:02.209From Eigenlabs 1Control15171
13:17:02.209From Eigenlabs 1Control1196
13:17:02.221From Eigenlabs 1Control15187
13:17:02.221From Eigenlabs 1Control1196
13:17:02.233From Eigenlabs 1Control151119
13:17:02.233From Eigenlabs 1Control1196
13:17:02.244From Eigenlabs 1Control1517
13:17:02.244From Eigenlabs 1Control1197
13:17:02.256From Eigenlabs 1Control15139
13:17:02.256From Eigenlabs 1Control1197
13:17:02.267From Eigenlabs 1Control15163
13:17:02.267From Eigenlabs 1Control1197
13:17:02.279From Eigenlabs 1Control15195
13:17:02.279From Eigenlabs 1Control1197
13:17:02.291From Eigenlabs 1Control151119
13:17:02.291From Eigenlabs 1Control1197
13:17:02.302From Eigenlabs 1Control15115
13:17:02.302From Eigenlabs 1Control1198
13:17:02.314From Eigenlabs 1Control15147
13:17:02.314From Eigenlabs 1Control1198
13:17:02.325From Eigenlabs 1Control15171
13:17:02.325From Eigenlabs 1Control1198
13:17:02.337From Eigenlabs 1Control15195
13:17:02.337From Eigenlabs 1Control1198
13:17:02.349From Eigenlabs 1Control151119
13:17:02.349From Eigenlabs 1Control1198
13:17:02.360From Eigenlabs 1Control15123
13:17:02.360From Eigenlabs 1Control1199
13:17:02.372From Eigenlabs 1Control15147
13:17:02.372From Eigenlabs 1Control1199
13:17:02.384From Eigenlabs 1Control15171
13:17:02.384From Eigenlabs 1Control1199
13:17:02.395From Eigenlabs 1Control15195
13:17:02.395From Eigenlabs 1Control1199
13:17:02.407From Eigenlabs 1Control151127
13:17:02.407From Eigenlabs 1Control1199
13:17:02.418From Eigenlabs 1Control15123
13:17:02.418From Eigenlabs 1Control11910
13:17:02.430From Eigenlabs 1Control15147
13:17:02.430From Eigenlabs 1Control11910
13:17:02.442From Eigenlabs 1Control15163
13:17:02.442From Eigenlabs 1Control11910
13:17:02.453From Eigenlabs 1Control15179
13:17:02.453From Eigenlabs 1Control11910
.... And then from the pot:
13:18:55.531From 01X:3Control1192
13:18:55.531From 01X:3Control1518
13:18:55.553From 01X:3Control1192
13:18:55.553From 01X:3Control15176
13:18:55.579From 01X:3Control1193
13:18:55.579From 01X:3Control15116
13:18:55.598From 01X:3Control1193
13:18:55.598From 01X:3Control15184
13:18:55.620From 01X:3Control1194
13:18:55.620From 01X:3Control15124
13:18:55.639From 01X:3Control1194
13:18:55.639From 01X:3Control15192
13:18:55.658From 01X:3Control1195
13:18:55.658From 01X:3Control15132
13:18:55.676From 01X:3Control1195
13:18:55.676From 01X:3Control151100
13:18:55.699From 01X:3Control1196
13:18:55.699From 01X:3Control15148
13:18:55.721From 01X:3Control1197
13:18:55.721From 01X:3Control1510
13:18:55.740From 01X:3Control1197
13:18:55.740From 01X:3Control15168
13:18:55.762From 01X:3Control1198
13:18:55.762From 01X:3Control15112
13:18:55.781From 01X:3Control1198
13:18:55.781From 01X:3Control15188
13:18:55.799From 01X:3Control1199
13:18:55.799From 01X:3Control15128
13:18:55.822From 01X:3Control1199
13:18:55.822From 01X:3Control151100
13:18:55.848From 01X:3Control11910
13:18:55.848From 01X:3Control15144
13:18:55.866From 01X:3Control11910
13:18:55.866From 01X:3Control151112
13:18:55.889From 01X:3Control11911
13:18:55.889From 01X:3Control15156
hmmmm..... there is a lot less data from the pot but that may just imply a difference in speed of the sweep (and my unstable lung capacity).
Conclusion:
Well, I don't really have a well formed reaction to this at this time. Do you?
I've heard a lot of discussion on the topic that seems to suggest that there is a difference in capability or effectiveness between these two protocols that a musician should be concerned with.
The Eigenharp is capable of generating a lot of data and applying it in various ways (internally, via AU/VSTs, via MIDI) with more arriving
I use various soft synths, AUs, hard synths and a a couple of CV-capable devices
I do not develop musical hardware or software solutions
So the question is; Are the distinctions between MIDI and OSC material to what matters to me? I think the answer is no.
I'm planning to do some experiments with the stuff I have at hand, but those will focus on MIDI and CV, specifically addressing the best way for me to use the eigenharp to control some Moogerfoggers and a Moog Voyager.
MIDI DIN transport is a red herring. It enabled several generations of hardware to talk to each other (filling a void), some are still limited to that but there are a lot of other transports available today. Nothing in this statement has any bearing on the effectiveness of capability of a data protocol
MIDI events are useful simply because they are well known and universally used. OSC can do this but both 'ends' of the exchange need to agree in advance on meaning. A standard event model for music will certainly arise. At that time, this will be a red herring (for new devices) as well.
OSC is more extensible, MIDI exclusive messages work (but are perversely opaque). This does not seem to matter to someone simply wanting to play music on devices communicating using either protocol. Further, it will be interesting to see if musicians are motivated to use OSC extensibility once it has a rich event model (any more than they craft sysex messages in MIDI now).
MIDI messages are more efficient than OSC with respect to total data transferred per message. Well that probably matters for every device that uses a MIDI DIN plug and is less significant for other transport settings. Also, It is probably only true where the majority of traffic consists of standard events (vs exclusive messages)
MIDI is typically lower resolution. IMHO 7bits is enough for some control info and 14 is enough for anything I need. It might seem silly to contemplate crafting a sysex message to carry a 64bit floating point number but one could and it is hard to see much practical difference between the use of such a structure and something similar crafted in OSC (except to the person doing the crafting, perhaps ;-). (but consider that there are still people coding Fortran with delight hehehe))
Conclusion:
The brouhaha is mostly sound and thunder signifying nothing.
A nice shiny new protocol is a good thing. Nobody would reasonably use MIDI in the context of things like the widgets of Eigenlabs Stage application (although adding MIDI capability to Stage would be a good thing for bringing together the control of other devices).
Actual users probably do not want any visibility into either protocol (I'm glad Stage works so well but I'm glad there is a GUI for me to use)
MIDI itself does not limit resolution but the MIDI event model's 14bit capability is not widely implemented. 14bits is likely not a practical limitation but an OSC implementation could easily allow more.
Final thoughts: I'll need MIDI for a long time (always) as I have MIDI DIN equipment. OSC will be a valuable addition, particularly in contexts like Stage. Whatever expressiveness I'm capable of can be delivered by either
The first bit is the dry cello model, the second has the effect, and the last bit is the effect minus the cello itself.
The 'strings' were tuned As shown in the scree cap below. One can also set the string frequency as notes (eg: c1) which are then converted to Hz. and, indeed this is how the setting below were derived (CGDA)