1. About

butt (broadcast using this tool) is an easy to use, multi OS streaming tool.
It supports ShoutCast and IceCast and runs on Linux, MacOS and Windows.
The main purpose of butt is to stream live audio data from your computers Mic or Line input
to an Shoutcast or Icecast server. Recording is also possible.
It is NOT intended to be a server by itself or automatically stream a set of audio files.

2. Install

OS X:

Mount the butt-<version>.dmg by double clicking and
drop the butt file to the Applications folder.

Windows:

Just run the butt-<version>-setup.exe as usual and go through the
installer pages.
The default installation path might be unusual, but this way it is possible to install
butt without administration rights.

Linux/MinGW (Windows):

First of all the following libraries have to be installed on your system
fltk-1.3, portaudio19, libmp3lame, libvorbis, libogg, libflac, libopus, libsamplerate, libfdk-aac, libdbus-1, libssl
They are quite common and should be included in every popular linux distribution.

On Ubuntu you can install them with
sudo apt-get install libfltk1.3-dev portaudio19-dev libopus-dev libmp3lame-dev libvorbis-dev libogg-dev libflac-dev libfdk-aac-dev libdbus-1-dev libsamplerate0-dev libssl-dev

On Distributions which don’t have libfdk-aac like debian you can compile without aac support with:
./configure --disable-aac

If you want to disable SSL/TLS support you can run:
./configure --disable-ssl

For compiling on Windows I recommend the msys2 x64 (www.msys2.org) environment.
They have all the needed packages in their pacman repository. Additionally you need to install the libwinpthread-git package.
Make sure that you select the x64 version of each package.

After installing the above libraries you can install butt from source as usual:

  • tar -xzf butt-<version>.tar.gz

  • cd butt-<version>

  • autoreconf -i (only on Windows/MSYS2)

  • ./configure

  • make

  • sudo make install

In case the included configure script or the make process fails on your system, try to create a new configure script by invoking: autoreconf -i and start with ./configure again.

3. Quick start

When you start butt the first time, it will create a default configuration
file in in your home directory (~/.buttrc) on Linux and OS X or at
C:\Users\<username>\AppData\Roaming\buttrc on Windows.

In order to connect to a server, you need to add a new server in the config window.
Just open the settings window and click on [ADD].
Now fill in the input fields with the server data and click on the new [ADD].

Adding Stream Infos is not necessary for connecting to a server.

4. Install AAC libraries

Windows:
  1. Download libfdk-aac-2.dll from here

  2. Go to the installation directory of butt by typing %LOCALAPPDATA%/butt-0.1.22 into the file explorer

  3. Copy libfdk-aac-2.dll into the installation directory of butt

  4. Restart butt

  5. Enjoy AAC Streaming

MacOS:
  1. Download libfdk-aac.2.dylib from here

  2. Open your Applications folder

  3. Right click on butt.app

  4. Select Show Package Contents

  5. Copy libfdk-aac.2.dylib next to the butt executeable in Contents/MacOS

  6. Restart butt

  7. Enjoy AAC Streaming

Linux:
  1. Install libfdk-aac from your linux distribution repository

  2. Enjoy AAC Streaming

5. Configuration

The command line option -c <path_to_file> allows you to define a new standard configuration path.
This makes it possible to have multiple instances with different configurations
running. In case the file does not exists, butt will create a default file.

[Save]: Saves your current settings to the standard configuration
file or to the file that was passed to the -c option
[Export]: Saves your current settings to the given file
[Import]: Loads the selected file and applies the settings

Caution
If you use the -c command line option and import another configuration file by using the
import function, pressing [Save] will overwrite the file that was passed to the -c option.

6. Main Window

The dot matrix display shows you the current state of the butt software.
The states are: idle, streaming, recording.
When in streaming and/or recording state you can cycle through the information by clicking on the display.
You can choose between online duration, data sent, recording duration and data recorded

The [>] symbol shines yellow if butt is connected to a server.
The [O] symbol shines orange if the [start rec. when connected] checkbox is activated.
The [O] symbol shines red if butt is currently recording.

The coloured LED lights (vu-meter) indicate the current input volume. For best listening experience
for you listeners I suggest to have the input volume below or within the orange LEDs.
Never let the volume go up to the red LEDs, they indicate saturation.

Gain slider: The slider is only visible when the little [more/less] button below
the [settings] button was clicked.
With this slider you can attenuate and amplify the input signal between -24dB and +24dB, respectively.
Double clicking the slider resets the gain to 0dB. Use this slider only to fine tune your input signal.
It does not change the operating systems input volume setting. Instead, the input signal is multiplied
by the given factor. Thus adding to much gain will also add lots of noise.

7. Streaming

To start streaming just klick the play symbol.
butt will try to connect to the server until you press the stop symbol.

You can stream with 5 different codecs: mp3, aac+, ogg/vorbis, ogg/opus and FLAC.
In case opus is selected the samplerate is always upsampled to 48kHz.
Good upsampling needs lot of CPU power. You can change the upsampling
algorithm in the [Advanced] settings on the [Audio] tab. Upsampling
is deactivated if you select 48kHz as sample rate.

Unfortunately, it is not possible to update Stream Infos while streaming.
You need to reconnect for updating the Stream Infos.

