Development

How this came to be

Pumilio was created out of necessity. Our lab was collecting a lot of sound data and there was no application that could help us manage that amount of data. In addition, we used at least two operating systems in the lab (Windows and Linux) and some collaborators were using Macs. On top of that, some used Chrome as their browser, while some used Firefox and the Mac users were using Safari.

We started just putting files in folders in a network share. After a few hundred files there is no way of keeping track. Plus, we were wasting time each time we had to open a file in Audacity or Raven to see its spectrogram. So, we wanted to develop a web-based application, cross-browser and cross-OS compatible, that would allow us to manage and browse the sound archive.

First steps

One of the first instances of this application was a simple database that would display rows of spectrograms with a Flash mp3 player on the bottom of each. Similar to the "gallery" view of the current version of Pumilio. The problem was generating all those spectrograms. Using R was easy, but took too long to write the png files. The function specgram() in Python crashed with our files (15 minutes). After a while, I stumbled upon a Python script written by the people of Freesound.org. This was a very fast script and I took it and implemented it.

Afterwards it was all step by step. A JavaScript plugin built to crop images over the web became a selection tool for zooming in a sound and filtering.

For a while, the development was done in an open way using subversion in SourceForge.

Current development

Pumilio is now managed using git in a Github repo. If you want to contribute, just check the code in the project's website. Any and all ideas are welcomed. Let me know if you want to be added to the developer list.

Do not use the dev code for a production system. The code may be buggy, unstable or broken. Use the git repo only for development. Any version with a ".dev" suffix is not stable and should be used with caution.

The application tries to use the full power of open source libraries and applications to avoid re-inventing the wheel and to be able to use it across different systems. Blueprint enables a consistent layout and look, JQuery takes care of most of the interactivity, and JqueryUI provides some features and styling. By using the JPlayer HTML5 audio player, we allowed the use of the application in any modern browser, even in the iPad and Android tablets. SoX takes care of all the sound manipulation in the background, including extracting technical data from the file, cutting, filtering and more.

What is needed in the code?

Everything. The code is built to withstand most cases of human error and attacks. However, it can use everything from improvements in the PHP and JavaScript code, usability improvements, database structure, to faster and better Python scripts. Lend a hand to help build a better scientific tool. Just send me an e-mail (ljvillanueva@coquipr.com) to add you to the developer list in Github.

MySQL database

Please check the file install/pumilio.sql for a clean database structure.