All Projects → joelamos → SourceRadio

joelamos / SourceRadio

Licence: GPL-3.0 license
Stream music from YouTube while playing games on Steam

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to SourceRadio

Youtube Music
YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)
Stars: ✭ 376 (+3660%)
Mutual labels:  music-player, youtube-dl
RadioPlayerV3
An Advanced Telegram Bot to Play Radio & Music in Voice Chat. This is Also The Source Code of The Bot Which is Being Used For Playing Radio in @AsmSafone Channel ❤️
Stars: ✭ 232 (+2220%)
Mutual labels:  radio, music-player
ytqck.github.io
YouTube quick ⚡ Search and Download Music for Free.
Stars: ✭ 18 (+80%)
Mutual labels:  music-player, youtube-dl
amplyfm
A free and open-source web app for streaming music.
Stars: ✭ 46 (+360%)
Mutual labels:  music-player, music-streaming
TaraniTunes
Awesome music player for FrSky Taranis radios
Stars: ✭ 21 (+110%)
Mutual labels:  radio, music-player
Pandoraplayer
🅿️ PandoraPlayer is a lightweight music player for iOS, based on AudioKit and completely written in Swift.
Stars: ✭ 1,037 (+10270%)
Mutual labels:  radio, music-player
Ablemusicplayer
🎵 A Youtube Music like app with a Spotify like design - ad free and open source. Feel free to PR. NOTE: BEING REWRITTEN, HENCE THE REPO WILL BE INACTIVE FOR A WHILE
Stars: ✭ 167 (+1570%)
Mutual labels:  music-player, youtube-dl
Online-Radio
Online Tamil Radio channels. Inspired by http://radio.garden
Stars: ✭ 15 (+50%)
Mutual labels:  radio, music-player
Private-Cloud-Music
Private Cloud Music - a really simple and easy-to-use online music player.
Stars: ✭ 40 (+300%)
Mutual labels:  music-player, music-streaming
Swift Radio Pro
Professional Radio Station App for iOS!
Stars: ✭ 2,644 (+26340%)
Mutual labels:  radio, music-player
subplayer
A music player frontend compatible with Subsonic backends
Stars: ✭ 66 (+560%)
Mutual labels:  music-player, music-streaming
deplayer
Decentralized mediaplayer which runs entirely in the browser.
Stars: ✭ 14 (+40%)
Mutual labels:  music-player, youtube-dl
overthefirewall
覆盖全平台完全免费节点订阅机场推荐破解VPN软件分享
Stars: ✭ 1,042 (+10320%)
Mutual labels:  steam
HypnosMusicPlayer
A Lightweight, Clean, and Powerful Music Player and Library.
Stars: ✭ 21 (+110%)
Mutual labels:  music-player
csgo-cli
CS:GO Console shows your user account, stats and latest matches. It also uploads demo sharecodes to csgostats.gg.
Stars: ✭ 31 (+210%)
Mutual labels:  steam
rtlsdr-wsprd
WSPR daemon for RTL receivers
Stars: ✭ 93 (+830%)
Mutual labels:  radio
Jericho-Player
LightWeight Framework for discord.js v13 Music Bots and Radio Bots with fast moderation with commands and no memory leak.
Stars: ✭ 19 (+90%)
Mutual labels:  music-player
cloud-music-mobile
This is a music player
Stars: ✭ 22 (+120%)
Mutual labels:  music-player
idle master extended
🃏 Get your Steam Trading Cards the Fast Way (Fast Mode Extension 🚀)
Stars: ✭ 1,771 (+17610%)
Mutual labels:  steam
Grabber
A wrapper for Youtube-dl for Windows.
Stars: ✭ 22 (+120%)
Mutual labels:  youtube-dl

SourceRadio

SourceRadio makes it possible for players on a server to build a playlist together and listen to music as they play—even on public servers.

SourceRadio plays music through the owner's ingame microphone, and songs may be requested by any player via the chat interface. If multiple songs are requested within a short time span, the first song plays, and the others are placed in a queue.

Your selection of music is practically infinite. That's because SourceRadio streams music directly from YouTube. When players request a song, SourceRadio takes the request and sends it to YouTube, which spits out the top result. SourceRadio stores the information gathered from each song request in a local database, using that information to avoid future lookups. SourceRadio also saves the most-requested songs locally to the owner's drive in order to stream songs more efficiently.

Supported games

  • Team Fortress 2
  • Counter-Strike: Global Offensive
  • Left 4 Dead 2

System requirements

  • SourceRadio was developed to run on Windows Vista and above.
  • Must have Microsoft .NET Framework 4.5 or above installed. Download here.
  • A good, low-latency Internet connection. A bad Internet connection may cause SourceRadio to crash. It may also provide an unpleasant listening experience for teammates.

