Go Back   Cockos Incorporated Forums > REAPER Forums > MIDI Hardware, Control Surfaces, and OSC

Reply
 
Thread Tools Display Modes
Old 11-23-2017, 06:44 PM   #241
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by _Stevie_ View Post
Has anyone tried to make this work with the Steinberg CMC series?
In particular the CMC-CH and the CMC-QC?
It's been a while since I looked at the protocol they use, I think it's fairly close to Mackie.

The whole idea of this project is custom maps, so you should be able to get at least a good portion of it working, if not all, unless there's something really wacky in their protocol implementation
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 11-23-2017, 08:28 PM   #242
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Posts: 3,925
Default

Hey Geoff,

Indeed, from what I could gather on the net, the CMCs use a similar protocol. However, I don't know for sure.
Thankfully, Steinberg has put the info in a PDF.
ftp://ftp.steinberg.de/Download/Hard...c_en_om_a0.pdf

If you say the CMCs can be hooked, I'm a happy donator!
_Stevie_ is offline   Reply With Quote
Old 11-24-2017, 02:00 AM   #243
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by _Stevie_ View Post
Hey Geoff,

Indeed, from what I could gather on the net, the CMCs use a similar protocol. However, I don't know for sure.
Thankfully, Steinberg has put the info in a PDF.
ftp://ftp.steinberg.de/Download/Hard...c_en_om_a0.pdf

If you say the CMCs can be hooked, I'm a happy donator!
Thanks, I'll include a map for those guys, when there are maps

Meanwhile, just install the stock MCU for each CMC module, you should get faders, mute, solo, recArm, and transport right away.
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 11-24-2017, 12:54 PM   #244
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Posts: 3,925
Default

Hey Geoff,

oh wow, I never tried the MCU mode with these. The CMC-CH works pretty well out of the box! Some button light toggles are missing, though. But I was able to assign actions to buttons, which is already pretty cool. Donation is its way!
If you need any help for testing, let me know.

EDIT: btw, I noticed that adding the MCU slows down Reaper tremendously, especially when having a huge track count. Will this be an issue with the CSI?

Last edited by _Stevie_; 11-24-2017 at 01:50 PM.
_Stevie_ is offline   Reply With Quote
Old 11-25-2017, 12:20 PM   #245
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Hi, Geoff. Can I get an unrefactored version with some test map to try it out?
fundorin is offline   Reply With Quote
Old 11-25-2017, 05:03 PM   #246
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by _Stevie_ View Post
Hey Geoff,

oh wow, I never tried the MCU mode with these. The CMC-CH works pretty well out of the box! Some button light toggles are missing, though. But I was able to assign actions to buttons, which is already pretty cool. Donation is its way!
If you need any help for testing, let me know.

EDIT: btw, I noticed that adding the MCU slows down Reaper tremendously, especially when having a huge track count. Will this be an issue with the CSI?
I tested earlier with high track counts, and with empty tracks no FX, it was fine up to about 2000, then it started to slow, but of course, that is not a real world test

We'll have to see how responsive we can make it
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 11-25-2017, 05:05 PM   #247
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Posts: 3,925
Default

Oh man, that's perfectly fine. I was using de-activated tracks for testing. 2000 tracks is awesome!
_Stevie_ is offline   Reply With Quote
Old 11-25-2017, 05:05 PM   #248
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
Hi, Geoff. Can I get an unrefactored version with some test map to try it out?
Unfortunately no, I'm letting the code design drive the map format choices, they naturally follow from the code, so the code has to be reasonably complete before final choice of map format.
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 11-25-2017, 05:08 PM   #249
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by _Stevie_ View Post
Oh man, that's perfectly fine. I was using de-activated tracks for testing. 2000 tracks is awesome!
Yeah, it was a while ago, I seem to remember you could bury it by hammering the bank switches relentlessly, probably overloaded the MIDI stream, might have to throttle/thin that down the road
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 11-29-2017, 02:53 AM   #250
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Unfortunately no, I'm letting the code design drive the map format choices, they naturally follow from the code, so the code has to be reasonably complete before final choice of map format.
Np. What format will be used for plugin maps?
fundorin is offline   Reply With Quote
Old 11-29-2017, 03:07 AM   #251
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
Np. What format will be used for plugin maps?
The plugin map format is the easiest part of the mapping effort, it's just key value pairs.

Here's a sample of the hardwired code, on the left are the names I gave the control surface widgets, and on the right are the VST param names, you can easily see how this can be represented in a simple way in a map file:

fxMap = new FXMap("VST: UAD Harrison 32C (Universal Audio, Inc.)");

