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

Stream Mix integration (youtube, spotify...) #6277

Open
mixxxbot opened this issue Aug 22, 2022 · 85 comments
Open

Stream Mix integration (youtube, spotify...) #6277

mixxxbot opened this issue Aug 22, 2022 · 85 comments

Comments

@mixxxbot
Copy link
Collaborator

Reported by: ferranpujolcamins
Date: 2012-02-21T21:29:08Z
Status: Confirmed
Importance: Wishlist
Launchpad Issue: lp938180
Tags: cloud


It would be very useful if Mixxx could natively buffer songs on the fly from a stream service like youtube or spotify and then be able to play them like local tracks.

@mixxxbot
Copy link
Collaborator Author

Commented by: esbrandt
Date: 2012-02-22T06:18:30Z


This is a interesting request and would be a valuable addition to Mixxx.

But it raises some legal questions.

E.g. the Spotify FAQ say it is licensed "only for personal use", see http://www.spotify.com/us/help/faq/premium/public-usage/. Even if a DJ uses the paid membership (http://www.spotify.com/us/get-spotify/premium/) he probably can`t legally generate income by playing tracks to an audience trough Spotify. So we might need a disclaimer which again points to the terms of use.

Furthermore the free use of the Spotify API would limit Mixxx from generating any income trough the application itself, now or later, see paragraph 3.3 on http://developer.spotify.com/en/libspotify/terms-of-use-us/ .

@mixxxbot
Copy link
Collaborator Author

Commented by: ferranpujolcamins
Date: 2012-02-22T08:30:34Z


Well it would depend on how would you use Mixxx. Maybe I just want to record a mix to play on my car stereo. Or just wanna practice in my room.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2012-03-13T21:36:30Z


This could be implemented with the reuse of the clementine-player code base. They support

  • Digitally Imported
  • Icecast
  • Jamendo
  • Last.fm
  • Grooveshark
  • Magnatune
  • Sky.fm
  • SomaFM
  • Spotify

@mixxxbot
Copy link
Collaborator Author

Commented by: kunthar
Date: 2013-03-09T22:40:58Z


+1 for this functionality

@mixxxbot
Copy link
Collaborator Author

Commented by: tim-m-davies
Date: 2013-05-18T14:39:33Z


Massive +1 from me.

@mixxxbot
Copy link
Collaborator Author

Commented by: shinigam
Date: 2014-08-05T19:39:40Z


I'll like to support the OPs original request or perhaps add a feature suggestion of my own.

I'm a hobby python programmer and thought about perhaps offering an upload feature to SoundCloud or even better Mixcloud. I know both have APIs that could support this feature.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2014-08-05T21:16:44Z


Hi Gabriel,

thank you for offering your help.
A SoundCloud and Mixcloud upload would be a nice addition.

Please keep sure you have a powerful development environment before starting to work.
Here are some hints:
http://www.mixxx.org/wiki/doku.php/bugfix_workflow
You should ask for help at https://lists.sourceforge.net/lists/listinfo/mixxx-devel if you get stucked.

The other issue is the businesses part of connecting to commercial services.
Since a integrated upload system is a kind of in app advertise, we have to decide what are the conditions to add it to th master build.
We have discussed this some time ago. A possible work around is a Plug-In Interface for such upload tools.
Would it be possible implement the API in QT Script (Java script)? This way each service could provide it's upload extension like we currently did with controller scripts.

@mixxxbot
Copy link
Collaborator Author

@mixxxbot
Copy link
Collaborator Author

Commented by: ron-granger
Date: 2017-04-14T21:27:54Z


Maybe look at Clementine. They use an external plugin to add Spotify Support to the app to make sure they are not in trouble with licensing and stuff. What about a small Mixxx plugin to integrate Spotify and similar web streaming services.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2017-04-15T07:44:30Z


A kind of plugin solution to support Spotify an similar services would be indeed the best solution. Do you have fun and time to work on it?

@mixxxbot
Copy link
Collaborator Author

Commented by: ron-granger
Date: 2017-04-15T16:38:05Z


If you mean me: I haven't got any programming skills in c++ but I would gladly assist in development basing on how you want to implement a plugin into mixxx.

@mixxxbot
Copy link
Collaborator Author

Commented by: ron-granger
Date: 2017-04-15T16:55:49Z


I propose a simple library extension format to add other library types later. I think every one has his own library managed in some software and wants to use it in Mixxx. So what about a format like

