A friend sent me an invite to Fandalism yesterday. I didn’t notice until today, but the invite still worked so I set up an account. Here it is.
Social Network for Musicians
I think this is a cool idea. I am excited about the idea of a social network for musicians and think this could be really awesome. There are lots of ways for bands and, essentially, finished projects to be showcased. Or the band is on tour and you can see them somewhere. There aren’t that many ways to look beyond that, though.
Fandalism pulls in your Facebook contacts and attempts to help you connect musicians. I am an early adopter, but I’m reluctant to share this until it’s more mature. I skipped.
From there I answered a few questions about my musical experience. It let me tell my story exactly enough to capture my experience by asking the kinds of questions musicians always ask each other. Like an interview. I dug it.
I then had something of a robust profile, but I hadn’t found a way to share a song yet. There’s an upload link in the upper right corner. It’s called upload, but I found a link for using music from soundcloud. Works for me. I linked to two Neptune Voltaire Songs, one Nawtral Selecta song and a Sea Graves song.
There is a First Aid Kit video from when we toured with Finch. Marc Allen made it with live footage captured by PJ de Villiers. Fandalism offers the same general design as the new Facebook and Path, but I can use the youtube video. I think this is a great touch. Try staring at my profile for a little while. Here is the the video.
There is so much potential here. I really like the idea. I love being able to search for people by zip code and interests. This will be a lot of fun as musicians sign on to the service.
My brother and I were discussing Amazon’s CD-on-demand service. He put his music on Spotify, iTunes, Bandcamp and basically everywhere by using Tunecore. He doesn’t have it on Amazon’s on-demand yet.
There’s been something of a tape phenomenon lately. Lots of music creators have released music this way in very limited numbers. They become cool collector’s items and can have plenty of value associated with them.
I believe the history and appreciation of vinyl is apparent enough that I don’t need to spend much time on it, but I do want to tip my hat.
Recreating The Past
My brother told me a story about a guy who writes music on the computer and goes through extensive means to recreate a warm and slightly lofi sound. He writes the music to a cassette tape at a higher pitch. He then plays it back a pitch lower to intentionally add imperfections. You also get the sound of tape added to the playback.
I have long thought that the warmth and crackling of vinyl could be simulated with a computer. I have experimented with playing samples of just vinyl crackling alongside MP3’s and thought the experience was neat.
This kind of experimentation is interesting because people long for the first form of many ideas. The first few albums from a band. The first movies by a producer. Early styles of jeans. 1950’s furniture. We reach back to various periods of time for influence, but it’s usually centered around the epoch of something. A style is born. Some person had a bold way of explaining why they believed in some idea and persuaded us in the process.
Dave Grohl is another example of honoring the past methods and intentionally using the machinery that can produce the sounds of past methods. He recorded the last record in his garage to tape and used all the old methods. Granted, he’s probably got an awesome garage. He’s using what he thinks makes the best sounds. It’s not cheap either. Physical gear can get very expensive.
Invention With Old Tools
A subtle detail of what makes the early tools so interesting is that they usually left a lot of room to interpretation. The placement of a microphone. The mixing of colors. It’s hard to be precise, and slight differences can actually contribute to a significantly different outcome.
To appreciate all the randomness introduced is essentially to appreciate vintage equipment. They basically got a few things done really well and left you to apply your taste to their application. Everyone has their little tricks for this type of work. Exactly 2/3’s of this, mixed with 1/3 of that makes the perfect mix. Or something like that.
People sometimes say the equipment is more pure. That might be true. They attempt to use analog interpretations instead of the mathematical gymnastics of digital equipment. Tape provides a continuous map of sound as we’d hear it in the real world. Digital provides extremely accurate approximations, tuned to the capabilities of our ears, yet we can hear the differences at low quality. A low quality tape might snap, or stretch, or get stuck in the deck, or lose some data in a patch here and there.
My brother’s friend was feeding some work from the computer out to the tape deck, like a plugin composed of analog equipment. He combined the two for a rich audio experience. Rich with reasonably quiet audio bugs here and there.
What I like most about the analog plugin process is that it adds analog traits to a powerful digital machine: a computer. It strikes me as some kinda of audio mechanical turk. Farm out the tasks that are hard for digital computers to analog equipment. Mechanical turk farms out tasks that are difficult for computers to humans via a market place. It’s roughly the same principle.
We work, we build, we create and we keep doing this over time. Eventually, we’ll end up with something worth sharing. But sharing the creation isn’t enough, the process of how it was created is also a conversation topic. What mics did you use? What kind of paper is that? Is that jQuery?
Including vintage equipment can contribute a lot to the quality of an experience. There’s lots of flexibility to tweak and iterate. A digital experience is basically the same each time. A guitar directly into a computer can feel stale. But a guitar, through an amp, into my iphone’s mic sounds great. Simple tools, even in the digital age.
Sea Graves: Modern Simplicity
I’ve been playing drums in Sea Graves for a little while now. Here is our soundcloud page. The sound quality here is similar to what I experienced with cassettes growing up. It’s similar to what my bands in high school got for recording quality too. Super lofi because we’re using a few mics on the drums, one on the guitar, the bass is directly in and one mic for vocals. Those mics then go into the PA and out of one track into Garageband. Basic.
And you know? It works fine. We don’t need serious precision right now. We just want it to sound raw and capture our energy. A few mics keeps it simple. A single track in garageband helps us agree that we’re finished tweaking, since we can’t tweak anything once it’s in a single track. We record vocals and we’re done.
Replace the computer with a tape deck and you’ve got the gist of how people made demos in the 80’s and 90’s. We’ve got all this incredible hardware built by geniuses, but I still find it easiest to just hook a basic computer up to some basic hardware to document the idea.
I sometimes use properties as a form of cache. You see this in Brubeck with current_user and current_userprofile. The idea is that if you don’t need access to the current user, the message handler won’t attempt to load it. If you do need it, the first time you try to access it will trigger the loading mechanism and off you go.
HT Tornado - I originally saw this technique in Tornado’s source code.
Basically, this is a lazy loading technique for attributes that people might use. However, if you do this frequently, as I’m doing right now to cache the compilation of WSDL files, you find yourself staring at a lot of boiler-plate code. Boooooooo.
I was mentioning this to my friend Alan and he asked why it couldn’t be done with a decorator. Well… He’s totally right. It can be.
A quick google turned up this stackoverflow link, which had the answer. I made a slight adjustment, but the general logic is still the same.
The basic idea is that this decorator will create an attribute with the same name as the function you’re decorating. This attribute will cache the value returned by your function.
Below we define a class called Foo which has a function called foo. We want foo to be our property.
Notice that foo() has a 5 second sleep in it. This will simulate something like loading a value from a database.
>>> class Foo(object):
... def foo(self):
... print 'Calculating foo, which might take a long time'
... return 'foo'
Don’t forget to import time.
>>> import time
OK. We’ll instantiate Foo and see what happens when we access our property foo. Before we do that, though, we’ll check the value of __dict__ to show that there are no cached values. After accessing the property we will see that self._foo exists, serving as our cache.
>>> f = Foo()
Calculating foo, which might take a long time
I really like how clean this approach is. Some folks find the use of Python properties less explicit than they’d prefer. If you have an opinion, please share it in the comments.
Thanks @whitmo for informing me that the Pyramid project has a similar decorator: click here.