Slow Steam

So after my last post I did a ton of research and it turns out lots of people feel that there is great potential in an open social web. It is true that "social" is on a fearsome trending streak. But when you think about it, the web has always been social (email, AIM) so what's really changed?

I would say two things are responsible for the uptick over the last decade. First is that as people learn the language of social computing, they gain more power through the language. Somebody tweeting has a greater social advantage than somebody not tweeting. The tipping point happens when it becomes a disadvantage *not* to be tweeting.

The second reason is that technology is getting exponentially easier to understand. Good design practices and tech advances mean that the learning curve is dropping - people are adapting faster to keep up and at the same time demand more. Moore's law has crept from hardware to software, and now into our social lives.

Of course nobody can predict what technologies will trend and what won't, or even how long they'll last. Humans are complex social creatures. But I do feel that as social creatures our need to be social will break down barriers. The concept of Facebook or any one entity having a monopoly on social networking just doesn't make sense to me long term. Eventually all networks will have to open their doors and communicate with the wider web, and see each other as equally valuable. I'm not saying cliques and private networks won't exist - sure, but there will be an ongoing need for an open and standardized way to create an online identity as well as push and receive messages to and from friends, both through messages as well as real time.

I'm glad to see lots of people already working towards this vision of the future. Keep up the good fight! But from my own observations these types of changes involving mass adoption could take years or it could be a matter of months. It's just too hard to predict. But as long as people are learning and evolving, eventually there will be enough demand for an open, federated social web on a mass scale. At that point we can stop talking about Facebook all the time and get back to building real relationships with family and friends.

A Social Web based on URLs: Decentralized Microblogging

I've mentioned this before, but I haven’t been updating my personal website that much lately. There are lots of things I love about owning my own site: I own the database that stores all of my posts (and can move it or delete it whenever I want) and I can easily modify the way it works and looks, and even change my domain name. Despite these features, I find myself posting more frequently on social networking sites. I can post faster and quicker, and receive more feedback in a shorter amount of time. There is no doubt that being able to post a piece of content and knowing that a good percentage of my friends will immediately see it, comment, and share it is a great feeling - a direct appeal to ego. Likewise being on the other end of things and commenting and sharing makes you feel like a part of a conversation.

So this got me thinking, how can I get that level of speed and interaction on my own website that is hosted on my own server? I would like to be able to quickly share content and network my site with a few friends. So I started thinking about if it’d be possible to build an organic social web simply based on unique URLs. If we can assume a unique URL is associated with a person, then we just need a common language that can automatically link people together.

We can look to Twitter as a model for such a language. Twitter’s character limit has caused its users to develop new syntax to express greater amounts of information in 140 characters or less. Ultimately the syntax is just a way of adding another level of meaning and power to a hyperlink - @somebody is not just a link, but specifically a link to a person, and furthermore using it means that the person will get notified when you use it. Similarly #hashtag gives the power to make loose, indirect connections with others to form ad hoc groups and allow a person to join a more global conversation. With those concepts in mind, we have a new shared language that can be adopted by others to allow communication across an open web, independent of the platform.

The first step is to extend the @reply syntax beyond a twitter username. This should be easy, especially if a URL is uniquely associated with a person. Let’s say Eric posts a message to his website, and references his friend Jerry whose website is

Eric from posts the following status:

"Reading Blink by Malcom Gladwell. you should check it out! #bookclub"

This status is assigned a unique URL of

Assuming both Eric and Jerry have blogging software that understand this syntax, the blogging software will automatically try to contact or “ping” The whole process might look something like this:

  1. First pings with a link to the post referencing
  2. If receives the ping but doesn’t know or can’t verify the ping originates from him, nothing happens.
  3. If receives the ping and is friends with then visits and copies the original post from to and displays it within his status updates (i.e. on his "wall").

Jerry’s website has now copied over Eric’s post and it gets displayed within his status updates (similar to your Facebook Wall). As long as a person can be identified with a single URL and there is a common language shared between the server software for each person, there is no reason we can't just make these kind of links between URLs to create an open, social web.

I hope to have a working demo* of this kind of decentralized microblogging software soon. I think having a proof-of-concept of this will explain things better than I could in a blog entry and I don't want to overanalyze things too much. There is lots more to talk about, especially with the technical side of things but I’ll save that for a later post.

That’s enough for now, but the basic idea is this: the internet is powered by hyperlinks. So far we only think about hyperlinks as representing a piece of information or a computer. But if a link can represent a person, and we have a common language to connect and share these links between people, then it should be possible to create a decentralized social web based on URLs.

*EDIT already proves this kind of thing can sort of work with OStatus protocol. Integrating and generalizing this into a wider publishing platform (not just status updates) with your own hub included seems like the next step.

Synth Dreams pt. 2

First, some sounds I recorded demoing how I can control frequency of a 74C14 oscillator with an Arduino:

synth-chomp1.mp3 (warning: generally noisy as hell)

Kinda fun, but not exactly the direction I'm trying to go in. To get the pitch accuracy I want will require some more thinking.

So last time I got the Arduino MIDI-IN working and a simple square wave oscillator based on a 74C14 going. In order to control the frequency and pitch, I thought it'd be a good idea to try and use a digital pot (AD5206/AD5204) to control the oscillator frequency value with the Arduino, based on this project I found. This actually sorta failed miserably (albeit in an interesting/good way) as the digital pot only has 256 linear steps between it's minimum and maximum values. What this means is that when I tried to put it into the equation for the RC circuit (see example circuit) to map it to piano key notes it sounded really smooth on the lower frequencies but less and less smooth (and way off a piano tuning) as it swept up to the higher frequencies. This makes sense based on how we hear pitches - it's logarithmic. We hear the perceived interval between "A-220 and A-440" as the same as between "A-440 and A-880". Here's a graph of what that looks like. Higher octave intervals have a greater frequency distance between notes. Since the 256 values are distributed linearly over the total frequency range, but perceived pitch is logarithmic, this means the pitch resolution gets increasingly worse the higher the desired pitch.

Anyway I played with the value of the capacitor to see if I could find a value that could at least get me *close* to notes on a piano, and allow me to change notes with the Arduino. Here's a giant spreadsheet that shows what I ended up with, based on some numbers taken from this wikipedia article.

The result? I can make tons of Pac Man sounds, just listen to the samples I recorded. But I just can't get the pitch accuracy I want with the octave range I want. I'd like to get *some* sort of control over the pitch so it could be used melodically. It's sorta close, and then again not at all. I could get a digital pot with a better resolution, or try to map it nonlinearly, but that means more money and not necessarily perfect results (just *less* glitchy pitchy). It might make more sense to just hardwire 12 oscillators and use the Arduino to just control the volume and mix of each oscillator as they are triggered, and divide down to get more octaves. Also I like this approach because I could sort of manually adjust the "tuning" of each note with a tiny potentiometer, sort of like a guitar.

There is probably a way to hack it together with the approach I was trying, but part of my goal here is to keep things simple and obvious. The lesson I learned is that trying to control analog components with a digital component means discrete values will fuck up your day, unless you really, really like Pac Man.

( categories: )

Who is Arthur Hamidi? The Lost Tape + Remixes

Zirafa & Spinnerty present: The Lost tracks for your ears.

"Two musicians stumble upon a broken demo tape of futuristic songs by an unknown artist from the past. They listen to four songs before the tape is destroyed, and attempt to recreate the songs themselves in order to preserve the unknown artist's legacy."

Slow Baked

DIY Portable Mini-Amp

I recently finished a little portable mini-amp project. I wanted to have something powered by a battery that would have a decent amount of power and would be easy to plug other portable things into - iPod, etc, and also use it as a testing speaker for other projects. There are lots of portable speakers you can buy, but this allows for some customization and can end up costing less (if you can put up with some headaches along the way).

Synth Dreams

Hey ya'll, if you haven't heard - Orange Drink and Zirafa are putting together 5 releases by the end of this year. Orange Drink has hit the ground running with the release of Minotaur. Check out OD's page for the details.

I started work on the synth I'm tryin to build. Should I take pics? I'm tempted to docu-tweet every minute but sometimes that seems obnoxious. So far, just got serial Rx for MIDI going into the Arduino. It's hooked up to my M-Audio Keystation 61es so when I press a key it lights up an led on the Arduino. Baby steps. In the process I learned that ships pretty fast, and that optocouplers seem like a really useful device.

Bandcamp limiting number of free downloads available

Bandcamp is now limiting the number of free downloads available:

Starting today, new accounts come with 200 free downloads, and all existing accounts are granted 500. (You can of course still stream and sell an unlimited amount of music using Bandcamp.) Each time a fan downloads a track or album for free, it counts as 1 against your balance (an album, regardless of how many tracks it contains, still only counts as 1 download). You can buy more downloads for a small fee from your Tools page. The pricing is the same as for download codes:

300 downloads for $9 USD (3¢ each)
1000 downloads for $20 USD (2¢ each)
5000 downloads for $75 USD (1.5¢ each)

200 free downloads is probably plenty for most very small bands. But it can run out quickly.

I think this is a service worth paying for. Bandcamp requires visitors to enter an email address in order to receive a download link. This is very useful for building up a large email list which can in turn be used to promote other releases in the future. Free music acts as promotion to gain more fans, and having email addresses is the retention of those fans.

That being said, I don't get why they went with a prepaid credit system. It seems like it'd make more sense to hook up a Bandcamp account to a credit card, and then just charge per download and bill monthly. You could set daily and monthly spending limits. And then you could provide all sorts of great charts and statistics to show usage and cost over time and how it correlates to buzz and sales and all that. I am pretty sure people would err on setting their limits too high at first. Buying a prepaid bundle of credits seems clunky in this day and age.

Streaming is still free.

If this development bothers you, you can use bandcamp to stream, use for downloads, and paypal to sell merch. The crucial missing link is of course, grabbing those email addresses on every free download.

2 EPs by the end of the year.

I'm writing this so I'm held accountable. I will put out two new EPs by the end of this year.

In other news, Soapbox is going well. It's hard to try and be a business but also have a social mission. Sometimes I think it might have made more sense to have gone the non-profit route. On the other hand, I don't think it really would have mattered. If anything we have to work harder to prove our message.

What does matter is knowing how to measure our success. For me, the business end is not as important as the social mission. Creativity is a weird beast, and there is a fine line between horseplay & bullshit, and really amazing creative breakthroughs. I hope that having this space and inviting lots of people in and supporting the music they are making will lead to breakthroughs of various kinds. The best projects work on multiple levels - whether there are only 3 people involved or 3000. So far, I already think we've had some amazing things happen. The tough part is to try and keep pushing forward and keep chipping away at things slowly but surely. The daily grind. The stuff that feels mundane and repetitive, but ultimately leads you somewhere (hopefully). Even if it doesn't lead you somewhere, if you pay attention you'll at least know why.

Today I spent a good portion of my day researching audio circuits. It's amazing to me how much theoretical knowledge I learned in 4 years but how I walked away with pretty much zero practical knowledge. I have lots of ideas for building things but I have no idea how to actually do it. Theoretical knowledge teaches you to make sure all your calculations are correct on paper before building. In practice, this never works, usually because you encounter things you never thought would be problems. It's all trial and error and dumb things like the thickness of the wire you choose becomes a monumental problem. The only way to learn that stuff is through experience and trying things out - knowing what works and doesn't work - it's not always important to know exactly why. Just fuck around until something blows up and then try again. It's time consuming and costly at the beginning but overtime it pays off if you have the patience. It seems like an often overlooked part of learning: royally fucking up yet trying again. You at LEAST gain some major style points.

To get back to the audio circuits, I want to build some basic building blocks that will act as a stepping stone to more complex projects. The basic stuff first would be a 2-5 Watt power amp + speaker, a preamp, and a stackable mixer. By stackable mixer, I mean creating a single stand alone 2-1 mixer stage that connects (like legos) to other 2-1 mixers to create larger mixers. So you could easily make an 8-1 mixer by stacking 4 of these together. Amplifying weak signals to line level, mixing line level signals, and amplifying line level signals to power a speaker - these are pretty much the fundamental audio components you need to get things in and out.

Ultimately I want to get to a point where I can make a standalone pocket keyboard type thing. It would basically be a really basic 12-note polyphonic, velocity sensitive analog synth controlled by an Arduino that receives input via MIDI signals. Controls would be basic - tremolo, vibrato, tone, ADSR, and waveform flavor. Each individual note/sound would be generated via a schmidt-trigger or a VCO and summed together to one output / speaker. I'm really interested in the design of the controls.

The reason I want to split things up is because I figure if I can make really generic bits of functionality (like a simple speaker) then this is something that can easily be used or re-configured for a later project, or would be useful on its own. That's the kind of practical skill, knowing how to build individual, re-usable parts (however, not necessarily that efficient) of something to achieve a greater goal, that separates real designers from everyone else. They have this intuitive ability to know how to achieve their desired goal despite not knowing all the information at the outset.

More about the EPs later.