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

automatically start broadcasting at startup #10188

Open
mixxxbot opened this issue Aug 23, 2022 · 15 comments
Open

automatically start broadcasting at startup #10188

mixxxbot opened this issue Aug 23, 2022 · 15 comments

Comments

@mixxxbot
Copy link
Collaborator

Reported by: eitanc
Date: 2020-10-31T17:39:44Z
Status: Confirmed
Importance: Wishlist
Launchpad Issue: lp1902378
Tags: broadcast, easy


Hello,

I wish to ask to add a feature to make "Live Broadcasting" an Output "Device" option, possibly as a new output type, say "Online" (beside "Master", "Headphones" and so on), and in it the user will be able to choose a "Live Broadcasting" connection.

This way the user will be able to stream the session in parallel not only to a local device(s) but also to an online "device", like Internet Radio Station of his/her own or of partners.

I believe this will expand the publication channels of the play session, as not being only heard local but also global/remote, which is even more important in the current COVID-19 days, which makes folks stay at home.

Thank you.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2020-10-31T19:29:06Z


Broadcasting can already be configured in the broadcasting preferences. There would be advantage to conflating this with hardware configuration. It would require cluttering the hardware configuration preference page and likely confuse people.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2020-10-31T19:30:21Z


There would be no advantage... Launchpad does not allow editing comments...

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-10-31T19:35:18Z


It has a configuration GUI but it cannot be started automatically, only manually.
Defining it as an output channel will enable to stream to it in parallel with any other hardware device.

Alternatively a broadcast connection can be added as a "device" option in the list of all other hardware devices, so no extra output category will be added - but it will be simply selected as the go-to device.

@mixxxbot
Copy link
Collaborator Author

Commented by: Holzhaus
Date: 2020-10-31T21:09:40Z


This sounds super-confusing. Please elaborate why you think that our broadcasting settings are insufficient.

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-10-31T21:56:34Z


Hi Jan,

Sure, I will be glad to explain.

I was looking for a long time for an app to do something that I thought was simple and common - to read a tree of folders in my local Windows PC hard drive, of MP3 files, play them to a local, on the same PC, Shoutcast server as a Windows service, which will connected by a local Wi-Fi network Internet Radio hardware device.
So all in all, I will be able to stream my MP3 files to my radio device, all on the same local network.

Initially I tried using DLNA but I have thousands of songs and these radio devices are quite limited, to several hundreds of files to be listed in their memory - so the radio can find my PC as DLNA server and start yanking the list of a MP3 files but once the number of files limit is reached - the process fails with a "too many files" error, so I cannot use this method.

