David García Garzón's Vitae
Personal data
- First name: David
- Surname: García Garzón
- Profession: Researcher and Computer Engineer
- Contact: david.garcia at upf.edu
- Born: 10th May 1975, Barcelona, Spain
- Nationality: Spain
Summary
I am a researcher specialized in domains like 3D Acoustics, Music Information Retrieval and Audio Software Engineering. My current research is related to 3D Acoustics. Some research topics I recently faced are: Chord extraction, real-time convolution, 3D virtual scenario acoustics simulation, visual prototyping of audio applications. I also have development experience on desktop, web and server applications, and related to audio and multimedia. I have strong experience using agile methodologies and open source tools and methods. Some technologies I recently hacked with are Qt, C++, Python, Django, PHP, SCons, JACK, ALSA, PortAudio, Linux, bash, OpenGL...
Interests
Music software engineering, Music information retrieval, 3D acoustics simulation, 3D audio production and playback, Emergent evolutionary systems, Free and Open Source Software, Software project management
Education
- [2007 - Ongoing]
- PhD in
Information, Communication and Audiovisual Media Technologies at
Universitat Pompeu Fabra.
Proposal: Relating audio and 3D scenarios in audiovisual productions. - [2006 - 2007]
- Master in
Information, Communication and Audiovisual Media Technologies at
Universitat Pompeu Fabra.
Thesis: Visual Prototyping for Audio Applications. [Details]Audio Software Engineering, Frameworks, Domain Specific Languages, Prototyping tools - [1997 - 2002]
- Engineering in
Computer Science at
Enginyeria la Salle, Universitat Ramon Llull.
Final Career Project: XML support for an audio framework. [Details]XML, C++ template metaprogramming, Audio processing, Frameworks design - [1993 - 1997]
- Technical Engineering in
Computer Science at
Enginyeria la Salle, Universitat Ramon Llull.
Final Career Work: Bioscena, an evolutionary environment with interaction among individuals. [Details]Artificial Life, Genetic algorithms, Advanced OO Design - [1988 - 1993]
- BUP/COU (Bachelor) in
Scientific/Sanitary at
Col·legi Llor (Sant Boi de Llobregat).
Languages
- Catalan: Native speaker
- English: Fluent (B2)
- Spanish: Native speaker
Experience
- [Sep 2002 - Now]
- Professor at
Universitat Pompeu Fabra.
Teaching Software Engineering (Requirements gathering, UML, Design Patterns, Test Driven Development, Refactoring, Agile Methodologies, C++) and Programming III (Object oriented programming, Java). - [Jan 2000 - Now]
- Core developer at
CLAM (C++ Library for Audio and Music).
I've take part of the team of core developers of the CLAM framework. CLAM has become a framework of reference in multimedia and audio. It won the 2006 ACM Award to the Best Multimedia Open Source Software and was a featured project for 2007 and 2008 editions of the Google Summer of Code. - [Jun 2007 - Nov 2012]
- Researcher at
Barcelona Mèdia.
Design and develop real-time systems for 3D audio. The system became the basis for a commercial start-up (ImmSound). It was deployed in cinemas world wide, until Dolby decided to buy the technology. My contributions include defining the processing architecture as well as the application, algorithm transcription and optimization, and junior training. - [Dec 2005 - Dec 2009]
- Co-founder and partner at
BMAT, Barcelona Music and Audio Technologies.
- [Sep 2002 - Jun 2004]
- Professor at
Fundació UPC.
Course: 'Software Engineering Tools and Methodologies on Free Software Platforms' within the Free Software Master. - [Sep 2000 - Dec 2006]
- Research Assistant at
Music Technology Group of the Universitat Pompeu Fabra.
Providing group wide support for audio software engineering dealing with technology advising, software quality assurance, software integration, software architecture, graphic interfaces and packaging. Involved in projects such as CLAM, Agnula, Cuidado, and Simac. Specialized in Free Software and Music Information Retrieval. - [Feb 2005 - Apr 2005]
- Visitor Researcher at
Electronic Engineering Department at Queen Mary University of London.
- [Aug 2000 - Dec 2003]
- Senior Programmer and Analyst at
Cards Engineering Spain, S.L..
Developing intranet applications for industrial engineering environments. Deploying the development environment (CVS, Mantis, Automated tests...). Involved PHP, unix shell scripting and dealing multiple UNIX flavors. - [Sep 1998 - Jun 1999]
- Teacher at
FUNITEC.
Organizing and teaching an Ongoing Education Course on Computer Music at Enginyeria la Salle. (42 teaching hours) - [Jul 1997 - Dec 1997]
- Junior Programmer at
NexTReT.
Working at client site, EDS Iberia, on the ticketing section: Legacy code maintenance involving AIX, C, DB’s and ticket printer low level programming. Quality control and assurance on a developing system involving Oracle technologies. - [Sep 1994 - Jun 1997]
- Collaborator and teacher assistant at
Software Technology section of the Departament d'Informàtica of Enginyeria La Salle.
Preparing written materials (a Smalltalk-80 manual). Teaching courses on Advanced C. Teaching laboratory sessions of Programming I course. Educational intensification on Programming II. Adapting a Genetic Algorithms tool to solve permutation problems (TSP).
Publications
"Layout Remapping Tool for Multichannel Audio Productions"
134th Audio Engineering Society Convention; May 2013; Parma, Italy [Download] [Abstract]
"IPyCLAM Enpowering CLAM with Python"
11th Linux Audio Conference 2013; University of Music and Performing Arts; Graz, Austria; May 2013 [Download] [Slides] [Abstract]
"Determining a room geometry from its impulse response"
Presented at Internoise10, Lisbon, June 2010. [Download] [Abstract]
"Estimating 3D Camera Motion for Rendering Audio in Virtual Scenes"
5th European Conference on Visual Media Production, 2008. [Abstract]
"Combining multi-level audio descriptors via web identification and aggregation"
Presented at World Wide Web Conference'09, Developers Track, Madrid [Download] [Abstract]
"Real-time 3D audio for digital cinema"
ASA Conference ACOUSTICS'08 Paris. [Slides] [Abstract]
"Visual Prototyping of Audio Applications"
Master Thesis, Master Program in Information, Communication and Audiovisual Media. Advisors: Xavier Serra and Xavier Amatriain. Department of Information and Communication Technologies, Universitat Pompeu Fabra. Barcelona, September 2007.
"3D-Audio with CLAM and Blender's Game Engine"
Proceedings of the 7th International Linux Audio Conference (LAC09); April 2009; Parma, Italy.
"A Framework for Efficient and Rapid Development of Cross-platform Audio Applications"
ACM Multimedia Systems Journal; 14(1) June 2008
"Visual prototyping of audio applications"
Proceedings of Linux Audio Conference 2007; Berlin; Germany
"A Data Flow Pattern Language for Audio and Music Computing"
Proceedings of Pattern Languages of Programs 2006; Portland, Oregon [Download]
"CLAM: A Framework for Efficient and Rapid Development of Cross-platform Audio Applications"
Proceedings of ACM Multimedia 2006; Santa Barbara, CA
"Testfarm, una eina per millorar el desenvolupament del programari lliure"
Proceedings of V Jornades de Programari Lliure; Barcelona
"Extracció d'acords amb l'Anotador de Música de CLAM"
Proceedings of V Jornades de Programari Lliure; Barcelona
"The CLAM Annotator: A Cross-platform Audio Descriptors Editing Tool"
Poster presented at 6th International Conference on Music Information Retrieval; London, UK
"An Industrial-Strength Content-based Music Recommendation System"
Proceedings of 28th Annual International ACM SIGIR Conference; Salvador, Brazil
"Content-based Music Audio Recommendation"
Proceedings of ACM Multimedia 2005; Singapore, Singapore
"Mucosa: a music content semantic annotator"
Proceedings of 6th International Conference on Music Information Retrieval; London, UK
"CLAM, Una llibreria lliure per Audio i Música"
Proceedings of II Jornades de Software Lliure; Barcelona
"Tools for Content-Based Retrieval and Transformation of Audio Using MPEG-7: The SPOffline and the MDTools"
Proceedings of 25th International AES Conference; London, UK
"Suport de XML/MPEG-7 per una llibreria de processat d'àudio i música."
Enginyeria La Salle. Barcelona
"CLAM: An OO Framework for Developing Audio and Music Applications"
Proceedings of 17th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications. Seattle, WA, USA
"XML as a means of control for audio processing, synthesis and analysis"
Proceedings of MOSART Workshop on Current Research Directions in Computer Music. Barcelona
Skills
- Programming Languages:
- I have a deep knowledge on programming and scripting languages such as C++, Python, PHP, Smalltallk, Java and Bash.
- Web Standards:
- I've been working on XHTML, HTML 4.1, CSS 2.0, DOM (JavaScript), XML, XPath, XSD, XQuery... I also have experience on building cross browser web pages.
- Operating systems:
- I've been working with several Linux flavors, mostly with Debian, SuSe, Fedora and Ubuntu. I tend to forget anything I learnt about Windows, but I could manage to make it work when needed. I just have very slight knowledge of MacOsX but the underlying FreeBSD.
- Networks:
- I have experience programing network applications and web services (php, python, django) and setting up basic apache servers. I have been messing with the Guifi.net project dealing with routers, wireless antennas, IP6 and qMp (mesh configurations).
- Databases:
- I am an experienced SQL programmer. I have used API's such as ADOdb, DAO and ODBC. I have experience administrating MySql databases. I have theoretical knowledge on the internal implementation of distributed database managers.
- Sound:
- I've been involved on the development of an audio and music framework involving advanced real-time signal processing and multiplatform audio hardware programming. I've got a lot of experience analyzing existing audio software to port, to enhance or to optimize it. I have experience setting up MIDI networks. I have a deep knowledge of the Linux audio infrastructure (ALSA, Jack...) I have have experience programing plugins and hosts for different plugin platforms: Ladspa, Lv2, Vst, and AudioUnits.
- 3D Programming:
- I have experience programing the OpenGL API. I experience on programming raster, shading and texturization routines. I have some notions on modeling and animating scenes. I have experience on modeling languages such as PovRay.
- 2D Graphics:
- I have experience using Gimp (PaintShop equivalent) and Inkscape (Freehand/Illustrator equivalent). I used them for both artistic and professional purposes.
- Mobile/Embedded:
- I developed applications for Android using the Qt framework (C++ and QML).
Portfolio
- CLAM (C++ Library of Audio and Music), http://clam-project.org
- Being one of the core developers I have been involved in most of the aspects of that awarded free software project. XML support, GUI, audio back-end's, architecture, reflection, processing algorithms, quality assurance...
- My technical blog and web page, http://canvoki.net/coder
- Daily discussion on technical stuff I work on.My technical web page contains some tutorials and several minor projects not listed here including an SConstruct tool to support Qt4, an UML Use Case diagram generator, a continuous integration efficiency tracker...
- Course materials, http://canvoki.net/docencia.html
- A compilation of most of the material elaborated for the courses I teach.
- Personal GitHub page, http://github.com/vokimon
- Several projects I maintain in GitHub and public contributions to other projects hosted there.
- WiKo (The wiki compiler), http://wiko.sourceforge.net
- It is a Python script to generate webs, scientific articles and blogs from files in wiki format. I developed this tool to ease the maintaining of my own web sites. Since them it has become a community project at sourceforge and we have successfully used it in several projects I was involved in. Some nice features are: produces multiple output (pdf/html) from a single input (wiki), supports BiBTeX and LaTeX formulae, imports blogs from blogger, generates image galleries...
- TestFarm, https://github.com/clam-project/testfarm
- TestFarm is a client server system for continous integration. It can be thought as a BuilBot alternative, more focused on voluteers based projects with no 24/7 compliation farms available. After co-mentoring with Pau Arumí the student that started it, Mohamed Sordo, I have been mantaining it and in 2012 I did a deep rewrite for 2.0 version.
- CeView, http://www.cardse.com
- A product I developed when I was working on Cards Engineering. It is a web based collaborative application to share and annotate CAD files from several TDM-like systems. Besides developing the product, I deployed the company development infrastructure to meet agile development requirements. The system was successfully implanted on Ford Ibérica, CASA, and Metro de Madrid.
- PyVitae, https://github.com/vokimon/vitae
- PyVitae is a python script to define curriculum vitae using a simple text based syntax and generating several outputs including html and pdf. Like WiKo, it follows a write-once-generate-many principle. This curriculum has been generated using it.