Audio Transformer

 

Screen Shot 2013-10-16 at 4.30.28 AM

source code

live demo

I lead music & radio workshops for kids in 2nd-8th grade. We don’t have the budget for a heavy-duty audio editor, so we’ve been using Audacity. Audacity is free and open source, but it is not the most intuitive program for anyone, let alone for kids who have never worked with audio before…

audacity-macosx

 

In my Technological Trends in Music Education course, one of our guest speakers pointed out that all software is moving to ‘the cloud’ meaning that rather than have to download an application and ensure compatibility across Mac / PC, it’s easier for educators to use programs that run online in a web browser. Web Audio is becoming easy enough that all sorts of cool applications are possible, there’s even a GarageBand clone. But nobody has made a simple audio editor that I could use in my workshops. Meanwhile, there are plenty of online image editors— pixlr is a fine example—and even for somebody like me who has a powerful image editing program on their computer, sometimes I just wanna make a quick edit rather than load Photoshop which takes a long time. So I started building Audio Transformer with all this in mind.

Features yet to come:

– view waveform (extract audio amplitude over time as an array, import into processing.js)
– edit files
– lots more…stay tuned!

CLWeb Final Project Ideas

I have a few web projects in mind and I can’t decide which one to focus on…

1. In-Browser Audio Editor part 1: upload an audio file and view waveform data in browser

I think there is a great need for a simple online audio editor. I have been looking at SoX and I think it is possible to do all of the editing on the server side. On the browser side, I’m looking at representing the waveform data visually in processing.js and also delving into the HTML5 web audio API.

Functions:

  • Upload a file (windows pcm wav)
  • Save a file (windows pcm wav)
  • Play a file
  • Reverse
  • Change amplitude
  • Select a piece of the waveform –> Cut, Copy, Paste
  • Pitch shift
  • Time shift
  • Fades at the beginning/end of file (created automatically before saving)

UI

  • Buttons to upload a file and save current file
  • View waveform (possibly also include frequency spectrum)
  • Spacebar to play / pause
  • Click to set start point
  • Select to set start/end point
  • –> Cut, Copy, Paste
  • Effects menu to modify selection with effects (pitch shift, time shift, reverse)
  • Zoom in / out (with keyboard shortcuts and buttons?)

I have a lot to learn about this stuff and I think it’s gonna be a huge project that won’t be possible to complete in a week. But maybe I can kick things off by figuring out a way to upload an audio file to a server and view the waveform in the browser…

2. Song Player & Licensing Tool

I started this project because I think it would come in handy as a way to offer cheap, easy commercial licenses for music that is licensed for free non-commercial use. If I continue I would like to…

– Create an Admin interface. The admin can

  • add songs
  • set their licensing preferences, namely how much to charge for which types of use

– Require users to include their email

– Automatically send an email “invoice” to the Admin and the User.

– Make everything look nice with CSS.

– Stream songs on the page.

3. DJ Recommendations

I think there is a lot of great data in the freeform radio station WFMU’s playlist database, but unfortunately one person has got all of this data on lockdown and it’s not made public to other employees or DJs. So I would like to scrape WFMU DJ lists of “all artists played” (i.e. wfmu.org/artistkeywords.php/KF feeds this table in my database) to create my own database of all artists played. Then I’d create a taste profile for each one using the Echo Nest API. Then users could pick their favorite DJ(s), and get a few things like

– a list of other DJs to check out
– a playlist of music they might like on the Free Music Archive (mapping Echo Nest API to FMA’s)

Ideally this could be expanded by grabbing similar data from other independent radio stations to create a database that would be able to recommend programming across a bunch of different stations.

CL Web: Relational Database

I’ve been messing with PHP Data Mapper, trying to set up a database for my little website. I created two tables in the database: Songs and Licenses. Each License is related to one Song (one to one). Songs can be related to many Licenses, or no licenses (One to Many). I haven’t quite made it that far but I did start using github.

view code

view website

Scratch (web inspiration) and my PHP Calculator

I’m inspired by Scratch, a visual programming environment for kids that exists entirely in the browser. There is a community with over 3million projects, from animated stories and games to music, almost all produced by kids! You can “look inside” to see the code, and remix any project under a Creative Commons license. >> http://scratch.mit.edu/

Speaking of Creative Commons, I make some of my music available under a license that allows noncommercial use, and if I’m lucky sometimes I get inquiries from people who want to use it commercially. I know I’m not the only one. So for our calculator assignment, I made a little PHP to calculate a fee based on what type of project and the budget. All the variables and numbers are just placeholders for now, but I’ve had this project in mind for a long time and I’d love to keep developing. Here’s the BOPD PHP Calculator

“As We May Think” + Hypertext Response to Memex

In his 1945 article “As We May Think,” Vannevar Bush basically envisioned the personal desktop computer, the internet, search engines, search history, scanners, and a whole lot more. It’s the end of WWII and he declares it’s time for the world’s scientists to stop focusing on making nukes, and to start thinking about ways to make all of the world’s knowledge easily accessible. Bush believes that access to knowledge—including our “shady past”—will basically help us achieve world peace. How? Well microfilm is getting so micro that he reasons the ability to compress “a billion books” in a way that could be easily copied and distributed to all in not so far off…

Bush’s groundbreaking concept is a “Memex” that would extend human memory to provide access to an index of all human information. He describes something called “trails” that would mimic the way the human brain links things together by association. The process seems to have an aspect of automation, but it is clearly steered by a human who defines the creative aspect or search term or other parameters, then sets the machine off to gather some information while the human digests the infos. Trails are then stored for later use, which makes me imagine a hybrid of a search history and an automatically-generated reading list—a nifty way to organize information. Bush believes that if we can reach a point where machines do the heavy lifting of computing and recalling the material, humans—including scientists and mathematicians—will be much more creative and productive.

I wonder what Bush would make of the Internet where his article is distributed for free on-demand along with billions of other artifacts of the human race. To to make this week’s reading more fun and interactive, I made this hypertext response.

As We May Think