Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER Developer Forum

Reply
 
Thread Tools Display Modes
Old 12-06-2013, 04:11 PM   #1
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default Control Surface US-2400, Beta with some problems

I love the US-2400 by Tascam, IMO it fills a gap in today's controller market. So after I was able to get one from cheap, I looked how it would play with Reaper – but alas, setup as a fake Mackie MCU suggested here in the forums (http://forum.cockos.com/showthread.php?t=85717) leaves something to be desired – no real working channel strip, actions placed on weird buttons, etc...

So I tried my hand at writing some C++. I have it in a kind of working state now, but I think a lot of things could be done better and I don't know how:

– The performance is quite a bit worse than with the MCU setup (especially with automation on read it seems like it's getting swamped with MIDI updates).
– When the US-2400 is selected as control surface in the preferences but not hooked up, Reaper crashes on start - I have absolutely no idea why.

If any of you would find the time to check it out, or just glance over the code and give me pointers (hey, I made a c++ pun) on how to improve performance and fix the crash on start-up, I would be really grateful.

All the needed stuff is on the Reaper Stash:
https://stash.reaper.fm/19043/Tascam%...-BETA-BETA.zip

***EDIT***
The link above is outdated (and most of the problems fixed at least temporarily). Use the GitHub link in the post below for the current version
***EDIT***

Thanks!
David

Last edited by ---david; 12-30-2013 at 07:49 AM. Reason: Update
---david is offline   Reply With Quote
Old 12-06-2013, 05:41 PM   #2
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Just in the unlikely case that somebody has tried this already in the meantime: I forgot to include an important bit:

The US-2400 has to be in Native Mode, which AFAIK is a novelty of firmware 1.31, so you might have to update it. To activate Native Mode put the US-2400 to standby (so that the Power button 'breathes'), then keep Master Sel + Chan pushed while turning it back on – if you have the right firmware and Native Mode is active Chan should blink three times.

(I also updated the readme in the Reaper Stash.)
---david is offline   Reply With Quote
Old 12-08-2013, 03:47 AM   #3
Teddy
Human being with feelings
 
Join Date: Sep 2011
Posts: 133
Default

I'm writing a script for the us2400 using node.js and osc, and have found that I have to limit outgoing messages just slightly, or it drops some of them.

Once I added a tiny delay for messages in queue, the performance was much better. I don't have the code available right now, but can post the details in a few days if you're interested?
Teddy is offline   Reply With Quote
Old 12-08-2013, 08:45 AM   #4
mim
Human being with feelings
 
Join Date: Mar 2009
Posts: 345
Default

Quote:
Originally Posted by Teddy View Post
I'm writing a script for the us2400 using node.js and osc, and have found that I have to limit outgoing messages just slightly, or it drops some of them.

Once I added a tiny delay for messages in queue, the performance was much better. I don't have the code available right now, but can post the details in a few days if you're interested?
Hmm interesting...
Are you able to use your tascam us 2400 with node.js and osc ?

We are building a multitouch front end for Reaper using node.js and osc, it would be super cool for us to invite the US-2400 to the party ...
mim is offline   Reply With Quote
Old 12-08-2013, 09:01 AM   #5
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Quote:
Originally Posted by Teddy View Post
I'm writing a script for the us2400 using node.js and osc, and have found that I have to limit outgoing messages just slightly, or it drops some of them.

Once I added a tiny delay for messages in queue, the performance was much better. I don't have the code available right now, but can post the details in a few days if you're interested?
Hey Teddy, thanks for your reply.

Node.js, huh. Sounds interesting (I only know that from a web / server context). Details would be at least interesting!

... although for starters it might probably be enough for now if I knew which direction you meant by 'outgoing' – user entry or the back channel from Reaper? (or both)?
---david is offline   Reply With Quote
Old 12-08-2013, 09:03 AM   #6
Teddy
Human being with feelings
 
Join Date: Sep 2011
Posts: 133
Default

Quote:
Originally Posted by mim View Post
Hmm interesting...
Are you able to use your tascam us 2400 with node.js and osc ?

We are building a multitouch front end for Reaper using node.js and osc, it would be super cool for us to invite the US-2400 to the party ...
Wow, that's what I had in mind. I'm trying to build a controller using a Tascam Us-2400 and one iPad placed above each bank of eight tracks (so three in total). It's coming along quite nicely, but I haven't got started on the iPads yet. The us2400 works really well with node, and I have made a module for the communication. I can send it to you if you're interested.

I have to mention, though that the project is sort of on hold now, since my girlfriend got sick. Is your code on git anywhere? would love to have a look!
Teddy is offline   Reply With Quote
Old 12-08-2013, 09:09 AM   #7
Teddy
Human being with feelings
 
Join Date: Sep 2011
Posts: 133
Default

Quote:
Originally Posted by ---david View Post
... although for starters it might probably be enough for now if I knew which direction you meant by 'outgoing' – user entry or the back channel from Reaper? (or both)?
I'm limiting the back-channel from Reaper (or node, in my case), so the us2400 has time to breathe and is not skipping some messages.

If you stress the user input with multiple faders at once, the tascam is sometimes skipping a fader MSB or LSB. I don't think you can do anything about that, though.
Teddy is offline   Reply With Quote
Old 12-08-2013, 02:54 PM   #8
mim
Human being with feelings
 
Join Date: Mar 2009
Posts: 345
Default

Quote:
Originally Posted by Teddy View Post
Wow, that's what I had in mind. I'm trying to build a controller using a Tascam Us-2400 and one iPad placed above each bank of eight tracks (so three in total).
We use a 42" screen with a multitouch overlay... We design the web page to "fit" the us 2400 banks of faders. (we made a REAPER mixer skin, that also fit us 2400 banks).

Quote:
Originally Posted by Teddy View Post
It's coming along quite nicely, but I haven't got started on the iPads yet. The us2400 works really well with node, and I have made a module for the communication. I can send it to you if you're interested.
Indeed, I'm curious how did you get from the midi port of the us2400 to node.js.

We didn't dig this part yet, because I think latency is still better using native MCU control surface in REAPER.(because osc latency is not yet user definissable). And since most of our work is to be fader jockey (movie post prod), volume latency is a huge deal. (not to mention volume data from mcu is "synced" with the project where osc is not)

However if we could setup REAPER to have the lowest latency with incoming OSC, then connecting the US 2400 to the node.js would be easier and more powerfull.

Quote:
Originally Posted by Teddy View Post
I have to mention, though that the project is sort of on hold now, since my girlfriend got sick.
I hope she'll get better soon... Take care of her!

Quote:
Originally Posted by Teddy View Post
Is your code on git anywhere? would love to have a look!
No it's not public yet, because we feel it is not ready to be shown yet ... My friend is the js developer and I am the python developer. We are aiming a very specific post prod workflow (and we're already having nice times mixing movies on our "mixing desk").