LIBRARY.extension
[config]
name=LIBRARY
connection=local,api,...
type=free,non-free,...
required-data=[USERNAME,PASSWORD]

[playlist]
supported=true
connection=https://api.spotify.com/v1/users/USERNAME/playlists
encoding=json
fetch-playlist-name=JSON KEY TO GET VALUE OF
fetch-playlist-index=JSON KEY TO GET VALUE OF
...

[library]
...

[search]
...

And then you can enter the values you need for the different apis or the file structures (in case of local stored libraries)

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2017-04-16T21:19:40Z


Nice Idea. Does Clementine use such format?
I am afraid that we need a lot of special case code to adopt the different services.

@mixxxbot
Copy link
Collaborator Author

Commented by: ron-granger
Date: 2017-04-17T09:07:35Z


No, I don't think that they use such a format. There is a "spotiy" folder with alot of c++ code in it, so I think it is an active plugin, not a passive config format.
Yeah, may be we will need special case code but I think that it is easier than coding everything directly into Mixxx. And because of licensing of spotify and probably other services we will need external plugins to install.
Syntax could be like my proposition but of course XML is only a useful format.

I will try to have a closer look at the spotify plugin of Clementine if I got some time.

@mixxxbot
Copy link
Collaborator Author

Commented by: debayanbanerjee
Date: 2017-05-01T08:03:55Z


Hello.

Since nobody has mentioned it, I thought just to mention that Alogriddim has developed a platform DJay Pro which seamlessly integrates with Spotify.

The catch is that it is only available for Spotify premium users.

So personally for me, there is a precedent to use and integrate spotify with third party apps. It would be great if Mixxx takes this on priority since Mixxx also supports a lot of older MIDI controllers which don't receive updates anymore.

@mixxxbot
Copy link
Collaborator Author

Commented by: jjgh
Date: 2017-06-13T20:05:42Z


Huge +1. I registered to this bugtracker just to say this! :)

This will be a game changer for Mixxx and yes IMHO it should take a high priority.

Any news from from this side?

@mixxxbot
Copy link
Collaborator Author

Commented by: officebeats
Date: 2018-05-07T05:42:12Z


Correct, Algoriddim DJ allows you to use a spotify premium integration. They don't let you record your sessions into a file.

PLEASE include this!!! I personally pay for algoriddim pro and it's ONLY because of this feature.

If MIXXX can introduce this I will completely switch over as I use linux and hate to dual boot into mac just to DJ in a modern way.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2018-05-07T15:20:56Z


This is very unlikely to happen for several reasons:

  1. Mixxx is free software that respects its users freedom. As such, it will never impose artificial restrictions on functionality like disabling recording, especially not to appease some company's demands.
  2. Using Spotify's API without disabling recording (and probably broadcasting too) would clearly violate their terms of service. As soon as they found out, they would probably disable Mixxx from connecting to their service. Otherwise, Mixxx would likely become known as a free way to save songs from Spotify, even by people who have no interest in Mixxx otherwise.
  3. Even if Mixxx did impose artificial restrictions, it is free software, so those restrictions could be removed quite easily. Thus it is unlikely that a company demanding artificial restrictions would agree to allow Mixxx to use their service.
  4. This is speculation, but I would be somewhat surprised if Algoriddim's contract with Spotify is not exclusive. No other DJ software integrates with Spotify and I suspect Algoriddim made sure that would never happen in their contract.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2018-05-07T15:31:01Z


For Mixxx, it does not matter that Clementine can use Spotify. Clementine is a different kind of application. It does not record, nor does it broadcast, nor is it designed for playing to an audience. Mixxx using Spotify brings up legal issues as discussed by myself above and jus in comment #⁠1 that Clementine does not have to deal with.

@mixxxbot
Copy link
Collaborator Author

Commented by: debayanbanerjee
Date: 2018-05-07T15:40:54Z


I dont think using 3rd party integration plugins according to their terms
and conditions are akin to restricting user freedoms. Using the third party
app is voluntary and should not be confused further.

There is still a strong case for Mixxx integration with spotify.

On Mon, 7 May 2018, 17:35 Be, wrote:

