Skip to content

leggewie-DM/audio-recorder

 
 

Repository files navigation

Audio Recorder Application <https://launchpad.net/~audio-recorder>

This amazing program allows you to record your favourite music or audio to a file. 
It can record audio from your system's soundcard, microphones, browsers, webcams & more. 
Put simply; if it plays out of your loudspeakers you can record it. 

It has an advanced timer that can:
* Start, stop or pause recording at a given clock time.
* Start, stop or pause after a time period.
* Stop when the recorded file size exceeds a limit.
* Start recording on voice or sound (user can set the audio threshold and delay).
* Stop or pause recording on "silence" (user can set the audio threshold and delay).

The recording can be atomatically controlled by:
* RhytmBox audio player.
* Banshee audio player.
* Amarok, VLC, Audacious and other MPRIS2 compatible players.
* Skype. It can automatically record all your Skype calls without any user interaction.

This program supports several audio (output) formats such as OGG audio, Flac, MP3 and WAV. 

User can also control the recorder from command line with --command <arg> option.
See audio-recorder --help for more information.

Please read the README and INSTALL files before compilation.

Important files:
****************
README	- This file.
INSTALL	- Compilation from source and installation.
COPYING	- The license text.
AUTHORS	- Authors and contributors.
NEWS	- Recent news, releases.
debian/README - Instructions to create a Debian/Ubuntu package.

Compilation from source and installation:
*****************************************
Read the INSTALL file for detailed information about compilation of this program.

Runtime:
********
Runtime (running this program) has currently these dependencies. The package names are from 
Debian/Ubuntu but you should find similar (and newer) packages in any other Linux-distribution.

libgtk-3-0
libglib2.0-0
appindicator3-0.1
libgstreamer1.0-0
gstreamer-pbutils-1.0
gstreamer1.0-pulseaudio 
gstreamer1.0-plugins-base 
gstreamer1.0-plugins-good
libdbus-1-3
 
Get also these packages to record MP3 and M4A formats:
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-ugly
gstreamer1.0-libav

For developers:
***************
The configuration uses Automake/Autoconf tools. The most important files are: 

Makefile.am  - General build and installation instructions.
configure.ac  - Configuration of source with library existens and error check.
pixmaps/Makefile.am - Installation of icons.  
src/Makefile.am - Build and installation instructions. Contains list of all source files.
po/POTFILES.in - Language support. List of source files that has translatable text.

The general sequence of commands to re-configure the source is:

cd audio-recorder*
aclocal
autoconf
automake -a 

Or as one-liner:
aclocal && autoconf && automake -a

Or, run:
autoreconf -i

Then configure, compile/link and install:
 
./configure  # configure produces the final Makefile (food for make).
make
sudo make install  # run this as root or sudo.

File locations:
***************
* "Make install" will copy the audio-recorder executable to /usr/bin directory.
This default location can be changed during the ./configure phase.
Run ./configure --help for more instructions.

* Pixmap images are copied to /usr/share/pixmaps/audio-recorder/.

