what is hldj?
play. listen. entertain. enjoy
Half-Life DJ lets you play audio files over the voice communication system in any
Half-Life or Source-based game. Play your favorite music for others to enjoy, take requests, or play hilarious audio clips -
HLDJ lets you keep your audience entertained!
HLDJ features an in-game interface that displays your audio files
directly in console; you can easily browse & search your audio files while still remaining in-game! Setting
up HLDJ is also easy with a guided setup process for new users.
- in-game file browser
- interactive console interface
- integrated mp3 converter
- quick & easy setup
- customizable profiles for each game
- loads spraypaints for HL games
- works with Half-Life & Source games
- does not affect VAC
- open source
wrench in the pipeValve's new distribution system, SteamPipe, has thrown a wrench in the works for many games, tools, and mods working with Steam. This includes HLDJ. After letting the dust settle a bit after the first few updates, and Valve moving the first few games over to the new system, it's become clearer what the changes bring:
- a new filesystem structure (VPK)
- a new way of specifying search paths
spilt silkIn fix-one-thing-break-another style, the latest update to the Source engine introduces the new higher-quality SILK voice codec (as used in Steam voice) but also disrupts the default functionality of HLDJ on most servers. The new codec is enabled by default via the sv_use_steam_voice console variable and has the unsavoury side-affect of disabling the use of voice_inputfromfile which is needed by HLDJ to play audio. Unlike a past update which introduced the sv_allow_voice_from_file cvar for some Source games and was opt-in (no effect on default functionality), the new sv_use_steam_voice cvar applies to most Source games and is opt-out, meaning server operators must explicitly disable it in order to have their servers return to normal. If you're a server operator and would like to continue using HLDJ on your server, disable the new codec by setting sv_use_steam_voice 0. If you play on a server where HLDJ is an integral part of the fun, remind your server operator to do the same!
open sesameHLDJ has always been open source in the sense that anyone asking for the source could freely have it. Not too long ago, many may have also noticed that a SourceForge page recently crept into existence. So far, it's all been under the radar, waiting on efforts to make the state of the code and repository more "presentable". There's been some reorganizing (well, a lot), but other than that the only real change has been the realization that flying under the radar wasn't going to make it any more presentable. So although the documentation may be sparse, and the API a little wanting in the protocol and interface departments, it is what it is, which is finally open and available for public perusal. Check out the Downloads page, source code section, for links to the git and subversion repositories (svn repo soon to be taken down in favor of git) as well as links to the SourceForge page and git browser. As with any source code written almost entirely without documentation, view at your own risk to sanity.
It's worth noting that HLDJ is more than just a tool for playing audio in-game. It facilitates a form of inter-process communication between the game and itself, allowing just about anything to be done within game (while integrating with it) that would ordinarily be done outside of it via an external app. Things like downloading a 3rd party map and installing it to your game folder and loading it; or displaying the time or some stats downloaded from your community webserver in console. HLDJ is just one example of what is possible. For those looking to work with HLDJ to add their own functionality or a plug-in, you can always seek help or get more info on the forums.
audio converter now integratedCommand line tools are slick, but outside of hacker circles and hollywood operating systems they can fall out of favor. That's why the audio converter has now been integrated into HLDJ and given a face. Among the somewhat obvious and intuitive controls are Engine, Volume percentage, and Quality. Be sure the first is set to the appropriate engine for your game (HLDJ will try to guess based on the current selection); the second, volume control, is key to creating audio that isn't blaring... the difference between music and snap-crackle-earbleed (the default of 85% is a good starting value); finally, the quality control determines the accuracy (quality) of the conversion process, so unless you happen to be on a hollywood OS running dangerously short on time as the entire server threatens to explode around you, it's highly recommended to leave this setting at its default value (Best) and wait a few extra minutes- the difference in quality is worth it.
For those that do enjoy command lines, you'll be happy to know the latest update introduces a few of them. You can type them at console or add them to your shortcut properties for convenience and speed (if you like mysteries, you can even try to figure out why an "exit" option was included). I won't bore you with the details, here are the goods:
"hldj.exe -s < index of game to select > -c [ start | setup | options | converter | help | minimize | exit ]"
Still more news on the user interface: many will have noticed that Add All has been streamlined further, now only requiring a play audio key and audio directory (the game directories are grabbed from the registry, or if for some reason that's not possible (i.e. you are not running Windows), it will fall back to scanning the drive). As a final note, game launching has been improved, so if you've disabled this feature in the past due to problems, feel free to give it another go.
double your bits, double your funNow that the dust cloud has settled around the alpha, it's time to properly introduce the updates that were only hastily mentioned before. The smallest of these is the new 64-bit release, which finally offers a native flavor of HLDJ for 64-bit users (you could even say it removes some of the "WoW factor"). It's small because unlike other updates, it has no effect on functionality. Really, the only joy to be had is in savoring the thought of a few extra microseconds saved to optimization. Cheers to the little things.
at least they're not talking to themselvesRecently it seems an increasing number of users have been hearing themselves instead of their audio files. Thanks again to our forum members, we were able to track down the source of this problem to a lack of user permissions in Windows 7 (explaining why it may affect only some users). We're on the case, and the latest 1.6.0 alpha 7 addresses this issue (along with other minor updates) and should fix it for the majority of those experiencing this problem. Whether 1.6.0 has any affect on people talking to themselves has yet to be determined.
are we there yet?Who needs a perfect shot, when you have a high rate of fire, right? Repairs were speedy once it was apparent I had unknowingly undone a previous 1.5.05 fix. I guess old habits die hard, but the alpha still lives.
in for repairsThanks for your help, as some users have let me know, I'm no perfect shot. I'm temporarily recalling 1.6.0 alpha until the beta is ready, but I'm glad for the feedback sooner rather than later. You can still download 1.5.05 beta from the downloads page.
sooner and laterWriting update news, changelogs, manuals, these all take time; time away from actually testing the update in the wild. That's why rather than sitting here reading through a bunch of well-documented changes at a later time that's not now, you can actually test said changes, right now (at your own peril!) in the 1.6.0 alpha. Maybe you'll notice a few big changes, or a few bigger bugs; and maybe I'll throw up a beta later, or maybe - just maybe - I nailed it on the first shot this time around.
coming up: new updatesSo what's brewing over here at hldj.org? Aside from the usual mix of behind-the-scenes improvements and fixes, you might have noticed the ninja updates running dry a while... this can mean only one thing: bigger updates are stirring. What can you expect from the next batch?
- integrated mp3 audio converter
- 64-bit version of HLDJ
- command-line options
- improved launching of Source games
audio converter alphaAs promised, the audio converter is here! It's in alpha stage right now which means command-line interface and mp3's only. Fortunately, for the click-happy among us there are batch scripts available for click-&-run use. Just download and place both the audio converter and batch script into a directory containing your mp3 files. Run the script and watch as the directory is (slowly) populated with wav files, correctly formatted for use in-game.
Advanced users can run hldjaconv.exe from the command-line for usage info. Adjustable options are rate, gain, and quality. If conversion is unbearably slow, adjust quality; if audio is too loud or crunchy, lower gain. Naturally, a full-fledged audio editor is still preferable for handling these finer details; however, by virtue of its libraries, the HLDJ audio converter is arguably one of the highest quality converters available. The goal now is to integrate it and tweak the conversion process until it's fast enough to run on the fly.
free samplesWho can resist those? With the new version, I decided to whip up a few more sample audio files for variety: sample_src.wav, sample_src2.wav (the original sample is now sample_src3.wav). The plan is to eventually include a few in the release so users will have something to test with a fresh install.
hard or soft: no, not ice-creamAs alluded to earlier, HLDJ 1.5.02 will now attempt to create hard or soft links when you select an audio file (rather than make a full copy). This not only results in more efficient disk usage, but more importantly, load times will become nearly negligible. For those who have entire albums or cycle through songs faster than weapons, this update should noticeably improve response times.
There are some limitations though, depending on the location of audio files and the operating system:
- files on a network or flashdrive won't be linked
- XP users should keep their audio files on the same volume as their games in order to benefit from hardlinking (XP does not support symlinks)
HLDJ Sound LibraryCreated by Radio Raheem (an avid user, and maintainer of the HLDJ Steam group) HLDJ Sound Library has just made it even easier to share and download audio files for HLDJ. Check it out here: http://hldj.ucoz.com
"Radio Raheem has just released HLDJ Sound Library, what it does is it installs a small program that lists all converted HLDJ songs and lets you download them straight into your HLDJ audio folder, you can also listen to them before you download, it's categorized, and it includes a search option. It also lists how many times a song has been downloaded and who uploaded it. If you are an admin you can easily add songs."
coming up: audio converterIt's been on the "Future features" list for ages now, but the integrated audio converter is finally nearing completion. At about 70% done, it's capable of converting from mp3 to mono-channel, 16bit wav (using libmad); all that is needed now is to integrate resampling (via libsamplerate) to either 8000hz or 11025hz. With the need for manual conversion eliminated, I think we may just see the end of the 'Help' forum...
coming up: symlinksI'm not entirely ready to give up XP, but with everyone moving to the greener pastures of Windows 7, it does at least allow me to make use of some neat new features. One of which is going to be Symbolic Links. They've been around for years on Linux, but are only now making their way to Windows. They'll allow HLDJ to simply create a 'link' to your audio file rather than having to make a copy of it. This will save many precious seconds of loading, especially for those of you who have entire discographies in one wav file!
keeping it betaMany of you may be wondering "what's up with the permanent beta?", and "when's the next official release coming?". I'll be honest, official releases mean I can't sneak in ninja-updates without having to worry about updating version numbers, manual, etc. Keeping it 'beta' means I can update it faster and put in fixes on the spot, albeit without anyone really being aware of it. Sometimes I myself forget what's gone into HLDJ 1.5.0 since the last version, and the changelist is slowly growing large enough to need its own documentation...
So what are some of the things that have been changed?
Here's the most important stuff:
- Random song feature: "hldj_random" ("hldjr")
- Setup and Add All no longer require a game directory, this info is now grabbed from the registry.
- Network paths and drives are now supported, which means you can load audio files from a USB flash drive or even across a network (lan party anyone?).
- New GUI icons which hopefully resemble the actions they perform.
- Automatic handling of 3rd-party SourceMods (no more "extra steps" required)
- and a whole slew of bug fixes.