August 9, 2019 at 9:01 pm #115783
This is my attempt to create Yamaha AN200 panel. Since original software (like AN Expert Editor) cannot give me possibility to tweak parameters while synth busy in a DAW, i decided to try to make the panel by myself.
– basic functionality realized
– (almost) all available sound forming parameters in one place (hidden, sysex only etc)
– simple dependency control logic
– Storing and loading presets
– Modulation matrix
– Free EG (maybe)
I’m new to Ctrlr, so dumb errors are possible.
And honestly, I need some help with few moments:
1. Can somebody advice where I can read about storing (opening, saving and so on) preset banks within Ctrlr?
2. Is there any methods in Ctrlr (lua) suitable for drawing arbitary lines and converting them into array of values? That would be handy for implementing Free EG functionality.
Thanks in advance, any help appreciated!August 10, 2019 at 9:24 am #115787
- Topics: 13
- Replies: 582
- Total: 595
looks nice! Probably most complicated thing to do when you want to store/load presets is to read/write the sysex dump of a complete patch. Some synths are quite easy while others are really challenging. On some devices there is no or incomplete documentation of the dump. Then it gets really hard.
When you have the dump in a Lua table or in a Lua memoryblock it isn’t very complicated to save/load it to disk. As an example I would look at the panels from Carl Licroy, e.g. this one: http://ctrlr.org/power08-editor-for-dsi-prophet08/
Of course you can just save a bunch of parameters and fire them one by one to the synth, maybe with a delay in between if the synth crashes when hitting with CC’s or sysex too fast. But for a definitive solution you will have to handle the sysex dump.
What do you mean with “Free EG”? A random generator? You can generate random values easily with Lua. Why would you need graphic lines for this? There is no problem generating random lines with Lua though.August 10, 2019 at 11:43 am #115788
Thank you very much, Possemo! I’ll learn this panel more detailed soon.
I’m not afraid of tinkering with sysex data, especially since patch structure is well documented in the manual. It’s time consuming, but not impossible to make it right I guess.
As for Free EG – that’s not exactly such kind of thing. AN200 have thing called Free Envelope Generator (screenshot attached to this message). With it you can draw any shape by hand and use it as an envelope for different controls. Can be pretty handy sometimes.
What I want is to draw shape by hand on canvas and convert it into array of values – internally AN200 uses 192points array with levels from -127 to +127 for each point. So it would be great if you pointed me to suitable methods.August 10, 2019 at 2:08 pm #115790
- Topics: 13
- Replies: 582
- Total: 595
Ah I see, this free EG is a nice feature. I have never done such a thing but I guess it should be possible with a uiCustomComponent. That will definitely need advanced scripting skills. Attached a demo panel with a mouse draggable envelope. There you can see how you handle mouse movements/events. I have no idea how you could read out what pixels are on/off. I’d probably do it separated – fill a table with values while the mouse moves and draw points in the customcomponent separately.August 10, 2019 at 5:05 pm #115792August 16, 2019 at 11:04 am #115832
- Topics: 40
- Replies: 392
- Total: 432
Hi, you can also look at my Pro2 panel. I have there patch and librarian.
As for my other panels, everything is based on a memory block that I’m filling when reading/saving a patch file.
It is easy to manage either by single byte or range.
About the FREE EG, yep, you should use a uiCustomComponent then the various drawing capabilities offered by Juce graphics class (https://docs.juce.com/master/classGraphics.html) but also other classes.
Check also the DEMO – Render panel provided by Roman with Ctrlr (in Ctrlr installation directory)August 16, 2019 at 11:57 am #115833
Hi goodweather, thank you! I’ll be creating a preset management soon, that info will come in very handy.
Meanwhile I finished (kind of) Free EG implementation, modulation matrix and FreeEG data sending. Work not finished, but my yamaha delivers more fun to me than ever already 🙂
Thank you guys, your advices are very helpful! I’ll keep working on panel.August 16, 2019 at 1:37 pm #115836
I’m impressed! (Especially with the work on the Free-EG you’ve done) – Excellent!
I got the panel connected and working on a PLG150-AN installed in a MU100R.
August 16, 2019 at 4:06 pm #115837
- Topics: 40
- Replies: 392
- Total: 432
Héhé…now I could be interested!
I have a PLG150-AN card in a Motif ES8 but never used it as the process for using it was just heavy and not intuitive at all. Took me long time to have Yamaha’s editors working at all on Win10 but still, way of working was not good (need to save then to send)… Then finally dropped this and did something else with my other synths.
So, I may try this in the coming months 😉
Which setup did you use for your MU100R to have the PLG150-AN card responding?August 17, 2019 at 12:29 pm #115842
YAMAHA AN200 Editor for Windows (XGworks V3.0/V4.0 plug-in)
into XGworks 3.0.7E and connect to the MU100R through an Edirol FA-66 audio interface to a Roland A-880 Midi Patcher and then through a MOTU midi timepiece MTPAV (non usb version). So it’s pretty convoluted! The AN Expert Standalone Program doesn’t connect to midi ports in Windows 10, so you have to do it this way.
XGworks can see the MU100R and PLG150-AN no problem after that. If I disconnect the XGWorks I can then connect this panel in Ctrlr.
I haven’t tested MIDI out from the MU100R/PLG150-AN, so limited testing.
Have you ever worked with the interface of the MU100R? It’s so confusing, but there is a way to connect to the PLG150-AN card using the buttons. How to do that keeps eluding me every time I switch it on, but the XGworks can connect to it easily anyway.
Regards,August 21, 2019 at 6:10 am #115867
Hi guys, new version ready.
– Loading *.syx bulk dumps from AN200
– Loading separate presets
– Slight UI rework
– Sending all the panel data to the synth via sysex
– Fixed Free EG line tool behaviour
– Fixed some parameters boundaries
– Other fixes
EDIT: Oh, I forgot to return parameter “Panel -> Global delay for MIDI messages” to default (zero). For now you can set it manually, I will correct this in the next release
Thanks for everyone who involved into testing and advising!
August 22, 2019 at 4:31 am #115887
- This reply was modified 3 days ago by inteyes.
Again, it’s great.
How did you embed all the preset values within Ctrlr?
You are retrieving the values using by converting csv to a lua table. That’s interesting (and clever). Is there any advantage to this compared with just holding all preset data in (large) lua tables? That’s what I did for the SR-JV80-04 sysex in a panel I did http://ctrlr.org/roland-jd990-super-editor/.
August 22, 2019 at 5:58 pm #115888
Hello, thank you dnaldoog!
Actually I don’t think this method have any great advantages compared to method you mentioned. It’s just the first thing which came into my mind based on my knowledge of lua and Ctrlr. I have some experience with programming on freepascal, but to lua and Ctrlr I’m a total newbie, so my methods might be far from perfect 🙂
Preset bank values are stored as stateData within Ctrlr (as csv string). They are saving while Ctrlr shutting down and restoring while Ctrlr startup. On the one hand this method can give possibility to change default soundset without changing code at all. On the other hand – there is no default patch bank hardcoded somewhere in the panel.
PS: Wow, great panel! Thanks for the link, I can learn a lot from it.
You must be logged in to reply to this topic.