fxMap->AddEntry("LoCurve", "LowPeak");
fxMap->AddEntry("HiGain", "HiGain");
fxMap->AddEntry("HiFrequency", "HiFreq");
fxMap->AddEntry("HiMidGain", "HiMidGain");
fxMap->AddEntry("HiMidFrequency", "HiMidFreq");
fxMap->AddEntry("HiMidQ", "LowPass");
fxMap->AddEntry("LoMidGain", "LoMidGain");
fxMap->AddEntry("LoMidFrequency", "LoMidFreq");
fxMap->AddEntry("LoMidQ", "HiPass");
fxMap->AddEntry("LoGain", "LowGain");
fxMap->AddEntry("LoFrequency", "LowFreq");
fxMap->AddEntry("Equalizer", "Bypass");
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 11-29-2017, 11:46 AM   #252
azslow3
Human being with feelings
 
Join Date: Nov 2017
Location: Heidelberg, Germany
Posts: 797
Default

Just want to say hello.

It seems like in this DAW I will have a concurrence .
I see that from positive perspective and I hope you have nothing against.

Posting links here will be inappropriate, google can show you what I mean...
azslow3 is offline   Reply With Quote
Old 11-29-2017, 04:11 PM   #253
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Here's a sample of the hardwired code, on the left are the names I gave the control surface widgets, and on the right are the VST param names, you can easily see how this can be represented in a simple way in a map file:
As long as every plugin would have a separate keyfile for it, I feel like this is a very simple and understandable approach. Nice!

Please, don't abandon this project, Geoff. I was thinking about making the whole bridge in oscii-bit, but then decided to wait for your project to be finished, cause I really need those custom keymaps.
fundorin is offline   Reply With Quote
Old 11-30-2017, 12:59 AM   #254
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
As long as every plugin would have a separate keyfile for it, I feel like this is a very simple and understandable approach. Nice!
Yeah, there are pros and cons to many small files vs one monolithic file, why is your preference many small files ?
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-01-2017, 06:31 PM   #255
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yeah, there are pros and cons to many small files vs one monolithic file, why is your preference many small files ?
The reasons behind this are simple:
sharing already made presets for single plugins between users (via Reaper stash or directly).
Having an ability to temporarily exchange existing mappings in your mappings folder with alternative or updated versions from other users.
Quickly editing the particular map in the text editor.
fundorin is offline   Reply With Quote
Old 12-01-2017, 07:14 PM   #256
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
The reasons behind this are simple:
sharing already made presets for single plugins between users (via Reaper stash or directly).
Well that would only work if everyone named their control surface widgets the same.

For instance consider:
fxMap->AddEntry("LoCurve", "LowPeak");

The parameter "LowPeak" is the name of the VST parameter and cannot be changed.

The parameter "LoCurve" is arbitrary and assigned by the user to a particular widget.
So an entry in the Control Surface map file might look something like:

"LoCurve" 0x90 0x20 0x7f
This entry defines the MIDI message 0x90 0x20 0x7f, and names it "LoCurve".
You as a user can name it anything you want "LoCurve", "LCurve", "Pancakes", whatever you want.

So exchanging maps is a bit more tricky than you might imagine.


Quote:
Originally Posted by fundorin View Post
Having an ability to temporarily exchange existing mappings in your mappings folder with alternative or updated versions from other users.
Quickly editing the particular map in the text editor.
Fair enough, but those have to be balanced with:
Easy to lose/misplace/forget to copy one of many files, as opposed to one file that's either there or not.

As shown in the above example when you wish to edit an FX map, you likely need the information for the Control surface mapping to pair a widget with an FX param, so there is actually an argument to have the Control Surface mappings AND the FX mappings all in one file.

I don't disagree with what you say, but I'm not sure what the optimal solution is quite yet.
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-01-2017, 07:24 PM   #257
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Well that would only work if everyone named their control surface widgets the same.

For instance consider:
fxMap->AddEntry("LoCurve", "LowPeak");
Why not just use parameter's number as an ID, instead of name?

Quote:
Originally Posted by Geoff Waddington View Post

"LoCurve" 0x90 0x20 0x7f
This entry defines the MIDI message 0x90 0x20 0x7f, and names it "LoCurve".
You as a user can name it anything you want "LoCurve", "LCurve", "Pancakes", whatever you want.
Exactly. But the parameter's number will stay the same.


Quote:
Originally Posted by Geoff Waddington View Post
Fair enough, but those have to be balanced with:
Easy to lose/misplace/forget to copy one of many files, as opposed to one file that's either there or not.
There should be a folder inside Reaper/Plugins, called GeoffPlugMaps, or something like that. Check how MCU plugin does it:


fundorin is offline   Reply With Quote
Old 12-01-2017, 07:49 PM   #258
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
Why not just use parameter's number as an ID, instead of name?
Readability.

