Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Vestax VCI-300 mapping for 1.12 #280

Merged
merged 6 commits into from
Aug 20, 2014
Merged

Update Vestax VCI-300 mapping for 1.12 #280

merged 6 commits into from
Aug 20, 2014

Conversation

uklotzde
Copy link
Contributor

@ywwg
Copy link
Member

ywwg commented Jul 9, 2014

Please convert beatsync buttons to sync_enabled and retest. You should be able to push-and-hold the sync button to engage sync lock (master sync) mode

@uklotzde
Copy link
Contributor Author

When setting "sync_enabled" to 1 Mixxx crashes while dereferencing a null pointer
Fatal [Controller]: ASSERT: "d" in file /usr/include/QtCore/qscopedpointer.h, line 112

#0 0x0000003db9035c39 in raise () from /lib64/libc.so.6
#1 0x0000003db9037348 in abort () from /lib64/libc.so.6
#2 0x000000369b471d04 in qt_message_output(QtMsgType, char const_) ()
from /lib64/libQtCore.so.4
#3 0x000000369b471ea9 in qt_message(QtMsgType, char const_, va_list_tag) ()
from /lib64/libQtCore.so.4
#4 0x000000369b4727b1 in qFatal(char const
, ...) ()
from /lib64/libQtCore.so.4
#5 0x00000000006bb956 in QScopedPointer<ControlObjectSlave, QScopedPointerDeleter >::operator-> (this=0x4568d98)
at /usr/include/QtCore/qscopedpointer.h:112
#6 0x00000000006ebd71 in SyncControl::notifySyncModeChanged (this=0x4568ca0,
mode=SYNC_FOLLOWER) at src/engine/sync/synccontrol.cpp:114
#7 0x00000000006e917c in EngineSync::activateFollower (this=0x292f3a0,
pSyncable=0x4568d10) at src/engine/sync/enginesync.cpp:234
#8 0x00000000006e8d81 in EngineSync::requestEnableSync (this=0x292f3a0,
pSyncable=0x4568d10, bEnabled=true) at src/engine/sync/enginesync.cpp:147
#9 0x00000000006ec779 in SyncControl::slotSyncEnabledChangeRequest (
this=0x4568ca0, enabled=1) at src/engine/sync/synccontrol.cpp:272
#10 0x00000000006eaa42 in SyncControl::qt_static_metacall (_o=0x4568ca0,
_c=QMetaObject::InvokeMetaMethod, id=10, a=0x7ffdb27f9ed0)
at lin64_build/engine/sync/moc_synccontrol.cc:79
#11 0x000000369b59b938 in QMetaObject::activate(QObject
, QMetaObject const
, in---Type to continue, or q to quit---
t, void**) () from /lib64/libQtCore.so.4
#12 0x0000000000481b90 in ControlDoublePrivate::valueChangeRequest (
this=0x4569f80, _t1=1) at lin64_build/control/moc_control.cc:108
#13 0x000000000047ba53 in ControlDoublePrivate::set (this=0x4569f80, value=1,
pSender=0x7ffda807bc00) at src/control/control.cpp:144
#14 0x000000000046d6ee in ControlObjectThread::set (this=0x7ffda807bc00, v=1)
at src/controlobjectthread.h:87
#15 0x000000000046d694 in ControlObjectThread::slotSet (this=0x7ffda807bc00,
v=1) at src/controlobjectthread.h:81
#16 0x000000000048b728 in ControllerEngine::setValue (this=0x7ffda8027d60,
group=..., name=..., newValue=1)

@ywwg
Copy link
Member

ywwg commented Jul 12, 2014

Are you building with vinylcontrol=0? And if not, when you run scons does it say whether vinylcontrol is enabled or disabled? Does it say whether the Mac App Store build is enabled or disabled?

@ywwg
Copy link
Member

ywwg commented Jul 12, 2014

I guess I already know the answers to these questions -- I've fixed the crash, and vinyl control should be on by default again.

@uklotzde
Copy link
Contributor Author

Thanks for your quick fix, Owen. Now it works!

I'm still not sure if I got it right. Had a quick look in the source code to get a grasp of the dependencies between "sync_enabled" and "sync_mode". I'm using sync_mode == 1 as an additional indicator to show if a deck is in follower mode for the corresponding LED. It's currently not possible to switch the sync mode of a deck with the VCI-300.

