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

Cross talk cancellation doesn't work reliably #109

Open
3hhh opened this issue Oct 22, 2023 · 10 comments
Open

Cross talk cancellation doesn't work reliably #109

3hhh opened this issue Oct 22, 2023 · 10 comments

Comments

@3hhh
Copy link
Contributor

3hhh commented Oct 22, 2023

My set has a lot of cross talk and setting all cross talk values of all pads to 31 still doesn't fix it.

I even set the cancellation time to 100ms, but I still observed cross talk on e.g. hard snare rim shots.

Imho the issue probably lies with the algorithm:
If I understand it correctly, it simply checks whether there were higher spikes in the past. However I observed in practice that cross talk spikes may actually arrive before the spike of the pad I actually hit. This is not taken into account by the current algorithm. Of course that would involve holding back the Midi output, which in effect introduces a latency.

@corrados
Copy link
Owner

However I observed in practice that cross talk spikes may actually arrive before the spike of the pad I actually hit

That is very interesting. I have not experienced such an issue with my setup.

Initially, I thought this would make no sense because if I hit a pad and this triggers another one, the pad which is hit should always be the first to trigger since it will take some time for the audio wave to travel from the original pad to the pad which give a false trigger. But this is just the view of the physics. It may happen that the pad configurations are different between the two pads (e.g. scan times) which can lead to the case that the original pad generates a MIDI signal after the other pad.

Hmm. As you wrote, introducing latency is not a good thing.

@3hhh
Copy link
Contributor Author

3hhh commented Oct 23, 2023

I was considering to fix it by piping the edrumulus Midi output to Ardour and using a Midi cross-talk cancellation plugin there, then pipe it to drumgizmo. I'm unsure how well that setup will perform though...
Also it seems that there's no such pre-made Midi plugin out there (I found a native one for Reaper, but that's it).

If drumgizmo had some sort of plugin support, it'd be possible to implement it there as well.

@corrados
Copy link
Owner

Interesting concept of using an external tool to mitigate cross-talk. If that works, other similar projects like, e.g., eXaDrums could also use it.

@corrados corrados changed the title cross talk cancellation doesn't work reliably Cross talk cancellation doesn't work reliably Oct 23, 2023
@3hhh
Copy link
Contributor Author

3hhh commented Oct 28, 2023

I'll test this filter for now.

@corrados
Copy link
Owner

Great. Please update us in this thread how it works and how happy you are with that solution.

@3hhh
Copy link
Contributor Author

3hhh commented Nov 3, 2023

I noticed some delay on fast hihat pedal stomps. I guess those cause the most MIDI messages to be created and can overwhelm the script. Since that happened on a rather fast machine I guess it won't work too well on a raspberry pi.
However I improved the script a bit in the latest version, so that it's harder to run into the issue.
Possibly multithreading might help, too.

EDIT: That was just a bug, which I just fixed. The script may just work fine on a raspberry pi.

In total I'm pretty happy with it so far.

@corrados
Copy link
Owner

corrados commented Nov 3, 2023

Thanks for the feedback. Maybe it's now time that you create a post in this discussion thread ;-)

@3hhh
Copy link
Contributor Author

3hhh commented Nov 4, 2023

Fyi: I just fixed the code causing the aforementioned issue.

@3hhh
Copy link
Contributor Author

3hhh commented Nov 11, 2023

New repo: https://github.com/3hhh/xtalk

@corrados
Copy link
Owner

Great :-). I have just added your repo as a sub-module in the edrumulus/tools directory.

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

No branches or pull requests

2 participants