Note: A physical microphone is not required for sharing music with teammates.

Installation & usage

  1. Join the SourceRadio Steam group and download the installer from the link on that page.
  2. Run the installer, and carefully follow all of the instructions it gives. Note: Anti-malware software may flag the installer because it is not from a known source. You may have to temporarily disable this software.
  3. Become familiar with all of SourceRadio's commands. Then, open the properties.txt file and ensure that each value is correct for you.
  4. Run SourceRadio alongside a supported game and begin jamming to tunes.

Ingame commands

Commands are issued to SourceRadio by players via the ingame chat interface. The owner also has the option of issuing commands via the developer console if he uses underscore for spaces. Commands are only recognized if they appear at the beginning of the message and start with an exclamation point.

Below, an asterisk indicates that a command has the ability to write changes to the properties file. This is done by appending -w to the end of such a command (e.g. !queue-limit-w 7). Parameters are indicated here in square brackets. However, when commands are issued, brackets do not surround the parameters.

  • !song [YouTube query] - Used to request the playing of a song. This is the only non-admin command.
  • !skip - Skips the song that is currently playing and starts the next song if there is one in the queue.
  • !ignore [optional request index n] - Ensures that the nth-to-last !song command is ignored (whether or not it would have been ignored automatically). The last !song command is ignored if no argument is provided.
  • !extend - Removes the duration limit property from a song. Extended songs play until they are finished unless they are skipped or ignored.
  • !alltalk* [on or off] - Sets whether chat binds send messages to both teams or only the owner's team. After this command is executed, the binds script must be re-executed via the reload script bind. | See property
  • !clear - Removes all songs from the queue and stops the song that is currently playing.
  • !add-admin* [username] - Adds the specified player as an admin. | See admins.txt
  • !remove-admin* [username] - Removes the specified player from the list of admins. This command may only be issued by the owner, and the owner may not specify himself.
  • !duration-limit* [number of seconds] - Sets the number of seconds that songs are allowed to play if there are songs in the queue. | See property
  • !player-song-limit* [number of songs] - Sets the number songs that a given player is allowed to have playing or in the queue at a time. | See property
  • !queue-limit* [number of songs] - Sets the total number of songs allowed in the queue at a time. | See property
  • !ban* [username] - Bans the specified player from issuing commands. | See banned players.txt
  • !unban* [username] - Unbans the specified player so that he may issue commands once again.
  • !block-song* [request index n or song title] - Ensures that the song referenced by the nth-to-last !song command or by the specified song title is never allowed to play. If the referenced song is playing or queued upon being blocked, it gets terminated. If n = 0, the currently playing song gets blocked. If no argument is provided, the song referenced by the last !song command gets blocked. | See blocked songs.txt
  • !unblock-song* [song title] - Revokes the previous block that was placed on the specified song.
  • !vocals* [on or off]- Sets whether or not there should be an artificial vocalization every time a command is issued. | See property
  • !stop - Closes the MySQL server and stops SourceRadio. This command should always be issued when the owner is done running SourceRadio.

Properties

The various files containing properties and settings for configuring SourceRadio are located at ...\SourceRadio\properties. Below, you will find explanations of each important file in this directory that you may want to tweak to fit your preferences. You may use // to demarcate comments in these files.

properties.txt