However, at least you can update the current song on the fly.
You only need to type the song into the Song Name input field at the
[Stream] tab and hit Enter or click [OK].

butt can also update the song automatically from a text file.
The first or the last line of the file must be the name of the song.
As soon as butt detects that the file has been changed it updates the
name of the song on the server.
A plugin for the amarok audio player can be found in the player_plugins/
directory.
Don’t hesitate to write a plugin for other audio players.
Just mail them to me and I’ll add them to the butt package.

Stream infos:

In the [main] settings window you can add stream infos.
This allows you to deliver more details of your stream station.
For example the genre of your music, description of your station, web address etc.

8. Recording

butt is able to record and stream simultaneously in different bit rates.
For example you can stream with 96kbit and record with 192 kbit.
Recording is possible in mp3, aac+, ogg/vorbis, ogg/opus, FLAC or wav.

To record you first need to select the destination folder and specify a file name
in the [Rec] tab.
butt will replace the variables %d, %m and %y with the current day, month and year.
e.g. rec_(%m_%d_%y).mp3rec_(03_28_2008).mp3.
Other possible time variables are %H (hours) %M (minutes) %S (seconds).

With the %i variable you can add an index number to your file name.
This means with rec_%i.mp3 butt first tries to open rec_0.mp3. If that
file already exists, butt tries rec_1.mp3 and so on…

If the start recording when connected checkbox is activated butt starts the
recording immediately after being connected to a server.

To manually start the recording press the record symbol.
To stop recording simply click on the record symbol again.

You can also tell butt to split your recording into separat files every n minutes. Just enter a number higher than 0
into the Split file every [..] minutes field.
Let’s assume your file name is rec_(%m_%d_%y)_%i.mp3 Then the first file is
expanded to rec\_(03_28_2008)_0-1.mp3, the second after n minutes to
rec_(03_28_2008)_0-2.mp3, the third to rec_(03_28_2008)_0-3.mp3, you got it.
If the sync to full hour checkbox is activated the automatic file splitting
is synchronized to the full hour. That means if the time is 8:55 and file
splitting is set to 15 minutes, the second file starts at 9:00 and the third
at 9:15.

9. DSP

6-Band Equalizer:+ The equalizer allows you to change the gain of certain freuqncy bands from -15 dB to 15 dB.

Dynamic Range Compressor:+ Dynamic range compression is used to reduce the difference between
loud and quiet parts of the signal, and thus provide a more consistent
experience for listeners. It is used by virtually all professional
radio stations.

The recommended procedure for configuring the compressor is as follows:

  1. Start playing the loudest audio source you intend to broadcast
    (typically music), and line it up with the master gain slider.

  2. Enable the compressor, and adjust the threshold and gain to suit.
    The attack and release times can generally be kept as they are, unless
    you have a particular reason to change them. You will notice that the
    overall signal level goes down, as it is being compressed.

  3. Adjust the makeup gain to bring the signal back to its original level.

  4. Now test with a quieter audio source (such as your voice), and see
    that the level of that is boosted in comparison. If the quieter source
    is still too quiet, reset the makeup gain to 0 and repeat from step 2
    onwards, until you have a satisfactory result.

This procedure can take some time to find the optimum settings, which
are determined by listening as much as by metering, but it generally
only needs to be done once - butt will save your settings, so once you
have values that work well for your content, you probably don’t need
to adjust them again.

As a rough guide, music should be compressed relatively subtly, with a
fairly high threshold and a ratio typically between 2 and 3. Pure
speech content can be compressed much more dramatically, with a low
threshold and a ratio of 5 or more; this will make the speech easier
for the listener to understand, and will also reduce the differences
between different speakers or by not keeping a very consistent
distance from the microphone.

For mixed speech and music broadcasting, it is recommended to set
butt’s compression as for music, and then have an additional
compressor (typically a hardware module) between the microphones and
the final mix.

10. Secure Connection over SSL/TLS (Icecast only)

To enable encryption for a certain server, you only have to activate the
Use SSL/TLS checkbox in the server settings. Please bear in mind that the
server must be configured with SSL/TLS support in order to make this work.
The connection will fail if you activate SSL/TLS for a server which does not
support encryption.
If the certficicate validation fails, butt will ask you if you want to trust
that certificate anyway. If you click on [TRUST] butt will establish the
connection and remembers the decision for that certificate and server.
By pressing the button [Revoke certificate trust] you can revoke that
decision.
If you want to specify your own file or folder with CA certificates,
you can enter the path to the file or folder in the [TLS] tab of the
settings window. Usually you should not need to enter any information there.

11. Command line control

butt can be controlled via command line.
Run the following commands to control a running instance of butt from your command line or a script:
butt -s: Connect to the current selected server
butt -d: Disconnect
butt -r: Start recording
butt -t: Stop recording

12. Uninstall

MacOS:

Delete the butt.app from your Application folder and
remove the configuration file from /Users/<username>/.buttrc

Windows:

Run the Uninstaller from the butt folder in your windows start menu.

Linux/MinGW:

Run sudo make uninstall from the source tree and
remove the configuration file from /home/<username>/.buttrc

13. Contact

butt at danielnoethen dot de

14. Donate