This is very unlikely to happen for several reasons:

  1. Mixxx is free software that respects its users freedom. As such, it
    will never impose artificial restrictions on functionality like disabling
    recording, especially not to appease some company's demands.
  2. Using Spotify's API without disabling recording (and probably
    broadcasting too) would clearly violate their terms of service. As soon as
    they found out, they would probably disable Mixxx from connecting to their
    service. Otherwise, Mixxx would likely become known as a free way to save
    songs from Spotify, even by people who have no interest in Mixxx otherwise.
  3. Even if Mixxx did impose artificial restrictions, it is free software,
    so those restrictions could be removed quite easily. Thus it is unlikely
    that a company demanding artificial restrictions would agree to allow Mixxx
    to use their service.
  4. This is speculation, but I would be somewhat surprised if Algoriddim's
    contract with Spotify is not exclusive. No other DJ software integrates
    with Spotify and I suspect Algoriddim made sure that would never happen in
    their contract.

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/938180

Title:
Stream Mix integration (youtube, spotify...)

Status in Mixxx:
Confirmed

Bug description:
It would be very useful if Mixxx could natively buffer songs on the
fly from a stream service like youtube or spotify and then be able to
play them like local tracks.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/938180/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2018-05-07T16:04:36Z


When their terms and conditions require restricting user freedoms, then yes, they are the same.

@mixxxbot
Copy link
Collaborator Author

Commented by: debayanbanerjee
Date: 2018-05-07T17:34:45Z


Your argument about Clementine being a different app and Spotify having
user restrictions doesn't hold water because for the user the end result is
the same.

You might be looking for some moral high ground, which is of no concern to
me.

For me Clemtine and Spotify integration, both are equally important.

On Mon, 7 May 2018, 18:16 Be, wrote:

When their terms and conditions require restricting user freedoms, then
yes, they are the same.

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/938180

Title:
Stream Mix integration (youtube, spotify...)

Status in Mixxx:
Confirmed

Bug description:
It would be very useful if Mixxx could natively buffer songs on the
fly from a stream service like youtube or spotify and then be able to
play them like local tracks.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/938180/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2018-05-07T19:06:52Z


If you do not care about the issues raised above and using Spotify is important to you, then you can use Algoriddim djay.

@mixxxbot
Copy link
Collaborator Author

Commented by: ron-granger
Date: 2018-05-07T19:41:54Z


Well, I just wanted to add some thoughts about what was said earlier:

