mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.38k stars 1.26k forks source link

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

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

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 commented 2 years ago

Commented by: debayanbanerjee Date: 2018-05-11T14:57:08Z


Apart from Be, I think all are on the same page on this.

Spotify integration is important. Recording if not available is of no consequence (yet).

On Fri, 11 May 2018, 16:25 Sean M. Pappalardo, <email address hidden>
wrote:

Those are all good points. (But whether you fork or not is your decision alone. That's the beauty of open-source.) To the other followers of this bug: would you still be interested in this feature if Spotify support was not possible due to their terms of use? I.e. are there other services you would want to use, even if recording was not possible while using them?

-- 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 commented 2 years ago

Commented by: rob2192 Date: 2018-05-11T15:32:18Z


I think this is very important for the future, streaming is the way most people access music and DJs will go the same way once they trust it not to drop out during a gig.

As for preventing illegal recording of a stream, that should be the streaming plugins job. I would vote for implementing as: if recording is on, the stream won't play. It should be easy and avoids Mixxx restricting features. I would argue that you cannot stop a plugin from checking if recording is enabled as that restricts the freedom of the plugin developer and the streaming service to (at least try and prevent) breaches of the terms of service (which users freely accepted when they signed up).

Just a thought Deezer might be cooperative to pull users from spotify?

You never know a service for DJs which permits recording might even pop up.

mixxxbot commented 2 years ago

Commented by: ferranpujolcamins Date: 2018-05-11T15:37:51Z


Sorry for keep the controversy going, but I stand with be in this issue. Opening the door for concessions to private for profit companies is dangerous.

On Fri, 11 May 2018, 17:15 Paradoxcy,

Apart from Be, I think all are on the same page on this.

Spotify integration is important. Recording if not available is of no consequence (yet).

On Fri, 11 May 2018, 16:25 Sean M. Pappalardo,

Those are all good points. (But whether you fork or not is your decision alone. That's the beauty of open-source.) To the other followers of this bug: would you still be interested in this feature if Spotify support was not possible due to their terms of use? I.e. are there other services you would want to use, even if recording was not possible while using them?

-- 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

-- 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 commented 2 years ago

Commented by: rob2192 Date: 2018-05-11T15:50:54Z


Opening the door for concessions to private for profit companies is dangerous.

It's simple you use a streaming service and abide by the T&C OR you don't use it OR you get a invitation to court. Those ere the three options.

If you want a streaming service to allow you to record you need to fight them not the software that integrates their service. You need to fight for updates to the archaic laws that surround music and give all the power to the big labels.

This is the wrong place to argue for the right to record music.

mixxxbot commented 2 years ago

Commented by: daschuer Date: 2018-05-11T16:26:43Z


Let's have a look to Youtube.

I think it suits to be implemented like this: https://www.mixxx.org/wiki/doku.php/downloaded_streamed_tracks_support

http://doc.qt.io/archives/qt-5.5/qtwebkitexamples-webkitqml-youtubeview-example.html

Probably there is a way to catch the audio stream using QAudioInput. If we pair this with a last.fm view, it could be really slick, because last.fm is able to redirect to youtube, spotify, or amazon music.

mixxxbot commented 2 years ago

Commented by: ywwg Date: 2018-05-11T17:22:02Z


I think it's a reasonable position that Mixxx should only implement this feature, even as a general plugin framework, if there exists at least one streaming service for which the implementation is not a violation of terms and conditions.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2018-05-11T18:09:55Z


YouTube is not primarily a music platform. As such, it does not have features that would really make it useful to use with Mixxx. The metadata of YouTube videos is limited to title, description, and the user that uploaded it. There is no reliable way to get track titles, album names, artist names, or other metadata from YouTube. Plus audio quality on YouTube is highly variable and often really bad.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2018-05-11T18:18:30Z


This is the wrong place to argue for the right to record music.

While I do believe in the right to record music, that's not the main reason I oppose integrating streaming services into Mixxx. The primary reason is that this would require violating users' freedom to do whatever they want with the software.

mixxxbot commented 2 years ago

Commented by: wrobertson1981 Date: 2018-05-14T04:56:37Z


Hello! Waylon_R, long time watcher, first time commenter. I am with Be on this issue. It is a moral issue at this point. The only way I can see forward, completely leaving it up to people who are not mixxx developers, is by making a plugin interface so complete, that it can hook into everything, including pulling in metadata and sound. This would be like the system Kodi uses, and how plugin developers bring in streams etc, without causing the core Kodi developers direct legal hassle. Kodi developers explicitly say that they do not support streaming from illegal sources, but because their plugin framework is so broad, its technically possible. The plugin does what it wants, and is not obliged to disable any functionality.

No core Kodi developer is known to contribute to copyright infringing plugins, as far as I know, but if one was, it would taint Kodi as a whole. So, in summary, the Mixxx team would have to make a plugin framework so broad as to include metadata I/O and sound I/O but, it would be wise not to start there. And known Mixxx developers should stay away from developing copyright infringing plugins, as they are illegal, and by them doing so, would taint the team and project.

This sounds like a lot of work, I hope it never happens, because Mixxx still has a lot of work ahead of itself in other areas, and I do not wish the efforts of a good team be diluted by tasks that will take a very long time to pay off, for a very limited amount of users.

mixxxbot commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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?

berserkwarwolf commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

simoher commented 5 months ago

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

daschuer commented 5 months ago

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 commented 5 months ago

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 commented 5 months ago

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 commented 5 months ago

Ive read a bit up on the license on your forum about spotify. But by now i see Tidal and SoundCloud integrated into many dj programs, so i cant see why it should be a problem. I think it should be posible with the licensing rules of the Tidal and SC plans. SC even have a plan specificly for djs who wants to play for a crowd. I plan on integrating clemetine and disabling recording when its active.


From: ronso0 @.> Sent: Wednesday, March 20, 2024 12:42:32 PM To: mixxxdj/mixxx @.> Cc: simoher @.>; Comment @.> Subject: Re: [mixxxdj/mixxx] Stream Mix integration (youtube, spotify...) (Issue #6277)

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?

— Reply to this email directly, view it on GitHubhttps://github.com/mixxxdj/mixxx/issues/6277#issuecomment-2009374825, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AA4XFQ72CFPW3QCVDFTM3ADYZFY2RAVCNFSM6AAAAAATLS4IQ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMBZGM3TIOBSGU. You are receiving this because you commented.Message ID: @.***>

ronso0 commented 5 months ago

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 commented 5 months ago

But the could just record directly from clementine too?? If someone wants to scrape the tracks they could also just hack clementine and record that, i dont see the problem, so I will just make this for myself..

Thanks for the reply!


From: ronso0 @.> Sent: Wednesday, March 20, 2024 1:35 PM To: mixxxdj/mixxx @.> Cc: simoher @.>; Comment @.> Subject: Re: [mixxxdj/mixxx] Stream Mix integration (youtube, spotify...) (Issue #6277)

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

— Reply to this email directly, view it on GitHubhttps://github.com/mixxxdj/mixxx/issues/6277#issuecomment-2009464245, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AA4XFQZHUBNEEMGFS4BWW3DYZF67PAVCNFSM6AAAAAATLS4IQ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMBZGQ3DIMRUGU. You are receiving this because you commented.Message ID: @.***>

ronso0 commented 5 months ago

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 commented 5 months ago

Yes, I see the problem. Will see what I can do.. Thanks mate!


From: ronso0 @.> Sent: Wednesday, March 20, 2024 1:47 PM To: mixxxdj/mixxx @.> Cc: simoher @.>; Comment @.> Subject: Re: [mixxxdj/mixxx] Stream Mix integration (youtube, spotify...) (Issue #6277)

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.

— Reply to this email directly, view it on GitHubhttps://github.com/mixxxdj/mixxx/issues/6277#issuecomment-2009487183, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AA4XFQ5QUBIKRKEV4BR245TYZGAODAVCNFSM6AAAAAATLS4IQ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMBZGQ4DOMJYGM. You are receiving this because you commented.Message ID: @.***>

berserkwarwolf commented 5 months ago

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 commented 5 months ago

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. https://github.com/mixxxdj/mixxx/issues/7792

ronso0 commented 5 months ago

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 commented 3 months ago

Seems related to https://github.com/mixxxdj/proposals/pull/2

eberleidacunha commented 3 months ago

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

daschuer commented 3 months ago

@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?