The preferences window is easily the window most in need of documentation, so here it is:
The Feature Set frame allows you to set the amount of window space to a minimum. It also minimises CPU usage by doing practically no audio mixing. You get just one player, no crossfader or microphone when you choose the Basic Streamer option. Choosing Start Mini will cause IDJC to be in that state automatically when the application is started.
The Audio Meters frame contains options for saving screen space by allowing you to remove sound level meters from the main application window.
The Miscellaneous Features frame is where you can turn on or off some of the optional features of IDJC of which I will mention, the DJ Alarm which causes an audible beep to the DJ but not the listeners whenever the music is about to come to an end.
A Stream Normalizer is provided to help even out the sound level between differing audio sources.
There is an adjustment for the DJ audio level which affects sound to the headphones only and to the right of that a setting for the Player Resample Quality. What this does is allow you to set a sound resampling audio quality which does not overload your CPU.
The Player Settings At Startup frame is where you can set which playlist mode or player button settings you prefer that will survive an application restart.
Now this is complicated!
What I have done here is to implement a pretty much fully featured Compressor and Noisegate. I will expand on the abbreviated labels and I leave it up to you to find out what they do at a later time, but first I will tell you why I put this in.
Most computer audio isn't very good. The microphones that come with your computer are the cheapest that there are. Not only insensitive, but when you do turn them up electronically what you tend to get is a lot of noise and mains hum accompanying the signal.
What I have done here is make the audio loud without going into clipping or hard limiting, which would sound unnatural, and while this generally makes the audio more noisy, I have implemented a noise gate in order to counteract some of that.
What the compressor effectively does is ride the volume control, which is something you may do yourself, when watching TV at night. Turning the volume up for the quiet bits and quickly turning it down for the loud action scenes that you don't want to wake the neighbours with.
Here is a list explaining the meaning of the compressor terms from left to right and top to bottom. The terms are similar to the ones used by the electonic units you can find in recording studios.
Here similarly are the Noisegate terms.
Thats the complicated bit over and done with. Now if you will just scroll down there is more.
What we have here are a few more microphone settings.
Bass-cut is a high pass filter that can reduce the amount of mains hum or infrasound.
Headroom reduces the players volume by this amount when the Microphone button is pressed in the main window.
The invert boxes are for when you are running two microphones and one of them is out of phase. Just click one of the boxes to fix it.
The level boxes are provided so you can reduce the gain of the loudest microphone so that they can both operate on the same compressor and noisegate settings. They are independantly compressed however. Just that the control settings for both are the same.
The L and R sliders are for stereo mixing your microphones. If you are using just one then keeping them at each side is good, otherwise I suggest setting these at 1⁄3rd and 2⁄3rds the way across.
Finally, you have the option of turning off microphone audio to your headphones. This is useful if you find your own voice distracting for whatever reason.
The X-Chat feature works in conjunction with the X-Chat 2 plugin, which needs to be loaded into X-Chat in order to work. This can be accomplished by either copying or symlinking the plugin to your ~/.xchat2 directory so that it will automatically start whenever X-Chat does or by loading it manually from within X-Chat. The plugin filename is idjc-announce.py and is typically installed to /usr/local/share/idjc/ or /usr/share/idjc/. Track announcements and timed messages are only sent when you are actually streaming.
The Track Announcer sends a new message whenever the song changes.
Latency is the estimated latency in seconds of the server. Servers like to buffer lots of data so that they can supply a steady stream of audio to the listeners despite the poor connection the DJ may have to the server and the listeners own media players like to do the same. Unfortunately this introduces latency that can be upto around 15 seconds. Without the latency setting in X-Chat your announcements could be happening 15 seconds before the listeners hear your song. Set this number so that your announcements coincide as well as possible to when the listeners actually start hearing your song.
Nick needs to match the nick you are logged in as. This is a precaution for just in case you are logged in under two different nicks. Without this precaution you would end up announcing the track twice or once under an unintended nick.
The Message can consist of placeholders like %s for the song you are playing. A full list of valid placeholders is shown to help you.
Channels is a list of channels in a comma separated list that you want to send your message to.
IRC Message Timer will send a new message every so many minutes.
Interval is the amount of time in minutes between messages.
The event feature allows you to make changes to the mixer settings or JACK audio routing linked to events such as the starting or shutting down of IDJC or microphone mute/unmute. Simply type in the appropriate console commands. Suggested programs to consider using would be jack_connect, jack_disconnect, or amixer.
IDJC uses Jack Audio Connection Kit for its audio connections. The boxes provided for you are for the entering of port names for IDJC to bind to.
The first and last pairs can bind to any JACK output port. The Aud and Str outputs can bind to any JACK input port. Typically on the sound card so that you can hear yourself.
The Aux input port allows you to stream from an external JACK application by pressing the jack plug icon in the main window.
Typing jack_lsp in a console will give you a list of valid JACK ports.
In our example I have opted to bind the left microphone connection to the same output port as the right microphone connection. This is a good idea if you are not needing stereo as you can choose the one input that gives you the best signal to noise ratio.
The Set button locks in the new setting, and the Save button preserves that setting across application restarts.
Other Windows In IDJC
Main Window Server Jingles