The use of a special "library plugin" format was already discussed. So why not add the important options for library plugins and let users develop and share their own plugins, like for Spotify, youtube (i think Soundcloud was also stated, even if I wouldn't use it).

These could shift the legal issues from the Mixxx core application to the actual plugin developer.

If Spotify still demands the disabling of a record, couldn't you just add a plugin option to "temporarily disable recording due to legal issues" (and probably disable the plugin when the user wants to record)?

The argument that Spotify is only for private use seems queer since this other DJ app apparently uses it. Does it violate the ToS then or do they have some kind of exclusive agreement?

The argument that people could bypass these limits is only somewhat relevant: Because users could also change the behaviour of Clementine and there are already Spotify downloaders as far as I know.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2018-05-07T20:22:20Z


Algoriddim has a business partnership with Spotify and has negotiated their terms of use.

couldn't you just add a plugin option to "temporarily disable recording due to legal issues"

No. There would be no difference whether the artificial restriction is directly integrated into Mixxx or Mixxx provides an API for an external plugin to activate an artificial restriction. Mixxx will never impose artificial restrictions on users.

The argument that people could bypass these limits is only somewhat relevant: Because users could also change the behaviour of Clementine

Clementine has no recording functionality, so it's not that simple. Using Clementine to record from Spotify would require adding a whole new feature to Clementine. In Mixxx, it would be as simple as deleting a few lines of code and recompiling, which anyone could do quite easily and put those modified versions online, which would then be easy to use for recording from Spotify. Because of this, it would be unlikely that Spotify would agree to partner with Mixxx like they have with Algoriddim (if their contract with Algoriddim even allows Spotify to partner with other DJ software).

and there are already Spotify downloaders as far as I know.

Yes, and these are clearly violating Spotify's terms of use. I doubt Spotify can shut them all down as fast as they appear.

@mixxxbot
Copy link
Collaborator Author

Commented by: debayanbanerjee
Date: 2018-05-07T20:32:32Z


I wouldve if it wasnt a shitty program.

On Mon, 7 May 2018, 21:25 Be, wrote:

If you do not care about the issues raised above and using Spotify is
important to you, then you can use Algoriddim djay.

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/938180

Title:
Stream Mix integration (youtube, spotify...)

Status in Mixxx:
Confirmed

Bug description:
It would be very useful if Mixxx could natively buffer songs on the
fly from a stream service like youtube or spotify and then be able to
play them like local tracks.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/938180/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: ron-granger
Date: 2018-05-07T20:42:50Z


No. There would be no difference whether the artificial restriction is directly integrated into Mixxx or Mixxx provides an API for an external plugin to activate an artificial restriction. Mixxx will never impose artificial restrictions on users.
I still consider it acceptable as long as the user can simply decide between the plugin or the restriction.

I agree with the rest of your message.


May we move away from focusing Spotify and see if there are other music streaming services that could be implemented?

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2018-10-22T16:36:52Z


Can I play devil's advocate and propose a thought experiment?

Let's consider sudo. It violates user freedom, because everyone should have access to ring 0, right? No! It implements a policy or contract. The policy is an agreement between the computer users and its administrator. The users have certain permissions about what they can and can't do with the system. sudo is Free software even though it implements this policy. I assume everyone agrees with this.

Another case: Let's say a bank runs on an AGPL software project, GNUKnox. If GNUKnox were truly free, it would allow its users to transfer money from any account to any other account? No. There's a policy / agreement between the bank and its users about how it will execute transfers and manage the user's money.

Where does this leave us with Mixxx and streaming services? The streaming services will allow users to access music they have a subscription for under certain conditions. There's a contract between the user and the service describing those conditions. We have the option to implement that contract to let the user participate in the contract using Mixxx. How is freedom being impinged here where it isn't being impinged in the above two cases?

@mixxxbot
Copy link
Collaborator Author

Commented by: uklotzde
Date: 2018-10-22T17:23:29Z


A similar aspect: I don't use the recording or broadcasting feature and don't care if it is disabled temporarily or not. I wouldn't even notice. Holding back the streaming functionality effectively restricts my personal freedom.

I understand and respect the motivation behind not supporting certain business models. On the other hand I would like to keep the discussions on a technical level, striving for compromises that are acceptable for each stakeholder and without categorically excluding any options upfront.

By providing the source code we enable users to modify the code and build their own, customized version. Our license allows this. I think we can agree to never accept any code contributions that would restrict those rights.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2018-10-22T21:53:20Z


By providing the source code we enable users to modify the code and build their own, customized version. Our license allows this. I think we can agree to never accept any code contributions that would restrict those rights.

This seems to me to be the most critical point. In case a user uses a Mixxx for to violate his contract with the streaming company, it might throw bad light on Mixxx as a whole, which may leads to backlist Mixxx as streaming client. All our streaming efforts are on a risk, so we should make sure that the forks can be identified as forks.

Does this still match your opinion?

By the way, it is quite easy to record any stream using a loopback device.
The user has already the option to violate the contract by using this, independent from Mixxx.
Since YouTube pays for GEMA it is even legal in Germany to record YouTube videos :-)

@mixxxbot
Copy link
Collaborator Author

Commented by: uklotzde
Date: 2018-10-22T23:19:12Z


Of course including all consequences. We need to make clear that we are not willing to change our license to disallow such modifications. Changing the license wouldn't help, the source code is out of our control after publishing it.

If a shared application token is required that can be revoked at any time and will, I personally would not invest a minute into such a project. It is also an open question how to distribute such a secret(?) token. I'm afraid most services are ruled out just by Mixxx being open-source, i.e. whenever some kind of security by obscurity or validation/signature of the actual code that is running is required.

Why discuss about possible consequences and restrictions that might never become reality? Let's focus on the facts and adhere to the rules, both ours and theirs, as RJ vividly explained. Constructive input and ideas are always welcome, no taboos on thinking!

@mixxxbot
Copy link
Collaborator Author

Commented by: uklotzde
Date: 2020-03-19T20:58:12Z


A generic streaming source integration would still be useful, though not for Spotify:

https://djworx.com/spotify-withdraws-from-dj-streaming-apparently-not-the-end-of-the-world/

@mixxxbot
Copy link
Collaborator Author

Commented by: renne
Date: 2022-07-25T17:13:10Z


I suggest to add Qobuz.
It would be really great to be able to play HiRes music via timecode vinyl records.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2022-07-25T22:03:07Z


