Sunday, March 20, 2011

Moog Front Panel Pot vs Alpha 14bit CC

Here is a bit of a test comparing front panel and MIDI control of a Voyager.

Methodology


  • A voice was selected from the Voyager factory library (D49 Moshi Moshi)
  • The voyager was connected to the Alpha via MIDI DIN
  • The alpha uses it's MIDI1 feed, all controllers except the Breath control are cleared and BC is set to send MIDI cc 19+51 (ie: 14 bit info)
  • The voyager Filter Cutoff is set to 0
  • A note is played on the Voyager keyboard and the filter is swept from 0 to full slowly and the twice at a faster rate
  • The voyager filter cutoff is returned to 0
  • The same note is played on the voyager keyboard
  • The breath controller on the Alpha is used to sweep the filter slowly and then twice at a faster rate and then a few times quite quickly
This is the resulting sound:  Note that soundcloud seems to have mangled it in transcoding, so download it to hear it.


Filter cutoff sweep - via Voyager panel pot and Alpha Breath CC19+51 by Mike Milton

Analysis

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.896 From Eigenlabs 1 Control 1 51 20
13:17:01.896 From Eigenlabs 1 Control 1 19 0
13:17:01.907 From Eigenlabs 1 Control 1 51 81
13:17:01.907 From Eigenlabs 1 Control 1 19 0
13:17:01.919 From Eigenlabs 1 Control 1 51 31
13:17:01.919 From Eigenlabs 1 Control 1 19 3
13:17:01.931 From Eigenlabs 1 Control 1 51 39
13:17:01.931 From Eigenlabs 1 Control 1 19 3
13:17:01.942 From Eigenlabs 1 Control 1 51 55
13:17:01.942 From Eigenlabs 1 Control 1 19 3
13:17:01.954 From Eigenlabs 1 Control 1 51 71
13:17:01.954 From Eigenlabs 1 Control 1 19 3
13:17:01.966 From Eigenlabs 1 Control 1 51 111
13:17:01.966 From Eigenlabs 1 Control 1 19 3
13:17:01.977 From Eigenlabs 1 Control 1 51 7
13:17:01.977 From Eigenlabs 1 Control 1 19 4
13:17:01.989 From Eigenlabs 1 Control 1 51 39
13:17:01.989 From Eigenlabs 1 Control 1 19 4
13:17:02.000 From Eigenlabs 1 Control 1 51 63
13:17:02.000 From Eigenlabs 1 Control 1 19 4
13:17:02.012 From Eigenlabs 1 Control 1 51 71
13:17:02.012 From Eigenlabs 1 Control 1 19 4
13:17:02.024 From Eigenlabs 1 Control 1 51 95
13:17:02.024 From Eigenlabs 1 Control 1 19 4
13:17:02.047 From Eigenlabs 1 Control 1 51 103
13:17:02.047 From Eigenlabs 1 Control 1 19 4
13:17:02.059 From Eigenlabs 1 Control 1 51 111
13:17:02.059 From Eigenlabs 1 Control 1 19 4
13:17:02.070 From Eigenlabs 1 Control 1 51 127
13:17:02.070 From Eigenlabs 1 Control 1 19 4
13:17:02.082 From Eigenlabs 1 Control 1 51 15
13:17:02.082 From Eigenlabs 1 Control 1 19 5
13:17:02.093 From Eigenlabs 1 Control 1 51 23
13:17:02.093 From Eigenlabs 1 Control 1 19 5
13:17:02.105 From Eigenlabs 1 Control 1 51 47
13:17:02.105 From Eigenlabs 1 Control 1 19 5
13:17:02.117 From Eigenlabs 1 Control 1 51 55
13:17:02.117 From Eigenlabs 1 Control 1 19 5
13:17:02.128 From Eigenlabs 1 Control 1 51 71
13:17:02.128 From Eigenlabs 1 Control 1 19 5
13:17:02.140 From Eigenlabs 1 Control 1 51 95
13:17:02.140 From Eigenlabs 1 Control 1 19 5
13:17:02.151 From Eigenlabs 1 Control 1 51 103
13:17:02.151 From Eigenlabs 1 Control 1 19 5
13:17:02.163 From Eigenlabs 1 Control 1 51 127
13:17:02.163 From Eigenlabs 1 Control 1 19 5
13:17:02.175 From Eigenlabs 1 Control 1 51 23
13:17:02.175 From Eigenlabs 1 Control 1 19 6
13:17:02.186 From Eigenlabs 1 Control 1 51 39
13:17:02.186 From Eigenlabs 1 Control 1 19 6
13:17:02.198 From Eigenlabs 1 Control 1 51 55
13:17:02.198 From Eigenlabs 1 Control 1 19 6
13:17:02.209 From Eigenlabs 1 Control 1 51 71
13:17:02.209 From Eigenlabs 1 Control 1 19 6
13:17:02.221 From Eigenlabs 1 Control 1 51 87
13:17:02.221 From Eigenlabs 1 Control 1 19 6
13:17:02.233 From Eigenlabs 1 Control 1 51 119
13:17:02.233 From Eigenlabs 1 Control 1 19 6
13:17:02.244 From Eigenlabs 1 Control 1 51 7
13:17:02.244 From Eigenlabs 1 Control 1 19 7
13:17:02.256 From Eigenlabs 1 Control 1 51 39
13:17:02.256 From Eigenlabs 1 Control 1 19 7
13:17:02.267 From Eigenlabs 1 Control 1 51 63
13:17:02.267 From Eigenlabs 1 Control 1 19 7
13:17:02.279 From Eigenlabs 1 Control 1 51 95
13:17:02.279 From Eigenlabs 1 Control 1 19 7
13:17:02.291 From Eigenlabs 1 Control 1 51 119
13:17:02.291 From Eigenlabs 1 Control 1 19 7
13:17:02.302 From Eigenlabs 1 Control 1 51 15
13:17:02.302 From Eigenlabs 1 Control 1 19 8
13:17:02.314 From Eigenlabs 1 Control 1 51 47
13:17:02.314 From Eigenlabs 1 Control 1 19 8
13:17:02.325 From Eigenlabs 1 Control 1 51 71
13:17:02.325 From Eigenlabs 1 Control 1 19 8
13:17:02.337 From Eigenlabs 1 Control 1 51 95
13:17:02.337 From Eigenlabs 1 Control 1 19 8
13:17:02.349 From Eigenlabs 1 Control 1 51 119
13:17:02.349 From Eigenlabs 1 Control 1 19 8
13:17:02.360 From Eigenlabs 1 Control 1 51 23
13:17:02.360 From Eigenlabs 1 Control 1 19 9
13:17:02.372 From Eigenlabs 1 Control 1 51 47
13:17:02.372 From Eigenlabs 1 Control 1 19 9
13:17:02.384 From Eigenlabs 1 Control 1 51 71
13:17:02.384 From Eigenlabs 1 Control 1 19 9
13:17:02.395 From Eigenlabs 1 Control 1 51 95
13:17:02.395 From Eigenlabs 1 Control 1 19 9
13:17:02.407 From Eigenlabs 1 Control 1 51 127
13:17:02.407 From Eigenlabs 1 Control 1 19 9
13:17:02.418 From Eigenlabs 1 Control 1 51 23
13:17:02.418 From Eigenlabs 1 Control 1 19 10
13:17:02.430 From Eigenlabs 1 Control 1 51 47
13:17:02.430 From Eigenlabs 1 Control 1 19 10
13:17:02.442 From Eigenlabs 1 Control 1 51 63
13:17:02.442 From Eigenlabs 1 Control 1 19 10
13:17:02.453 From Eigenlabs 1 Control 1 51 79
13:17:02.453 From Eigenlabs 1 Control 1 19 10

