Recaller

Recaller is a widget(for the Maemo desktop) which allows your N900 to record all kind of audio ("Rec-All" :-) Starting with version 2.0, it has the following features:

  • Auto-recording of GSM calls
  • Useable as dictaphone
  • Record device audio (e.g. FM or internet radio, game sounds)
  • Configurable Save Folder
  • Autonaming of files (including call partner number)

PLEASE donate if recaller is useful to you. Donations give me motivation, encouragement and happiness (plus pocket money :-)

Contents

[edit] Help

If there is no big red button on the desktop after installing the widget, simply reboot your phone.

Please use the settings mode of the Desktop to configure recaller to your needs. You can change the following settings:

  • Save folder location (where recaller puts its recordings)
  • Audio source when manually recording (with Autorec enabled, recaller will automatically switch to Phone or Bluetooth recording mode) (I have found this to be the opposite, what you set here is what autorec will use, otherwise manual will use system [DaveQB])
  • File Format (AAC is available on all phones, is compact and clear, playback on most computers possible, but uses high CPU. Other available formats [FLAC, WAV] might not work for everybody or use too much storage).
  • Autorec automatically starts the recording of GSM calls (in- and outgoing)
  • Show reminders puts up a banner every 30 seconds to remind you of an ongoing recording). Icon on desktop also changes to green when a recording is ongoing.

[edit] Performance Considerations

  • As default, Recaller uses AAC encoding. This uses about 50% of CPU for high-quality high-compression. For less CPU usage (but much larger recording files), you can use WAV encoding instead.
  • In addition, saving to an external SD card might be faster than writing to the internal 32GB MMC (untested claim).
  • If you don't use auto-recording regularly, make sure that it is disabled.
  • Never add it to more than one desktop!

[edit] Screenshots

[edit] Authors

  • Main author: Tom Waelti
  • Thanks to various pymaemo and gstreamer gurus :-)

[edit] ChangeLog

The current changelog is available through the package viewer.

  • 2.0.0: All your wishes come true. GSM autorecording, larger icon, better status display, configurable save folder and encoding format. Uses the SHAD framework.
  • 0.4.0: Simple version, no config options, available in Extras

[edit] Roadmap

[edit] High priority

  • Address book name for the recorded phone calls files.

[edit] Low priority

  • Other codecs
  • Improved auto-record timings
  • Auto-record for other voice protocolls

[edit] Wishlist