Quote:
Originally Posted by fundorin View Post
There should be a folder inside Reaper/Plugins, called GeoffPlugMaps, or something like that. Check how MCU plugin does it:
Sure, I did that with the EuCon stuff, the MCU I did used one big map, each has advantages/disadvantages.

BTW, I will certainly NOT be using XML, the map format chosen will be MUCH more easily read by a human.
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-01-2017, 08:21 PM   #259
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Readability.
What I meant is if there could be technical difficulties, one should use parameter's id for access and not for the displayed name. That was a misunderstanding, so let's skip it.
Quote:
Originally Posted by Geoff Waddington View Post
Sure, I did that with the EuCon stuff, the MCU I did used one big map, each has advantages/disadvantages.
Yep. Eucon one was also nice in this terms, though I never used it or MCU, since my controller isn't compatible with those.


Quote:
Originally Posted by Geoff Waddington View Post
BTW, I will certainly NOT be using XML, the map format chosen will be MUCH more easily read by a human.
That's your choice. I think that format should definitely have controller type, index number of the parameter, offset, range, short and long names, so they could be edited manually and universal aliases, by which the surface could address those parameters directly. But, let's see what would be your approach to this.
fundorin is offline   Reply With Quote
Old 12-02-2017, 01:34 AM   #260
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
That's your choice. I think that format should definitely have controller type, index number of the parameter, offset, range, short and long names, so they could be edited manually and universal aliases, by which the surface could address those parameters directly. But, let's see what would be your approach to this.
Actually, after having done the previous maps much in the spirit of your suggestion, the goal on this project will be to go in the opposite direction.

I believe the code I posted is already a fairly good guess as to what's in the FX map format:
VST plugin name
WidgetName1 VSTParamName1
WidgetName2 VSTParamName2
WidgetName3 VSTParamName3
...

That's it !

As far as universal aliases, the whole thing is based on GUID's which are, in effect, universal aliases.

Thanks for the input, please keep it coming.

Everyone else, don't be shy, jump in
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-02-2017, 11:51 AM   #261
kgarello
Human being with feelings
 
Join Date: Jan 2009
Posts: 309
Default

Hi Geoff,

I got the alpha installed for my BCF2000 and am receiving and sending midi

OUT -> BCF2000 b0 30 03
IN -> BCF2000 90 20 7f
IN -> BCF2000 90 20 00

I can set mute and solo as expected.

When I move a fader, I can see the reaper track controls following, but the BCF fader snaps back to zero (-inf)

If I move a reaper control, it does not control the BCF fader

I have tried both Mackie Cubase mode and Mackie Sonar mode.

Is this expected behavior at this point?

Also, I don't understand why my ini file needs to be channel 5

MidiInMonitor=On
MidiOutMonitor=On
BCF2000 8 5 5

Thanks,

Ken
kgarello is offline   Reply With Quote
Old 12-02-2017, 12:17 PM   #262
kgarello
Human being with feelings
 
Join Date: Jan 2009
Posts: 309
Default

Okay - further experimentation

I can get bi-directional control with a change in mapping

BCF2000 8 5 6

I'm not sure why the channel mapping is 5,6
kgarello is offline   Reply With Quote
Old 12-02-2017, 02:44 PM   #263
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 9,918
Default

Quote:
Originally Posted by kgarello View Post
Okay - further experimentation

I can get bi-directional control with a change in mapping

BCF2000 8 5 6