Does Qobuz allow DJing, regarding their terms and conditions? Do they support third party streaming clients? Do they have interest to colboration?

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
@berserkwarwolf
Copy link

Do these integrations require mainstream code or could someone write a 3rd party plugin to support say, youtube-dl or spotify-downloader ?

https://github.com/ytdl-org/youtube-dl

https://github.com/spotDL/spotify-downloader

I'm not asking about mainline code for obvious reasons, but if someone could write a 3rd party plugin for Mixxx, then this would turn into a non-issue.

@daschuer
Copy link
Member

I think you can already use the linked tools if you have the required rights and then play the downloaded files with Mixxx.
How would the suggested 3rd party plugin work?

@Dzordzu
Copy link

Dzordzu commented Jan 3, 2023

Maybe mixxx could use some ready solution gathering multiple music services (like mopidy)? Then integration may be easier

I'm not expert, but then stream manipulation and metadata could be entirely performed by such a service. It also saves lots of issues with providers permissions. I don't know, unfortunately, if handling stream (even as some fifo) is possible by mixxx.

@daschuer
Copy link
Member

daschuer commented Jan 3, 2023

That sounds interesting. How do you think will Mixxx integrate with mopidy? Can you draft a data flow diagram?

@simoher
Copy link

simoher commented Mar 19, 2024

Im going to take a look at integrating Tidal and SoundCloud into Mixxx, anyone startede on this yet?

@daschuer
Copy link
Member

Not yet. The difficult part is how to do it "correct" in terms of not violating any license terms.
How is the situation with Tidal and SoundCloud?

Do you have already detailed plans?

@berserkwarwolf
Copy link

Not yet. The difficult part is how to do it "correct" in terms of not violating any license terms.
How is the situation with Tidal and SoundCloud?

Do you have already detailed plans?

I think the safe way would be integrating with a third party, like Mopidy.

@ronso0
Copy link
Member

ronso0 commented Mar 20, 2024

So IIUC, that would be a new library feature which is basically a Mopidy client, incl. any of the available extensions?

How would the actual playback happen?

@simoher
Copy link

simoher commented Mar 20, 2024 via email

@ronso0
Copy link
Member

ronso0 commented Mar 20, 2024

I plan on integrating clemetine and disabling recording when its active.

As discussed earlier (at lengths), since it's almost certainly trivial to disable such a record protection, any integration of APIs / apps (Clementine) that natively allow playing copyrighted content will not be merged into Mixxx since it would allow circumventing any copyright protection implemented by the root APIs.

No issue however if you route such content into Mixxx via Aux or some loopback device.
IMHO (and IIUC) integrating MPD/Mopidy would also require this kind of routing, with the difference that vanilla Mopidy does not provide access to SC, Tidal etc..

Just some thoughts, IANAL

@simoher
Copy link

simoher commented Mar 20, 2024 via email

@ronso0
Copy link
Member

ronso0 commented Mar 20, 2024

so I will just make this for myself

Feel free to open a PR so the details can be discussed, just don't expect it to be merged, that's all I'm trying to say.

@simoher
Copy link

simoher commented Mar 20, 2024 via email

@berserkwarwolf
Copy link

so I will just make this for myself

Feel free to open a PR so the details can be discussed, just don't expect it to be merged, that's all I'm trying to say.

That sounds reasonable, but on the other hand... MIXXX suppports plugins, right? So, theoretically speaking, would this be feasible as a 3rd party plugin?

@daschuer
Copy link
Member

I don't see an issue that we integrate an MPD client into Mixxx. MPD itself puts no license constrains to Mixxx.
How is the sound streamed in that case?

I think for looping we need to buffer a whole track. The required Aux buffering is also a challenge.
#7792

@ronso0
Copy link
Member

ronso0 commented Mar 20, 2024

MIXXX suppports plugins, right?

Nope, no plugins.
External effect plugins (LV2), yes, but each library feature that may appear to be 'external' or 'pugin' (Serato, Traktor, ...) is built into Mixxx.

@acolombier
Copy link
Member

Seems related to mixxxdj/proposals#2

@eberleidacunha
Copy link

Did anyone took a look at this? https://tidal.com/djs

@daschuer
Copy link
Member

daschuer commented Jun 5, 2024

@eberleidacunha I don't think so. We need two points,
a contributor implementing this and a permission to use the Tidal API. Do you have interest to help?

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

No branches or pull requests

8 participants