Thanks to the generous efforts of Cedric Caillaud, a windows binary of Borderlands is now available. You can find it in the downloads section!
Also, for those not aware, the iPad version has been released and is available in the App Store now! Official site here: www.borderlands-granular.com.
Version 04 is now available in the downloads section. This update contains a few minor bug fixes and two new features: independent control over the volume of each cloud in dB (using the b key and numerical entry...think of it as "b" for "bel") and the capability to toggle between full screen and windowed modes (using the "o" key). You can also move your vantage point around using the arrow keys, which can be helpful in windowed mode.
I am still hard at work on the iPad version, which will hopefully be moving into a brief beta-testing phase in the next week or two before I submit it to the App store. Development time was a quite limited in the past month while I was finishing up my degree at CCRMA and searching for a job, but now that I am unemployed for a little while, I should be able to make quick progress. I really appreciate everyone's patience and will do my best to make it worth the wait! Here's a recent screenshot:
And this is the sound produced by that configuration (with some gestural input over time):
As always, please feel free to get in touch if you have any questions and please do join the mailing list here if you haven't already. Thanks!
UPDATE: I've created a Google group here to serve as the mailing list for Borderlands. I will post updates to the list as soon as I have news regarding the iPad release, new features, bugs, etc. Please join! Also, found one minor bug this morning in the Desktop version (some audio files were loading 1px wide on launch...oops!). The new version is still 0.03, but the bug fix has been incorporated. Uploaded the fix at 1:40 Pacific time - it's available in the downloads section. Thanks!
Beautiful post about Borderlands (both mobile and laptop versions) at Create Digital Music today! Many thanks to Peter Kirn for the extremely kind words!
More information about the iPad version can be found here.
Please check the downloads section for an incremental update to the laptop version - a few small bug fixes and two new features:
Multichannel support: you can scale the system to N channels by editing MY_CHANNELS in theglobals.h and compiling. Pressing the "t" key toggles spatialization modes for each grain cloud - UNITY preserves the original spatialization of the underlying file (mono or stereo). STEREO alternates grains between L and R (1,3,5,7 and 2,4,6,8 for 8 channel setups), AROUND plays each grain in a new speaker clockwise around the N channel setup (this is equivalent to STEREO in 2 channel mode). This is certainly not the most robust way to do spatialization - continuous control would be ideal - but it was a quick addition to support an recent 8 channel performance with the software.
Playback rate LFO A low frequency oscillator can now be applied to the playback rate of the grain cloud. This is useful for creating rich chorus-like effects and is especially effective in stereo. After creating/selecting a grain cloud, press the "L" key to adjust the LFO frequency. "K" adjusts the LFO amplitude.
Here's some footage from my live performance with Borderlands at the CCRMA Winter Concert (thanks to Dave Kerr for the video!):
On a slightly unrelated note - if you are in the Bay Area on April 28, please come check out CCRMA's annual Modulations event at CellSpace in San Francisco. Guest artists include Tarik Barri and Christina Chatfield. A bunch of other CCRMA artists are on the lineup too. More info here.
Thanks again to everybody for the enthusiasm about this software! Please get in touch if you have any questions or comments. You can reach me at carlsonc(at)ccrma.stanford.edu
I am also working on updates to the laptop version. My apologies to those who have been waiting for new releases - I have been focusing all of my energy on the mobile development for the past couple months, but I do plan to continue working on the original in parallel from here on out!
Quick update - I created a Soundcloud group for Borderlands. Would love to hear what you have been making, so please share! I am in the midst of preparing a conference paper submission, so coding is on hold for a bit. Will get back to it soon! Thanks again to everyone who has gotten in touch about the software. I hope you are enjoying it!
The source available for download now compiles on Linux as well as Mac OSX.
One note - depending on whether or not your system supports antialiasing, the grains may show up as circles or squares. Each grain is rendered as point with varying size. Code for rendering each grain as as gluDisk instead of a point is available in the draw routines in GrainCluster.cpp and GrainVoice.cpp. Feel free to comment out the point code and use the disks if this is an issue for you. No offense to squares...
For those who don't like mucking around with source code, makefiles, etc, I am hoping to get binaries up for download later this week (all of the libraries will be statically linked, so you won't have to download those either!).
More features on the way in the next few weeks too! Stay tuned...
Looks like the site is picking up some traffic, so I thought it would be a good time to post an update about my plans for the software. Thanks to everyone who has provided feedback already! If you have any issues compiling or find any bugs, please feel free to get in touch (carlsonc AT ccrma DOT stanford DOT edu). I will try to resolve any issues as quickly as possible!
Borderlands originated as a final project for the class "Software Paradigms for Computer Music" at Stanford's Center for Computer Research in Music and Acoustics (CCRMA). Given the time constraints of the academic quarter and the short period over which Borderlands was developed, the software is by no means fully realized - there are a lot of features left to be added (see the list here). I hope to continue expanding the capabilities in the coming weeks. A multitouch/mobile version is planned, but probably won't be available for another few months. I have also been talking with a few people about an interactive sound installation, which will hopefully begin to take shape in the near future.
I have gotten a few emails about exporting audio from the application. There are no built in tools for doing this at the moment, but it is possible to record the audio output using an inter-application audio routing utility like Soundflower and your favorite DAW. Borderlands uses the current system audio device, so you will have to set Soundflower as your default audio output device in system preferences.
Over the break, I put together a short demo performance video. I will post a more detailed tutorial video with information about the keyboard controls soon.
Thanks again to everyone who has tried out Borderlands! I am excited to hear what you create!
Project page launched! V 0.1 available for download! Stay tuned for updates with new features, and please feel free to get in touch if you encounter bugs! Currently the software is OSX only, but will be tested on Linux shortly (edit - Jan 10, 2011. The source now compiles on Linux). You can reach me at carlsonc AT ccrma DOT stanford DOT edu if you have any questions. Please also have a look at my creative portfolio for other work.
"If this word ‘music’ is sacred and reserved for eighteenth and nineteenth-century instruments, we can substitute a more meaningful term: organization of sound.”
"Any sound that the human ear can hear can be made by a sequence of digits. And that’s a true theorem. Most of the sounds that you make, shall we say randomly are either uninteresting, or horrible, or downright dangerous to your hearing. There’s an awful lot to be learned on how to make sounds that are beautiful."
...in building music software or hardware is centered on the ideas put forth in these two important quotations. With Borderlands, I am attempting to build an instrument that is deeply rooted in the exploration and organization of sound, placing users in the roles of both listener and curator. I aim for this instrument to be playful, intuitive, versatile, and, most importantly, sonically engaging. I plan to use it in my own music creation, and I hope that you will too.
This concept sketch illustrates the general metaphor explored in Borderlands: the idea of a terrain of sound that may be dynamically shifted, sampled, and deconstructed.
Users begin by placing any number of .wav and .aif files in a "loops" directory contained in the source distribution. When launched, the software randomly distributes these files, forming a 2D landscape on the screen. Each waveform is constrained to a rectangle and is oriented either vertically or horizontally. Both stereo and mono waveforms are represented. These rectangles may be selected, moved, and resized.
A "grain cloud" may be added to the screen under the current mouse position with the press of a key. This cloud has an internal timing system that triggers individual grain voices in sequence. The user has control over the number of grain voices in a cloud, the overlap of these grains, the duration, the pitch, the window/envelope, and the extent of random motion in the XY plane. By selecting a cloud and moving it over a rectangle, the sound contained in the rectangle will be sampled at the relative position of each grain voice as it is triggered. By moving the cloud in along the dimension of the rectangle that is orthogonal to the time dimension, the amplitude of the resulting grain bursts changes.
The instrument may be performed by creating and destroying new clouds and dynamically moving them around the landscape. The landscape itself may also be shifted.
Given the limited time available to build the first version of the software (as part of a final project for Music 256a at Stanford's Center for Computer Research in Music and Acoustics), I have had to push a few features to version 0.2. Here are a few of the big additions that I have planned:
The software is built in C++ and uses OpenGL for visuals and RtAudio for real time audio. The design is currently loosely based on the model-view-controller paradigm, but could certainly use some cleaning up and tightening in the near future...
The main Borderlands.cpp code handles the GLUT initialization, mouse and keyboard interaction, and interfacing with the audio and visual objects. Each audio class has a counterpart in the visual realm, and the relationship of these is shown in the figure below. There are also a few utility classes (such as a global timekeeper singleton), which are not shown in the figure.
Download the source from the downloads section, unzip it, navigate to the Borderlands directory in Terminal, and type make. If all goes well, the source should compile. If not, please email me... (see above for my address)
Make sure that the required libraries are installed as well. Links are provided in the downloads section
Put your favorite .wav and .aif files into the loops directory contained in the distribution. These will be automatically loaded when you launch Borderlands.
Type ./Borderlands from the source directory in terminal. The screen will be black for a bit while your audio files load, and then you will see a title screen with instructions.
The user interaction is primarily mouse and keyboard based. Potential extensions with DIY controllers and MIDI/OSC are in the works for the future, though... Here are the main controls:
|? key||Hide/Show Title Screen|
|o key||Toggle full screen/windowed|
|Arrow keys||Move camera|
|TAB key||Cycle selection of overlapping rectangles under mouse|
|R key + drag||Resize|
|F key||Flip orientation|
|G key (+ shift)||Add (remove) cloud to/from end of collection|
|Delete key||Remove selected cloud|
After selecting a cloud, parameters associated with the granular synthesis can be edited. Most parameters involve keyboard interfacing. Select the key corresponding to the mode, then press it again to change the value. In some cases, numeric keys are used to enter specific values. In parameters associated with grain motion, the mouse is used.
|V key (+ shift)||Add (remove) voices|
|A key||Toggle cloud on/off|
|D key (+ shift)||Increment (decrement) duration|
|D key + numbers||Enter duration value (ms) - press Enter to accept|
|S key (+ shift)||Increment (decrement) overlap|
|S key + numbers||Enter overlap value - press Enter to accept|
|Z key (+ shift)||Increment (decrement) pitch|
|Z key + numbers||Enter pitch value - press Enter to accept|
|W key||Change window type (HANNING, TRIANGLE, EXPDEC, REXPDEC, SINC, RANDOM)|
|W key + 1 through 6||Jump to specific window type|
|F key||Switch grain direction (FORWARD, BACKWARD, RANDOM)|
|R key||Enable mouse control of XY extent of grain position randomness|
|X key||Enable mouse control of X extent of grain position randomness|
|Y key||Enable mouse control of Y extent of grain position randomness|
|T key||Switch spatialization modes|
|L key (+ shift)||Adjust playback rate LFO frequency|
|K key (+ shift)||Adjust playback rate LFO amplitude|
|B key (+ shift)||Adjust cloud volume in dB|
Sound samples also coming soon!
Get the Windows Binary here!
Mac/Linux users, for now, please email me if you have trouble building the source. I will do my best to help!
If anybody has compiled another binary, I would be happy to host it here!
Update! The newest version is now Linux compatible!
Version 0.4 is available here.
See here for installation and usage instructions.
Borderlands is currently licensed under GPL v3.0.
Borderlands has been tested on OSX and Linux. A Windows binary is available for download under the Binaries section a few lines up.
Libsndfile is used for loading .aiff and .wav files
NOTE: when installing libsndfile, you will need to first run ./configure, then run make, then (IMPORTANT) run sudo make install. The sudo is necessary to give you root priviledges for the install, and you will need to enter your system password. The libsndfile documentation does not make this clear. If you do not do all of these steps, the library will not install correctly and you will receive errors ("cannot find SndFile.h," for example) when compiling Borderlands.
RtAudio is used for real-time audio I/O
Please install all of these libraries as directed in their distribution README files