This file contains SourceRadio's main parameters. Property-value pairs are separated by the delimiter ->. See this list for valid key names for binding. To restore this file's default values, run restore defaults.bat.

  • default game - The game with which SourceRadio will start. If this property is empty, SourceRadio will prompt for a game upon startup. (Options: tf2, csgo, l4d2)
  • duration limit - The number of seconds a song is allowed to play if there are songs in the queue. This limit is ignored if no songs are in the queue and will play until it is finished unless it is skipped. | See command !duration-limit
  • player song limit - The number of songs that a given player is allowed to have playing or in the queue at a time. Subsequent song requests after the limit is reached are ignored. | See command !player-song-limit
  • queue limit - The total number of songs allowed in the queue at a time. The song that is playing is not included. | See command !queue-limit
  • ignore bind - The key for issuing the !ignore command via chat.
  • skip bind - The key for issuing the !skip command via chat.
  • instructions - Instructions intended for teaching teammates how to request songs.
  • instructions bind - The key for saying the above instructions in chat.
  • current song bind - The key for saying the name of the song that is playing in chat.
  • display commands - true if commands that are bound to a key (e.g. !skip) should be displayed in chat when issued; false if they are to be issued silently through the game console.
  • alltalk - true if chat binds send messages to both teams or only the owner's team; false otherwise. | See command !alltalk
  • automic bind - The key for turning the ingame mic on indefinitely. The mic can be turned off by pressing the normal mic key, which is v by default.
  • autostart mic - true if the mic is to be turned on upon game startup; false otherwise.
  • reload script bind - The key for re-executing the binds script. This is useful for commands that update this script mid-game (i.e. !alltalk).
  • volume up bind - The key for turning up the music volume. After the highest volume is set, the volume wraps around to 0. This only affects the volume of the owner's speakers and not his microphone.
  • volume down bind - The key for turning down the music volume. After the lowest volume is set, the volume wraps around to 100. This only affects the volume of the owner's speakers and not his microphone.
  • volume increment - The amount out of 100 to increase or decrease the volume upon each volume adjustment.
  • enable command vocalization - true if there should be an artificial vocalization every time a command is issued; false otherwise. | See command !vocals
  • share command vocalizations - true if command vocalizations are to be sent through the owner's microphone to teammates; false otherwise
  • steam path - The path to Steam's home directory.
  • steam locale - The value must match the locale you have selected within Steam under Settings > Interface. Valid values: en (English), bg (Bulgarian), cs (Czech), da (Danish), de (German), el (Greek), es (Spanish), fi (Finnish), fr (French), hu (Hungarian), it (Italian), ja (Japanese), ko (Korean), nl (Dutch), no (Norwegian), pl (Polish), pt (Portuguese), pt-br (Portuguese-Brazil), ro (Romanian), ru (Russian), sv (Swedish), th (Thai), tr (Turkish), uk (Ukrainian), zh-hans (Simplified Chinese), zh-hant (Traditional Chinese).
  • steamid3 - The Steam ID used by servers to identify you. This can be left empty unless you have multiple accounts and SourceRadio is choosing the wrong one.
  • mysql path - the path to any MySQL subdirectory containing the file mysqld.exe.
  • mysql server - The MySQL server address. Local servers use localhost.
  • mysql user - The MySQL username to connect to the server with. MySQL ships with the user root.
  • mysql password - The password for the above MySQL user. The default password for root is empty.
  • cached query expiration - The number of days after which a cached mapping from a song request to a YouTube video expires. This gives new videos a chance for discovery.
  • song cache limit - The number of most-requested songs to store on the owner's computer. Approximately 4 GB of storage required per 100 songs.
  • min requests to cache - The minimum number of times a song must be requested before it is stored on the owner's computer.
  • youtube key - A key necessary for gaining access to the YouTube Data API. Instructions on obtaining a key can be found within the installer.

admins.txt

If you wish, you may use this file to grant administrative privileges to specified players. Admins are able to execute most of the available ingame commands. This allows them to complete tasks that normal players can't, such as skipping songs and banning players.

This file should contain the Steam ID (any format) or profile URL of each player you wish to make an admin, with each value on its own line. Alternatively, you can add admins using the ingame !add-admin [username] command, so long as the player is on the same server with you.

Note: As the owner, you do not have to place your ID in this file to grant yourself privileges.

banned players.txt

If you wish, you may use this file to revoke the ability for certain players to request songs.

This file should contain the Steam ID (any format) or profile URL of each player you wish to ban, with each value on its own line. Alternatively, you can ban players using the ingame !ban [username] command, so long as the player is on the same server with you.

blocked songs.txt

If you wish, you may use this file to block certain songs from being played.

This file should contain a list of the YouTube IDs for each song you wish to block. Each ID must be on its own line. Alternatively, you can block songs using the ingame !block-song [song-title] command.

Note: The YouTube ID mOF17bfG0Do corresponds to the YouTube URL https://www.youtube.com/watch?v=mOF17bfG0Do.

Program arguments

  • -g takes the name of the game you are playing as an argument. This command is mandatory.
    • tf2 for Team Fortress 2
    • csgo for Counter-Strike: Global Offensive
    • l4d2 for Left 4 Dead 2
  • -f takes a file path as an argument. This command specifies the path to the game directory if the game is not in the default location.
  • -l takes a file path as an argument. This command runs SourceRadio but listens to the specified file for commands rather than the game log. This command is for debugging only.
  • -d restores the properties in properties.txt to their default values without running SourceRadio.

Third-party libraries used

  • youtube-dl - an open-source program to download videos from YouTube and other video sites.
  • CSCore - an advanced .NET audio library written in C#.
  • YouTube Data API - allows applications to request information from YouTube
  • MySQL Java connector - a standard database driver that grants the ability to use MySQL with applications.

FAQs

Why can't I run the installer? / / My computer thinks this a virus!

Some anti-malware software may flag the installer because it comes from an unknown source. You may have to temporarily disable this software in order to run the installer.

Why does music keep playing after I've finished?

You most likely forgot to use the !stop command when you finished. You can stop the audio playback by going to the Task Manager, clicking More details, selecting AudioController.exe, and clicking End task.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].