Forum Replies Created
-
AuthorPosts
-
Hi drno,
Welcome….learning LUA is fun!
Looking at your sysex table there is 1 thing I notice: it does not open with 0x0F and end with 0xF7
In sysex 0F declares the beginning of a sysex message and F7 declares the end of it.
Best regards,
BAUS
- This reply was modified 3 years, 4 months ago by BAUS. Reason: typo
Updating a 25 year old Editor
I have started working with layers in my next panel and it is less frustrating.
Layer 9 is a static layer supplying the ‘graphics’ or lay-out of the panel. I still used groups to create that but in this case a group only holds a small number of larger elements instead of all the modulators.
Layer 1 holds all the modulators and it is such a relief to just be able to move them around freely without them (or a whole group) dissappearing somewhere. I am copying all the locations/positions of the modulators into an excel sheet so I can easily copy them to Layers 2 to 8 later on. If there’s an easier/smarter way to do this the please let me know.
On this panel I can see static layer with an other layer on top of it. If layer 1 is selected in the layer editor I see the modulator values of layer 1, if layer 2 is selected I can see the values of layer 2.
However in the first panel for the Mirage that I am still working on this is not the case. I moved a whole group to (in this case) layer 2 and when I choose layer 1 only layer 1 appears. Then when I choose layer 2, layer 2 pops up while layer 1 also stays on-screen.
There are no overlapping groups/modulators.
What I want basically is both layers to be visible but only 1 layer should be editable at a time. What am I overlooking here?
Thanks in advance,
Robin.
Updating a 25 year old Editor
Hi Resofactor,
There is not really a need for an XV-3080 / XV-5080 Panel since the editors that Roland has available for them still work under Windows 10. I don’t know about the Mac version though.
https://www.roland.com/nl/support/by_product/xv-3080/updates_drivers/
Regards,
Robin Bausewein.
Updating a 25 year old Editor
Alright…..
Thanks goodweather!
Actually to request a Patch Dump I did not need to nibblize at all. Each Patch from 1 to 48 is just $01 to $30….so…at first I made 48 Buttons each with their own sysex string to request the wanted Patch.
Then I was looking through some other posts and I found something else, which I also implemented, and then I found that I could give each Value in a Combo it’s own sysex string. So….I ended up deleting the 48 buttons and now I have a Combo to select Patches which also immediately request the Patch Dump.
The space where the 48 buttons were now holds 12 LCD Displays to give an overview of the Program and it’s Patches and Keyranges.
This is great!
Thanks everyone!
RB
Updating a 25 year old Editor
Update on my last post:
I figured out how to do this much easier.
The request string for a Program is F0 00 00 23 01 06 01 F7….where 06 is the Parameter to request a dump and 01 the value.
When I put this in a COMBO it does not work. But…when I actually nibblize the value into two bytes then the COMBO does work, and that’s good.
EDIT: This works from selection 1 through 15. At 16 the Mirage does not return anything. Then at selection 17 it starts to return at 02 again.
- This reply was modified 3 years, 6 months ago by BAUS.
Updating a 25 year old Editor
Alright…..this is very cool!
Thanks for the step-by-step explanation. That’s what I need. Although I don’t know yet what some things mean I now can see the bigger picture….I think.
You create a function that calls another function…or two or more.
I managed to get it to work. First on the Patch level….then I added the elseif for the size of the received Midi of the Program Dump from the Mirage and that one now also works.
Now that we have that working I am thinking about how to put it effectively in the Panel. I could add 32 buttons each sending a dump request for the correspondent Program…but I think this could be embedded in the Lua script as well.
Same thing for the Patch request…I could add 42 buttons for the Patch request but I think there could be a more effective way of doing this. The COMBO is what I tried. For Patch changes it works, I think because this sysex string uses lsb/msb but the Dump Requeat does not.
I will have a look at it again in the morning.
JG….Thanks so much for showing me how to read.
Goodweather….I am interested in your way of using the memoryblock method as well at a later time. As you mentioned it may only confuse me at this moment.Grateful for your help,
Robin.
- This reply was modified 3 years, 6 months ago by BAUS.
Updating a 25 year old Editor
September 28, 2020 at 5:38 pm in reply to: what do you need to know in order to make panels? #120072Okay….step by step.
When I press the “request patch data” button the Mirage returns this:
F0 00 00 23 01 44 01 0F 01 08 00 0F 00 08 00 0F 00 00 00 0F 01 0F 01 02 00 00 00 02 00 01 00 01 01 01 01 01 00 06 00 04 00 00 00 03 00 0F 03 00 00 0F 01 0A 00 00 00 00 00 08 00 0F 00 08 00 0F 00 00 00 0F 01 0F 01 02 00 02 00 02 00 03 00 01 01 01 01 01 00 06 00 05 00 00 00 03 00 00 00 00 00 0F 01 01 00 00 00 03 06 00 00 00 00 03 06 00 00 0F 01 0F 00 0F 01 06 01 00 00 00 00 00 00 0C 00 0F 03 04 05 02 05 09 04 04 05 0F 04 0E 04 00 02 01 03 F7
The bytes in BOLD is the first Modulator (AMP_ENV1_ATTACK). This string is always 148bytes including the F0 and F7. We should not count these so the length of the string is 146 and the first Modulator is the 7th byte. Correct?
- This reply was modified 3 years, 7 months ago by BAUS.
Updating a 25 year old Editor
September 27, 2020 at 9:54 pm in reply to: what do you need to know in order to make panels? #120063At line 5:
midiMessageReceived = function(midiMessage)
Instead of
midiMessageReceived = function(midi)
??
This fixed that problem!
Thanks.
Also your explanation makes sense now. I did as you wrote and when the panel loads all Parameters are nicely at their lowest values.
Now on to the next part: getting the panel to update when it receives a Patch change.
Because of the 4 bit nibbles to a single value….does that mean that the sysex string also gets half as long? So 74 instead of 148?
I am still figuring out THAT part.
Updating a 25 year old Editor
I think I have a similar thing. I just use “not available” for those values but there might be a better way.
Updating a 25 year old Editor
September 23, 2020 at 9:32 pm in reply to: what do you need to know in order to make panels? #120013I don’t understand.
The ‘Called when the panel has finished loading” is already being used by the ‘init’ function for the Program 1-32 Buttons.
If the Panel is supposed to get a value from the Mirage then I first need to press the button to send the dump from the Mirage to the Panel or else there is nothing to index. Is that correct?
- This reply was modified 3 years, 7 months ago by BAUS. Reason: typo
Updating a 25 year old Editor
September 22, 2020 at 8:33 pm in reply to: what do you need to know in order to make panels? #119978Great JG,
I am not sure where to put the:
function de4nibbilize(a, b) — convert two 4 bit nibbles to a single integer
local n = 0
local m = bit.lshift(a, 4)
local l = b
return m + l
end –fWhenever I request a dump from the Mirage it is sending it (I am monitoring the MIDI info) and an error message pops up.
At line [7]: [string “midiMessageReceived”]
Error message: [string “midiMessageReceived”]:7: attempt to index global ‘midiMessage’ (a nil value)
A screenshot of the script is attached. Where is the error?
EDIT!!! THE FIRST SCREENSHOT IS INCORRECT BUT I DON’T SEE HOW TO DELETE IT FROM THE POST.
- This reply was modified 3 years, 7 months ago by BAUS.
- This reply was modified 3 years, 7 months ago by BAUS.
Attachments:
You must be logged in to view attached files.Updating a 25 year old Editor
September 22, 2020 at 12:40 am in reply to: what do you need to know in order to make panels? #119959Hi there,
I am almost finished with my (first and v1) of a Panel for the Ensoniq Mirage. What I am still wanting to do is to have the Panel update to the Patch values in the Mirage.
I have sorted out all the bytes and their corresponding modulators.
The example above deals with, as far as I can see, single byte per Modulator. But…the Mirage splits each byte into 2 nybbles. AMP Attack 1 is the first Modulator that is sent from the Mirage (at byte 7) and set to full (a value of 31) then is $0F $01.
How do I map this in a script? The getbyte:(0) does not do the job. What else do I need to add so it sees the 2 nybbles as 1 value and it will update the AMP Attack 1 slider in the panel.
Updating a 25 year old Editor
I actually tried that…setting the value to higher than 5000 but did not work for me.
The 0.9.7 version DOES work and for me is enough. When pressing EDIT SYSEX I just press the HOME key to get to the beginning of the string, scroll a few blocks to the right and I am right where I need to be.
Updating a 25 year old Editor
Dnaldoog….I have no succes with the 1.4_BETA Panel.
The only thing I can do is delete parts of the sysex string but I can not insert anything when the string is really long….like in a wavefile.
- This reply was modified 3 years, 7 months ago by BAUS.
Updating a 25 year old Editor
Are you planning on releasing his big brother as well? I can think of some occasions that people want to edit the Sysex. It’s not possible with the minimalistic version because there is no editable UiLabel anymore.
As for the Mirage what I am thinking about is this:
If it would be possible to edit byte7 (the Wavesample number) in the sysex string then we could load the Wavesample sysex data to ANY of the 16 Wavesample locations.
I tried this, loaded the sysex in MIDIOX and changed the $02 to $03, saved the file and loaded it back into
the Mirage and the sample ended up in location 3. Very cool stuff for me to experience! 😀Let me try and figure out how to do this in LUA. I want to understand this programming language.
Updating a 25 year old Editor
Yes, it’s working!!!
You got me thinking again now. 😉
Updating a 25 year old Editor
Nice one Tedjuh!
I am wondering if I can use this to send and receive samples to and from the Ensoniq Mirage.
I already had succes with sending a Sample Request Message and getting a Wavesample back as Sysex.
I keep on following this thread!
Robin.
Updating a 25 year old Editor
Dnaldoog!!!! Thanks so much!
This is working great.
I am now getting deeper into the Lua programming language too. I have some more ideas for the Panel
with regards to requesting Patch Settings so the Panel reflects the Patch in the Mirage and possibly
also the Program Settings.Let’s see how far I can get with that.
Again….thank you so much for your help.
Updating a 25 year old Editor
Goed bezig!
This is great. I am looking forward to implement something similar in the Panel that I am making.
Both on Patch level and on Program level, a Program can contain between 1 and 6 Patches.Would be great to have the Panel reflect the current Patch settings because the Mirage, just like the Six Trak, only has a 2 digit display and no further knobs or sliders.
Updating a 25 year old Editor
Okay….. I used Dnalgood’s unelegant way of putting all the buttons in the local list….and it works…partially.
What works is that only 1 button led is ON and the other 31 are off. Good!
What’s not working is that each button that I press now outputs Program Change 32 except for button 32….that one outputs Program Change 31. I am still looking into this.
Any ideas?
Thanks,
Robin Bausewein.
Updating a 25 year old Editor
-
AuthorPosts