Visual Productions forum

Author Topic: OSC -> Midi Programming Questions  (Read 14770 times)

December 14, 2010, 06:31:19 PM
Read 14770 times

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
Hey guys, I recently picked up an iPad that I would like to start using in junction with Emulation. I am using the Touch OSC interface, with OSCulator. I am fairly familiar with both as I am able to control my digital sound mixer with this setup.

I understand that in the generic midimap file it shows the midi code for the controlling Emulation. I am confused because it will say something like:
Channel _ , Message _, and then Index_

On Osculator, I only have Value and channel. Can someone please help figure this out?

Thanks!

Michael Moore
Intense Sound & Lighting LLC
IntenseSL.com
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 14, 2010, 06:41:35 PM
Reply #1

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
It seams like in OSCulator it doesn't make a difference what midi channel you set a command to, only what value you set it to. For example: If you set value to 1, and channel to 1, you can control playback fader 1. When you change the midi channel to something else and keep the value the same, it performs the same action. This would make me think that Emulation operates on only one midi channel. Right?
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 15, 2010, 09:33:03 AM
Reply #2

RW

  • Member
  • *
  • Posts: 619
    • Andy Cobben .nl
Hi Michael,

At this moment, Cuelux doesn't support OSC.
It is already in the todo-list, but I don't know when we are going to implement it.

Gr,
Rick

December 15, 2010, 09:43:28 AM
Reply #3

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
Thank you for your reply. My question was not if emulation supports OSC, but how the midi map file is interpreted to standard midi information. OSCulator is a program that translates OSC messages into standard midi so that it can be used by programs that do not support OSC.

Thanks
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 15, 2010, 09:48:49 AM
Reply #4

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
Emulations midi map files have information like channel, message, and index. I am only familiar with midi channels and values. Can you please explain to me how the midi maps translate into standard midi information. Maybe this is a better way to word it.
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 15, 2010, 10:15:59 AM
Reply #5

RW

  • Member
  • *
  • Posts: 619
    • Andy Cobben .nl
That's cool  :D

The Channel is the IN-port minus one. (If IN = 1, Channel will be 0)
When the Channel is 0, the message will be 9 (Note on) or 11 (ControlChange)
The index is the Note# / CC#.

Note that all the values have to be decimal (and not hexidecimal :))

December 15, 2010, 08:39:06 PM
Reply #6

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
Cool. Thanks for your response. Your answer was right on the money.

What I am toying around with is making an iPad version of the midicon. I already own a hardware version of the Midicon. I downloaded a program called midi monitor, which tells me what the Midicon is sending out, so this really sped up things up. I've pretty much got everything working except for the programming wheels and although I can change pages, this number doesn't update on my software (yet). I see the programmer wheels are sending midi note data which brings the values in the software up incrementally and decrementally by values of 1. Is there a way to change this so that Midi CC data changes the parameters of the programming area?
Kind of like having a faders sending values of 0-127 depending on their position. This would be much quicker than a few software push buttons that only increase the value of 1 per push. Know what I mean?
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 16, 2010, 09:21:38 AM
Reply #7

RW

  • Member
  • *
  • Posts: 619
    • Andy Cobben .nl
It would be great to have a iPad version for the Midicon!  :D

To use a fader in stead of the programmer wheels, you have to use this code in you midimap:

Code: [Select]
<action>
                    <trigger type="Midi" specifier="Change">Channel 0 - Message 11 - Index 13</trigger>
                    <tasks>
                        <task type="Special" feature="Programmer Wheel 1" function ="Control"/>
                    </tasks>
</action>
<action>
                    <trigger type="Midi" specifier="Change">Channel 0 - Message 9 - Index 15</trigger>
                    <tasks>
                        <task type="Special" feature="Programmer Wheel 1 Push" function ="Control"/>
                    </tasks>
</action>
<action>
                    <trigger type="Midi" specifier="Change">Channel 0 - Message 9 - Index 16</trigger>
                    <tasks>
                        <task type="Special" feature="Programmer Wheel 2" function ="Control"/>
                    </tasks>
</action>
<action>
                    <trigger type="Midi" specifier="Change">Channel 0 - Message 9 - Index 18</trigger>
                    <tasks>
                        <task type="Special" feature="Programmer Wheel 2 Push" function ="Control"/>
                    </tasks>
</action>
<action>
                    <trigger type="Midi" specifier="Change">Channel 0 - Message 9 - Index 19</trigger>
                    <tasks>
                        <task type="Special" feature="Programmer Wheel 3" function ="Control"/>
                    </tasks>
</action>
<action>
                    <trigger type="Midi" specifier="Change">Channel 0 - Message 9 - Index 21</trigger>
                    <tasks>
                        <task type="Special" feature="Programmer Wheel 3 Push" function ="Control"/>
                    </tasks>