* Icons are installed to /usr/share/icons/hicolor/*/apps/.

* The HTML help files from audio-recorder/data/ are by default copied to /usr/share/audio-recorder/.

* This program uses now DConf registry to store program settings. The older version used GConf.
All valid configuration keys must be defined in the schema file "org.gnome.audio-recorder.gschema.xml".
You can find it in the data/ folder.
This xml-file must then be compiled and installed to /usr/share/glib-2.0/schemas/ directory.

The data/Makefile.am does this automatically when you run "sudo make install". 

You can also compile and install the schema manually:
0) First, test the schema (xml) file. I assume here that the schema is in the current (.) directory.
   $ glib-compile-schemas --dry-run .

1) Copy the schema file to /usr/share/glib-2.0/schemas/.
   $ sudo cp org.gnome.audio-recorder.gschema.xml /usr/share/glib-2.0/schemas/

2) Then re-compile all schemas.
   $ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

You can also study the various schema-values with gsettings and dconf-editor tools.
$ gsettings
$ dconf-editor
--------------

Language support:
*****************

1) First, translate the data/audio-recorder.desktop file.
Open it and add your translations to it.

gedit data/audio-recorder.desktop

2) Tanslate the program itself.
The language files are saved in the source's po/ directory.

Each translatable file should be listed in the po/POTFILES.in file. Add names of new code-files there.

Translating audio-recorder.pot to a new language.

Translate on the Launchpad.
Use Launchpad for the translations. Browse to https://translations.launchpad.net/audio-recorder
Login and open/update the translations.

Important: The translations from the Launchpad are automatically copied/synchronized to the source code's po/ directory. 
Launchpad does this transfer once a day.

You should regularly download the translated .po files from Launchpad to your local copy(branch) by using this command
bzr merge
or
bzr merge --force

Then update the "audio-recorder.pot" file by running "make update-po" in the po/ directory. 
audio-recorder.pot contains all translatable _("xxx") strings found in the code. Do:

cd audio-recorder*
cd po
make update-po

It creates binary language file (*.gmo) of each *.po.

Testing the program with various languages:
*******************************************
First, you must install the global language packages in the System Settings -> Languages Dialog !
Press the [Install/Remove languages] button and choose/install the appropriate languages.

Use the "locale -a" command to list all supported languages in your system.
$ locale -a
C.UTF-8
de_AT.utf8
...
en_GB.utf8
fi_FI.utf8
nb_NO.utf8
pt_PT.utf8

Please check if your target language appears in the list.

Now you can test Audio-recorder with the supported languages.
You simply set the tonque before starting the recorder. 
For example:

# Changing language of audio-recorder to Norwegian Bookmål
$ export L=nb_NO.UTF-8
$ LANG=$L; LC_ALL=$L; LANGUAGE=$L audio-recorder

# Changing language to German
$ export L=de_DE.UTF-8
$ LANG=$L; LC_ALL=$L; LANGUAGE=$L audio-recorder

# Changing lingo to English GB
$ export L=en_GB.UTF-8
$ LANG=$L; LC_ALL=$L; LANGUAGE=$L audio-recorder

Notice:
You may also set the language for the ENTIRE DESKTOP in the System-Settings, User Definition dialog.
Some (not Ubuntu/Unity) systems may let you set the language in the login-screen (Log-out / Log-in).

Of course, the above commands require that audio-recorder has been translated and packaged with the actual tonques.
Please see: https://translations.launchpad.net/audio-recorder
----

4) You may also translate the HTML-files (help files) in the audio-recorder/data directory.
If not translated, the program will show the original english text.
You will find instructions in audio-recorder/data/readme.txt file.

Send new language files to developers for inclusion in the package.
See: https://launchpad.net/~audio-recorder or programs About-dialog.

Development:
************
First of all, install necessary development (*-dev) packages as instructed in the INSTALL file. 
Of cource you will also need the compiler (gcc) and Automake tools. 
In Ubuntu you should simply get the "build-essential", "automake" and "autoconf" packages.

The code is written in c with GDK/GTK+ libraries and it is hosted on the Launchpad at address:
https://launchpad.net/~audio-recorder

Launchpad uses Bazar (bzr) as the code versioning system. In Ubuntu you should install the "bzr" package. 

Then (very important!) read the README and INSTALL files for further instructions.

The program's about-dialog vill show details about the installation directories and locations.
Run the program and check its about-dialog.

Coding standard:
****************
I use the Gedit for code editing. In the the preferences I set 
* Tab-stops width to 4 (as spaces).
* And checkmark the "Insert spaces instead of tabs" option.

I use the "astyle" command to make all code formatting. You may need to install it first.

sudo apt-get install astyle 

Astyle documentation: http://astyle.sourceforge.net/astyle.html

Then run astyle command from the base (audio-recorder) directory.

For a single file (eg. audio-source.[ch]), run
astyle --style=attach --indent=spaces=4 --suffix=none src/audio-source.[ch]

For all source files, run
astyle --style=attach --indent=spaces=4 --suffix=none src/*.[ch]

During development:
*******************
During coding, type "make" in the root directory to re-compile and link all changes.

cd audio-recorder*
make 

You do not ned to "sudo make install" the entire application after each compilation. Instead, run

src/audio-recorder

This way you can code and test the application relatively fast.

You can clean up all binary and object (*.o) files with "make clean".
make clean

Debugging:
**********
You may enable the DEBUG_ALL and ACTIVATE_DEBUGGING directives in the src/log.h file. 
Open src/log.h and enable or disable

#define DEBUG_ALL
#define ACTIVE_DEBUGGING

Some modules have their own debugging flags. You may enable/disable 
DEBUG_PLAYER in src/dbus_player.h
DEBUG_SKYPE in src/dbus-skype.h
DEBUG_LISTENER in src/gst_listener.h
DEBUG_TIMER src/timer.h
----

Command line options:
*********************
src/audio-recorder --help

Usage:
  audio-recorder [OPTION...] Command line arguments.

Application Options:
  -v, --version            Print program name and version.
  -w, --show-window        Show application window at startup (0=hide main window, 1=force display of main window).
  -i, --show-icon          Show icon on the system tray (0=hide icon, 1=force display of icon).
  -r, --reset              Reset all settings and restart audio-recorder.
  -d, --debug-signal       List signal level values in a terminal window.
  -c, --command            Send a command to the recorder. Valid commands are; status,start,stop,pause,show,hide and quit.
                           The status argument returns; 'not running','on','off' or 'paused'.

Sample usage:
audio-recorder --show-window=1 --show-icon=0

The --version, --show-window, --show-icon options are self explanatory.
The --debug-signal argument can help you to study the signal level from sound-card, microphones and webcams.
The listing will print out several level values that can help to set the decibel (dB) value for the timer commands.
The "Average RMS" value is the most important. The values are collected by src/listener.c module.

The --command <arg> sends a command to the recorder. With this you can easily stop, start or pause 
the recording from command line.

The status command (--command status) returns the current recording state; "not running", "on", "off" or "paused".
You can also test its exit value ($?). 
0 = the program is up & running. Non-zero exit value means the program is not running.

Sample usage:
audio-recorder --command status
echo $?

status=$(audio-recorder --command status)
echo $status

audio-recorder --command start
audio-recorder --command stop+show
audio-recorder --command quit

Ready-made Debian/Ubuntu packages for Ubuntu 15.10 and later:
*************************************************************
https://launchpad.net/~audio-recorder/+archive/ubuntu/ppa

Packages for Ubuntu 15.04 and older Ubuntu versions:
*************************************************************
https://launchpad.net/~osmoma/+archive/audio-recorder

Source code:
************
https://launchpad.net/~audio-recorder

-- end --

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 51.3%
  • Shell 28.1%
  • Makefile 19.0%
  • HTML 1.2%
  • Other 0.4%