Responsive image

Building Desktop Apps using Web Audio

Matt Mckegg
Building a full featured desktop audio application is a difficult and time consuming task. There are many decisions to make, such as the amount of dependency on existing frameworks, and a cross-platform strategy. The level of detail required to produce a good user experience normally involves a large team of developers and designers. I have been using computers to make music for the last 10 years. More recently, I started making the transition from bedroom composition to live performance. Becoming increasingly frustrated with existing tools for live electronic music performance, I started to embark on a journey to create my own application. In my day job, I am a web application developer and am familiar with JavaScript, Node, HTML and CSS. I did not want to learn a new toolset, so was very excited to discover the Web Audio API. I could use familiar tools to build a user interface, a familiar language to build the logic of my application, and the Web Audio API to actually do the audio DSP work. However, while the web provides an excellent developer experience and rapid prototyping, it does not provide a solid foundation for a live music performance. Software for live music needs to be offline and have full file system access. Electron is a runtime created by GitHub that allows developers to package up JavaScript and run it as a standalone desktop application. It combines Chromium (the open source project behind Google Chrome) and Node.js (a tool for writing JavaScript that runs on servers) and provides the complete desktop application development experience I was searching for. In my talk, I will demonstrate my application Loop Drop, and show how the combination of Web and Desktop technologies creates an ideal single developer/small team environment for building new audio applications. I will also discuss some of the challenges in doing so.
            
@inproceedings{2016_EA_8,
  abstract = {Building a full featured desktop audio application is a difficult and time consuming task. There are many decisions to make, such as the amount of dependency on existing frameworks, and a cross-platform strategy. The level of detail required to produce a good user experience normally involves a large team of developers and designers. I have been using computers to make music for the last 10 years. More recently, I started making the transition from bedroom composition to live performance. Becoming increasingly frustrated with existing tools for live electronic music performance, I started to embark on a journey to create my own application. In my day job, I am a web application developer and am familiar with JavaScript, Node, HTML and CSS. I did not want to learn a new toolset, so was very excited to discover the Web Audio API. I could use familiar tools to build a user interface, a familiar language to build the logic of my application, and the Web Audio API to actually do the audio DSP work. However, while the web provides an excellent developer experience and rapid prototyping, it does not provide a solid foundation for a live music performance. Software for live music needs to be offline and have full file system access. Electron is a runtime created by GitHub that allows developers to package up JavaScript and run it as a standalone desktop application. It combines Chromium (the open source project behind Google Chrome) and Node.js (a tool for writing JavaScript that runs on servers) and provides the complete desktop application development experience I was searching for. In my talk, I will demonstrate my application Loop Drop, and show how the combination of Web and Desktop technologies creates an ideal single developer/small team environment for building new audio applications. I will also discuss some of the challenges in doing so.},
  address = {Atlanta, Georgia},
  author = {Mckegg, Matt},
  booktitle = {Proceedings of the International Web Audio Conference},
  editor = {Freeman, Jason and Lerch, Alexander and Paradis, Matthew},
  month = {April},
  pages = {},
  publisher = {Georgia Tech},
  series = {WAC '16},
  title = {Building Desktop Apps using Web Audio},
  year = {2016},
  ISSN = {2663-5844}
}