.... And then from the pot:

13:18:55.531 From 01X:3 Control 1 19 2
13:18:55.531 From 01X:3 Control 1 51 8
13:18:55.553 From 01X:3 Control 1 19 2
13:18:55.553 From 01X:3 Control 1 51 76
13:18:55.579 From 01X:3 Control 1 19 3
13:18:55.579 From 01X:3 Control 1 51 16
13:18:55.598 From 01X:3 Control 1 19 3
13:18:55.598 From 01X:3 Control 1 51 84
13:18:55.620 From 01X:3 Control 1 19 4
13:18:55.620 From 01X:3 Control 1 51 24
13:18:55.639 From 01X:3 Control 1 19 4
13:18:55.639 From 01X:3 Control 1 51 92
13:18:55.658 From 01X:3 Control 1 19 5
13:18:55.658 From 01X:3 Control 1 51 32
13:18:55.676 From 01X:3 Control 1 19 5
13:18:55.676 From 01X:3 Control 1 51 100
13:18:55.699 From 01X:3 Control 1 19 6
13:18:55.699 From 01X:3 Control 1 51 48
13:18:55.721 From 01X:3 Control 1 19 7
13:18:55.721 From 01X:3 Control 1 51 0
13:18:55.740 From 01X:3 Control 1 19 7
13:18:55.740 From 01X:3 Control 1 51 68
13:18:55.762 From 01X:3 Control 1 19 8
13:18:55.762 From 01X:3 Control 1 51 12
13:18:55.781 From 01X:3 Control 1 19 8
13:18:55.781 From 01X:3 Control 1 51 88
13:18:55.799 From 01X:3 Control 1 19 9
13:18:55.799 From 01X:3 Control 1 51 28
13:18:55.822 From 01X:3 Control 1 19 9
13:18:55.822 From 01X:3 Control 1 51 100
13:18:55.848 From 01X:3 Control 1 19 10
13:18:55.848 From 01X:3 Control 1 51 44
13:18:55.866 From 01X:3 Control 1 19 10
13:18:55.866 From 01X:3 Control 1 51 112
13:18:55.889 From 01X:3 Control 1 19 11
13:18:55.889 From 01X:3 Control 1 51 56

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?






Thursday, March 17, 2011

MIDI vs OSC, with a dash of CV

This post is motivated by a few things:

  • 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. 

So this post is separate from that effort.

What does http://opensoundcontrol.org/ say? Look Here: What is the difference between osc and midi?

What does http://www.midi.org/ say? Look Here: A Comparison of MIDI and OSC

What can one make of this:
  • 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: 

  1. The brouhaha is mostly sound and thunder signifying nothing.
  2. 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).
  3. 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)
  4. 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





Friday, January 21, 2011

Music Unfolding - Sympathetic Strings

Here is a little demo of string resonance applied to the cello model of EigenD

Music Unfolding Sympathetic strings behind a cello model by Mike Milton

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)


If you are having an issue with the player above,  view it directly at SoundCloud

Friday, December 31, 2010

Eigenharp


Eigenharp
Originally uploaded by mikemilton
Yet another shot of the alpha with the mic on the breathpipe

Friday, December 24, 2010

Eigenharp Alpha with DPA Microphone

The DPA Microphone is a great addition to the Alpha. It plugs in just beside the breathpipe and includes a mount on a new breath pipe mouthpiece which the mic can clip to.

It is an electret mic for which the Alpha provides the polarizing voltage (the voltage levels can be selected either by belcanto or by the control keys as can the various controls such as vol, pan, effect send, etc)

Friday, November 26, 2010

Winter Studio


Winter Studio
Originally uploaded by mikemilton
The Alpha and Pico with all their friends.

Click on the picture to see this in Flickr with notes!