NAME FishSpeak - a voice communication software without bells and whistles SYNOPSIS FishSpeak -server [-portable] [config_file] [-serverIP=ip] [-serverPort=port] [-serverPW=pw] [-authFile=filepath] [-noEncryption] [-CLI] [-alwaysOnTop] [-minimizeToTray] [-limiterAttack=ms] [-limiterRelease=ms] [-log=path] [-loop] [-softclip=percentage] [-numThreads=count] [-IPv6] [-IPv4] FishSpeak -serverIP=ip [-portable] [config_file] [-serverPort=port] [-serverPW=password] [-showSetup] [-userName=name] [-userPW=password] [-noEncryption] [-connect] [-noReconnect] [-bufferCount=count] [-alwaysOnTop] [-minimizeToTray] [-volume=vol] [-fxVolume=vol] [-allowMultipleClients] [-rateIn=rate] [-rateOut=rate] [-AGCGain=gain] [-AGCInc=inc] [-AGCDec=dec] [-IPv6] [-IPv4] [-hkMuteMe=hkdef] [-hkMuteThem=hkdef] [-hkVolumeUp=hkdef] [-hkVolumeDown=hkdef] [-hkPTT=hkdef] [-hkPTM=hkdef] DESCRIPTION FishSpeak is a fully featured but minimalistic voice communication tool. It is freeware and may be copied freely as long as the entire package - including all support files (readme, license, etc) - is copied. But you may not collect any money for providing any services in relation to FishSpeak without prior written authorisation by the author. That is, but not limited to, providing server hosting, distribution and suchlike. web: Options that have to be specified on the command line: -portable Modify the location where application specific data is stored. Instead of the location specified in the subsection FILES, the files are actually stored in a subdirectory named ".user" alongside the application. -showSetup Force display of the configuration window. Useful if you unchecked the checkbox to display the configuration window on every start. config_file A text file containing one option per line without the leading "-". -- server serverPW=ASecretPassword noEncryption -- Multiple configuration files can be specified. They are read left to right, so you can overwrite options in files by re- defining them in a config file and specifying it further on the right on the command line. Options that can be specified on the command line or in a config file: -server Run FishSpeak in server mode. -serverIP=<ip> * Client: required. Specify the IP address (or fully qualified domain name) of the server to connect to. * Server: restrict listening to this IP address. The default is to listen on all IP addresses. -serverPort=<port> Specify the UDP port the server is running on. Default: 12340 -serverPW=<pw> Set the password required to connect to the server. Quote the password if it contains whitespaces. Enables encryption of outgoing data stream (see -noEncryption) E.g. -serverPW="This is secret" -IPv4 As of release 9 FishSpeak fully supports IPv6. -IPv6 Not specifying IPv4 or IPv6 results in a dual-stack- scenario, where both protocols are used. This should work fine in all but three cases: 1) Windows XP: Doesn't support dual-stack, hence it's restricted to one protocol only. By default that is IPv4. If you need to connect to or host a server via IPv6 you have to use the -IPv6 parameter. 2) Connecting to a server by its domain name may resolve that domain name to an IPv6 address. If you can't access that server via IPv6 you need to use -IPv4 to restrict FishSpeak to IPv4 name resolving. 3) Hosting a server on a machine with IPv4 and IPv6 addresses can be restricted to one of those network- families by the respective parameter. -noEncryption Don't encrypt the outgoing data stream. For encryption to be enabled a server-wide password (-serverPW) has to be set or an user-based authentication file (-authFile) needs to be used. -alwaysOnTop Windows only. Keep the window always on top of other windows. -minimizeToTray Windows only. Show the window in the system tray only, when minimised. SERVER ONLY -CLI Don't display a window. Output is sent to stdout. -noGUI Windows: without a window the server can be closed with the Task Manager only. -authFile=<filepath> Use the file at <filepath> for user-based authentication. The file contains one user per line, where each line has the format "username:password" (without the quotes). When an authentication file is used, no anonymous access is allowed (that is: connecting without user+password if there is no server-wide password defined) Note that a password set via -serverPW still works as expected. -log=<filepath> Absolute path of a logfile where server events (users connecting, disconnecting, changing rate) are logged to. If -log is not specified those events are not logged. -numThreads=<count> Set the number of threads the server should use. The default is the number of cores FishSpeak can detect, which is the best setting. Well, most of the time, anyway. You may experiment with different settings. Note: CPUs with Hyper-Threading are detected as CPUs with multiple cores. You should restrict the number of threads to the actual number of cores explicitly as this will very likely yield a better performance. -loop Return the incoming audio back to the sender too. -softclip=<val> Enable soft clipping above the specified percentage. Default: 96. To disable soft-clipping (= use hard clipping) set the value to 100. -limiterAttack=<val> 0-250. Limiter's attack time in milliseconds. -limiterRelease=<val> 0-5000 Limiter's release time in milliseconds. Server as Windows service -installSVC=<filepath> Installs a FishSpeak server as service, using the specified file for configuration. Make sure that filepath is absolute and you don't remove that file while the service is installed as service. The service will be named "FishSpeak (<filename>)". So if you want to install multiple services, make sure the configuration files have different filenames. -uninstallSVC[=<filename>] Uninstalls a FishSpeak service. Using -uninstallSVC without parameters lists the installed FishSpeak services. Specify the name of the service you want to uninstall to, well, uninstall. e.g. -installSVC=C:\MyFSConfigs\serverA.fsc -uninstallSVC=serverA.fsc CLIENT ONLY -userName The username and password to use, when connecting to a server -username -userPW using user-based authentication. -connect Connect to the server immediately on application's start. -noReconnect Don't reconnect to the server automatically if the connection was dropped. -bufferCount=<count> Number of audio buffers used to buffer the incoming audio stream before playback. Decrease the number to reduce latency at the cost of higher CPU usage. If the audio starts to stutter, this value is definitely to low. Default is 10. 3 should still work fine. But that really depends on your hardware configuration. -volume=<vol> Set the master volume in 10 steps. -5 (silence) to +5 (+100% volume) -fxVolume=<vol> Set the volume of FX sounds (Dis-/Connect, Mute, ...) 0 (silence) to 10 (100% relative to master volume) -allowMultipleClients Windows only. Allow multiple clients to run at the same time. This is the default on everything non-Windows. -AGCGain=<gain> The maximum gain for the automated gain control. Set to 0 to disable AGC completely. -AGCInc=<dB/s> Maximum volume increase in dB/s. -AGCDec=<dB/s> Maximum volume decrease in dB/s. -rateIn=<qual> Select the bandwidth/quality for the incoming audio stream. -rateOut=<qual> Select the bandwidth/quality for the outgoing audio stream. highest quality: 4 lowest quality: 0 Default: 4 -hkMuteMe=<keychain> Toggle "Mute Me". -hkMuteThem=<keychain> Toggle "Mute Them". -hkVolumeUp=<keychain> Increase the master volume. -hkVolumeDown=<keychain> Decrease the master volume. -hkPTT=<keychain> Push-To-Talk. -hkPTM=<keychain> Push-To-Mute. keychain is a string in the form of <key>+<key>+.. Do not separate them with any whitespaces. <key> values: a - z / A - Z, 0 - 9 SPACE, BACKSPACE, TAB, RETURN, CAPSLOCK, PLUS, MINUS, COMMA, PERIOD, COLON, SLASH, GRAVE, LBOXBRACKET, RBOXBRACKET, BACKSLASH, QUOTE, PRINT, SCROLLLOCK, PAUSE, PAGEUP, PAGEDOWN, END, HOME, INSERT, DELETE, LEFT, UP, RIGHT, DOWN, NUM0 - NUM9, NUMADD, NUMSUB, NUMDIV, NUMMUL, NUMDEC, ESC, F1 - F11 <key> under X11: XStringToKeysym() is used. While on Windows multiple keys are allowed X11 and OS X only allow a single key to be used as hotkey. e.g. <modifierlist>+R+E works on Windows only. <key> for modifier keys: * Windows: LCONTROL, RCONTROL, LSHIFT, RSHIFT, LALT, RALT, WIN, APPS * OS X: CONTROL, SHIFT, COMMAND, OPTION * X11: CONTROL, SHIFT, MOD1 - MOD5 Examples: -hkPTT=APPS -hkVolumeUp=SHIFT+UP -hkVolumeDown=SHIFT+DOWN -hkMuteMe=WIN+T USERINTERFACE '<' and/or '>' to the left of "Connected to..." displays the used encryption, if any. '<' is displayed if the client's incoming data stream is encrypted. '>' is displayed if the client's outgoing data stream is encrypted. SOUNDS To replace one or multiple sounds that are played when an event happens, put an ogg-vorbis file of your liking in the same directory as the executable. (For OS X that is the bundle's "Resource" directory) Format: Ogg-Vorbis, mono, 44.1kHz, 16bit. Filenames: connect.ogg, join.ogg, part.ogg, ack.ogg FILES Directory containing the logfile and the client's configuration: Windows XP \Documents and Settings\<user>\Local Settings\Application Data\FishSpeak\ Windows Vista & Windows 7 \Users\<user>\AppData\Local\FishSpeak\ Mac OS X ~/Library/Application Support/FishSpeak/ FreeBSD & Linux ~/.FishSpeak/ AUTHOR Ingo Leitgeb THANKS & GREETINGS Hellcook, Jana, noXu, Sheep, Wolfhound HISTORY R11 * 02011-1-1 Just for the numbers: release 11 on 1-1-11 Fix: [Windows] user-list became invisible when changed, while the window was minimised Change: better handling of audio null-devices Other: update of all 3rd party libraries R10 * 02010-04-22 Fix: [Windows] Possible 100% CPU usage when running server multi-threaded R9 * 02010-03-16 Add: dedicated logfile for server events (see -log) Add: IPv6 support. See -IPv4/-IPv6 if you encounter a problem while connecting/hosting Change: range of bufferCount-parameter changed to [3;30] Change: new default of bufferCount is 10 Fix: [POSIX] server timing-out clients after up-time of more than a month Remove: ancient debug messages in logfile R8 * 02010-01-01 Add: Button to return to setup window Add: Added "username" as alias of "userName" parameter Add: Support for 64bit on all platforms Fix: Message box if capturing device could not be opened and returning to setup Fix: Supporting non-ASCII characters in audio-device names Fix: Ignoring UTF-8 BOM in configuration files Fix: Disabled AGC lowering volume even when AGC was disabled Fix: [OX X] Global hotkeys ignored specified modifier keys Fix: [OS X] Reduced high CPU usage because of GUI repaints R7 * 02009-07-18 Add: [Win32] server as service (see -installSVC) Add: [X11] global hotkeys Fix: config and authentication files not working if line-break was \r\n Fix: non-value parameters in config file not working Fix: seemingly random crash Fix: "allowMultipleClients" works in config files, as documented Fix: haywire user list when connecting to server with more than 2s round-trip-time R6 * 02009-05-04 Support user-based authentication [see -userName -userPW -authFile] Server taking advantage of multi-core CPUs [see -numThreads] Allow replacing built-in sounds [see SOUNDS] Added parameter -noGUI, which is an alias for -CLI as it seems more natural on Windows. Windows: Reduced CPU usage (server by ~75%; client by ~50%) OS X: Fixed malformed folder names when using -portable R5 * 02009-03-12 Server on POSIX systems: Graceful exit on SIGTERM and SIGINT FreeBSD: Fixed crash on exit R4 * 02009-03-07 Changed UI of server No libX11 required for server in CLI mode Changed parameters: autoReconnect -> noReconnect forceConfig -> showSetup Fixed bug that could result in endless connect/disconnect-cycles Windows on X11 work with color depths < 24bpp now R3 * 02009-03-02 First public release Redirected to production patch server Encrypts by default Numerous smaller (and bigger) bug fixes R2 * 02009-01-04 Fixed bugs in UI R1 * 02008-12-27 Initial private release COPYRIGHT 02008-02011 nXperience - Ingo Leitgeb, Steyr/Austria See LICENSE.txt for a list of used 3rd-party libraries and their respective licenses. DISCLAIMER THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.