RecAll-PRO (19)

MP3 Patent Countdown

Various Sagebrush programs are able to record and play MP3, but only if you already have an ACM MP3 audio codec installed on your computer, which was common during Windows XP but less  likely in later versions of Windows. We do not bundle an MP3 encoder with our products because the technology is covered by software patents, whose validity is recognized in the country where Sagebrush is located. The licensing fees are prohibitive.

When do the patents covering MP3 encoding and decoding actually expire in the USA? That is complicated, as issues relating to software patents tend to be. Tunequest provides a handy list of patents, with the last expiring December 30, 2017. The Wikipedia article on MP3 raises the question of validity of the later patents:

The various MP3-related patents expire on dates ranging from 2007 to 2017 in the U.S.[52] The initial near-complete MPEG-1 standard (parts 1, 2 and 3) was publicly available on December 6, 1991 as ISO CD 11172.[53][54] In the United States, patents cannot claim inventions that were already publicly disclosed more than a year prior to the filing date, but for patents filed prior to June 8, 1995, submarine patents made it possible to extend the effective lifetime of a patent through application extensions. Patents filed for anything disclosed in ISO CD 11172 a year or more after its publication are questionable; if only the known MP3 patents filed by December 1992 are considered, then MP3 decoding may be patent free in the US by September 2015 when U.S. Patent 5,812,672 expires which had a PCT filing in Oct 1992.[55][56][57]

Just for the sake of caution, let us take the more conservative date of December 30, 2017.

[ujicountdown id=”mp3patent” expire=”2017/30 23:59″]

(We are not lawyers, and nothing in this article should be taken as legal advice.)

We hope and expect to be supporting RecAll and RecAll-PRO well into the next decade, so it is quite possible to wait out this particular portfolio of patents.

Related Posts:

RecAll-PRO and RecAll on MacIntosh OS X

Previously we described how to run RecAll-PRO, RecAll, and other Sagebrush programs on Ubuntu Linux, using the free open-source Wine software library. Here we show how to do the same thing with MacIntosh running OS X on an Intel CPU.

The easiest way to install Wine on OS X is with WineBottler. Download and install the dmg file. Open the file and you should see this folder:

Drag and drop Wine and WineBottler to Applications Folder shortcut.

Go into the Applications folder and double-click Wine. You should see a wine glass icon in the upper right tray.

Double-click WineBottler in the Applications Folder. Select “Create Custom Prefixes”.

Download the most recent RecAll-PRO .EXE file and click the “select File…” button in the WineBottler window to select this file. (Under Winetricks an “allcodecs” package exists, but it doesn’t seem to refer to ACM codecs used by RecAll, so don’t click any packages.) Click the Install button.

In the pop-up dialog, select the Applications folder and change name to RecAll-PRO.

Run the RecAll-PRO installer and try out the program.

No Wave or MP3 compression codecs are available, but uncompressed Wave and all Vorbis/Speex compression works. (Perhaps some Wine/Mac guru can figure out how to make MP3 work?)  The next time you want to start the program, look in the Applications folder.


Related Posts:



Remember when voice recording was hard? Rare? A special event? Cost money? Required special hardware?


Full size ad at Vintage Ads.

More ads and hardware photos at Pinrepair.

Recording on YouTube.

(hat tip BoingBoing)

Related Posts:

Installing RecAll-PRO and RecAll on Ubuntu Linux

Although developed for Windows, Recall-PRO can be executed on the Linux operating system using the free Wine software compatibility layer. RecAll-PRO + Wine should also work on other flavors of Linux, but for the purposes of this article we focus on Ubuntu because of its current popularity and for the simple reason that some of our development machines uses this flavor. The procedure described has been tried on Natty Narwhal (version 11.04), Maverick Meerkat (10.10), and Oneiric Ocelot (11.10).