I'm not sure why the channel mapping is 5,6
I think the MIDI port enumeration (it's not 'channel' as in 'MIDI channel' iiuc) is rather arbitrary depending on how many MIDI devices you have and in which order Reaper (or the OS ?) 'sees' them.

I also had to do some experimentation to get it right and finally landed with BCR200 8 5 8.

https://forum.cockos.com/showpost.ph...&postcount=178
nofish is offline   Reply With Quote
Old 12-03-2017, 01:21 PM   #264
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
As far as universal aliases, the whole thing is based on GUID's which are, in effect, universal aliases.
Could you, please, clarify the order of the parameters in the map file?
The surface has a mode for controlling selected fx parameters.
The plugin itself present it's parameters in the following order:
1. wet/dry
2. cutoff
3. mod

I want them to be:
1. cutoff
2. mod
3. wet/dry

Will the map allow the user to reassign the order of the parameters for a specific plugin?
fundorin is offline   Reply With Quote
Old 12-03-2017, 02:09 PM   #265
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
Could you, please, clarify the order of the parameters in the map file?
The surface has a mode for controlling selected fx parameters.
The plugin itself present it's parameters in the following order:
1. wet/dry
2. cutoff
3. mod

I want them to be:
1. cutoff
2. mod
3. wet/dry

Will the map allow the user to reassign the order of the parameters for a specific plugin?
Sure, you can put them in any order you want, because it's just two strings, a widget name and a VST parameter.

However, there is no significance to changing the order in the map file, it accomplishes nothing.

What is it you are trying to accomplish by stating things in a particular order ?
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-03-2017, 09:44 PM   #266
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
What is it you are trying to accomplish by stating things in a particular order ?
To get rid of the unneeded parameters? But, instead of completely ditching them, just move them to last assign pages, while mapping the important ones to the first pages?

As for "separate vs single" mapping files format: in the world of plugins, there's .fxp (for single preset) and .fxb (for banks), so, anyone can create either a whole pack of presets (maps) in one file or make them available as separate files, for convenience. They can live happily side by side.

P.S. Yesterday I accidentally stumbled upon a plugin that uses the .xml format to store its presets. Never seen this approach before.
The plugin is from DiscoDSP - Corona. https://i.imgur.com/oa7FXMk.png

At the same time, DiscoDSP Discovery Pro uses regular .fxb for storing banks and .xml for parameters, layers and zones.
fundorin is offline   Reply With Quote
Old 12-04-2017, 04:31 AM   #267
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
To get rid of the unneeded parameters? But, instead of completely ditching them, just move them to last assign pages, while mapping the important ones to the first pages?
Oh, just arrange them any way you like, in your use case, put unused ones last.

Then, you can just comment out any lines you don't want read.

Quote:
Originally Posted by fundorin View Post
As for "separate vs single" mapping files format: in the world of plugins, there's .fxp (for single preset) and .fxb (for banks)
Yeah, had a look at those file formats, they're binary, we definitely won't be doing anything like that

Quote:
Originally Posted by fundorin View Post
anyone can create either a whole pack of presets (maps) in one file or make them available as separate files, for convenience. They can live happily side by side.
That's actually an argument for one monolithic file, for a very simple reason:

What happens if there is an fxp definition for a plugin and a conflicting one in an fxb file, who wins ?

That issue could be solved by adding the ability to load configurations, but then you have a more complicated system, is the extra flexibility too costly in terms of easy human understanding ??


Quote:
Originally Posted by fundorin View Post
P.S. Yesterday I accidentally stumbled upon a plugin that uses the .xml format to store its presets. Never seen this approach before.
The plugin is from DiscoDSP - Corona. https://i.imgur.com/oa7FXMk.png

At the same time, DiscoDSP Discovery Pro uses regular .fxb for storing banks and .xml for parameters, layers and zones.
Had a look at that link, seems like a really good argument for having one monolithic file, uggghhh what a mess
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-04-2017, 04:52 AM   #268
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yeah, had a look at those file formats, they're binary, we definitely won't be doing anything like that
Using binary files wasn't my point at all.

Quote:
Originally Posted by Geoff Waddington View Post
That's actually an argument for one monolithic file, for a very simple reason:

What happens if there is an fxp definition for a plugin and a conflicting one in an fxb file, who wins ?
If you ever tried writing oscii-bot scripts, you should know that there could be numerous of scripts, loaded at the same time.
I'd prefer a folder, where every map could be seen, instead of a large file like fxb, when you don't know what's inside it.
Like /PlugMaps/PlugDev/CoolPlugin.txt
This can duplicate the actual VST folder structure.

Quote:
Originally Posted by Geoff Waddington View Post
That issue could be solved by adding the ability to load configurations, but then you have a more complicated system, is the extra flexibility too costly in terms of easy human understanding ??
Why? Simply, why? But, I think that single maps should always be choosen if there's a conflict with the "bank". Imagine, you've got such bank from other user for a particular manufacturer (plugin pack), but you've already mapped a single plugin from the same developer by yourself in a way that you like? Of cause, you'd prefer your single file to be in priority. So, that's the rule. All other conflicts should be resolved by the creation date of the map file. Either "oldest first" or "newest first".
And what if you have a single map file for everything, where you add your plugins and then you add the same plugin again at the end of that file, a year later? Just because it's hard to track and navigate through that huge bedsheet of maps.
What happens then? Which entry should be considered by csurf as the main one?

Quote:
Originally Posted by Geoff Waddington View Post
Had a look at that link, seems like a really good argument for having one monolithic file, uggghhh what a mess
Once again, it's all good until users will start sharing their maps.
Endless notepad editing, copying and pasting the text, with the risc of deleting something important inside the existing all-in-one mapfile.
All of this hustle instead of simply copying the received map file to /PlugMaps/PlugDev/ folder.
fundorin is offline   Reply With Quote
Old 12-04-2017, 04:55 AM   #269
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 2,611
Default

control devices is a complicated topic, no one seems to care about, only companies trying to sell crappy products. So Reaper solved it perfectly, adding OSC, topic finished. Do what you want. Why adding more nonsense?

Why is there no OSC standard where ALL companies follow to control a DAW. Let us call it here DAWOSC, and every companies product has to support this protocol at least in one of their operation modes. They can add whatever nonsense they want as additional modes, but first having something, where you could take
-any daw
-any device
-switch on the device
-set its mode to DAWOSC
-enjoy everyhting in exactly same way

No matter which device, which company, which color, if plastic or wood or gold. The inputs and outputs should be compatible! As long as this does not exist, why wasting time with individual crappy solutions?

What we have now is:
-midi
-vst
-osc

What we need:
-dawosc

Summary: Buy a device, switch it on, set to DAWOSC mode, have fun!

I guess only Cockos could build such a protocol and device, other companies seem to be too stupid. Thanks for listening. Sometimes fun has to be.

Last edited by TonE; 12-04-2017 at 05:00 AM.
TonE is offline   Reply With Quote
Old 12-04-2017, 05:04 AM   #270
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by TonE View Post
control devices is a complicated topic, no one seems to care about, only companies trying to sell crap products. So Reaper solved it perfectly, adding OSC, topic finished. Do what you want. Why adding more nonsense?

Why is there no OSC standard where ALL companies follow to control a DAW. Let us call it here DAWOSC, and every companies product has to support this protocol at least in one of their operation modes. They can add whatever nonsense they want as additional modes, but first having something, where you could take
-any daw
-any device
-switch on the device
-set its mode to DAWOSC
-enjoy everyhting in exactly same way

No matter which device, which company, which color, if plastic or wood or gold. The inputs and outputs should be compatible! As long as this does not exist, why wasting time with individual crappy solutions?

What we have now is:
-midi
-vst
-osc

What we need:
-dawosc

Summary: Buy a device, switch it on, set to DAWOSC mode, have fun!

I guess only Cockos could build such a protocol and device, other companies seem to be too stupid. Thanks for listening. Sometimes fun has to be.
Can I get an AMEN !!!

I would love for that to be the case, I was even playing around with iOS zero network config using Bonjour, sure was sweet to watch the pieces on the Mac and iPad "self discover"

But meanwhile we have to soldier on, mired in reality
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-04-2017, 05:04 AM   #271
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 2,611
Default

Best bank solution I know is what Synth1 is using. Each bank a separate file. You can have as many banks as you want. Easy to manage, add, remove files from directory, finished. Alphabetical sorting.

Each plugin.dll would get its own directory "plugin.dll" where you could put the bank files. One bank per file.
TonE is offline   Reply With Quote
Old 12-04-2017, 05:18 AM   #272
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
Using binary files wasn't my point at all.
Fair point.

Quote:
Originally Posted by fundorin View Post
If you ever tried writing oscii-bot scripts, you should know that there could be numerous of scripts, loaded at the same time.
I'd prefer a folder, where every map could be seen, instead of a large file like fxb, when you don't know what's inside it.
Like /PlugMaps/PlugDev/CoolPlugin.txt
This can duplicate the actual VST folder structure.
That seems totally reasonable for that use case, but I wonder how many would use the software in such a way, as opposed to the more mainstream, "I just download the map for my setup and start making music", folks love zero config -- me included



Quote:
Originally Posted by fundorin View Post
Why? Simply, why? But, I think that single maps should always be choosen if there's a conflict with the "bank". Imagine, you've got such bank from other user for a particular manufacturer (plugin pack), but you've already mapped a single plugin from the same developer by yourself in a way that you like? Of cause, you'd prefer your single file to be in priority. So, that's the rule. All other conflicts should be resolved by the creation date of the map file. Either "oldest first" or "newest first".
But now you've started to load up the users mind with having to know more rules. The whole idea, the gestalt, the raison d'être, of a control surface is to constrain and simplify, in order to free up the brain to concentrate on music and sound.


Quote:
Originally Posted by fundorin View Post
And what if you have a single map file for everything, where you add your plugins and then you add the same plugin again at the end of that file, a year later? Just because it's hard to track and navigate through that huge bedsheet of maps.
What happens then? Which entry should be considered by csurf as the main one?
Fair point, there would have to be a rule, "he who writes last", "ignore duplicates", etc.
Ugghhh, I'll have to see if I can improve this, maybe throw up a message box reporting duplicate entries.


Quote:
Originally Posted by fundorin View Post
Once again, it's all good until users will start sharing their maps.
Endless notepad editing, copying and pasting the text, with the risc of deleting something important inside the existing all-in-one mapfile.
All of this hustle instead of simply copying the received map file to /PlugMaps/PlugDev/ folder.
Once again, I would say this is an outlier use case, the folks that do this sort of thing tend to be the sort who are much more meticulous.

Again, thanks VERY much for contributing, this all leads to a better end result.

Everyone else, where the hell are ya' ?
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-04-2017, 05:22 AM   #273
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by TonE View Post
Best bank solution I know is what Synth1 is using. Each bank a separate file. You can have as many banks as you want. Easy to manage, add, remove files from directory, finished. Alphabetical sorting.

Each plugin.dll would get its own directory "plugin.dll" where you could put the bank files. One bank per file.
Except for the fact that in this case the FX maps have simple pairs that map a widget name (e.g."Thresh") to an FX parameter (e.g. "Threshold").

Without the Control surface map, the FX maps have no context -- there is no "Thresh" widget with which to pair the "Threshold" FX parameter.
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-04-2017, 05:33 AM   #274
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
That seems totally reasonable for that use case, but I wonder how many would use the software in such a way, as opposed to the more mainstream, "I just download the map for my setup and start making music", folks love zero config -- me included
What about two control surfaces, connected to Reaper via csurf plugin?

Quote:
Originally Posted by Geoff Waddington View Post
But now you've started to load up the users mind with having to know more rules. The whole idea, the gestalt, the raison d'être, of a control surface is to constrain and simplify, in order to free up the brain to concentrate on music and sound.
This isn't the user's rule, but the software's. Having each map in a single file and sorted by DevName/PlugName.txt eliminates any conflicts. But, if conflict would happen, as I said before, the software itself should have rules about it.

Quote:
Originally Posted by Geoff Waddington View Post
Fair point, there would have to be a rule, "he who writes last", "ignore duplicates", etc.
Yep. That's what I talking about.

Quote:
Originally Posted by Geoff Waddington View Post
Ugghhh, I'll have to see if I can improve this, maybe throw up a message box reporting duplicate entries.
I wanted to suggest this or logging to the file in case of conflicts, but forgot to mention it.


Quote:
Originally Posted by Geoff Waddington View Post
Again, thanks VERY much for contributing, this all leads to a better end result.
I hope that you don't see me as an arrogant prick, who is used to dictating his will to everybody. Just want to help, really.


Quote:
Originally Posted by Geoff Waddington View Post
Without the Control surface map, the FX maps have no context -- there is no "Thresh" widget with which to pair the "Threshold" FX parameter.
A single button "Generate missing plugin maps", which will populate the PlugMaps/DevName folders with ready-to-edit maps can solve many problems, actually. If one messed with plugmap, he can always delete it (single file, not the whole work, in case of all-in-one approach) and press "generate missing" button to get a new canvas for editing.
fundorin is offline   Reply With Quote
Old 12-04-2017, 05:35 AM   #275
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Posts: 3,925
Default

@Geoff, someone in this thread mentioned, that he was trying an alpha version. Is this available somehwhere?
_Stevie_ is offline   Reply With Quote
Old 12-04-2017, 06:25 AM   #276
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by _Stevie_ View Post
@Geoff, someone in this thread mentioned, that he was trying an alpha version. Is this available somehwhere?
Here it is: https://stash.reaper.fm/v/31711/CSI%20pre%20alpha.zip
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-04-2017, 06:33 AM   #277
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,090
Default

Quote:
Originally Posted by fundorin View Post
What about two control surfaces, connected to Reaper via csurf plugin?
Yeah, I considered that, but it's the type of thing you do quite rarely, so Im willing to live with that one.

Quote:
Originally Posted by fundorin View Post
I hope that you don't see me as an arrogant prick, who is used to dictating his will to everybody. Just want to help, really.
Absolutely not !!

I'm very glad you've joined the conversation, I just wish more people would too, that's how we get a good result !!

Quote:
Originally Posted by fundorin View Post
A single button "Generate missing plugin maps", which will populate the PlugMaps/DevName folders with ready-to-edit maps can solve many problems, actually. If one messed with plugmap, he can always delete it (single file, not the whole work, in case of all-in-one approach) and press "generate missing" button to get a new canvas for editing.
Yeah, I used an approach similar to that with the EuCon implementation.

This new one is even simpler:

There is (not in the current build in the stash) a parameter called VSTMonitor that, when set to "On" displays the VST name and params in ReaConsole when you load a plugin.

Just cut and paste to map, add widgets names, shake don't stir, and voila, a new map, very simple.
__________________
Beta software https://stash.reaper.fm/v/38349/CSI%20beta.zip Donate GeoffWaddington.ca
Installation / documentation / source https://github.com/GeoffAWaddington/...ntegrator/wiki
Geoff Waddington is offline   Reply With Quote
Old 12-04-2017, 06:46 AM   #278
rschlierbeck
Human being with feelings
 
Join Date: Sep 2014
Posts: 45
Default

Quote:
Originally Posted by Geoff Waddington View Post
Everyone else, where the hell are ya' ?
Not quite enough experience here to offer any better suggestions, sadly.

As far as the DAWOSC thing, could this be accomplished in a similar fashion to ODBC? For anyone that doesn't know, ODBC is an intermediate translator that allows applications to talk to different databases through a common syntax. If there was a single DAWOSC interface would it be possible to write a MIDI to OSC translator for individual control surfaces? Sorry if this is completely off topic.

XML "might" be a useful file format but would really require a front end editor to manage your maps. Import and Export could be part of that editor. But without an editor I think XML would cause untold grief for end users. Having said that, if you have an editor then the resulting file format is less important. A text file with key-value pairs would work fine and could be modified with a simple text editor.
rschlierbeck is offline   Reply With Quote
Old 12-04-2017, 07:31 AM   #279
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 2,611
Default

oscii-bot can convert in both directions: midi <-> osc
latest version even with sysex support, but did not test that part myself.

For example you can send midi to oscii-bot, and it would convert and send them as osc to reaper. Here one example which converts all program change events on a given midi port to Reaper tempo osc commands, based on the program change value, in logarithmic steps, only on midi channel 9, of course you can adapt anything, have fun, in the past Reaper could go up to 4000+ bpm, now maximum is 960 bpm:

PHP Code:
// PCtoTempo.txt
// v0.1
// by Banned
// script for OSCII-bot v0.3 <http://www.cockos.com/oscii-bot/>
// Convert incoming MIDI Program Change events to OSC output for setting REAPER to specific tempi


@input midi_bus MIDI "Midi Through Port-7"
@output osc_output OSC "127.0.0.1:8000" 0 0 // localhost = 127.0.0.1 (IPv4)

@init
// log = 1;

@midimsg
status 
msg1 $xF0// get status
channel msg1 $x0F// get MIDI channel

// Program Change events
status==$xC0? (
pc_nr msg2;

// Convert specific Program Change numbers to specific tempo values
pc_nr == 0tempo 2.913:
pc_nr == 1tempo 3.086:
pc_nr == 2tempo 3.270:
pc_nr == 3tempo 3.464:
pc_nr == 4tempo 3.670:
pc_nr == 5tempo 3.889:
pc_nr == 6tempo 4.120:
pc_nr == 7tempo 4.365:
pc_nr == 8tempo 4.624:
pc_nr == 9tempo 4.899:
pc_nr == 10tempo 5.191:
pc_nr == 11tempo 5.499:
pc_nr == 12tempo 5.826:
pc_nr == 13tempo 6.173:
pc_nr == 14tempo 6.540:
pc_nr == 15tempo 6.929:
pc_nr == 16tempo 7.341:
pc_nr == 17tempo 7.777:
pc_nr == 18tempo 8.240:
pc_nr == 19tempo 8.730:
pc_nr == 20tempo 9.249:
pc_nr == 21tempo 9.799:
pc_nr == 22tempo 10.381:
pc_nr == 23tempo 10.999:
pc_nr == 24tempo 11.653:
pc_nr == 25tempo 12.345:
pc_nr == 26tempo 13.080:
pc_nr == 27tempo 13.857:
pc_nr == 28tempo 14.681:
pc_nr == 29tempo 15.554:
pc_nr == 30tempo 16.479:
pc_nr == 31tempo 17.459:
pc_nr == 32tempo 18.497:
pc_nr == 33tempo 19.597:
pc_nr == 34tempo 20.762:
pc_nr == 35tempo 21.997:
pc_nr == 36tempo 23.305:
pc_nr == 37tempo 24.691:
pc_nr == 38tempo 26.159:
pc_nr == 39tempo 27.715:
pc_nr == 40tempo 29.362:
pc_nr == 41tempo 31.108:
pc_nr == 42tempo 32.958:
pc_nr == 43tempo 34.918:
pc_nr == 44tempo 36.994:
pc_nr == 45tempo 39.194:
pc_nr == 46tempo 41.525:
pc_nr == 47tempo 43.994:
pc_nr == 48tempo 46.610:
pc_nr == 49tempo 49.382:
pc_nr == 50tempo 52.318:
pc_nr == 51tempo 55.429:
pc_nr == 52tempo 58.725:
pc_nr == 53tempo 62.217:
pc_nr == 54tempo 65.917:
pc_nr == 55tempo 69.836:
pc_nr == 56tempo 73.989:
pc_nr == 57tempo 78.388:
pc_nr == 58tempo 83.050:
pc_nr == 59tempo 87.988:
pc_nr == 60tempo 93.220:
pc_nr == 61tempo 98.763:
pc_nr == 62tempo 104.636:
pc_nr == 63tempo 110.858:
pc_nr == 64tempo 117.450:
pc_nr == 65tempo 124.434:
pc_nr == 66tempo 131.833:
pc_nr == 67tempo 139.672:
pc_nr == 68tempo 147.978:
pc_nr == 69tempo 156.777:
pc_nr == 70tempo 166.099:
pc_nr == 71tempo 175.976:
pc_nr == 72tempo 186.440:
pc_nr == 73tempo 197.527:
pc_nr == 74tempo 209.272:
pc_nr == 75tempo 221.716:
pc_nr == 76tempo 234.900:
pc_nr == 77tempo 248.868:
pc_nr == 78tempo 263.666:
pc_nr == 79tempo 279.345:
pc_nr == 80tempo 295.955:
pc_nr == 81tempo 313.554:
pc_nr == 82tempo 332.199:
pc_nr == 83tempo 351.952:
pc_nr == 84tempo 372.880:
pc_nr == 85tempo 395.053:
pc_nr == 86tempo 418.544:
pc_nr == 87tempo 443.432:
pc_nr == 88tempo 469.800:
pc_nr == 89tempo 497.736:
pc_nr == 90tempo 527.333:
pc_nr == 91tempo 558.690:
pc_nr == 92tempo 591.911:
pc_nr == 93tempo 627.108:
pc_nr == 94tempo 664.398:
pc_nr == 95tempo 703.905:
pc_nr == 96tempo 745.761:
pc_nr == 97tempo 790.106:
pc_nr == 98tempo 837.088:
pc_nr == 99tempo 886.864:
pc_nr == 100tempo 939.600:
pc_nr == 101tempo 995.471:
pc_nr == 102tempo 1054.665:
pc_nr == 103tempo 1117.379:
pc_nr == 104tempo 1183.822:
pc_nr == 105tempo 1254.215:
pc_nr == 106tempo 1328.795:
pc_nr == 107tempo 1407.809:
pc_nr == 108tempo 1491.522:
pc_nr == 109tempo 1580.213:
pc_nr == 110tempo 1674.177:
pc_nr == 111tempo 1773.729:
pc_nr == 112tempo 1879.200:
pc_nr == 113tempo 1990.943:
pc_nr == 114tempo 2109.331:
pc_nr == 115tempo 2234.758:
pc_nr == 116tempo 2367.644:
pc_nr == 117tempo 2508.431:
pc_nr == 118tempo 2657.590:
pc_nr == 119tempo 2815.619:
pc_nr == 120tempo 2983.044:
pc_nr == 121tempo 3160.425:
pc_nr == 122tempo 3348.354:
pc_nr == 123tempo 3547.457:
pc_nr == 124tempo 3758.400:
pc_nr == 125tempo 3981.886:
pc_nr == 126tempo 4218.661:
pc_nr == 127tempo 4469.516// <-- NOTE THE SEMI-COLON AFTER LAST LINE

// Send OSC message to REAPER to set tempo
// send only if incoming midi channel is 9
channel == 8oscsend(osc_output"f/tempo/raw"tempo);

// Log
// log? printf("\nProgram Change: number: %3d; MIDI channel: %2d --> Tempo: %6f", pc_nr, (channel+1), tempo);
); 

Last edited by TonE; 12-04-2017 at 07:37 AM.
TonE is offline   Reply With Quote
Old 12-04-2017, 07:35 AM   #280
fundorin
Banned
 
Join Date: Feb 2014
Location: Moscow, Russia
Posts: 554
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yeah, I considered that, but it's the type of thing you do quite rarely, so Im willing to live with that one.
You live with one. I live with three.
Two of them are Novation SL series, MkI and MkII.
I'm planning to use one of them (the one without LEDs) as a mixer console, and the other one (with LEDs) as an instrument controller.

Quote:
Originally Posted by Geoff Waddington View Post
This new one is even simpler:
I highly doubt it.

Quote:
Originally Posted by Geoff Waddington View Post
There is (not in the current build in the stash) a parameter called VSTMonitor that, when set to "On" displays the VST name and params in ReaConsole when you load a plugin.

Just cut and paste to map, add widgets names, shake don't stir, and voila, a new map, very simple.
Just copy/paste? How many plugins do you have in your system, Geoff?




P.S. It seems like I need to get back to oscii-bot scripting now. According to the manual, oscii-bot can also read from external files, so, after finishing the main script, it should be possible to get fx parameter's names and values from external files.

Last edited by fundorin; 12-04-2017 at 09:04 AM.
fundorin is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 08:40 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.