John M. Strawn, Ph.D.
Software and Signal Processing Experience
Dr. Strawn’s activity as expert witness draws on decades of involvement with software. He has developed software in high-level languages (e.g., C, C++, Java, Fortran), assembly language (digital signal processors, embedded processors, custom processors), and Matlab, often for signal processing applications, often related to audio and music. Related projects include processor design, mergers and acquisitions, feasibility studies, and standards work. This page emphasizes independent consulting work in software. Further software experience in academia and as an engineer and manager in industry is given in Dr. Strawn’s CV.
Litigation (2005 – present) |
As expert witness, analyze software and source code for patent, copyright, trade secret, and class action litigation in languages such as C, C++, Java, HTML, XML, Javascript, Visual Basic, and SQL (see separate list of expert witness litigation assignments). | |
iZotope (2011) |
Port iZotope’s voice pitch correction effect from C++ source code to Avid TDM environment in Motorola 56000 family assembly language. | |
Congruity (2009) |
For this music industry startup, create audio effects in Motorola/Freescale DSPM56364 assembly language. Write and debug code without access to hardware, working only with software tools. Initial delivery of code ran bug-free in target hardware. | |
DTS Digital Cinema (now Datasat Digital Entertainment) (2008) |
For DTS Digital Cinema/DataSat’s XD20 Media Player eight-track cinema media player (this is the hardware that sits in the movie theater projection booths for playback of multi-channel audio and video), adapt audio algorithms from an earlier DTS Digital Cinema device. In particular, port DTS Coherent Acoustics decode (two versions, one 8-channel, one stereo), DTS Digital Cinema 8-channel decode, and DTS Neo6 5.1 decode from DTS Digital Cinema’s existing XD10 cinema media player. This required me to extract Motorola DSP563xx assembly language source code from the earlier XD10 environment; isolate the four algorithms by stripping away unneeded code; integrate the four algorithms into Motorola 56721 dual-core processor; and write new wrapper code in assembly language. Responsible for approximately 25,000 lines of assembly-language source. I was also engaged by DTS in litigation. | |
Berkeley Design Technology, Inc. (2007-2008) |
Contribute to research and writing of the following newsletter articles at BDTI’s website Inside DSP:
| |
Yamaha (1995-2007) |
Chair, AES standards working group SC-02-12 (formerly called SC-06-02) on digital audio via IEEE-1394 (Firewire), with the support of Yamaha. Involved a trip to AES conventions twice a year, including one in Europe. Past member, IEC TC100 TA4, Digital System Interfaces. Various publications (sample pdf), various public appearances, for example at AES local chapter meetings, and various company site visits, on behalf of Yamaha to discuss audio over 1394 and Yamaha’s mLAN. | |
Sonic Network (now SoniVox) (2005-2006) |
For this well-known provider of wavetables, synthesis software, and ring tones (among others), provide and supervise subcontractors for these projects:
| |
Bias (2004-2006) |
For this well-known provider of audio software, provide and supervise a subcontractor to port a complicated digital signal processing algorithm into the Digidesign TDM Environment, in Motorola 56000 assembly language. | |
Audio Research Labs (2005) |
For ARL founder Schuyler Quackenbush provide and supervise a subcontractor to design and implement a digital filter algorithm in Motorola 56000 assembler. | |
Verance (2004-2005) |
Working closely with Verance R&D staff, implement the Verance Content Management System/Audio-Visual (VCMS/AV) watermarking technology for motion picture sound (now known as Cinavia) in Motorola 56300 assembler in the TC Electronics M6000 environment. In use in major film studios starting early 2005. Travel at client’s request to TC Electronics headquarters in Denmark to facilitate integration. Provide and supervise a subcontractor to assist with filter design, filter implementation, and other tasks. More than 30,000 lines of 56000 assembler source, several hundred pages of documentation, a dozen CD-ROMs of debugging data and lab notebooks. | |
Universal Audio (2002-2004) |
For this well-known manufacturer of audio plugins, port two audio processing algorithms (Pultec filter, LN1176 stereo compressor) from C/C++ to Motorola 563xx assembler in the DigiDesign ProTools TDM environment, including numerical approximation and streamlining the original C/C++ implementation. Publicly released 2004. Contribute extensively also to port of an extremely complicated high-end reverberator, and to another equalizer. (screenshots). | |
Stretch (2003-2004) |
For this software configurable processor startup, study how to port MPEG-2 AAC and MP3 decode reference C++ code to 16- and 32-bit integerized C. Do the same for MP3 encode based on publicly available source. Learn their software configurable processor architecture well enough to write optimizations. | |
Language Scientific (formerly RIC) (2003) |
For this major translation house, proofread German-English translations involving, among other things, audio compression (including German-language doctoral dissertations). | |
Analog Devices (2003) |
Port music synthesis algorithms to ARM7TDMI assembler, following ARM’s C language calling conventions. | |
Dorrough Electronics (2002-2003) |
Implement in C language and Analog Devices Sharc 21161 assembler a novel scheme based on their patented technology to improve the perceived loudness of audio signals sent over broadcast. Provide a subcontractor who made significant contributions to filter design. | |
Tensilica (now part of Cadence) (2001-2002) |
For this configurable processor IP core provider, implement a highly optimized version of the modified discrete cosine transform (MDCT) for audio compression. Extensive investigation of theory and variants of the MDCT. Also port MPEG-2 low-complexity AAC decode and MP3 encode from Thomson reference C++ code to 16-bit integerized C. Prepare various optimizations closer to the hardware than C++ usually allows. | |
Analog Devices (2002) |
After an on-site visit to learn more about the technology and meet the team, I made recommendations on changes to processor architecture for a new version of an idiosyncratic signal processing chip. I also provided code examples for the new processor architecture. | |
Berkeley Design Technology, Inc. (1999-2001) |
| |
Euphonics (later part of 3COM) (1997-1999) |
Implement Dolby AC-3 audio compression decoder in 16-bit integer assembler on new Analog Devices 16-bit integer AD1818 (PCI SoundComm). 20K+ lines of assembler source. Passed first round of Dolby testing on first try. Integrate with Euphonics’ Real-Time Kernel. | |
Digital Technics (DTI) (1996-1997) |
Implementation of CCITT R2 telephony encoder/decoder (similar to DTMF) in Motorola 56002 assembler, based on Goertzel algorithm. 13K+ lines assembler. Deployed in the field in Asia and South America. | |
VM Labs (1996) |
For this multimedia chip startup, provide detailed comments on a proprietary DSP chip architecture. | |
Oculix (1993-1995) |
Motorola DSP 56000 assembler for numerical and FFT analysis of real-time data gathered by laser from the human eye. Based on NeXT Machine. 150K source. | |
Centigram Communications Corporation (1993-1994) |
Port TruVoice speech synthesis code from TI TMS320E17 assembler to Motorola DSP 56002 assembler on Motorola PC Media card; port to Analog Devices ADSP 2115 assembler on Echo Personal Sound System. | |
Atari (1993-1994) |
Implement physical modeling music synthesis techniques on custom RISC/DSP chip inside Jaguar. Recommend improvements to a new custom signal processor architecture. | |
Euphonics (1993) |
For this software music synthesizer company, write C language routines to emulate certain hardware elements in the target system. This allowed the company to study aspects of caching parameter updates, for optimizing real-time performance. | |
Internal Project (1993) |
For a research project involving DSP architecture, write a series of Java classes to emulate the typical components of a DSP chip. | |
Shure (1987-1988) |
Working from the written specification for a proprietary algorithm, develop C language and Texas Instruments TMS32010 assembler for a multi-channel consumer audio product prototype. | |
NeXT, Inc. (1987-1988) |
Developed, debugged, and documented more than 50 routines in the Motorola DSP 56000 assembler vector library; source code printout 2″ thick). While working off-site for over a year before NeXT was publicly released, maintain secrecy about the fact that NeXT would include a 56000 processor. | |
Sonic Solutions (1986 or 1987) |
As one of the first consultants hired by Sonic Solutions (located in their first office in San Francisco), port their C language noise-reduction code from one flavor of Unix to another. |
Other experience:
- Studies of micromachining and nanotechnology.
- Experience with the Star Semiconductor SPROC chip, the IBM MWAVE chip and operating system, OS-9, and Spectron’s SPOX operating system.