
Show HN: PyCrossfade – a library for creating DJ Transitions in Python - balkon
https://github.com/oguzhan-yilmaz/pyCrossfade
======
svantana
Nice work! I have built a similar system for an ios app called Pacemaker DJ,
it might be worth checking out for comparison/inspiration. I learned a couple
of lessons from that project:

\- some music is super easy to mix (minimal house) while others are basically
impossible (punk rock)

\- vocals in two tracks simultaneously always sounds bad/annoying. I ended up
including a vocal detector in the algo.

\- incompatible musical keys can sound really bad in some cases, in other
cases just fine. I think it depends on the saliency of the notes, among other
things.

\- very few care about nice long beatmix transitions apart from djs. IME djing
is mainly about playing good music and keeping a flow/vibe.

~~~
balkon
Hey, I actually checked out your app while doing research, great work!

> \- some music is super easy to mix (minimal house) while others are
> basically impossible (punk rock)

I also found out that electronic music is easier to mix just because it's
continous nature.

> \- vocals in two tracks simultaneously always sounds bad/annoying. I ended
> up including a vocal detector in the algo.

Clashing vocals is a good problem to solve, I couldn't find a useful vocal
detector in Python. I thought of EQ manipulation for it, cutting mid and high
frequencies to totally ignore vocals, but it seems to kill the vibe.

> \- incompatible musical keys can sound really bad in some cases, in other
> cases just fine. I think it depends on the saliency of the notes, among
> other things.

Keys are super important too, Essentia library has a great KeyDetection algo,
and I implemented a Camelot Wheel harmonic matching functionality too. But
it's not in the pyCrossfade yet.

> IME djing is mainly about playing good music and keeping a flow/vibe.

In the problem of choosing the next best song, I considered BPM and Key
similarity, harmonic attrs etc. But I think, when mixing a playlist, it's more
important to arrange the flow. Opening up with more calm songs and then
reaching the climax, then giving people some time to catch their breaths. The
whole DJ'ing process is track selection, some good tranisitions and managing
flow/vibe as you said.

May I ask you: Is it hard to get Spotify API? I heard that Spotify would end
it's every third-party support.

~~~
svantana
> Is it hard to get Spotify API?

Yeah spotify is moving away from 3rd party playback, the apis you can get now
are basically a remote control for the app. They didn't say why but I know
labels don't like streaming djing because djs spend a lot more on
downloads/physicals. Also, people used the api to make rippers which labels
_really_ hate.

~~~
balkon
I always wanted to create something with ease of use, something like login in
to your spotify account and just mixing your playlist. That's a shame.

I think there is some alternatives like Beatsource's LINK, but it's not widely
adopted, at least for end user.

------
kanobo
Nice job, it's unusual to see Python-based music tools. I think this would be
a good opportunity to use two intertwined snakes as the logo.

~~~
balkon
Thank you, I'm planning to extend this library to include structural
segmentation of the music, aiming for fully automated DJ'ing.

Your logo idea is pretty neat, I might update the logo soon.