@ ---david, sorry I hijacked your thread !

Good to see you are aiming a native us2400 MCU support - I have not tested it yet -, but still I can give some ideas.

First -and easy- option would be to start with "mcp view" (to be sync with the mcp rather than the tcp); since the us 2400 has no "global view" button that allow to switch from tcp to mcp in the native MCU. (I'm using a midi keyboard for that)

Sometime with the native MCU, my US 2400 just do totally garbage, like wrecking the whole project with just a fader movement. I think it comes from the "overflow" Teddy is speaking of.
Since I don't use pan knobs on the us 2400 (because I think they are just crap), I'd like to be able to stream only the volume data to the us 2400, and maybe then have better performance and avoid the overflows.

Good Luck with your C code

Last edited by mim; 12-08-2013 at 03:00 PM.
mim is offline   Reply With Quote
Old 12-11-2013, 01:05 PM   #9
Teddy
Human being with feelings
 
Join Date: Sep 2011
Posts: 133
Default

Would it be an idea to make a 'US2400 collaboration and experiences' thread? To stop hijacking david's thread, I mean. (sorry)
Teddy is offline   Reply With Quote
Old 12-29-2013, 07:54 AM   #10
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hey guys, no worries about hijacking, I could extract some useful info!

And I myself have to apologize for not being on here for a while - the weeks before Christmas are usually extra stressful (and strangely, I don't receive thread notifications anymore).

In the meantime I could fix the start up crash problem and am now going to try and improve performance over the next few days. I haven't really tested it to the limit I guess, but I'm about to during the next weeks. mim, how often do you experience these wrecking glitches?

Also, I never considered using the US-2400 for anything else but MCP and I don't really have any idea what would actually change if you switch to TCP mode (except maybe different tracks showing)?

IMO the pan rotaries are quite good, they just don't work right with the MCU surface drivers. They can actually be really precise if you query them for relative values (CC +1, -4, etc.) which is what they output – instead of absolutes (0 > 127) like the regular MCU does (it's been a while since I checked so I could be wrong).

Teddy, I hope your girlfriend is feeling better!
---david is offline   Reply With Quote
Old 12-30-2013, 01:34 AM   #11
mim
Human being with feelings
 
Join Date: Mar 2009
Posts: 345
Default

Quote:
Originally Posted by ---david View Post
mim, how often do you experience these wrecking glitches?
Hmm... hard to say, pretty rarely. But I do feel it occurs when there is an overflow into the tascam (ie multiple undos sequentially)

Quote:
Originally Posted by ---david View Post
Also, I never considered using the US-2400 for anything else but MCP and I don't really have any idea what would actually change if you switch to TCP mode (except maybe different tracks showing)?
Does that mean you are looking to start it as MCP view ?
The differences are:
- If you hide some tracks in the mcp (as you said)
- If you arrange (order) your track differently in the MCP than the TCP
- If you use the "clickacble folder icon" in the MCP to toggle visibility of children tracks

Quote:
Originally Posted by ---david View Post
IMO the pan rotaries are quite good, they just don't work right with the MCU surface drivers. They can actually be really precise if you query them for relative values (CC +1, -4, etc.) which is what they output – instead of absolutes (0 > 127) like the regular MCU does (it's been a while since I checked so I could be wrong).
Well to be fair, I do my pan with my touch screen. Maybe it would be possible to make knobs feel better than they are now, but still feature wise they are not touch compatible and feel IMHO cheap (cheaper than the faders).

I might have some cool things to show soon with node.js, OSC and multi touch screen.

