mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-31 22:25:34 -04:00
From Rui Nuno Capela <rncbc@rncbc.org>:
Tascam US-224/428 MMC Implementation
This is my latest patch against the alsa-tools tree (as of todays CVS
HEAD), regarding the us428control MMC implementation as for the Tascam
US-224/428 audio/midi USB control surfaces:
us428control now bumps to version 0.4.4.
Interesting points are: jog wheel dialing is now alternating between
spitting out some MMC-Step or MMC-Shuttle messages, depending on transport
state, instead of those MMC-Locate(s) which was an early implementation
mistake of mine.
Controlling ardour with (my) US-224 is getting much more fun now :)
However, there's still some little annoyances due to my lack of advice
regarding ardour's Play/Record control behaviour:
1) Ardour doesn't seem to send out MMC-Play messages when one starts
transport within it (e.g. by clicking the playback button widget).
2) Ardour doesn't seem to react against MMC-RecordPause, which I assume
(probably erroneously) it would be equivalent to clicking on its record
widget button.
3) Sending a MMC-RecordStrobe message to ardour has the strange effect to
start playback while toggling recording off instantaneously.
AFAICT these issues seems to be specific to ardour (0.9beta18.4), not to
us428control which is just sending out the proper MMC messages. Or that I
think.
I would like to settle all this before I'm going off on holidays. Hope
it's welcome and on time for the imminent alsa dot-6 release :)
This commit is contained in:
parent
5313c94163
commit
aa16536cb3
4 changed files with 78 additions and 25 deletions
|
|
@ -38,6 +38,7 @@ class Cus428State: public us428_lights{
|
|||
,aWheel_R(0)
|
||||
,bSetLocate(false)
|
||||
,uTransport(0)
|
||||
,aWheelSpeed(0)
|
||||
{
|
||||
init_us428_lights();
|
||||
for (int v = 0; v < 5; ++v) {
|
||||
|
|
@ -106,13 +107,17 @@ class Cus428State: public us428_lights{
|
|||
private:
|
||||
void SendVolume(usX2Y_volume &V);
|
||||
struct us428ctls_sharedmem* us428ctls_sharedmem;
|
||||
bool StateInputMonitor() {
|
||||
bool StateInputMonitor() {
|
||||
return LightIs(eL_InputMonitor);
|
||||
}
|
||||
// Set the wheel differential.
|
||||
void WheelDelta(int W);
|
||||
// Set the wheel differential.
|
||||
void WheelStep(int dW);
|
||||
// Set the wheel shuttle speed.
|
||||
void WheelShuttle(int dW);
|
||||
// Get the curent wheel timecode.
|
||||
void WheelTimecode(unsigned char *tc);
|
||||
void LocateTimecode(unsigned char *tc);
|
||||
|
||||
usX2Y_volume_t Volume[5];
|
||||
char MuteInputMonitor,
|
||||
|
|
@ -131,6 +136,8 @@ class Cus428State: public us428_lights{
|
|||
bool bSetLocate;
|
||||
// Last/current transport state.
|
||||
unsigned char uTransport;
|
||||
// Shuttle wheel absolute speed.
|
||||
int aWheelSpeed;
|
||||
};
|
||||
|
||||
extern Cus428State* OneState;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue