polyrhythms

polyrhythms

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

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.

    Jan 17 / 9:38pm

    What a difference four months makes...

    My second year of University has been wildly more productive and interesting than my first, by far. First year taught me how to try to pass exams, while second year gave me material I wanted to know, bypassing the need for a lot of pointless memorization. But it's been more than that. Some things have become second nature now, completely. I've acquired new skills that I feel like I've always had.

    From school:

    • I built a compiler (from a subset of C to a subset of MIPS machine language) that taught me the basics of how all compilers work.
    • I hand-wrote 1000 lines each of MIPS and Motorola 68000 assembly language, and I now feel like C is too high-level.
    • I learned exactly how circuits and magnetics work, which is oddly more relevant to guitars, audio equipment and synthesis than computers.
    • I learned how to interpret statistics and run unbiased studies.
    • I learned how to mathematically prove that a piece of code should do something.

    From a measly four months of school, I feel like I've matured years and learned much more than I should.

    But wait, there's so much more!

    • I redesigned, compressed, minified and beautified my own homepage.
    • I started living more and more online - using Twitter, Last.fm, Posterous, Evernote, Soundcloud and countless other online services to provide me with a ridiculous amount of instant information wherever I am. (Having the web on my iPhone helps a lot too.)
    • I became a proud vim and git user.
    • I've linked up and consolidated my online emails and notification accounts such that if anybody wants to get in touch, I know instantly. (thank you, push on iPhone!)
    • I learned best coding practices and have open-sourced a handful of useful projects so far.
    • I've had more than 11,000 plays of my songs on bandcamp, with more than 600 album downloads.
    • Learned to cook. (Somewhat.)

    Next term, I've got a handful of coding projects lined up, but my one goal is to write and release a new album by May. This will be fun.