I also need to adjust my mapping for the MC6000MK2. If you have any ideas on how it "should" work, please feel free to send me your ideas. I'm not using sync at all, so my perspective might be limited ;)

@ywwg
Copy link
Member

ywwg commented Jul 13, 2014

The sync_mode is an internal variable and doesn't really need to be revealed to the user at all. It's enough to have the button light up when sync_enabled=1. (Eventually skins will also have a button and light for sync_master, but there are bugs in that mode so it's not necessary for now.)

@kain88-de
Copy link
Member

@ywwg are you ok with this now?

@ywwg
Copy link
Member

ywwg commented Aug 7, 2014

sync_enabled needs to support push-and-hold. As long as the script binding doesn't break that behavior, this is ok

@kain88-de
Copy link
Member

@ywwg can you please check that. I'm not sure where I can check if this script doesn't change the behavior

@uklotzde
Copy link
Contributor Author

Setting the value of "sync_enabled" from the script does not trigger any push-and-hold behaviour. I think this is a bug (or simply not implemented) in Mixxx?

Workaround: I will try to add the "sync_enabled" control directly in the MIDI mapping file instead of setting the value from the script. Drawback: Overlay mapping with modifiers like the Shift key is no longer possible.

Also needs to be fixed for the MC6000MK2 mapping that has recently been integrated.

@ywwg
Copy link
Member

ywwg commented Aug 12, 2014

it might be possible to trigger push-and-hold from the script as long as pressing the button sets the value to 1 and releasing it sets the value to 0. But it might be that a value set from a script does not go through the same handling code, so it doesn't get the push-and-hold behavior. That's worth filing as a bug.

What did you have linked to the shift button for this control, if anything?

@uklotzde
Copy link
Contributor Author

I already handle button press and release separately, doesn't work. Seems that there is a different code path for the MIDI mapping.

My current overlay mappings are:
VCI-300: Scroll + Auto Tempo = Tap BPM
MC6000MK2: Shift + Sync = Disable Sync (that's what the label near the button says)

Well, not really necessary ;) As long as we have a consistent sync mapping for all controllers.

Unfortunately there are no examples yet and I'm also not quiet sure how you intended Sync to work. When or how does a deck switch between NONE/FOLLOWER/MASTER sync mode? Some kind of state diagram would be helpful.

On the MC6000MK2 I'm displaying the sync mode for each deck: OFF = NONE, BLINKING = FOLLOWER, ON = MASTER. But I was not able to switch a deck into MASTER sync mode solely by long button presses mapped to sync_enabled. The sync mode of each deck only switches between NONE and FOLLOWER. With its visual feedback the MC6000MK2 would be the ideal candidate for a reference implementation.

@ywwg
Copy link
Member

ywwg commented Aug 13, 2014

Please see the Sync section of http://mixxx.org/wiki/doku.php/getting_ready_for_112 -- there is no need to have visual feedback for follower or master. Just sync_enabled. Just support tap and press-and-hold and it will all work. Try using the GUI buttons in the new Latenight-Stacked skin to see how it looks.

@ywwg ywwg added this to the 1.12 milestone Aug 14, 2014
- Replace script binding with direct MIDI mapping wherever possible
- Use new cue/play controls
- Rework looping
- Assign 1st/2nd effect unit with preselected Filter chain to left/right
  deck respectively
- Shift + Censor button enables/disables the filter effect
- Mid EQ controls the filter parameter while the filter is enabled
- Track the knob's value and restore it when switching between
  mid EQ and filter effect
The "Auto Tempo" button now triggers the new "sync_enabled" control
(push-and-hold). Tapping the BPM manually by holding "Scroll" is
still possible.
- Use MIDI mapping for "sync_enabled" to support push-and-hold
- Use setParameter() instead of setValue() for effect parameters
@uklotzde
Copy link
Contributor Author

Updated. Sync with push-and-hold should now work as expected.

@ywwg
Copy link
Member

ywwg commented Aug 20, 2014

I'll take your word for it, thanks! LGTM

kain88-de added a commit that referenced this pull request Aug 20, 2014
Update Vestax VCI-300 mapping for 1.12
@kain88-de kain88-de merged commit 73c47a9 into mixxxdj:master Aug 20, 2014
@kain88-de
Copy link
Member

@uklotzde Thanks for your work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants