bhj / karaokeeternal Goto Github PK
View Code? Open in Web Editor NEWOpen karaoke party system
Home Page: https://www.karaoke-eternal.com
License: ISC License
Open karaoke party system
Home Page: https://www.karaoke-eternal.com
License: ISC License
Hi BHJ this is really great software.
Can you add replay button and toggle left right chanel for video that has karaoke and original sound track..
For those of us with large collections that contain multiple versions of the same track by different vendors, it would be extremely helpful to allow users to either set their own version preferences on a per-track basis, or at least allow them to select the version of the track after they've added it into the queue. Persistence across rooms/sessions would be great, but just having the option each time you select a track would be useful.
Love this project, just looking into using it!
I'd love to have a system where I can manage the queue manually -- e.g. for when I'm hosting karaoke at my house and I have a friend who needs to leave early and I want to get a song in for them.
As a more complex version of this, it would be great to have a more advanced queueing system, where you could have e.g. a priority queue for people you know are good singers etc that's only used when it's shorter than the default queue. Or, better yet, some sort of plugin-based system where people can develop and choose their own queueing algorithm!
Happy to help contribute since I'm familiar with the stack 🙂
Create an algo to rate songs for (working concept : "IT" factor) -- encourages performers to pick songs that are good for the audience and create a good party atmosphere for the event.
Factors that go into the the IT Factor score:
Use a dynamic IP solution and/or QR code generator to enable scan of QR code (show on player) to ease the launch of the app on the phone. This could take them to the correct room in addition to the correct server.
Thank you for all your hard work. We love using your app!
Common problems that do pop up when singing with larger groups is the ability to reorganize songs that are within the queue. I'm not sure if I completely missed that functionality on my end, but if not, it would be huge if that could be an additional feature.
The other request is less of an issue, but just a nice-to-have. Since accounts are able to be created by anyone, would it be possible to allow access by username-only for non-admin accounts? Very minor, but also makes it easier when dealing with our non-technical singers 😄
I installed on my Mac, lost the Admin access, how do I remove it so i can reinstall?
It would be nice if this feature available. Some time mistaken press the next button which is skipped the played song.
One of the strengths of a home karaoke setup like this for me, is that guest can wander around as they please doing their own thing until their turn. I haven't found any setting for notifications, meaning users have to sit staring at the queue to know when they are up. Some sort of notification sound x seconds before your turn would be good, then you can do your own thing.
Hi,
I've install it into a jail on my freebsd and it works brilliantly. When I close my jail the server stops. I've tried to install a symlink rc.d to make it as a service but I get an error
env: node: no such file or directory
Any idea how I can make it a background service which doesn't stop when I close the console?
Also can I stop it form changing the port number everytime I start the server?
thanks
Paul
This is a meta issue/checklist for features and changes wanted for the v1.0 milestone. Things may be added, pushed back or removed.
Hello :)
Unless I've completely missed it, is there a way to contact you? Either via discord/mail/mastodon/twitter, whatever floats your boat.
I've also made a karaoke webapp and would like to chat with you a bit (it's good to see other people into karaoke!)
Good day,
I am currently a karaoke DJ with my own library if songs. What I would like to know is if your software can allow we to upload my list of songs and have patrons use your app to only send me their song selections?
Older Karaoke tracks from DK and other Karaoke providers weren't produced at the original pitch of the song. Singers also sometimes want to pitch-shift songs to fit their own vocal ranges.
Overall Request
My collection has grown pretty large, so it takes about 30 minutes when added new songs to my collection and doing a media refresh. It'd be great to have a way to refresh a specific directory that could be used for newer songs without requiring a full refresh.
Hello @bhj I am a logo designer. I contribute to open source projects that do not have logo. I designed a functional logo for karaoke-forever. What do you think? I will wait for feedback. Have a nice day!
Readme view;
Website view;
Installation of the server works fantastic on both Raspberry Pi & MacOS, but I'm running into the same issue on both when trying to add songs:
internal/modules/cjs/loader.js:800
throw err;
^
Error: Cannot find module 'strtok3/lib/type'
Require stack:
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/aiff/AiffParser.js
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/ParserFactory.js
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/core.js
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/index.js
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/server/Scanner/FileScanner/FileScanner.js
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/server/Scanner/FileScanner/index.js
- /home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/server/scannerWorker.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:797:15)
at Function.Module._load (internal/modules/cjs/loader.js:690:27)
at Module.require (internal/modules/cjs/loader.js:852:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/aiff/AiffParser.js:5:16)
at Module._compile (internal/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
at Module.load (internal/modules/cjs/loader.js:815:32)
at Function.Module._load (internal/modules/cjs/loader.js:727:14)
at Module.require (internal/modules/cjs/loader.js:852:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/aiff/AiffParser.js',
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/ParserFactory.js',
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/core.js',
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/node_modules/music-metadata/lib/index.js',
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/server/Scanner/FileScanner/FileScanner.js',
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/server/Scanner/FileScanner/index.js',
'/home/pi/.nvm/versions/node/v12.14.0/lib/node_modules/karaoke-forever/server/scannerWorker.js'
]
}
I've tried npm i -g strtok3
, in case it hadn't been installed but that didn't seem to help. Noticed the same issue on both node 12 & 13. Am I missing a dependency perhaps? Thanks!!
Hello,
I set up a karaoke using your nice software
It can be accessed from outside (use of a specific domain name behind nginx)
All my tests are good (locally and across the web)
But my niece (who is in Norway) encounters difficulties because she never displays the player banner whatever the device used (2 recents smartphones, 3 differents PCs) and even when she uses the address (by adding player instead of queue) this does not display the player's banner, so she can never start the karaoke.
Do you have an idea please?
Regards
Just found you software whilst researching for an overhaul of my own karaoke software I wrote a few years back, and blimey if your's isn't darn close to what I was intending to do.
Well done! That's saved me a ton of work.
Of course now I'm going to start politely requesting features that your's doesn't have that mine did :)
Anyway is there a method of reducing the brightness of the background animations ? They are really cool, but a bit distracting, It's be really handy if they could be dimmed down i.e. a brightness slider of some such.
Cheers!
And thanks for writing this software.
It would be great to be able to add users as an admin and "impersonate" them so they don't have to go to a URL on their devices (I have some...idiosyncratic friends without phones, or sometimes their phones will be too old for mDNS, some people just don't want to figure out software, etc etc).
(I thought this belonged in a separate issue since the implementation is likely separate.)
Hi. Can I request an option to set my prepared video or image/slideshow as my background visualizations instead of using Winamp/MilkDrop visualizations?
My CD+G collection is zipped in individual zip files for each track, containing the cdg and mp3 file. KF does not currently see them unless I unzip them, and I don't see zip support in the Road to v1.0, are there plans to implement it?
I'm seeing the lyric text background repeatedly not match the text. I'm guessing this is driven by CDGGraphics module and it's reporting the wrong values ?
So I'm not sure this is fixable, but I see you've contributed to the repo, so thought this might be of interest.
cheers.
I have a collection of MP4 and MP3 + G's. I prefer MP4's when they are available. The ability to set preference globally would be good, currently it seems this must be done on individual songs.
HTML5 now support streaming live audio/video. You can use the technique in https://www.html5rocks.com/en/tutorials/getusermedia/intro/ to allow each user to turn on their phone microphone and stream live audio to server. Then on the server side, you can do some signal processing to mix the MTV audio with each user's singing voice with de-reverberation, after which the mixed audio data is streamed to the player for playback. Then, we truly have a Home Karaoke system -:)
Thank you for your work. I can't seem to scan and add all my karaoke songs to the library. After trying a few times scanning media freezes around 10% of the way through (around file 10k/115k). I was wondering where I was going wrong. Hope everything is going well. Thank you.
Win10 install, ran as admin, can provide sqlite3 file if necessary.
Scanner log
5/9/2020, 6:17:45 PM [warn] FileScanner: Could not determine artist or title: E:\Karaoke\Karaoke Collection\Len Barry - 1-2-3 [Karaoke].mp3
Firstly thanks BHJ for the work you've put into making a great Karaoke app. Long story short I've had the opportunity to use the app a few times with small groups of friends. I have some suggestions regards the queue that would certainly improve the usability for me and probably other people as well.
In my case I use the same room each time, more often than not there are items left in the queue from the last time. So far as I can tell there is no ability to clear more than 1 item at a time from the queue, the only option is to delete the room and recreate it. Ordinarily having to log out and back in again is a minor inconvenience, but if you use a smart tv as the player and have to do this via the tv's browser it's a major pain in the ass. Surely there's justification for the admin to be able to better manage the queue, whether it be a clear all button, or a multi select and clear feature.
The other issue I've had is with monitoring the queue, a smart phone works great for people to be able to browse my library and pick the songs they want to sing, but not so much for keeping track of the queue, most phones lock themselves after a few seconds, so in order to check the queue you have to unlock it and hope you've left a tab open in the browser you can quickly re-open. Most of my guests manage to close the tab/browser or navigate away from the page. The only other indication for whose up next is the on screen notification, but that is at the beginning of the song which is too late if someone is not already where they need to be. There are a few ways I think this could be improved, one way could be to have a separate /queue interface, like the player, so a separate display could be set up for the sole purpose of displaying the queue positions. That may not be practical for most applications though, so perhaps having the queue show unobtrusively via the player down the side where it won't interfere with the lyrics, or even just briefly unobtrusively overlay via the player towards the end of a song, these could even be opt in features in the settings i.e enable queue overlay via player.
Right now, to get the song options (make next, info, remove) you have to swipe. Works great for mobile, but not for desktop. Can still swipe, but its kinda awkward to do. Can we add like a three dot menu or something to open/close the options?
Or better yet, a responsive layout where if the screen is large enough, the options show up anyway. There's plenty of room, huge gap between the song info and the star icon:
Most users would use mobile anyway, but having a desktop interface for the DJ would help.
If multiple player windows are opened, at least one is always broken (with an "oops..." message), and others sometimes will play the wrong song.
Sorry I don't have good reproduction steps for this, this is from memory since I've uninstalled it once this bug occurred repeatedly but I figured I'd mention here in case it was just "multiple player windows in any circumstance" and that case hadn't been considered.
On a fresh install, I get the following error immediately after logging in or creating an account...
TypeError
Node.appendChild: Argument 1 is not an object.
Call Stack
paint/<
karaoke-forever/./node_modules/react-github-btn/index.js:33:16
... but after dismissing the error, everything seems to work just fine!
To reproduce...
git clone https://github.com/bhj/karaoke-forever.git .
npm install
npm run dev
Open the app in a browser (Firefox and Chrome tested) and attempt to login or create a new account.
node v16.4.2
npm 7.18.1
CentOS 8.1
Seems to have something to do with react-github-btn used on the About component, but it all looks fine to me and works as expected when you actually see it.
Whilst playing around with this the other day I found that the song order can change right upto the last second, I think this would be annoying if your turn was 10 seconds away then all of a sudden you get bumped because someone adds a song. I like that the queue prioritises new singers, but maybe it should be modified to not bump the next singer up if there is less than x seconds of the song left.
Hello,
I made a few attempts to spin up the node.js docker package to try and install karaoke-forever, but all I manged to do was fight with permissions issues with the npm install
process, so I'm stuck for now. Are you guys considering building a docker container for the next release? Alternately, I think this package would be a good addition to the linuxserver.io ecosystem, as they seem to have more of a clue as to how the docker backend works, unlike myself.
Thanks.
I'm having issues getting this app to reverse proxy under nginx or apache. Have you any advice?
Thank you
Not sure what to call it, but add an account type thats between User and Admin. Someone that can create rooms, start player, and edit the queue for the rooms they create, but can't create or edit users, or change the media folders.
Basically on the account page, out of Rooms, Users, Preferences, and My Account, User can access only My Account, Admin can access all, and this new account type can access My Account and Rooms.
This is useful because I can then have someone set up a room and run it without having to give them access to full admin features.
I get this error when trying to build. I'm not very familiar with node so I'm not sure how to fix this. I cloned the repo, ran npm install
and then npm run build
and I get the output below. Any thoughts?
PS D:\ws\karaoke-forever> npm run build
> [email protected] build D:\ws\karaoke-forever
> rimraf build && webpack --config config/webpack.config.js
14 assets
1271 modules
WARNING in license-webpack-plugin: could not find any license file for react-flip-toolkit. Use the licenseTextOverrides option to add the license text if desired.
WARNING in license-webpack-plugin: could not find any license file for flip-toolkit. Use the licenseTextOverrides option to add the license text if desired.
WARNING in license-webpack-plugin: could not find any license file for react-responsive-modal. Use the licenseTextOverrides option to add the license text if desired.
WARNING in license-webpack-plugin: could not find any license file for redux-throttle. Use the licenseTextOverrides option to add the license text if desired.
WARNING in license-webpack-plugin: could not find any license type for socket.io-client in its package.json
WARNING in license-webpack-plugin: could not find any license file for socket.io-client. Use the licenseTextOverrides option to add the license text if desired.
ERROR in HookWebpackError: ENOENT: no such file or directory, scandir
- HookWebpackError.js:48 makeWebpackError
[karaoke-forever]/[webpack]/lib/HookWebpackError.js:48:9
- Compilation.js:3060
[karaoke-forever]/[webpack]/lib/Compilation.js:3060:12
- Compilation.js:480 fn
[karaoke-forever]/[webpack]/lib/Compilation.js:480:17
- task_queues.js:95 processTicksAndRejections
internal/process/task_queues.js:95:5
- -- inner error --
- Error: ENOENT: no such file or directory, scandir
- CachedInputFileSystem.js:233 CacheBackend.provideSync
[karaoke-forever]/[enhanced-resolve]/lib/CachedInputFileSystem.js:233:32
- WebpackFileSystem.js:78 WebpackFileSystem.listPaths
[karaoke-forever]/[license-webpack-plugin]/dist/WebpackFileSystem.js:78:24
- LicenseTextReader.js:37 LicenseTextReader.readLicense
[karaoke-forever]/[license-webpack-plugin]/dist/LicenseTextReader.js:37:54
- PluginChunkReadHandler.js:71 PluginChunkReadHandler.processModule
[karaoke-forever]/[license-webpack-plugin]/dist/PluginChunkReadHandler.js:71:62
- PluginChunkReadHandler.js:24
[karaoke-forever]/[license-webpack-plugin]/dist/PluginChunkReadHandler.js:24:27
- WebpackInnerModuleIterator.js:39 WebpackInnerModuleIterator.internalCallback
[karaoke-forever]/[license-webpack-plugin]/dist/WebpackInnerModuleIterator.js:39:13
- WebpackInnerModuleIterator.js:21 WebpackInnerModuleIterator.iterateModules
[karaoke-forever]/[license-webpack-plugin]/dist/WebpackInnerModuleIterator.js:21:9
- PluginChunkReadHandler.js:20
[karaoke-forever]/[license-webpack-plugin]/dist/PluginChunkReadHandler.js:20:39
- WebpackChunkModuleIterator.js:42 WebpackChunkModuleIterator.iterateModules
[karaoke-forever]/[license-webpack-plugin]/dist/WebpackChunkModuleIterator.js:42:21
webpack 5.72.0 compiled with 1 error and 6 warnings in 16841 ms
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `rimraf build && webpack --config config/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\user\AppData\Roaming\npm-cache\_logs\2022-05-16T23_45_36_816Z-debug.log
There are any plans to add a scoring method after the song ending?
I saw some of the recent comments about push notifications to let someone know either that their time to sing has arrived or during the song prior to theirs. However, even if someone is already in the room it might take time to shuffle around, etc.
In most KJ setups the KJ is in charge of starting/pausing the music for the next person, but what if they had the ability to start the song themselves or, if they want to skip their current turn but retain their same place in the rotation, to do that.
Feature Request Itself:
Create a "Sing/Play" and "Skip" button on singers' views.
You could also create a "leave" button that a singer can use to leave the rotation completely and remove their songs from the current playlist, although, that is probably already in the system.
Played around with this the other day, there wasn't much feedback when a song is added to the queue, I think a pop up confirmation might be better, currently the text just changes colour. I found that people were adding the same song to the queue multiple times, I think better feedback when the song is added would prevent this, but also there should be some check to make sure the same singer can't add the same song whilst it's already in the queue.
Hi,
I tried to setup karaoke-forever with my nginx proxy, but i get issues with the subpath option, White screen.
location /karaoke { proxy_pass http://192.168.1.11:8090/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
In the console :
'4/23/2022, 7:10:15 PM [verbose] server[280957]: <-- GET /
4/23/2022, 7:10:15 PM [verbose] server[280957]: --> GET / 200 2ms 475b'
I think i have to change something in project.config.js, bu dont know how
Any idea ?
Just want to create this as a feature request.
The idea is to have an app that can be installed on Android/Google/Apple TV. This app would only contain the front-end code, no server functionality. This would remove the requirement of using a browser on a TV (horrible experience), and make it a more native experience on the device.
To start with this could simply be a hybrid app, however in the future could be built native.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.