Use this space to add possible feature wishes:

  • WISH (YOUR NAME)
  • Please, please help us port this to Android. There are many call record apps but none record the other party. The API is published, and works in the SDK emulator, but not on the actual phone. We suspect either the chip the audio goes through is inaccessible (old analog, rather than routing through the CPU), or the driver is rigged by Google for some reason as they are unresponsive. Google Voice records both sides, but that may just be because the call goes through The Cloud'.
  • Please make it not only as a widget, but also as a standard app. - E.g. as an applet that can be accessed from Settings. It really bothers me on the desktop, and we don't want nosy people to play with it and eventually mess up with the settings. This way you can solve the problem with two widgets on the desktop (the standard app may record calls, while the widget may serve us as a dictaphone). (silkworm) (+ acno)
  • To phone call history list: link to the recording in cases where the call was recorded. (raatikka)
  • Incoming/Outcoming icon for the recorded phone calls files.
  • Hide all notifications. (epilido) (+ acno) (+ waa) / An option to turn off all activation/deactivation display
  • Allow hidden folder structure E.g. files to be stored in .recordings (epilido)
  • Different widget icon according to mode chosen. I keep one icon for recording calls, one for dictaphone. E.g. you could use the current icon, but overlaying "c", "d" or "s" for widget configured for calls, dictaphone or system.
  • hide recorded calls from media player- controlled via /home/user/.config/tracker/tracker.cfg - be aware of the need to restart the tracking service and possible re-indexing of media content (see http://talk.maemo.org/showthread.php?t=64983) (...)(+ ek-zwo)
  • customizable icon size
  • Replace the phone number on the recorded audio file with the name of the caller. Possibly add an option in the settings to use either the nickname, first/second name or a combination.
  • Custom filename settings
    • Be able to specify how the date and time should be formatted for the file name for easier readability (saturn)
    • Allow user to specify the order of the phone number/name and date in the file name for sorting the files to ones preference by either the date or by caller
    • Custom filename settings. User could specify what information to include in the filename, and in what order it will appear. Current setting of automatically recorded phonecalls is "(prefix)_(phone number)_(YYYYMMDD)_(hhmmss-hhmmss)" and with a new feature each of these section could be toggled on or off and ordered. (nilli)
  • Add auto-recording of SIP/VOIP calls. (saturn) (+ waa)
  • Ability to record SKYPE conversations would be much appreciated (You can record Skype with a manual recording in Recaller: Click the button yourself)
  • Since this is a widget of cell phone with touch-screen, there should be a confirmation notice (Record? Yes No) of recording to prevent accidental recording when you put cell phone into pocket while touch-screen is still active. (Tom) (+ acno)
  • Auto-recording for calls to/from specific contacts or groups. Plus a yes/no setting for unknown callers. (Anonymous)
  • Auto-recording could ask, when phone has already finished, if recording should be saved or not: SAVE CONVERSATION? YES / NO (zentenario, saturn)
  • Auto-recording files could get automatically deleted after a configurable time (typically a number of days). To preserve a particular recording a requester could move it to a subfolder (or user could just manually move the file). Be careful not to delete other files than recordings that happen to be in the same directory! Default recording directory is directly in MyDocs, after all.
  • Move it around desktop / change position / hidden (visible in apps)
    It can be moved around on the desktop, you just have to catch the right area of the icon. Keep trying! (nilli)
  • Insert notes in time record, generating a .txt file to make easy search of conversation on long records- ex.: 00:01:40 - teacher said bla bla bla (Ricardo - BR)
  • add option of instead being a widget to be placed in the clock area (saturn)
  • Speex support that was commented out is missing just three minor changes: 1. speexenc that compiles and installs without any problem, I'll try to port it from Debian to extras-devel; 2. "speexenc ! oggmux" for self.encoder; 3. dependency on gstreamer0.10-ogg for that oggmux. P.S. Unfortunately, opus-tools need libogg-dev 1.3+ (int_ua)

[edit] Bugs

Use this paragraph to report possible bugs. If you encounter a problem with the widget, please remove/delete it from the Home screen, then open X-Term and launch the widget manually by typing:

python2.5 /usr/lib/hildon-desktop/recaller.py

You can now see some output from the widget. Now switch to the Home screen and work with the widget - you can then control the output in X-Term and report any errors visible.

[edit] New/Unconfirmed

  • Recaller _always_ crashes on accepting a new call while ongoing call is placed on hold. All widgets on all desktops, including Recaller, are removed by this crash. [Comment twaelti: PLEASE: specify exact use case / test. Who calles whom first, how is the 2nd call initiated. I have problem sto recreate this issue]
  • Recaller crashes when recording is too long. In one instance, recording was terminated (ungracefully) at 80.0MB (1:26:09 aac storage); second instance, recording was terminated at 39.3 MB (42:18 acc storage). In both instances, Recaller terminated by itself and all widgets on desktops were lost. In the 2nd instance, the file recorded had a ".aac." file name suffix, visible in file manager. The file type was not associated with any application, but the file played without problems in media player. [Comment twaelti: looks like a memory management problem in GStreamer, so I probably can't fix it]
  • Recorded voice level at N900 end is very low when using speakerphone, while on GSM call. Recorded voice level is fine if microphone is used. The other party's voice level is fine in both cases. Recorded voice level is OK (but could be higher) if speaker is used for a non-GSM phone call recording initiated by hitting green button on desktop.
  • Autorec is not working, when FLAC is selected as codec (WAV not tested, AAC is working)(v2.0.0-7) (ek-zwo)
  • Autorec records only the other caller voice when set to 'system'. If set to 'phone', my voice is also recorded, but barely hearable, however it also records all ambiental sounds (touching the pone, walking, closing a door etc.) In this case, autorec continues to record for a few seconds after the other caller hangs up.(v2.0.0-7) (silkworm)
  • Recaller freezes when call is answered via bluetooth and the proximity sensor is covered: adder name=theAdder ! nokiaaccenc bitrate=128000 output-form t=1 ! filesink location=/home/user/*********.aac. pulsesrc device=sink.hw1.monitor! queue name=q1 ! theAdder. pulsesrc device=source.hw1 ! queue name=q2 ! theAdder.

[edit] Confirmed in 2.0.0-7

  • Autorec does not change the audio source to bluetooth automatically when a headset is used. Moreover, it doesn't even record the other party, only sound picked up from the mic (which is useless when using bluetooth) [petur]
  • Recording fails when the save folder contains a space (e.g. /user/MyDocs/My recordings/). Includes bugs such as "Does not stop recording / when a call is ended. Have to reboot the phone whereupon the recording is lost" (FYI: the app never started recording, only changed the icon display...)
  • Setting does not display new selected "record-folder" location. Only after restart of settings dialog the new location is displayed (v.2.0.0-7) (ek-zwo)
  • Numbers containing a star/asterisk ("*") will cause Recaller to fail/lock/need reboot.
  • Auto-registration of GSM calls do not work with anonymous call. Please try running from X-Term and report any errors - I'm unable to test this :-) (twaelti)
  • Recording fails with on-hold call: the first call records correctly, however, if a second call comes in and is answered, the recording stops for all calls. I don't know if it's possible to save the second call on its own file, but not being able to save the call even on the same file should be a bug.(v2.0.0-7) (vinnie)
  • It makes two files of one and the same phone conversation (if widget is added to more than one desktop - something you sholdn't do but is possible because of a bug in a config file of recaller)
  • at one occasion 2 (auto)recordings of one phone call were created (1 call, but 2 recording files - 2nd starts 3s earlier and ends 2s earlier according to file name) (v2.0.0-7) (ek-zwo)
  • I'm connected with my N900 to a Swedish operator through a commercial switchboard called Centrex. Centrex sends callerid with stars '*' in them. Like this: +46887326863*180. This makes recaller not able to write to file. I did a quick hack to fix it (I think). Here's the patch.
--- recaller.py.old     2010-04-25 18:23:12.
+++ recaller.py 2010-04-25 18:23:59.320022067 +0200
@@ -15,6 +15,7 @@
 import string
 import time
 import gconf
+import re
 
 import dbus
 
@@ -26,6 +27,7 @@
 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 dbus.mainloop.glib.threads_init()
 
+
 APP_NAME = APP_TITLE.lower()
 LOGO = '/opt/tomch.com/%s/%s_64.png' % (APP_NAME, APP_NAME)
 GCONFPATH = "/apps/Maemo/tomch.com/%s" % APP_NAME
@@ -266,6 +268,8 @@
         finalName = os.path.join(self.folder,"Rec_%s-%s.%s" % (self.startTime, time.strftime("%H%M%S"),self.fileformat.lower()))
       else:
         finalName = os.path.join(self.folder,"Rec_%s_%s-%s.%s" % (self.caller,self.startTime,time.strftime("%H%M%S"),self.fileformat.lower()))
+      nostar = re.compile( '(\*)')
+      finalName = nostar.sub( '_ext', finalName)
       self.log(finalName)
       os.rename(self.fileName, finalName)
       self.isStopped=True

(Bengt Gördén)

[edit] Invalid

  • Sound recorded from FM receiver has echo on playback To record from the FM radio, you must select SYSTEM as source, otherwise (DICTAPHONE) the mic will also record...
  • Various problems of the Maemo file manager:
  • Unable to rename recording files. After I rename them and save, they remain with the original name in the file browser. Only if I open them in media player, I see the new name.
  • Unable to rename recording...(2): xterm also shows the new filenames (ek-zwo)
  • Unable to rename recording...(3): It is probably a problem of the filemanager ? After a reboot of the phone only some (not all!) recordings show the new name. (Renamed files "A","B","C" to "A","B1","C1", display after reboot "A","B","C1") (ek-zwo at ovi.com)
  • Unable to rename recording...(4): It is obviously a problem with the file manager and the media-tracking service. See "Telling Media Player to ignore certain directories" (http://talk.maemo.org/showthread.php?t=64983) - when the phone file directory is added to the exclude list in /home/user/.config/tracker/tracker.cfg , then renaming in the file manager works flawless (ek-zwo)

[edit] Resolved

  • Doesn't install unless dpkg --force-all due to trying to overwrite /usr/share/icons/48x48/hildon/mclock.png (NORMAN) Solved in 2.0.0-2
  • Config dialog doesn't pop up yet (NORMAN)) Solved in 2.0.0-2
  • In 2.0.0-2 I am able to record as a dictaphone just one time. The next time the icon stays red and recording is not possible. (fmonera at gmail)
  • Package doesn't list/install dependencies. I installed the -devel version and got "ImportError: No module named gconf" (viraptor at gmail) Fixed in later builds (twaelti)