As this didn't work, I turned to the "Internet Radio" option, which means that I don't yank the full list of file, but rather I connect to an HTTP local URL, that serves me one song at time (so I am limited about skipping songs forward at the internet radio device level, but that's the price I have to "pay").

First I tried IceCast as a server but I was not able to make it work on Windows (it is more linux oriented), so I turned to shoutcast - which I was able to configure quite easily and make it run as a service.

Now I needed to find a shoutcast source to read the files and stream them to the shoutcast service.
This is where I had a really hard time to find an app to do all the above and in a good quality, stable and easy to use manner - Mixxx was the best I have found.
It does all of the above wonderfully, but in a manual manner - I need to load its GUI, enable "Auto DJ" and enable the "Live Broadcasting" connection I have set to stream the music to the local shoutcast server.

So, I look for a way to automate the manual parts - that I can make Mixxx load automatically (best as Windows service, but as a startup command/batch is also OK, I have another bug for this), and as part of its startup - that it will start "Auto DJ" in a shuffle mode and also turn on the "Live Broadcasting" to my specific connection (I have only one configured) to the local Shoutcast server.

My use case is just one. I guess real DJs will love the option of not being limited to only playing to local audio devices but also in parallel to stream their work to an online radio/show service, hence reaching a wider audience, even globally.

You have it all of the above already in Mixxx - it is just a needed to be "stitched" together, which I guess it is should not be too hard, in one of several possible ways:

  1. Add a startup switch to the cli of the Mixxx executable, to start "Live Broadcasting" and to specify the name of the server connection the user wish to use (and of course, was already configured)
  2. At the output pane, either:
    a. Add an output category (at the level of "Master", "headphones" and so on) - of "Live Broadcast" and there the user will need to choose a radio connection he/she already created
    b. Else, if adding an output category is not desired - then add to the current output list of devices (say, as an example - the drop-down list next to "Master") - a "Live Broadcasting" connection name item, so, for example - for the "Master" I will be able to select to stream over the network and not to a local device.

I don't see why it sound confusing. It is expanding the mindset of Mixxx beyond a focus on the local output and utilizing the same music work to be streaming in parallel to multiple play paths.

@mixxxbot
Copy link
Collaborator Author

Commented by: ronso0
Date: 2020-10-31T22:24:11Z


IF AutoDJ and Broadcast could be started automatically...what exactly do you need the extra 'Broadcast' output device for?
It would already be sending the audio to the broadcast service AND any of your configured hardware devices.

@mixxxbot
Copy link
Collaborator Author

Commented by: Holzhaus
Date: 2020-10-31T22:34:24Z


Mixxx is a software for live performances. I think instead of trying to shoehorn Mixxx into being an automated streaming media player, you should use something much better suited for this. For example, MPD has all the functionality you need built-in. You could even use it on a headless system, e. g. an Raspberry Pi. Another alternative would be using VLC, which should also be capable of doing what you want. I think Mixxx is just the wrong tool for your use case.

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-10-31T22:36:50Z


No need, I wrote - ANY of the options I mentioned (or any other anyone will come up with), just one, to start broadcasting automatically will be good - as EITHER a CLI startup switch, OR an output category, OR an output item in the drop down list of output "devices".

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2020-11-01T12:08:56Z


Making Broadcast an output device is IMHO not the best solution for your issue.
I can however confirm your use case. A straight forward solution would be to auto-start broadcasting and Auto-DJ after Mixxx start. That can be implemented with a reasonable effort.

@eitan: Do you have some coding experience. It looks like an easy beginners task.

We have now:

https://bugs.launchpad.net/mixxx/+bug/1902379
"automatically start "Auto DJ" at startup"

So we can use this bug to track the broadcasting part.

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-11-01T14:53:42Z


Hi Daniel,

Thanks for approving my use case.

I wrote in the past a basic WHOIS info gathering tool in python, but nothing with GUI.
I can give it a try if you wish and you can guide me.

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-11-01T15:04:03Z


I guess this will be realized by adding to the "Live Broadcasting" table of connections, a new column, named something like "Connect at Mixxx startup", which will be a yes/no checkbox and will disabled at both the GUI (grayed out) and operational level if the connection is not in "Enabled"=yes mode, and when it will be enable and apply/saved - the new item will be activated and behave based on its current yes or no setting.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2020-11-01T17:06:48Z


No, we have only one global enable state. This means when we enable broadcasting on start, all enabled connections will connect.

I think it is better to add a checkbox below:
"Turn on Live Broadcasting when applying these settings"

This is defined here:

<string>Turn on Live Broadcasting when applying these settings</string>

And used here:
https://github.com/mixxxdj/mixxx/blob/1ca77e00a53bbd63e5bb899ac27b8897efa95200/src/preferences/dialog/dlgprefbroadcast.cpp

ui files can be edited with the QtDesigner.

But the first step is to build Mixxx from source.
https://github.com/mixxxdj/mixxx/wiki

Than you should read through this:
https://github.com/mixxxdj/mixxx/wiki/Bugfix%20Workflow

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-11-01T18:22:35Z


I agree with one checkbox.

Well, entering C++ is too much for me now, but I will be glad to QA once the feature is completed.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2020-11-01T18:34:44Z


Since this feature is a bit exotic, I am afraid no contributor will jump in and spend spare time for it. So if this is critical for you I think you need to adopt your Phyton knowledge to c++ which is not to hard.

@mixxxbot
Copy link
Collaborator Author

Commented by: eitanc
Date: 2020-11-01T19:42:27Z


OK, I will look into it

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
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

2 participants