First, Wine must be installed. (We tend to use Synaptic Package Manager, but old-time Unix hands will open a Terminal Window and type “sudo apt-get” commands.) Start Synaptic Package Manager and enter “wine” in the search text field.

Select “wine1.3” (or later) and click the Apply button.

Download the latest RecAll-PRO install executable using your favorite web browser. In Linux, EXE file downloads do not have executable priveleges, so we have to change that now. Go to the Downloads section of your browser and <right-click> -> Open containing folder. (Note: Changing file executable permissions may not be necessary on recent versions of Ubuntu+Wine.)

Click the “Allow executing file as program” control.

In the folder, do not try to launch the RecAll-PRO EXE directly, but <right-click> -> Open with Wine Windows Program Loader.

This will start the installer to load RecAll-PRO and its help file on your computer.

Most features work as expected. MP3 recording does not work at present– perhaps later we will figure out how to access an Mpeg ACM codec under Wine. Vorbis and Speex compression work fine, because they do not rely on external codecs.

To start RecAll-PRO after installation:

Oneiric Ocelot (11.10) and the Unity desktop (and presumably all later versions): Use the Dash home button and start RecAll-PRO as with any native application. Coolness!

Natty Narwhal 11.04 and the Unity desktop: The first Unity iteration did not seem to have the best support for Wine applications. Add back the classic menu using the procedure here, and start using Classic menu-> Wine-> Programs-> Sagebrush-> RecAll-PRO.

Maverick Meerkat (10.10) (and possibly earlier versions) : Click applications menu-> Wine-> Programs-> Sagebrush-> RecAll-PRO.

Note: Earlier versions of RecAll-PRO had a problem displaying properly with Linux+Wine, as shown below. More recent versions (v1.9 and later) do not have the problem.


File Extensions in MRU

The MRU (Most Recently Used) section of a Files menu shows files that were recently opened by an application. The default Windows way of displaying file names is to omit file extensions. This can become confusing when the application can handle several different file extensions. As an example, how do you distinguish between MP3 and WAV files in RecAll-PRO?

Even as the program creator, I wasn’t sure how to change this behavior without digging deep into the source code. Like most coders, I use a framework, a wrapper around the Windows API (Applications Programming Interface) to ease programming tasks. Delving in the framework source code, we discover the MRU menu item uses the Windows API GetFileTitle function.

GetFileTitle returns the string that the system would use to display the filename to the user. The display name includes an extension only if that is the user’s preference for displaying file names. This means that the returned string may not accurately identify the file if it is used in calls to file system functions.

Getting closer. How do we turn on display of file extensions? The answer is not exactly obvious. In Windows Explorer, click on menu Tools -> Folder Options -> View, and look under Advanced settings for “Hide extensions for known file types“. Un-select this item. MRUs for our application will now show extensions. (check for xp)

Here is how our MRU menu looks with file extensions displayed:

I notice that some other applications always display MRU file extensions, no matter the user preference setting. Should we change this behavior for our programs?

Pro Birthday

RecAll-PRO version 1.0 was released ten years ago today.

A spin-off from standard RecAll with many advanced features, PRO became our best-selling public software product within a few months, and has remained so to this day.

RecAll-PRO v1.0

RecAll-PRO Now

Related Posts: Happy Birthday First Product

Recording the Recorders

News item from last month:

A teen suspect’s snap decision to secretly record his interrogation with an MP3 player has resulted in a perjury case against a veteran detective and a plea deal for the teen. …

[via Schneier] The discussion on Schneier’s blog for this item (and most others) is worth reading.

Y2.038K Alert

On January 19, 2038, RecAll-PRO (and RecAll and to a lesser extent VCRadio) will display a bug. (Of course, we will issue a software update well before then to correct the problem.) A number of other programs from other companies will also develop problems. It won’t make big news like Y2K, but it is a detail needing correction in multiple software packages. Why 2038? How did we come to this? Why didn’t we fix this when fixing Y2K?