</action>

You can use the push-actions to reset the faders :)

December 16, 2010, 12:43:37 PM
Reply #8

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
Thanks Rick, you are the best!
Your code worked perfectly. I find this way of doing things actually a little quicker than the midicon's incremental adjustments.

Now for more questions. .

When my hardware midicon is connected and I page up or page down in the software using my mouse, the numeric LEDs on the midicon adjust with what emulation is doing, which means that Emulation is actually sending Midi data back to the midicon right?

Assuming this is the case, can you tell me where in the midimap code this is happening? The next step of building this interface is to  make it "bi-directional". I've already got my iPad controlling the interface, but I would also like to be able to have Emulation send midi data back to my iPad. I know this is possible because I have my iPad controlling my digital (sound) mixer and when I move a physical fader it is updates on my iPad's screen, so I am sure there is a way to do this with your software.

Thanks again in advance!
Michael Moore
IntenseSL.com
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 16, 2010, 01:11:54 PM
Reply #9

RW

  • Member
  • *
  • Posts: 619
    • Andy Cobben .nl
Hi Michael,

It's called MIDI feedback.
You can find it at the bottom of the midimap:

Code: [Select]
            <actionlist label="feedback" source="System">
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 1 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 31</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 2 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 34</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 3 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 37</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 4 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 40</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 5 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 43</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 6 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 46</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 7 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 49</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 8 Active</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 52</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Blackout</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 28</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader Bank</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 11 - Index 12</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Button Bank</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 11 - Index 13</argument>
                        </task>
                    </tasks>
</action>
            </actionlist>

Can you make some pictures of it when you've got it working?

Thanks!

December 18, 2010, 08:08:07 AM
Reply #10

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
Hi Rick, I emailed a screenshot of my interface to you. Let me know what you think ..
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 20, 2010, 12:51:31 PM
Reply #11

RW

  • Member
  • *
  • Posts: 619
    • Andy Cobben .nl
Hi Michael,

I've received your email. Today, I'll take a look at it :)

Br,
Rick

Update: You've got mail :)
« Last Edit: December 20, 2010, 05:10:48 PM by Rick Willeme »

December 24, 2010, 10:02:26 PM
Reply #12

Michaelmoore83

  • Member
  • *
  • Posts: 164
    • Intense Sound & Lighting LLC
I used the iPad to run lights on a real gig for the first time last night, and I wanted to give you my review.

First of all, I have never got so much attention from people who were so impressed with the way I was working. I was working on release 20, which I now understand has bugs in it that have since then been fixed. I wish I had checked the Emulation forum last night before the gig because I had some issues, but I now have release 22, and I am sure they have been fixed.

Page 1 of my interface as of now looks just like the Elation's Midicon Controller. The playback faders worked great! They updated perfectly when I changed banks. Controlling parameter changes in the programming area was quicker on the ipads faders than the incremental adjustments of the midicon's wheels, especially for RGB mixing, however my programming faders did not visually update when I changed which fixture I was programming or what parameter I was adjusting until I actually started moving the fader which would overwrite the existing position. This wasn't a huge deal, but it made the parameter "jump" if it was already set to a low value, and I put my finger on a high position of the fader.

I made a second page with a huge X/Y axis, and when I would select a scanner and it's position I would then go to the second page and move my finger along a huge X/Y axis and the fixture followed perfectly. This was simply amazing! ! ! Much better than the midicon's "inching" of the X/Y.

Because at points in time I was 50+ feet away from the computer screen, at times it slipped my mind as to which playback button I was using. This makes me think we would need to make midi feedback for which playback button(s) are active. Right now I am using "push" buttons for the interface that glow when your finger is on it, but goes dark as soon as your finger is off of it. If I switched them over to "toggle" buttons with midi feedback that glowed when active, this would make everything very obvious.

My conclusion is that I want my long term controller solution to be the iPad, but I need my interface to give midi feedback on almost everything so that if I am floating around a venue,  I still know exactly what the existing programming parameters look like, which playback button is running, etc. .
 I have toyed around with screen sharing applications, but I found they all have lag, and the touch controls don't feel as good as the way I've been doing it. Not to mention I can have the X/Y take up the whole 10 inch screen and get precision aiming with it!

Now for the questions. .
1. How much of the program is already setup to give midi feedback? If the answer is not much, would you guys be willing to add midi feedback to things?
2. Is your company interested one day offering a downloadable pre-made interface for the iPad? If this does interest you, I think we could work together to make this happen.
Emulation 1.3.36 on Mac OS X 10.8.2
Controllers: Livid OHM RGB, "new iPad", Korg Nanokontol

December 25, 2010, 01:07:14 PM
Reply #13

