Emu Morpheus Panel?

Home Forums General Panels, Components, Macros Emu Morpheus Panel?

Viewing 20 posts - 1 through 20 (of 28 total)
  • Author
    Posts
  • #70204
    BryanP
    Participant
      • Topics: 1
      • Replies: 2
      • Total: 3

      Hi all. I’m a complete newbie so please forgive my ignorance(s)!

      I’ve just fired up my old Morpheus after about 15 years of gathering dust and I’m hoping to get back into editing her. I have an old copy of Midiquest but I can’t seem to get them to play nicely on OSX. Midiquest is sending Sysex and Morpheus is responding but I can’t get patches to load/save.

      So I’m hoping that:

      A) Someone has a Morpheus Ctrlr panel (http://ctrlr.org/forums/users/2mm/ seems to have made a working version a few years back but I can’t find any trace of it)

      B) There’s a way to record the Sysex from Midiquest and use that as the basis for a new panel.

      The Morpheus has a pretty comprehensive Sysex spec (I’ve attached the manual) but it’s been so many years since I’ve used Sysex that it seems like a heck of a task to start from scratch.

      Any advice would be appreciated.

      Thanks in advance!

      Attachments:
      You must be logged in to view attached files.
      #70206
      BryanP
      Participant
        • Topics: 1
        • Replies: 2
        • Total: 3

        I found a way to record the Midiquest sysex data. It was as simple as patching the midi out back to the midi in on my interface and recording the sysex data with the Ctrlr Midi Monitor.

        However, my poor old Morpheus has developed what appears to be a possibly fatal ‘Corrupted RAM’ fault. I’ve ordered a new RAM battery so fingers crossed….

        #70230
        BryanP
        Participant
          • Topics: 1
          • Replies: 2
          • Total: 3

          Hi all. I’m making progress but I’m stumped with negative values. I’ve had a good look around the forums and found some handy tips but nothing that has solved my problem.

          For parameters such as pan and tuning, using the standard LS and MS in the sysex strings works fine for positive values but not for negative values it seems e.g…

          Master tune:
          F0 18 0C 00 03 04 02 LS MS F7edits positive values, but if I insert 7f as the MS F0 18 0C 00 03 04 02 LS 7f F7 then it edits negative values.

          Midi Quest is spitting out the following:
          F0 18 0C 00 03 04 02 variable 00 F7 for positive values and F0 18 0C 00 03 04 02 variable 7F F7 for negative values

          Any idea how I can persuade Ctrlr to do the same?

          P.S. I’ve tried using the Proteus 2 panel as Morpheus ‘should’ be able to respond to Proteus sysex. It does for positive values but not for negative values.

          • This reply was modified 7 years, 5 months ago by BryanP.
          • This reply was modified 7 years, 5 months ago by BryanP.
          • This reply was modified 7 years, 5 months ago by BryanP.
          #70237
          Possemo
          Participant
            • Topics: 14
            • Replies: 638
            • Total: 652
            • ★★★

            for parameters with negative values I use uiFixedSlider. There you can define every value. But I never used it in MS/LS scenarios, you will have to try out. In the field “Slider contents” I set for example this:

            -63=65
            -62=66
            -61=67
            -60=68

            -5=123
            -4=124
            -3=125
            -2=126
            -1=127
            0=64
            0=0
            1=1
            2=2
            3=3
            4=4
            5=5

            59=59
            60=60
            61=61
            62=62
            63=63

            On the first value you can put anything you want, it is just display. The second is the “fixed value”. Hopefully MS/LS will take this value. Every fixed slider has normal values too (the first value, at the top is 0, the second is 1 etc..)

            • This reply was modified 6 years, 2 months ago by Possemo.
            #72604
            roger@fo-co.com
            Participant
              • Topics: 2
              • Replies: 17
              • Total: 19

              THough I am not a real (leave alone advanced) CTRLR user, I am offereing help for the creation of a Morpheus panel. I have played around with Cubase Device Panels managing Sysex, so I got a basic understanding of its Sysex.

              Best regards.

              #81008
              roger@fo-co.com
              Participant
                • Topics: 2
                • Replies: 17
                • Total: 19

                Hello!

                I am currently working on an editor for E-mu Morpheus, and so far I have figured out the mayor part of its sysex. There is one (first) issue though, where I need assistance.

                Firstly, my Sysex experiences were mostly applied in Cubase Device Panels, but this platform is (surprise!) Cubase Pro only, and also kind of limited for certain situations.

                Issue:
                In E-mu Morpheus there are 197 different filter types, which I would like to make available via Ctrlr. The problem is, that those filter types are not simple listed in a linear, consecutive manner, but the sysex may vary from filter type to filter type.
                I am looking for a list or combo solution, which permits to program
                – one dedicated message per list entry – let say:

                Filter type 1: F0 AA BB CC 10 00 F7
                Filter type 2: F0 AA BB CC 14 05 F7

                etc.,

                so on selecting a filter type in my list this one message would be sent. I resolved this in Cubase Device Panels with 197 individual momentary switches, but this makes way too much use of space on the screen.

                Anyone who can help me out with that? A demo panel, which I could study and modify, would be very apreciated, but is obviously no condition.

                Thanks in advance.

                Roger

                #81010
                Possemo
                Participant
                  • Topics: 14
                  • Replies: 638
                  • Total: 652
                  • ★★★

                  I guess there are several ways to do that. I personally would do it with a Lua script. Would that be an option for you? If your answer is yes I could give you some hints.

                  #81060
                  drsteve
                  Participant
                    • Topics: 3
                    • Replies: 33
                    • Total: 36

                    I haven’t done anything with Ctrlr in years and I have never used a Morpheus; however, I am a little familiar with E-Mu’s sysex. I was under the impression you could set the filter type (parameter offset 236), the following 5 parameters, and route virtual patchcords to the filter parameters. I don’t know how to do that in Ctrlr, but with my limited understanding of Ctrlr, those are some basic functions. I think a few years ago someone attempted a panel for the E-Mu samplers. I’d have to check, but I think the use of sysex is similar. If it’s the E-Mu sysex you are working on, maybe the EOS sysex manual might provide some insights.

                    Kudos to you for doing this!!!!!!! Once you have a Ctrlr panel for the Morpheus, it might be useful in developing panels for other vintage E-Mu gear.

                    BTW, it seems that the patchcords will only affect the filter parameters at note on; evidently there is no ability to use controller sources to modify filter parameters once the note has started.

                    Encouragement, encouragement, encouragement!!!

                    Wish my UltraProteus’s midi i/o worked as I would love to see what I could do to help.

                    Steve

                    ————-
                    This is what I was remembering (in case it’s helpful.) http://ctrlr.org/forums/topic/emu-e4-functionality-demo/

                    • This reply was modified 6 years, 2 months ago by drsteve. Reason: to add link to E4 Ctrlr panel I referenced
                    #81063
                    rpcfender
                    Participant
                      • Topics: 0
                      • Replies: 2
                      • Total: 2

                      Here is a sorted list of the Morpheus filter names that might be useful.
                      0 : null filter
                      162 : LPFlange.4
                      163 : LPFlngBk.4
                      164 : Flange2.4
                      165 : CubeFlanger
                      166 : Flange3.4
                      167 : Flange 5
                      168 : Flange 4.4
                      169 : Flange 6.4
                      170 : Flange 6R.4
                      171 : Flng>Flng1
                      172 : 0>Flng2
                      173 : Flng>Flng6
                      174 : Flng>Flng3b
                      175 : Flng>Flg4
                      176 : Flng>Flng5
                      177 : Flng>FlngT
                      178 : Flng>FlngC
                      179 : Flanger 7.4
                      180 : Bonk>CO
                      181 : Speaker
                      182 : Expander
                      183 : Acc.Vel-2
                      184 : VowelSpace
                      185 : CO>FlngT
                      186 : AEParLPVow
                      187 : AEParaVowel
                      188 : AOLpParaVow
                      189 : AOParaVowel
                      190 : AUParaVow.4
                      191 : UOParaVow.4
                      192 : SftEOVowel4
                      193 : Vocal Cube
                      194 : C1-6 Harms4
                      196 : Voce.4
                      197 : ChoralComb4
                      198 : Bassutoi.4
                      199 : Ee-Yi.4
                      200 : Ii-Yi.4
                      201 : Uhrrrah.4
                      202 : YeahYeah.4
                      203 : Vow>Vow1
                      204 : Vow>Vow2
                      205 : SoftEOAE
                      207 : YahYahs.4
                      208 : YoYo.4
                      209 : More Peaks
                      210 : BrickWaLP.4
                      211 : MdQ 2PoleLP
                      212 : HiQ 2PoleLP
                      213 : MdQ 4PoleLP
                      214 : HiQ 4PoleLP
                      215 : 2p>4p 0
                      218 : LowPassPlus
                      219 : Low Past.4
                      221 : 4PoleMidQ.4
                      222 : HPSweep.4
                      223 : HiSwept1.4
                      224 : HghsSwpt2.4
                      225 : Hi Accent.4
                      226 : HiPassSwp.4
                      227 : DeepCombs.4
                      228 : One Peak
                      229 : Rev Peaks
                      231 : Odd>+
                      232 : VarSlope.4
                      233 : APass.4
                      234 : BrickWalLP2
                      236 : HP LP PZ
                      237 : PZ Notch
                      238 : Band-aid
                      239 : HiHatLPEQ
                      240 : Snare LPEQ2
                      241 : 4>2 LowQHiQ
                      242 : Notcher2.4
                      243 : Ntches2Oct4
                      244 : BassDrumEQ
                      246 : BassEQ 1.4
                      247 : B BOOST.4
                      248 : BssBOOST2.4
                      249 : Wah4Vib.4
                      251 : G MajTrans4
                      253 : HP Brass
                      259 : Wa Wa.4
                      261 : BrassRez.4
                      262 : PZ Syn Horn
                      263 : BrassyBlast
                      264 : Brass Swell
                      265 : LoVelTrum
                      266 : BrsSwell2.4
                      267 : Chiffin.4
                      268 : ShakuFilter
                      270 : Piano 1
                      272 : Piano 2.4
                      273 : EZ Rhodez.4
                      274 : MoogVocodr4
                      275 : MoogVocSwp
                      276 : AcGtrRs.4
                      277 : Qbase.4
                      278 : TubeSust.4
                      281 : 0>Bell-
                      282 : 0>Bell+
                      283 : Bel>Crs>Bel
                      284 : Chrs>Flng1
                      285 : Ev/OdNtch.4
                      286 : 1.5/3KNBPR4
                      288 : Odd/EvnNtch
                      291 : HOTwell.4
                      292 : Cym
                      293 : VelMarim
                      294 : EZ Vibez.4
                      297 : Swingshift
                      298 : 500up.4
                      299 : C1Harmonic
                      300 : Odd>Even
                      301 : 0>Shp1
                      302 : 0>Shp2
                      303 : Lpeq Vel
                      304 : CleanSweep4
                      305 : StrSweep.4
                      307 : PowerSweeps
                      308 : TSweep.4
                      309 : SweepHiQ1.4
                      310 : V>FcQuad.4
                      311 : Nexus.4
                      312 : Krators.4
                      313 : Harmonix.4
                      314 : GreenWorld4
                      315 : Comb/Swap.4
                      316 : Comb/HP.4
                      317 : Swirly
                      318 : Be Ye.4
                      319 : Cavatate.4
                      320 : GentleRez.4
                      321 : Bendup/Swap
                      322 : Bendup
                      323 : Skweezit
                      324 : Lo/High.4
                      325 : SbtleMvmnt4
                      326 : BuzzyPad.4
                      327 : StrngThng.4
                      328 : Bw5kHz+6.4
                      329 : Bw65Hz/2k.4
                      330 : Bb80Hzbw1.4
                      331 : 2 PoleLoQ.4
                      332 : HighsTwist4
                      333 : Cubix
                      334 : Intervallc4
                      335 : EvenCuts.4
                      336 : OddCuts.4
                      337 : PWMTrans.4
                      338 : HiEndQ
                      340 : 4 PoleLoQ.4
                      341 : BroadRes.4
                      344 : RubberHose4
                      345 : Shp>Shp1
                      346 : HeeghCube
                      347 : NoizCube
                      348 : VeloctyTilt
                      349 : Syn Wow.4
                      351 : CntrySweep4
                      352 : Diffuser.4
                      353 : MdlySweep.4
                      354 : PoleCross.4
                      355 : StrongShimr
                      356 : Chrs>Flng2
                      357 : 0>Shp3
                      358 : Acc.Vel-1
                      359 : Vel2-Wind
                      360 : GtrSkwk
                      361 : Harmo
                      362 : Start>EndA
                      363 : Start>EndB
                      364 : MovingPick1
                      365 : Mph+Trns1
                      366 : 0>Odds
                      367 : Clr>Oboe
                      368 : Bell.Waha
                      369 : 0>Muter
                      370 : Belwahb
                      371 : MovingPick2
                      372 : Comb Voices
                      373 : Odd-Ev Hrm
                      374 : OddHrm+Rez
                      375 : EvnHrm+Rez
                      376 : GuitXpress
                      377 : BassXpress
                      378 : MellowPeaks
                      380 : AHmBnd.4
                      381 : BriteFlng.4
                      382 : MildPolSwap
                      383 : MildQPole
                      385 : Vintage
                      386 : Separator
                      396 : Tam
                      397 : NotchPkSwp4
                      403 : ApDistB6.4
                      407 : TubeJam.4

                      All the best
                      Royce

                      #81066
                      rpcfender
                      Participant
                        • Topics: 0
                        • Replies: 2
                        • Total: 2

                        I would start at 162 and go to 407.
                        The values in between will just show “unkFiltXXXX” where “XXXX” is 2 byte hex so you should display the names and “Unknown” for the gaps.
                        Have an On/Off switch to select the ‘0 : null filter’.

                        The negative and positive 14 bit numbers used for data and parameter numbers can be handled in C++ like this

                        //—————————————————————————
                        //—————————————————————————
                        struct stParam{ // 2 bytes so you don’t have to remember the order
                        BYTE L ;
                        BYTE M;
                        };
                        //—————————————————————————
                        //—————————————————————————
                        //Coming from the Morpheus
                        int Bit14ToSignInt(stParam Param) // If it could be negative number
                        {
                        int ans = Bit14ToInt(Param);
                        if((ans & 0x2000) != 0) ans += 0xFFFFC000; // if bit 13 set then it is negative
                        return ans;
                        }
                        //—————————————————————————
                        int Bit14ToInt(stParam Param) // if you know it is +ve
                        {
                        return = Param.SigByte.L + (Param.SigByte.M <<7 ); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Value to go to the Morpheus stParam SignIntTo14Bit(int Num) // possible -ve { stParam ans; if(Num < 0) Num = (Num & 0x1FFF) + 0x2000; //set bit 13 return IntTo14Bit(Num); } //--------------------------------------------------------------------------- stParam IntTo14Bit(int Num) // if you know it is only +ve { stParam ans; ans.SigByte.M = (BYTE)(Num /128); ans.SigByte.L = (BYTE)(Num % 128); return ans; } //--------------------------------------------------------------------------- I have also come across data packing in the sysex of the function generators (manual page 247) The Level is from -127 to 127 and uses the lowest 8 bits (0 to 7) with the high bit (bit7) as the negative flag. The Level type (0 to 3) is in bits 8 to 13. To create the output you need to add a left rolled LvlType (or multiply it by 256) to the Level (Level needs to be a signed char). LevelOut = (LevelType << 8) + Level ; Hope this helps Royce

                        • This reply was modified 6 years, 2 months ago by rpcfender.
                        #81079
                        roger@fo-co.com
                        Participant
                          • Topics: 2
                          • Replies: 17
                          • Total: 19

                          Hello!

                          First of all thanks to all contributers for their help. As I mentioned earlier, the Sysex itself does not represent a major problem (anymore), thanks to Cubase Device Panles. I also analyzed the data emitted by a Windows software editor for Morpheus, which gave me a quite clear idea.

                          1. Just as rpcfender stated in the post before, there are gaps in the list of filter types. If you check out the post before, you will find missing for example the the filter type with the number 195. That filter type simple does not exist (at least in Morpheus).

                          Now, it is known, that Morpheus and UltraPorteus are largely compatible, the Ultraproteus having more waveforms and filters, and it would make sense to use those gaps for UltraProteus-only filter types. Could somebody please check, if those gaps in the filter type list are UltraProteus filters? If that´s the case, then I could insert those values too, with an UltraProteus only mark. The numbers in question are:

                          195, 206, 216, 217, 220, 230, 235, 245, 250, 252, 254-258, 260, 269, 271, 279, 280, 287, 289, 290, 295, 296, 306, 339, 342, 343, 350, 379, 384, 387-395, 395-402, 404-406

                          2. The suggestion to offer a separate NULL FILTER switch is a great idea, as this filter type has its own modified sysex. Thank you very much for this suggestion.

                          3. If the missing filter numbers are not from UltraProteus, then I´d prefer a solution to be able to assign a code per filter, just like I would do with a switch.

                          Is there a way to create some kind of list (drop down or scrollbar), which allows to assign a whole sysex code for example?
                          Like this:

                          000 Filter type A: F7 18 0C bla bla F7
                          001 Filter type B: F7 18 0C blip blip F7
                          002 Filter type C: F7 18 0C blob blob F7

                          etc.

                          Thanks in advance to everybody.

                          #81161
                          Possemo
                          Participant
                            • Topics: 14
                            • Replies: 638
                            • Total: 652
                            • ★★★

                            AFAIK this is not possible:

                            000 Filter type A: F7 18 0C bla bla F7
                            001 Filter type B: F7 18 0C blip blip F7
                            002 Filter type C: F7 18 0C blob blob F7

                            With uiFixedSlider and uiListBoxes you can build a list of custom values but one integer number only. If the two values in the sysexstring are nibbles of one big value you could try the variables ls and ms.

                            This seems to be the sysexstring format:

                            F0 SysEx Status Byte
                            18 E-mu Mfg. ID
                            0C Morpheus Product ID
                            dd Device ID 0-15
                            03 Command ID
                            pl Parm Number ls byte
                            pm Parm Number ms byte
                            vl Parm Value ls byte
                            vm Parm Value ms byte
                            F7 End of SysEx Status

                            So yes, Values are nibbles and this can be done with a standard uiSlider. In the sysex-field of the Slider you put something like this:

                            F7 18 0C 00 03 7f 7f ls ms F7

                            Edit: this should work with FixedSliders too and for that matter with ListBoxes as well.

                            • This reply was modified 6 years, 2 months ago by Possemo.
                            • This reply was modified 6 years, 2 months ago by Possemo.
                            #81194
                            roger@fo-co.com
                            Participant
                              • Topics: 2
                              • Replies: 17
                              • Total: 19

                              Thanks Possemo for your contribution. I was expecting that I would only be able to change one number inside the sysex string. This leaves me for the moment with two options:

                              1. create a list, filling the gaps with an UNKNOWN FILTER message
                              2. create a button for each and every filter type

                              For option 1 I have begun to make a listbox, just to give it a try, how far I can go with that. Or maybe someone comes up with another idea…

                              Thanks to everyone.

                              Roger

                              #81195
                              roger@fo-co.com
                              Participant
                                • Topics: 2
                                • Replies: 17
                                • Total: 19

                                Guys, I think I got it…

                                Thanks to Possemo I followed the path of nibbles. Turns out that it is actually managed as 7bit nibbles. I now can assign one value in the Sysex formula and access the other filter types.

                                Syntax is:

                                F0 18 0C dd 03 6C 41 LS MS F7 (LS and MS in CAPITAL LETTERS).

                                Every filter now has its own ID, which I can comfortably insert in the listbox.

                                To be continued…

                                #81266
                                Possemo
                                Participant
                                  • Topics: 14
                                  • Replies: 638
                                  • Total: 652
                                  • ★★★

                                  Oh yes I forgot: lowercase are 4-bit nibbles, uppercase are 7-Bit nibbles, but you found that out yourself.

                                  #81267
                                  Possemo
                                  Participant
                                    • Topics: 14
                                    • Replies: 638
                                    • Total: 652
                                    • ★★★

                                    Btw. an uiCombo would be another option. But for that much options a ListBox is probably the best option. You could even make a big screen where you show every option at a glance like the “Presets” tab of my Matrix-1000 panel. It shows 800 options and it consists of 16 ListBoxes (see attached screenshot). Very little Lua programming is needed when you want to deselect all other options when you select one.

                                    Attachments:
                                    You must be logged in to view attached files.
                                    #81351
                                    roger@fo-co.com
                                    Participant
                                      • Topics: 2
                                      • Replies: 17
                                      • Total: 19

                                      Thanks for your comments.

                                      My plan is to create firstly a Patch/Preset Editor, so I can control its synthesis parameters from inside Cubase, which means tabs for all parameters for primary and secondary voices. Also a GENERAL tab for Easy Editing of patch volume and panning.

                                      Later on, I might add more tabs for more functionality. At the end of the day, I am still a newbie in CTRLR. I still even don´t know, how to retrieve preset data from Morpheus to show it in CTRLR…

                                      All the best.

                                      Roger

                                      #81424
                                      roger@fo-co.com
                                      Participant
                                        • Topics: 2
                                        • Replies: 17
                                        • Total: 19

                                        The filter lists for primary y secondary voices
                                        are now ready and working.
                                        I wonder if there is a possibility to save SNAPSHOTS AS PRESETS,
                                        to be called from within CTRLR.

                                        Greetings.

                                        Roger

                                        #81531
                                        roger@fo-co.com
                                        Participant
                                          • Topics: 2
                                          • Replies: 17
                                          • Total: 19

                                          Hello!
                                          The panel is already taking shape, but I am stuck with the XY-Pad.
                                          Imagine control several filter parameters at once…

                                          I would like to control two parameters with the XY-Pad simultaneously. I already found out, how to assign/link parameters to each of the axis (currently Primary Filter Morph and Filter Transform 2), but no MIDI is sent. Must be something easy…still I didn´t find out how.

                                          Any idea how to solve that?

                                          All the best.

                                          Roger

                                          #81611
                                          Possemo
                                          Participant
                                            • Topics: 14
                                            • Replies: 638
                                            • Total: 652
                                            • ★★★

                                            Save the panel, close it, then re-open it. For some reason the linkage you set up in the uiXYsurface does not become active until you close and re-open the panel.

                                          Viewing 20 posts - 1 through 20 (of 28 total)
                                          • The forum ‘Panels, Components, Macros’ is closed to new topics and replies.
                                          There is currently 0 users and 75 guests online
                                          No users are currently active
                                          Forum Statistics
                                          Threads: 2,495, Posts: 17,374, Members: 77,605
                                          Most users ever online was 12 on January 22, 2019 3:47 pm
                                          Ctrlr