An audio logger for radio stations
Clone or download
Latest commit 2a58115 Oct 8, 2018
Permalink
Failed to load latest commit information.
.ci Change naming of output files, install b2 on windows Oct 8, 2018
build-aux Try The Archive m4 boost macros Oct 1, 2018
lame Moved lame.h into it's own dir Sep 18, 2018
spdlog Correct spdlog include Sep 29, 2018
.cirrus.yml Get the OSs right, cal Oct 8, 2018
.gitattributes Added method decl for removing old audio files Feb 18, 2017
.gitignore Removed tar.gz Oct 5, 2018
.gitmodules Add spdlog dep Sep 28, 2018
CHANGELOG.md Display audio caps when initializing device in debug mode Sep 20, 2018
Dockerfile Re-add spdlog as sub-git Sep 29, 2018
LICENCE Bump version number and add licence details Sep 18, 2018
Makefile.am Add linux dist scripts Oct 8, 2018
README.md Add the cirrus bug to Readme Sep 24, 2018
RtAudio.cpp Lists available devices + caps Dec 13, 2016
RtAudio.h Figured out level monitoring. Doesn't do much yet though... Feb 21, 2017
autogen.sh Added autotools stuff Sep 18, 2018
chronicle.cpp Cleared up device sample rate reporting Oct 8, 2018
chronicle.h Version bump 1.0.1 Oct 8, 2018
configure.ac Got version bump wrong 😁 Oct 8, 2018
dist-script-win32.sh Clean up dist scripts Sep 20, 2018
dist-script-win64.sh Clean up dist scripts Sep 20, 2018
parse_opts.cpp Formatting Sep 12, 2018
parse_opts.h Formatting Sep 12, 2018
screen.cpp Limit audio bar width to the size of the console Sep 19, 2018
screen.h Remove ncurses.h include Sep 28, 2018
sndfile.h It works! Basic on-the-hour every-hour timer Jan 13, 2017
sndfile.hh It works! Basic on-the-hour every-hour timer Jan 13, 2017

README.md

Chronicle

Build Status

What is Chronicle?

Chronicle is an audio logger, designed for radio station use.

At the moment, it records audio from specified input to an audio file, on the hour, every hour. Once the recordings have become outdated, they will be deleted. As such, it is a full rotating logger.

Getting Chronicle

Windows x32 and x64

Windows users (both 32 and 64 bit) can simply download the latest compiled binaries from the Releases page. Simply extract and run. Hooray!

Linux

With binaries

Linux users can also download the binaries. However, you will need to manually install the pre-requisites:

  • RtAudio, (librtaudio-dev)
  • libsndfile, which is in most package managers. (libsndfile1-dev)
  • Boost, which is in most package managers (libboost-all-dev).
  • ncurses, which is available in most package managers (libncurses5-dev).
  • LAME encoding library, which is in most package managers (libmp3lame-dev).

Compiling from scratch

Or, you can compile chronicle from scratch. You'll also need to download the build toolchain: build-essential and pkg-config

Bleeding-edge source

If you want the latest bleeding-edge version, clone this repository and build from source:

git clone http://hcr923fm/chronicle
cd chronicle
./autogen.sh && ./configure && make && make install

Stable builds For the latest stable build, download the source tarball and run

tar xvf chronicle-*
ch chronicle
./configure && make && make install

.debs will happen soon!

Usage:

chronicle [-h | --help]
chronicle [--licence]
chronicle [-l | --list-devices ]
chronicle [-d | --directory OUTPUT_DIRECTORY] [-f | --filename FORMAT] [-i | --input-device DEVICE_ID]
          [[-a | --max-age MAX_FILE_AGE] | --no-delete] [-s | --audio-format [WAV | OGG]]

Where:
    -h | --help          Prints this help message.
    --licence            Prints the licence information for this software and libraries that it uses.
    -l | --list-devices  Lists the available input devices with their IDs.
    -d | --directory     Sets the directory to save the logged audio to. A trailing slash is not required, but may
                             be added. On Windows, if using a trailing slash, use a trailing double-slash.
                             Defaults to current directory.
    -f | --format        strftime-compatible format to use when naming the audio files.
                             Defaults to %F %H%M%S .
    -i | --input-device  The ID number of the input device to record from. A list of input devices and their ID
                             numbers can be obtained with `chronicle -l`.
                             If unspecified, the system default audio recording device will be used.
    -a | --max-age       Sets the maximum age before audio files will be automatically deleted.
							 Use the format <length><unit>, where unit is < s| m | h | d > for
							 seconds, minutes, hours and days, respectively.
							 So, to specify 25 hours, pass '-a 25h' .
				             Defaults to 42 days, in accordance with OFCOM rules.
    --no-delete          If passed, Chronicle will not delete old audio files, so they can be manually managed.
		                     Incompatible with --max-age.
    -s | --audio-format Sets the audio format to use for the recorded audio files.
                             Acceptable parameters are:
                                 OGG | Ogg Vorbis (.ogg)
                                 WAV | 16-bit PCM WAV (.wav)
                                 MP3 | MP3 VBR, quality 3 (.mp3)
                             Defaults to WAV.

Known Issues:

  • Audio devices with more than 2 channels will default to the first two channels. This is perfectly suitable for standard line-in/mic-in audio devices and sound cards where the channels are split up into pairs (which most do), but any sound card that presents multiple channels in a single device will automatically record the first two.
  • All audio is resampled to 16bit for conversion to PCM Wave. Although theoretically an issue, this is not likely to affect the vast majority of users.
  • Due to the type sizes used in the underlying audio libraries, the audio monitoring graph on the 32-bit version is less reliable at very low levels. This does not affect the quality of the recorded output.

Buy me a coffee?

If you find Chronicle to be useful, fancy buying me a coffee?

I'm on Flattr and PayPal!

Copyright

Copyright 2016-2018 Callum McLean. Distributed under the MIT Licence. See LICENCE for details.