RW

  • Member
  • *
  • Posts: 619
    • Andy Cobben .nl
I used the iPad to run lights on a real gig for the first time last night, and I wanted to give you my review.

First of all, I have never got so much attention from people who were so impressed with the way I was working. I was working on release 20, which I now understand has bugs in it that have since then been fixed. I wish I had checked the Emulation forum last night before the gig because I had some issues, but I now have release 22, and I am sure they have been fixed.

Page 1 of my interface as of now looks just like the Elation's Midicon Controller. The playback faders worked great! They updated perfectly when I changed banks. Controlling parameter changes in the programming area was quicker on the ipads faders than the incremental adjustments of the midicon's wheels, especially for RGB mixing, however my programming faders did not visually update when I changed which fixture I was programming or what parameter I was adjusting until I actually started moving the fader which would overwrite the existing position. This wasn't a huge deal, but it made the parameter "jump" if it was already set to a low value, and I put my finger on a high position of the fader.

I made a second page with a huge X/Y axis, and when I would select a scanner and it's position I would then go to the second page and move my finger along a huge X/Y axis and the fixture followed perfectly. This was simply amazing! ! ! Much better than the midicon's "inching" of the X/Y.

Because at points in time I was 50+ feet away from the computer screen, at times it slipped my mind as to which playback button I was using. This makes me think we would need to make midi feedback for which playback button(s) are active. Right now I am using "push" buttons for the interface that glow when your finger is on it, but goes dark as soon as your finger is off of it. If I switched them over to "toggle" buttons with midi feedback that glowed when active, this would make everything very obvious.

My conclusion is that I want my long term controller solution to be the iPad, but I need my interface to give midi feedback on almost everything so that if I am floating around a venue,  I still know exactly what the existing programming parameters look like, which playback button is running, etc. .
 I have toyed around with screen sharing applications, but I found they all have lag, and the touch controls don't feel as good as the way I've been doing it. Not to mention I can have the X/Y take up the whole 10 inch screen and get precision aiming with it!
This sounds really cool. Lets me think of the iPhone remote. Can you make some videos of it when you are using it the a gig?

Now for the questions. .
1. How much of the program is already setup to give midi feedback? If the answer is not much, would you guys be willing to add midi feedback to things?
I know that there is feedback control for the playback faders. Probably this will do the job:
Code: [Select]
<action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 01 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 1</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 02 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 2</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 03 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 3</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 04 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 4</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 05 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 5</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 06 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 6</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 07 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 7</argument>
                        </task>
                    </tasks>
</action>
                <action>
                    <trigger type="Unsigned" specifier="Change">Playback Fader 08 ButtonPri</trigger>
                    <tasks>
                        <task type="Midi" function ="Control">
                            <argument type="Midi Address">Channel 0 - Message 9 - Index 8</argument>
                        </task>
                    </tasks>
</action>


2. Is your company interested one day offering a downloadable pre-made interface for the iPad? If this does interest you, I think we could work together to make this happen.
Maybe we can consider this. I'll discuss this with Maarten when I'm back at the office.

Have a nice Xmas! :)

December 26, 2010, 06:13:35 PM
Reply #14

vnx

  • Member
  • *
  • Posts: 93
Hi,

I have also played around with the combination iPad/Osculator/TouchOSC/Cuelux There is already a lot of MIDI-Feedback going on from within Cuelux. I learned a lot from the Tascam-Mapping when I wrote the mapping for my Ohm64 controller so this is worth looking at. Feedback to TouchOSCs touch buttons should be no problem, however, I have experienced some severe problems with some strange MIDI messages floating around, so I stopped that project for a moment.
I totally agree with Michael that the iPad makes a wonderful controller, but working MIDI feedback is crucial. I am not sure where my problems came from. I think it's something in the OSC-chain, as I am quite confident, that Cuelux sends correct MIDI feedback (from looking at my Ohm64 controller) thanks to Maarten whom I bugged several, well many times over MIDI feedback issues ;-)

So if there is general interest, I would contribute my experiences and go in to some deeper debugging of the feedback problems in conjunction with Cuelux and the OSC thing.

I have also found some other quite promising MIDI app for iPad called "Midi Touch". It uses MIDI over Network (CoreMIDI API, which is available since iOS 4.2), so no intermediate software is needed. The layouts can be made directly on the ipad. The controls are a bit limited by now but I think this is also worth keeping an eye on.

With the CoreMIDI API you (the guys at Visual Productions) could also think about developing your own Cuelux-MIDI-Remote-App for the iDevices. With the API it should be simple enough.

Best,

Ben
Cuelux 1.03b22 on MacBook Pro (MacOSX 10.6.5) / Thinkpad X41t (WinXP) using Livid Ohm64 Controller

 

SMF spam blocked by CleanTalk