Thanks !
mim is offline   Reply With Quote
Old 12-30-2013, 07:40 AM   #12
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

mim, thanks for your answer.

I found a workaround for the performance issues I had – I simply ignore the volume/pan events the API provides and just query values and update fader/encoders directly in the event loop ('run' function). It helps but it slows down the response time a bit (every fader gets updated a couple times a second, so fast zig zag fades won't result in the according fader moves). Might be just a temporary workaround, but it's good enough for me.

So I put this version on GitHub, so anybody who wants to give it a go and/or fork and improve it, feel free: https://github.com/DavidLichtenberge...r-csurf-us2400

Quote:
Originally Posted by mim View Post
Hmm... hard to say, pretty rarely. But I do feel it occurs when there is an overflow into the tascam (ie multiple undos sequentially)
OK, so I'll cross that bridge when it comes to it. Maybe my update workaround helps with that already.

Quote:
Originally Posted by mim View Post
Does that mean you are looking to start it as MCP view ?
The differences are:
- If you hide some tracks in the mcp (as you said)
- If you arrange (order) your track differently in the MCP than the TCP
- If you use the "clickacble folder icon" in the MCP to toggle visibility of children tracks
I see. As you said, there is no 'Change View' switch or similar, so I think I'll stick to the MCP view. I rarely use different setups for the two, anyway (too confusing for me). As of now my extension supports wrapping tracks into folders / unwrapping and hiding / showing child tracks as well as changing track order in the MCP view, that's good enough for me.

Quote:
Originally Posted by mim View Post
Well to be fair, I do my pan with my touch screen. Maybe it would be possible to make knobs feel better than they are now, but still feature wise they are not touch compatible and feel IMHO cheap (cheaper than the faders).
I couldn't get used to touch for mixing at all – don't you have to look at the display all the time to see where the touch-'fader' is at? – I need to feel them at my fingertips, otherwise I'm not concentrating on my ears enough. Different strokes, I guess :-)

And the whole US-2400 feels kinda cheap – after all it's a 500$ device that got discontinued 5 years ago, haha. But I don't mind that, as long as I have 24 10-bit faders, I'm happy.

Quote:
Originally Posted by mim View Post
I might have some cool things to show soon with node.js, OSC and multi touch screen.
Great, maybe post a video on YouTube or something, I'd love to see it (even if it might not be my cup of tea, I'm sure it'll look pretty cool)!

Thanks for your help!
---david is offline   Reply With Quote
Old 12-30-2013, 04:20 PM   #13
mim
Human being with feelings
 
Join Date: Mar 2009
Posts: 345
Default

Hey David, Thanks for you fast answer.

To be very honest I won't have enough free time those days to try your extension the way I'd like to "stress it" enough to ensure it's working good enough to be used for daily work. Probably later in January ...

For now please consider me as a conceptual interlocutor.

Quote:
Originally Posted by ---david View Post
I found a workaround for the performance issues I had – I simply ignore the volume/pan events the API provides and just query values and update fader/encoders directly in the event loop ('run' function). It helps but it slows down the response time a bit (every fader gets updated a couple times a second, so fast zig zag fades won't result in the according fader moves). Might be just a temporary workaround, but it's good enough for me.
I for one (and, again, that's just me and maybe should I learn C and fork your github ) would need to have faders to move on zig zag fades.
I'd prefer to avoid any pan or parameter infos if that would help to have immediate responses.

Quote:
Originally Posted by ---david View Post
So I put this version on GitHub, so anybody who wants to give it a go and/or fork and improve it, feel free: https://github.com/DavidLichtenberge...r-csurf-us2400
Nice and clear Git Hub ! Too bad I don't do C for now (I keep some geek stuff to learn when I'll be 64)

Quote:
Originally Posted by ---david View Post
OK, so I'll cross that bridge when it comes to it. Maybe my update workaround helps with that already.
I need some time to stress it enough to see if I experiment such glitches with your extension ...

Quote:
Originally Posted by ---david View Post
I see. As you said, there is no 'Change View' switch or similar, so I think I'll stick to the MCP view. I rarely use different setups for the two, anyway (too confusing for me). As of now my extension supports wrapping tracks into folders / unwrapping and hiding / showing child tracks as well as changing track order in the MCP view, that's good enough for me.
Cool !

Quote:
Originally Posted by ---david View Post
I couldn't get used to touch for mixing at all – don't you have to look at the display all the time to see where the touch-'fader' is at?
We had to think about nice ways to have touch controls before enjoying using it ...

Quote:
Originally Posted by ---david View Post
– I need to feel them at my fingertips, otherwise I'm not concentrating on my ears enough. Different strokes, I guess :-)
Real faders is a must have. Touch screen faders are crap !
However touch surround pan and touch parametric EQs are dopes !

Quote:
Originally Posted by ---david View Post
And the whole US-2400 feels kinda cheap – after all it's a 500$ device that got discontinued 5 years ago, haha. But I don't mind that, as long as I have 24 10-bit faders, I'm happy.
Yeah! I was thinking faders feel less cheap than pan pots. Faders are silent, nervous, and indeed, 10 bit resolution. That's good for me too.

Quote:
Originally Posted by ---david View Post
Great, maybe post a video on YouTube or something, I'd love to see it (even if it might not be my cup of tea, I'm sure it'll look pretty cool)!
I'll do.
We are changing or main computer this week and will have real world (with our new software) tests next week (and probably the week after).

Quote:
Originally Posted by ---david View Post
Thanks for your help!
Thanks for your time to create a native US 2400 csurf extension. I wish I could help you in a more concrete way ...

Last edited by mim; 12-30-2013 at 04:27 PM.
mim is offline   Reply With Quote
Old 12-31-2013, 02:37 AM   #14
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hey mim,

don't worry. Any input is welcome!

... and I just had an idea how to get those faders moving a bit faster without killing the US-2400 with updates.

Damn, I was gonna start mixing today but now my head is filled with this stuff – I think I'll have to get this stuff out of the way first.

Quote:
Originally Posted by mim View Post
Too bad I don't do C for now (I keep some geek stuff to learn when I'll be 64)
Ha, I find it easier than JS now. The start is very hard (to get something to compile with all the dependencies, I sat there poking and cursing for days), but after that ... very clear syntax, and unlike JS it tells you what's wrong immediately (I remember searching for bugs days on end with JS). And it's only C++ – 'pure' old school C is much harder, I think.

Nonetheless, really doing it 'right' – well, I think that might be just as hard in C++ as in any other language, I wouldn't even claim to be doing that in HTML, haha.

Looking forward to the YouTube Video!

Last edited by ---david; 12-31-2013 at 02:39 AM. Reason: typo
---david is offline   Reply With Quote
Old 12-31-2013, 08:04 AM   #15
Teddy
Human being with feelings
 
Join Date: Sep 2011
Posts: 133
Default

Quote:
Originally Posted by ---david
Teddy, I hope your girlfriend is feeling better!
Thanks, I hope so too.

Quote:
Originally Posted by ---david View Post
mim, thanks for your answer.

I found a workaround for the performance issues I had – I simply ignore the volume/pan events the API provides and just query values and update fader/encoders directly in the event loop ('run' function). It helps but it slows down the response time a bit (every fader gets updated a couple times a second, so fast zig zag fades won't result in the according fader moves). Might be just a temporary workaround, but it's good enough for me.
Great work so far. This discussion and your code is really useful for me as well.

If the problem is that the us2400 sometimes receives too many messages at once (like it was for me), I would guess a better solution would be to insert some sort of limiting or queue system on the MIDIOut function (which worked for me).

I've used node-function-rate-limit to limit my midiSend action to 40 executions per 1 ms. And that's counting two values for faders as one execution. So it's still fast.

Hope this helps.
Teddy is offline   Reply With Quote
Old 12-31-2013, 09:17 AM   #16
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Quote:
Originally Posted by Teddy View Post
If the problem is that the us2400 sometimes receives too many messages at once (like it was for me), I would guess a better solution would be to insert some sort of limiting or queue system on the MIDIOut function (which worked for me).
Hey Teddy,

in a way that's what I did, just I don't have the fancy node.js functionality :-) :

First I created a cache, so rewriting the same value gets sorted out right at the start. That should get the count down a bit in Read Mode.

Then I added a limit (I read somewhere that sending one MIDI message takes about a ms, so I limited it to 800 messages per second to be safe – how did you arrive at 40 messages a ms, btw, it sounds an awful lot?). It updates as many faders/encoders as it can without going over the limit and picks up at the last updated fader on next call.

Next call of what? Well, I still can't get around the CSurf Update Loop, but the user can tweak its frequency in the Preferences – the default is 15 Hz, it seems that is also the GUI update rate, that should be quick enough, shouldn't it?

I played around a bit with a test case where I let all 25 faders bounce up and down in 16th and 32nd intervals (at 120 BPM, so that would be, erm, 125ms and 62.5ms periods respectively?), and there isn't much of a difference anymore – at least regarding speed, the MCU setup may appear a little bit tighter in the test case, but I don't think it would be even noticeable in a real world scenario (I hope!). After all the motors have their limit, too.

So, I think I'm done for now. I'll be doing some real world testing (aka mix downs) in the next couple of weeks – I'll probably know more after that.

Anybody, feel free to test and comment! You can also open issues on GitHub if you like – I'd prefer you fork it of course, but not everyone is a coder), I'll check in once a day or so.

Have a great new years eve!
---david is offline   Reply With Quote
Old 12-31-2013, 05:10 PM   #17
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Was wondering if this will work with 64bit Reaper?
Nardberr is offline   Reply With Quote
Old 01-01-2014, 12:45 AM   #18
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Quote:
Originally Posted by Nardberr View Post
Was wondering if this will work with 64bit Reaper?
Hey Nardberr,

frankly, I don't know.

On one hand, there is only one Reaper Extension SDK (no specific 64 bit version or something), so ... probably. On the other hand: I don't know enough about compilers and the like, so I can't be sure if it might have to be compiled on a 64 bit machine (I'm still on XP).

I do think you could try it without to much danger to your system – maybe it'll crash, maybe the CSurf just won't show in your preferences. But that's pretty much all that can happen (I think!), there is nothing that gets registered with the system or anything so you should be fine again after deleting the .dll, if it doesn't work.

If you do try it, maybe you could report back wether it worked?

Thanks!

*** EDIT ***
Oh wait, I just went to the SWS extension website, they have specific versions for x32/x64 (and OS X?). Clearly I don't know enough. Can any of the real programmers help out? Or maybe do a fork and/or recompile, even?
*** EDIT ***
---david is offline   Reply With Quote
Old 01-01-2014, 04:36 AM   #19
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 1,559
Default

Yes you need to compile a separate dll for 64 bit.
To do this look in "Configuration Manager" or equivalent in your IDE -- e.g VS 2010.
You can research the internet to see how to do it.

You will be able to tell a 64 bit dll, it will be slightly larger due to 64 bit addressing.

On the Mac you set up your environment similarly, but the output is a combined dylib, not separate dylibs.
__________________
Groove is the subtle control of chaos -- feel free to donate to the open source control surface integration project -- geoffwaddington.ca
Geoff Waddington is online now   Reply With Quote
Old 01-01-2014, 07:45 AM   #20
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hey Geoff,

thanks for the clarification!

Unfortunately I am running Visual Studio 2008 Express Edition and, after I did some digging, it seems this is a more complicated issue where you have to trick VS 2008 into providing the x64 compile options. Meh.

Guys, I'm sorry, at the moment I really don't have time to do this (I planned to start mixing yesterday and still haven't begun). If there is anybody out there who is willing to do it (also OS X) – the code is on GitHub and if you have the right IDE (VS 2010 should do nicely from what I hear) it's like three clicks.

Otherwise I might get to it on the weekend or sometime next week.

Sorry again,
David
---david is offline   Reply With Quote
Old 01-01-2014, 08:07 AM   #21
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Wish I could help, unfortunately I have no coding skill but I think what you're doing is great!! Looking forward to the 64bit version.
Nardberr is offline   Reply With Quote
Old 01-01-2014, 10:51 PM   #22
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default Just a little update

Ugh. What a waste of time (and sleep).

After doing a teeny little bit of mixing today I went straight to bug fixing. New version on GitHub and apologies to everyone who tried the previous version!

That had to be done, so far so good. But then I couldn't help myself and tried to implement a feature that didn't work. Meh.

I also tried for hours to get this x64 compiling stuff to work, in vain. Again, apologies. Any help is really appreciated here!

I'm off to bed now (6:50 am over here) – good thing I prefer mixing in the evenings, so I'm gonna sleep in.
---david is offline   Reply With Quote
Old 01-02-2014, 03:54 AM   #23
Teddy
Human being with feelings
 
Join Date: Sep 2011
Posts: 133
Default

Quote:
Originally Posted by ---david View Post
Then I added a limit (I read somewhere that sending one MIDI message takes about a ms, so I limited it to 800 messages per second to be safe – how did you arrive at 40 messages a ms, btw, it sounds an awful lot?).
I tried setting up 48 tracks with different pan and fader values, and switched banks back and forwards as quick as I could. I set the limit someplace in between a value where I didn't get any dropouts (ommited pan values) and where I could notice the lag. I think 40msg/ms was the sweetspot.

Quote:
Originally Posted by ---david
Guys, I'm sorry, at the moment I really don't have time to do this
....
Again, apologies. Any help is really appreciated here!
Don't be so hard on yourself. You're doing great work, and we all really appreciate it. Wish I could help you with the C++, but I hope to be able to assist in some other way. Happy new year!
Teddy is offline   Reply With Quote
Old 01-02-2014, 08:32 AM   #24
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Teddy, thanks for the kind words

I've been at this x64 stuff again today for several hours and I have to say, I'm close to giving it up.

I guess it would be much easier if I had a Win 7 machine to do it on (probably as easy as installing VS 2013 Express, opening the project, and hitting 'Build'), but convincing VS 2010 on XP to cross-compile is a nightmare – at least if you know as little as I do.

So maybe next week I will have gathered enough patience to go at it again, but maybe not (sorry, Nardberr!).

I'll probably post updates/fixes for the Win XP version, though.
---david is offline   Reply With Quote
Old 01-02-2014, 04:56 PM   #25
mim
Human being with feelings
 
Join Date: Mar 2009
Posts: 345
Default

Quote:
Originally Posted by ---david View Post
Ugh. What a waste of time (and sleep).
Arf...
You'd better slept and dreamt about it!

Seriously, take your time ! Make your mixes!

Quote:
Originally Posted by ---david View Post
But then I couldn't help myself and tried to implement a feature that didn't work. Meh.
The 26th fader ?

Quote:
Originally Posted by ---david View Post
I'm off to bed now (6:50 am over here) – good thing I prefer mixing in the evenings, so I'm gonna sleep in.
Don't forget day is a necessary evil for life to happend.

Thanks for your work , I wish I had a brand new x64 compiler in my pocket.
mim is offline   Reply With Quote
Old 01-06-2014, 01:22 PM   #26
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Mim, thank you too for the kind words!

I took your advice, slept, took in some daylight, made some mixes, found some more bugs (some fixable some not so much) rethought some of the layout / workflows(?) ...

... and managed to compile an x64 version! Yay! I have no way of testing it of course, so you'll have to check it yourself, Nardberr.

Also, maybe someone will find this useful: you can replace most of the stuff on the 'action buttons' (Aux 1 to 6 with qualifiers) with your own ReaScripts now.

Details (I made a list of available functions too) & download as always on GitHub (https://github.com/DavidLichtenberge...r-csurf-us2400).

Last edited by ---david; 01-06-2014 at 01:25 PM. Reason: typo
---david is offline   Reply With Quote
Old 01-06-2014, 02:33 PM   #27
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Great work David, I really appreciate your efforts!!

Will download and check it shortly.
Nardberr is offline   Reply With Quote
Old 01-07-2014, 04:08 AM   #28
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

In all the reconfiguration mess to get the x64 compiling I made a little error (the C/C++ runtime has to be statically linked, otherwise you get an error that msvcr100.dll is missing).

Sorry about that, it's fixed now, if you tried subsequently and it didn't work, give it another try.
---david is offline   Reply With Quote
Old 01-07-2014, 06:07 PM   #29
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default New feature

While mixing/test-driving, I was getting really annoyed that there's no display on the US-2400 – especially with FX params, I was constantly reaching for the wrong knob ...

So I implemented a new feature: Hitting F-Key and Shift together opens a resizable scribble strip window, showing track names / FX parameter names dynamically correlated with the corresponding fader / encoder row (column?) – it even indicates their touch states. It's not better than the missing display (or, say, touch screens), but it really helps.
---david is offline   Reply With Quote
Old 01-07-2014, 07:02 PM   #30
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Hi David,

Got the US-2400 up and working after a few tries, its basic functions are more stable than anything else I've tried before.

Python I had to install and that initially was quite tricky but eventually got it up and loaded the scripts just haven't wrapped my head around that part yet still.

I really like the 24 bank jump function, the individual track control features and automation arming. Is it possible at all to have true rewind and fast forward?

This is excellent work, will go through the aux, chan ,pan section and report back

Bless
Nardberr is offline   Reply With Quote
Old 01-08-2014, 04:21 AM   #31
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hey Nardberr,

that's great news so far! Thanks for testing!

Feel free to tell me about the pitfalls you encountered during installation, maybe I can improve the documentation.

Regarding the scripts, I just thought it might be better to have them in Python instead of C++ so people can change them if they want (some experience in ReaScript provided) but you don't have to worry about that bit at all if you just want to use that actions (as long as you get them loaded ...)

True Rwd and FFwd is technically possible I guess ... But we would have to throw out some of the actions that are tied to that buttons (like the automation commands) – I really like that extra functionality and I got used to the Jog Wheel really fast.
---david is offline   Reply With Quote
Old 01-09-2014, 02:19 PM   #32
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Hi David, got a chance to spend some time with the us-2400 today. It really feels nicer than reapers built in mackie emulator.

Aux Sends

Took me some time to get it working as I spelt the Aux---1 incorrectly. Flipped it works best because then faders sent levels and encoders pan, would be nice as the default.

Fx editing

On the whole fx editing was more than I had hoped for, bringing up the fx chain and fx browser windows is quick and smooth and scrolling through fx from track to track is quite easy.

Not sure you can do anything about this, much of it seems to have to do with the way vst's were implemented.

Knobs controlling switches(off or on) not working in several cases.

Hard crashes when scrolling the parameters of large vsti's requiring reboot of tascam.

Knobs work smoothly counter clockwise but glitching clockwise(on some bridged plugins).

Reaper's basic UI provides an easier layout to follow when editing the plugins as it follows the sequential order based on US-2400 encoders.


Delete Track

I think I'm going to change this to something else, found it way too easy to mistakenly delete tracks on a number of occasions.

Joystick

Would be nice to give it the option of assignable cc features, eg to learn surround panning or X-Y on a synth etc

A marker button would be great if possible since rewind and fast forward buttons are set to project start and end

Master Fader

Would be nice if the master fader select button would maybe deselect all selected tracks as default since it so easy in large mixes to move master and in turn adjust the levels of other selected track that aren't visible.

Automation, bank select, scroll, channel, features all work well for me.

The call up info sheet at the bottom of the screen is a nice idea but crashes Reaper sometimes.

Your hard work is really appreciated.
Really a great great job! This is the best controller features and performance I've seen for the US-2400 in Reaper so far.

Bless
Nardberr is offline   Reply With Quote
Old 01-09-2014, 04:39 PM   #33
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Nardberr, thanks for testing!

Quote:
Originally Posted by Nardberr View Post
Aux Sends

Flipped it works best because then faders sent levels and encoders pan, would be nice as the default.
Hm ... I like it better this way, because I don't use send pans that often and instead like having the mix volume and send levels handy, but that's just me. What do you think – would more people want it this way or yours?

Quote:
Originally Posted by Nardberr View Post
Fx editing

Not sure you can do anything about this, much of it seems to have to do with the way vst's were implemented.

Knobs controlling switches(off or on) not working in several cases.
Unfortunately there's no really good solution for this:

The encoders send relative values (like +4, -2 etc.) as opposed to the faders, which of course are absolute, which is good, because it can provide a very fine resolution. If they would send absolute values, the parameter steps would be way to coarse.

The bad news is this: there is no way of telling what step size a parameter wants (there actually is a function for this in the Reaper API, but most VSTs just don't implement that feature: http://forum.cockos.com/showthread.p...881&page=3#265).

So I defaulted to a relatively fine resolution. For on-off-toggles you can use the Shift-key which causes the encoders to send just +/- 1. For everything in between (like 5-way-switches) you're stuck with faders, sorry.

Or did I get you wrong, and you used the Shift-key for an On/Off-toggle and it still didn't work?

Quote:
Originally Posted by Nardberr View Post
Hard crashes when scrolling the parameters of large vsti's requiring reboot of tascam.
Ugh. This has to get fixed. If it's not x64 related, I could try and reproduce this crash – is there a freeware plugin this happens with?

Quote:
Originally Posted by Nardberr View Post
Knobs work smoothly counter clockwise but glitching clockwise(on some bridged plugins).
Mysterious. I will have to think a little about what could cause this. I can't test this, because 'bridged' means it's a 32 bit plugin on a x64 machine, right?

Quote:
Originally Posted by Nardberr View Post
Reaper's basic UI provides an easier layout to follow when editing the plugins as it follows the sequential order based on US-2400 encoders.
That's another VST implementation thing – the developers just jam the parameters anywhere and let the GUI sort it out. So when Reaper transmits the parameters, it does it in the order they are in the code of course, so it's all a big mess.

It's the main reason I made the Scribble Strip window. Nothing else I can do about that. But I will include your tip to switch off the GUI in the documentation.

Quote:
Originally Posted by Nardberr View Post
Delete Track

I think I'm going to change this to something else, found it way too easy to mistakenly delete tracks on a number of occasions.
Yeah, you can put your marker action there!

It should be only two lines of ReaScript code – I'm not on my machine right now, let me get back to you with the code and a quick how-to tomorrow!

Quote:
Originally Posted by Nardberr View Post
Joystick

Would be nice to give it the option of assignable cc features, eg to learn surround panning or X-Y on a synth etc
I think you can actually do that already, one of the free MIDI-Ports should be exclusively for Joystick ... at least in MCU mode. I'll have to check if that applies for Native Mode as well (so – tomorrow) – but if it does, you can basically just configure your MIDI ports accordingly.

Quote:
Originally Posted by Nardberr View Post
Master Fader

Would be nice if the master fader select button would maybe deselect all selected tracks as default since it so easy in large mixes to move master and in turn adjust the levels of other selected track that aren't visible.
That's maybe a good idea. I'll test that.

Quote:
Originally Posted by Nardberr View Post
The call up info sheet at the bottom of the screen is a nice idea but crashes Reaper sometimes.
Did you check the latest version from about 8 hours ago, (CET about 16:30) – I made some changes, maybe it works better now? Otherwise get back to me, I'll see what I can do. I really want this to work, because it was a total game changer for me.

Quote:
Originally Posted by Nardberr View Post
Your hard work is really appreciated.
Really a great great job! This is the best controller features and performance I've seen for the US-2400 in Reaper so far.

Bless
Thank you so much for the great feedback. I'm so glad it works (apart from when it doesn't, haha).
---david is offline   Reply With Quote
Old 01-10-2014, 05:21 AM   #34
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hey Nardberr,

I did a quick check: The US-2400 in Native Mode transmits only on the first MIDI input which of course is tied up being the control surface.

Good news is: It's a piece of cake to just clone the MIDI events to another input in the code (one line!). So I did that – Joystick data now gets transmitted on the second Tascam MIDI input, just select it in your preferences!


The second thing I was going to check for you was the ReaScript code for setting a marker, so you can replace the Delete Track action.

1. Open the ReaScript files in a plain text editor (on XP there was Notepad, I don't know what's the equivalent in Win 7). Delete Track currently is on Shift 5 in Pan and Chan mode, so the files you need to change are:
US-2400 - Pan Mode - Shift - 5.py and US-2400 - Chan Mode - Shift - 5.py

2. In those files delete everything below the two lines saying 'from ... import *'. (Or comment it out – that means the code is invisible to machines but still there if you want to go back. In python that's a # on the beginning of each line. There are comments in the existing code already, if you need an example)

3. This is the single line that sets a marker, just put it below the 'import' lines:
RPR_Main_OnCommand(40157, 0)

BTW: 40157 is the action number – if you want to make more custom actions, you can look those up in Reaper's action list.
---david is offline   Reply With Quote
Old 01-10-2014, 06:02 AM   #35
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Great!! Thanks David, will download shortly.
Nardberr is offline   Reply With Quote
Old 01-10-2014, 06:24 AM   #36
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hey Nardberr,

Wait just twenty more minutes – I forgot the Master thing you suggested and am at it now.

I think for now I'll just switch the Select All/None and the Select Master so the latter is on the F-Key because you need the former so much more often and this way the risk to accidentally select the Master is minimized.

That should do – I can't think of another reason why you would want to select the Master unless you want it to move together with other faders, so deselecting everything on default seems counterproductive. Or am I missing something?

BTW: You can see if any tracks are selected: the Sel Master is blinking if that's the case.

*** EDIT ***
OK, changes are online now!

Last edited by ---david; 01-10-2014 at 06:34 AM.
---david is offline   Reply With Quote
Old 01-11-2014, 01:52 PM   #37
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default Scribble Strip

Hello all,

I had a little time on my hands and improved the Scribble Strip Window quite a bit.

Besides making it pretty (it was more a proof of concept before) it now shows a lot of info: in addition to touch states and track names / FX parameter names there are now track numbers, selection / rec arm states and (very useful!) FX parameter values.

*** EDIT
Ah right, Nardberr – I wasn't able to reproduce your crashes with the Scribble Strip, but I'm handling strings differently now (which could have been the reason), so maybe it works better now for you, too.
***

Check it out, if you like: https://github.com/DavidLichtenberge...r-csurf-us2400

Images:
Track View: https://raw2.github.com/DavidLichten...StripTrack.png
Chan View: https://raw2.github.com/DavidLichten...eStripChan.png

Last edited by ---david; 01-11-2014 at 02:01 PM. Reason: forgot something
---david is offline   Reply With Quote
Old 01-12-2014, 11:23 AM   #38
Nardberr
Human being with feelings
 
Join Date: Mar 2008
Posts: 40
Default

Hi David, was busy for couple days but got a chance to check things out today.

Null = track zoom which is great as I use that a lot.

F-key + null.= scrll: play pos
Takes you to the current play position but doesn't seem to keep scrolling. I believe this action should work.
View: Go to play position

Shift + null. Zooms both track and time selection at the same time, maybe time selection only would be better because track zoom won't toggle back.

Joystick: working nicely, Tascam input 2, midi ch 15. X=cc 90, Y=cc 91

Scribble strip working beautifully! Really helpful. Still crashes but not as often.

Shift+in doesn't seem to do anything for me but will check on it some more.

F-key+Bank buttons= show/hide fx seems to do the same thing as pressing the channel button.

This might be too much to ask for but it would be nice in efx send mode when you select flip if it could remain in flip mode as you select the different aux's 1 to 6 and only reset if you go to a different mode or repress the flip button.

This is coming together really nicely, I really hope you're getting feedback from some of the other Tascam US-2400 users out there because this is really great work and deserves to be highlighted.
Nardberr is offline   Reply With Quote
Old 01-13-2014, 06:58 PM   #39
---david
Human being with feelings
 
Join Date: Jan 2013
Posts: 52
Default

Hi Nardberr, sorry, I was quite busy, too, but there is a new version on Github now – Details below:

Quote:
Originally Posted by Nardberr View Post
Takes you to the current play position but doesn't seem to keep scrolling.
This just centers the screen on the cursor, nothing more. To toggle Scroll on Play / Rec, use F + Stop.

Quote:
Originally Posted by Nardberr View Post
Shift + null. Zooms both track and time selection at the same time, maybe time selection only would be better because track zoom won't toggle back.
You're totally right – very annoying. I replaced this with a better action, the new one doesn't toggle back either, but at least leaves track zoom alone.

Quote:
Originally Posted by Nardberr View Post
Scribble strip working beautifully! Really helpful. Still crashes but not as often.
On my machine it doesn't crash anymore, but I found an even better way to handle some things. Maybe you could check it once more and if it still crashes, elaborate a bit – when do the crashes occur, etc.

Quote:
Originally Posted by Nardberr View Post
Shift+in doesn't seem to do anything for me but will check on it some more.
Hm, weird. This should toggle between your set time selection and one that encompasses all items – could it be you didn't have any items in your test arrangement, because I think it wouldn't work then?

Quote:
Originally Posted by Nardberr View Post
F-key+Bank buttons= show/hide fx seems to do the same thing as pressing the channel button.
You're right, that's superfluous (it's not exactly the same, as chan mode stays active, but who needs that?). I changed this to default 24-step-bank switching (like in Pan and Aux) – much more useful.

Quote:
Originally Posted by Nardberr View Post
This might be too much to ask for but it would be nice in efx send mode when you select flip if it could remain in flip mode as you select the different aux's 1 to 6 and only reset if you go to a different mode or repress the flip button.
I'm not sure if I get you right – this should be already the case: Flip shouldn't reset in any case until you hit the Flip button again?

Quote:
Originally Posted by Nardberr View Post
This is coming together really nicely, I really hope you're getting feedback from some of the other Tascam US-2400 users out there because this is really great work and deserves to be highlighted.
Thanks for your continuing input on this!

One more improvement: As of now, the Null and Transport buttons link to ReaScripts as well (like the Aux buttons already did) – so you can add custom actions for those, too. Bad news is of course you'll have to import the new ones.

I'll be quite busy for the next couple of weeks, so the update frequency will go down for sure, but I'll be back.

Last edited by ---david; 01-13-2014 at 07:00 PM. Reason: typo
---david is offline   Reply With Quote
Old 01-15-2014, 10:07 AM   #40
mdmiller
Human being with feelings
 
Join Date: Mar 2013
Posts: 125
Default

Wow, and many thanks! I have a US-2400 and run 64 bit. I'm also a seasoned programmer with over 30 years experience but haven't used C++ in many years. I have other things on my plate right now but will start testing the install as soon as I can. I'll try to document as I go, but won't look at the source until I see how everything works.
mdmiller 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 07:06 AM.


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