Home › Forums › General › Panels, Components, Macros › Emu Morpheus Panel?
- This topic has 27 replies, 8 voices, and was last updated 4 years, 5 months ago by mpl.
-
AuthorPosts
-
October 31, 2016 at 2:22 am #70204
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.November 1, 2016 at 1:21 am #70206I 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….
November 5, 2016 at 2:58 am #70230Hi 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 F7
edits positive values, but if I insert 7f as the MSF0 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 andF0 18 0C 00 03 04 02 variable 7F F7
for negative valuesAny 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.
November 5, 2016 at 1:15 pm #70237for 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=63On 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.
August 4, 2017 at 12:26 pm #72604THough 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.
January 25, 2018 at 10:41 am #81008Hello!
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
January 25, 2018 at 11:34 am #81010I 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.
January 27, 2018 at 5:14 pm #81060I 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
January 28, 2018 at 12:31 am #81063Here 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.4All the best
RoyceJanuary 29, 2018 at 12:11 am #81066I 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.
January 30, 2018 at 10:49 am #81079Hello!
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 F7etc.
Thanks in advance to everybody.
February 1, 2018 at 2:40 pm #81161AFAIK 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 F7With 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 StatusSo 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.
February 2, 2018 at 8:22 am #81194Thanks 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 typeFor 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
February 2, 2018 at 9:04 am #81195Guys, 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…
- This reply was modified 6 years, 2 months ago by roger@fo-co.com.
- This reply was modified 6 years, 2 months ago by roger@fo-co.com.
February 3, 2018 at 12:41 pm #81266Oh yes I forgot: lowercase are 4-bit nibbles, uppercase are 7-Bit nibbles, but you found that out yourself.
February 3, 2018 at 12:53 pm #81267Btw. 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.February 4, 2018 at 9:58 am #81351Thanks 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
February 5, 2018 at 1:41 pm #81424The 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
February 7, 2018 at 12:21 pm #81531Hello!
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
February 7, 2018 at 9:42 pm #81611Save 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.
-
AuthorPosts
- The forum ‘Panels, Components, Macros’ is closed to new topics and replies.