polyrhythms

polyrhythms

Peter Sobot  //  Musician and software engineering student. I make things. Check out some of my work at petersobot.com.

Feb 17 / 3:24pm

Software, Art, Music and Games

I am a software engineering student. The exact definition of that varies among my classmates and professors. Some say that it implies an ability to write software. Others argue that it requires a strong grasp of algorithms and mathematical optimization. Still others say that software engineers need only be able to design large, complex pieces of software, or manage teams of coders, or communicate project specifications, etc.

Few people correlate software engineering with art.

There are those that will argue that "software itself is a form of art," or that "this code is beautiful." There are certainly pieces of software, written in different languages, that could be considered their own distinct forms of "poetry." (And no, I'm not just talking about Lisp poetry.) Elegance, cleverness, and the functionality of the code all contribute to this sense of inherent artistry.

I prefer to write code that is outwardly visible as art. Code that you need to run, not read, to appreciate.

Cfru
This is the schedule view of a radio station's website. (CFRU 93.3fm at the University of Guelph, Ontario, to be exact.) I did not design this site - that was done by the wonderful folks at Studio Function. However, I did have the pleasure of implementing the design and creating the website itself during my last work term at The Working Group.

Although there is a fair amount of complexity behind this site, the part that was most enjoyable to implement was this schedule view. It helps that it's beautiful and eye-catching, but writing code to make this design functional was extremely satisfying. Even more satisfying was the ability to see someone use the site, enjoy it, and being able to say "Yes, I helped make that."

This site, via its design and partially through its functionality, is a form of art. I've spent my first three work terms (one year in total) working at web development shops on client projects, implementing (and sometimes designing) beautiful software that can be appreciated by almost anybody. I had a great time doing that, and enjoyed nearly every minute.

Wub

This is the Wub Machine, my online music remixer. If you know me, or if you read this blog, I'm sure you've heard enough about it so far. One thing I haven't talked about yet is the art behind it.

I initially created the Wub Machine as an experiment in computer-generated music. If I were an arts student (or even a grad student in some software programs), it would have made a great thesis project to explore computer-generated art. While the technology used to power it is stunningly awesome, and the site itself is somewhat complex, that's not the purpose of it. (Although, I did learn a lot.)

The average user of the site is not a technophile. They could care less about the software. However, the average user can definitely appreciate the product - a piece of music (ahem, mostly) that is not only listenable, but danceable and entertaining. Many would call it art.

(Hopefully.)

62343_orig

This is a screenshot from Dead Rising 2, an awesome action-adventure game released a couple years ago by Capcom. Yes, those are zombies, and that's the main character (Chuck Greene) using a modified yard tool to mow them down. It's a great game, with a great story, great gameplay, visuals, music, and the like. Save for some vocal critics, most people would consider this art.

Visual artists modeled Chuck Greene's character. Writers crafted the brilliant story. Software engineers put it all together, and made the entirely immersive experience possible. Their work, while technical and complex, is just as much art as the models, textures, sounds and words in the game. It doesn't just allow users to interact with art; it forms the fundamental experience that is enjoyed and appreciated.

Using software to make immersive, beautiful, artistic experiences that can be appreciated by anybody is awesome.

TL;DR: Software can be art, in many ways. That's what I like to make.

Jan 22 / 7:46pm

The middle ground between form and function

I've noticed a distinct trend in all of my recent work. Not all of it is useful, and not all of it is feature-complete - but it all places a lot of importance on form over function. Let me give an example:

Lndrme

Read the rest of this post »

Filed under  //  code   design   form   function   lndr.me   ninjaquote   project   web development  
Dec 1 / 12:10am

"The Street Preacher" - A Hyper-Local Twitter Bot

I walk through Yonge & Dundas Square in Toronto every day.

Yonge_dundas_toronto

That intersection, which some call Toronto's equivalent of Times Square, has a large number of street preachers. Loud, startling, obnoxious people that yell warnings of doom or urge repentance. Silly people.

I decided to use Twitter's real-time streaming API to make an extremely specific location-based Twitter bot. The purpose? To respond to you if you tweet near the street preachers at Yonge & Dundas, with similar messages. Call it art, or a statement about society, or making fun of those preachers, whatever - I call it a fun technical and social experiment.

Read the rest of this post »

Nov 10 / 7:30pm

More Lessons from The Wub Machine

Four months ago, I released the Wub Machine, an online Dubstep remixing web app. It hit Reddit for a couple days, got popular on 4chan, and has since remixed nearly 24,000 songs. About a month ago, at the wonderful Music Hack Day Montréal, I wrote and released an Electro-House remixer to complement the Dubstep one. It sounds kinda awesome - here's Stevie Wonder, remixed: 

I Wish (Wub Machine Electro Remix) by Peter Sobot

Since then, I've polished up a completely new framework for the Wub Machine - nearly everything about the site has been rewritten since its first release. The first version was held together with duct tape, PHP and prayers, which resulted in some catastrophic failures when the site was initially launched. I've sinced rebuilt it in 100% Python, load tested, and added features.

    Instead of talking about the code (which I do over on GitHub), I have a better story - being featured on the immensely popular VSauce channel on YouTube. I got a seven-second mention (and the thumbnail of the video!) and on Tuesday night, when the video first went up, all hell broke loose. My little Prgmr server couldn't keep up with the 15,000 visits in 3 hours, and the load has kept up steadily ever since.

    Read the rest of this post »

    Filed under  //  lessons   remix   web developer   wubmachine  
    Jun 25 / 2:17pm

    The Wub Machine, Postmortem

    The Wub Machine, my fancy dubstep-remixing web app, unexpectedly launched last week. In the days that followed, I took a crash course in how to manage a heavily-used web service. Here's the first of many pretty graphs:

    Firstweek

    Read the rest of this post »

    Filed under  //  SoundCloud   dubstep   graphs   learned   lessons   machine   postmortem   reddit   remix   twitter   viral   wub   wubmachine  
    Jun 12 / 6:46pm

    The Wub Machine, Revisited

    The Wub Machine was a great little auto-remixer project - some audio hackery in Python to make a neat script. Unfortunately, I can probably count on one hand the number of people who *actually* downloaded the script and tried it on their own songs. So, I decided to make it into a web app. (tl;dr: go try out the site now!) 

    Screenshot

    Read the rest of this post »

    Filed under  //  SoundCloud   dubstep   echonest   hack   hackday   jquery   music   php   python   reddit   remix   sehackday   wub  
    May 23 / 12:06pm

    The Wub Machine

    UPDATE: I turned the Wub Machine into a website. Go and remix your own tracks!

    I like dubstep.

    There, I said it!

    That massive bassline, two-step beat and killer rhythm has some odd allure that I can't resist - and I'm typically a fan of rock, metal and prog!

    I'm also a huge fan of the Echo Nest and their brilliant Remix API. In their words, the Remix API is an "internet synthesizer" - quite true. I can send off an mp3, and get back extremely detailed beat, timbre and pitch information within seconds. Some people have already used this to make any song swing, put a donk on any song, and much, much more.

    For the first SE Hack Day, I decided to use the Remix API to automagically add dubstep to any song.

    The Wub Machine by Peter Sobot

    Read the rest of this post »

    Filed under  //  dubstep   echonest   hack   hackday   music   python   remix   sehackday   wub  
    Mar 18 / 12:58am

    A Better Music Workflow?

    I produce a lot of music.

    Logic

    I don't necessarily release a lot of it (or finish all of it) but I have at least 100 songs I consider developed enough to listen to, and about 300 other song files that are just riffs, beats and vocal ideas floating alone.

    With so many files, projects, songs, sounds, and work in one place, I've developed musical workflow that borrows a lot from software development patterns. My music tends to be produced in stages and cycles.

    I'll usually start with an idea from noodling around on some instruments, then do two things:

    1. Record (track) instruments with the main riffs of the song or basic chord structure.
    2. Record a basic drum loop and bass loop, then arrange to fit song structure.

    Then, I don't do anything.

    For any length of time between a day and a month, I usually don't touch the song-in-progress. The song needs a break, while I can forget about whatever ideas I had while writing the initial sections of the song.

    Then, I'll come back to it, add some more riffs, ideas, melody, direction, possibly a scratch vocal track. Then the real fun begins.

    Guitarrig

    1. Re-record any parts with mistakes or even rhythm that's slightly off.
    2. Add whatever new sections, parts, instruments, riffs, or notes that need to be added.
    3. Make updates, edits and changes written down from previous listens.
    4. Bounce to disk.
    5. Place .flac in Dropbox for remote listening and burn to CD for in-car auditioning.
    6. Make comments on SoundCloud/Evernote on each track.
    7. See step 1.

    This process continues until I find it extremely hard to find changes to make to a track, or until I've reached the self-imposed deadline and am happy with the track.

    In an ideal world, I wouldn't need to burn CDs for the car - I could plug in my phone and have it stream the latest version of the song from SoundCloud with no user intervention. (very similar to "nightlies" in the open-source programming world.) I could listen at work, make comments (that would get synced back into Logic), listen on my phone, make comments, send the links to others, get their feedback, and have this all happen with one utility.

    (just to round out the post with some audio, here's one of my SoundCloud tracks.)

    Cupcakes by Peter Sobot

    Unfortunately, if I continue writing this script at the moment, I won't have any time to finish the album the tool would be created for. Once I've released my next album, (ETA: May 2011) I'll be open-sourcing some cool tools to make such a workflow easy.

     

    Filed under  //  SoundCloud   code   logic pro   music   workflow  
    Feb 5 / 1:24pm

    The iPhone and Custom Text Tones

    (download)

    This is my text message sound: "Level Up," sampled from Pokémon Blue on a GameBoy Colour. Short, geeky, and perfect enough to be heard every time I get a text.

    However, Apple has decided that while users can set their own ringtones for their iPhones in iTunes, the text message notification sounds are off limits. I wouldn't take that answer.

    Read the rest of this post »

    Filed under  //  code   custom project   hack   iphone   project   ssh   text   text message   text tone   tone  
    Jan 23 / 10:02pm

    Pushed to my Pocket

    As soon as I got my shiny new iPhone about six months ago, I set up instant Push email. This remarkably useful feature has really changed the way I use my email accounts and respond to email. It's also made me reflect on exactly how dynamic and instant the web has become.

    A lot of people wouldn't expect that posting a YouTube comment like this:

    Response

    ...would cause the device in my pocket (or on my nightstand) to vibrate and alert me instantly. This wasn't even something I had to go out of my way to set up - YouTube's default email notification settings accomplished this.

    Responding to a tweet, commenting on Facebook, or any other number of nearly-instinctive online actions people do nowadays all cause unexpected side-effects: vibrating phones. It's not a bad thing, nor is it even that annoying. (yet) Just somewhat mind-blowing that the click of a mouse on one side of the world will (near-)instantly cause a device in my pocket to vibrate and alert me.

    And I still think the world could and should be more connected.