The discussion gets a bit technical, so if you aren’t familiar with binary arithmetic, feel free to skip ahead.

The Problem

The C run-time library, widely used by C and C++ programmers, provides a function for reading the current time:

time_t time(time_t *timer);

which returns the time as elapsed seconds since midnight January 1, 1970, the year that Unix first ran on a PDP-11/20 machine. In the parlance of programmers, time_t is a type definition, with data size not defined by the Posix standard but typically implemented as a 32 bit signed integer. The maximum date that coud be specified with this representation is Tuesday, January 19, 2038. Increment past that date and the variable will “overflow” to a negative number, representing the year 1901.

Using a time/date system representing seconds from a known obscure date might seem eccentric to non-programmers, but coders do this sort of thing all the time. The Windows operating system defines a FILETIME variable as a signed 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. (Why 1601?) Java Date uses a signed 64-bit integer counting milliseconds from January 1, 1970. .NET DateTime uses an unsigned 62 bit (yes, 62) integer counting 100 nanosecond ticks from January 1, year 0001.

RecAll-PRO (and RecAll and VCRadio) use Unix time to store timecodes for audio files, to represent the date and time when sound was recorded. A number of other programs will also affected by the problem, variously known as Y2038 or Y2.038K.


Setting the computer clock forward to February 2038, we verify that RecAll-PRO has problems displaying the proper time. The date display fails, so RecAll-PRO “gracefully” degrades to displaying relative time position.

We wanted to know if our current C compiler could use time_t variables larger than 32 bits, or could work with a 32 bit unsigned number, so we could extend beyond year 2038, so we wrote a quick test program. The answer is NO.

Out of curiosity, we wrote a quick program to display the maximum FILETIME possible. Unfortunately, the FileTimeToSystemTime function only works for half the maximum range of FILETIME, so we use that instead:

#include <stdio.h>
#include <windows.h> int main(int argc, char* argv[])
// MSDN: “The FileTimeToSystemTime function only works with FILETIME values
// that are less than 0x8000000000000000.”
ft.dwHighDateTime = 0x7ffffffful;
ft.dwLowDateTime = 0xfffffffful;

if (FileTimeToSystemTime(&ft,&st))
printf(“Maximum filetime date: month=%d day=%d, year=%d\n”, st.wMonth,st.wDay, st.wYear);

return 0;

Maximum filetime date: month=9 day=14, year=30828
Press any key to continue

Year 30828 should be large enough for our purposes. 🙂 If you need larger dates, please let us know.

The Fix

We use a Microsoft C++ compiler for development work, but not their most recent product. Microsoft documentation notes that Visual C++ 2005 is the first Microsoft compiler to use signed 64 bit integers for the time() function, which should fix the problem.

If we decide not to update compilers, we could write our own version of time() that accepts 64 bit integers, perhaps using FILETIME internally.

When Time Stamps Go Bad 2 reports Ohio electronic voting machines have privacy issues involving time stamps.

“Two Ohio activists have discovered that e-voting machines made by Election Systems and Software and used across the country produce time-stamped paper trails that permit the reconstruction of an election’s results–including allowing voter names to be matched to their actual votes.” — Declan McCullagh,

Our recording products have timecodes embedded in the audio files. Of course, our software is not involved in elections, but Sagebrush customers have imaginative applications, from security monitoring to documenting barking dogs to demonstrating a sleeping-partner snores. Given the news item shown here, can anyone think of a way that audio timecodes could cause an unplanned privacy problem?

Related post: When Time Stamps Go Bad

Recording in the News 2

IEEE Spectrum has a first-class technical summary of the Vodafone Greece cellphone wiretapping scandal. This story has it all: apparent suicide, wiretapping of conversations with key high level politicians and officials, rogue software, destroyed logs, subversion of wiretapping capability originally implemented for law enforcement requirements.

(huzzah! Schneier)

Previously: Recording in the News