Saturday, May 31, 2008
webware
I just heard about webware on the mp3 insider podcast from cnet. Very cool site, with reviews and links to neat new web applications.
It was so funny that the first story was about Folia a social network site for gardeners. Funny because the first big Ruby on Rails website I built, lovemygarden.net was also a social networking site for gardeners.
I built it in 2006, when Rails was just getting really popular, and the advice that I found was to build a website about something that you're passionate about.
lovemygarden.net is still up there, but I found that doing a whole website just by myself was too big of a task. It's better to have a small team.
Friday, May 30, 2008
Thursday, May 29, 2008
osc
Some papers about OpenSound Control:
Matt Wright publications
Open Sound Control: State of the Art 2003
OSC specification
Managing Complexity with Explicit Mapping of Gestures to Sound Control with OSC
Open SoundControl: A New Protocol for Communicating with Sound Synthesizers
Everything you ever wanted to know about Open Sound Control
Everything about OSC - Movie
Wednesday, May 28, 2008
arduino osc
It would be nice to get the Arduino to talk OSC. It looks like it's tricky because the Arduino doesn't have an ethernet port, like the Make Controller.
Here are some resources that might be useful:
d.tools: Arduino support (EXPERIMENTAL)
Can Arduino send OSC directly to Reaktor etc?
Interfacing PD
[Developers] Arduino + OSC
monomeserial - Get monome to talk to a serial port
SB70 Add device connectivity to your product via 10/100 Ethernet
AVR
avrlib
Procyon AVRlib - C-Language Function Library for Atmel AVR Processors
Good thing I'm learning the Make Controller first, I can get my feet wet, and then later move to the Arduino.
XMLSocket
I think I might try to hook up Marsyas and Flash with XMLSocket, and then to the Make Controller via OSC.
I could also hookup Marsyas to neko, and then neko to Flash, but for the high bandwidth data that I'm going to need, I think hooking Marsyas and Flash directly together might be better.
I'll have to research this some more.
Make Controller Kit
Make Controller Ruby interface
Make Controller Flash interface
OSC resources
OSC in C++
OSCPack - a set of C++ classes for packing and unpacking OSC packets.
OSC CNMAT downloads
Guide to OSC Libraries
flosc
flosc is a Java server that lets different applications that talk OSC to talk to each other. Also talks to Flash via the XMLSocket class.
Very interesting, but sad that it is written in Java.
phoenix
The descent of the Phoenix lander was captured by MRO in a picture. Wow, that is some precise camera work.
Later the HiRISE camera on MRO took a picture of the lander on the surface.
Tuesday, May 27, 2008
icons
Some totally beautiful icon sets. Ok, this has just made me want to totally max out these Flash/haXe applications I'm building with amazing icons.
Monday, May 26, 2008
404
My goodness, it was sure tricky to add a 404 not found page to this one Ruby on Rails application I had. All the help pages didn't seem to work, but adding this to application.rb did:
def rescue_action_in_public(exception)
render :text => 'not found', :status => 404
end
isomap
Isomap is one of several widely used low-dimensional embedding methods, where geodesic distances on a weighted graph are incorporated with the classical scaling (metric multidimensional scaling).
A good resource for isomap is at Stanford.
symposium
There's a really cool Special Track on: Information Access And Retrieval at the 24th Annual ACM Symposium on Applied Computing. That would kind of rock.
Sunday, May 25, 2008
floss
An absolutely amazing podcast interview on FLOSS this week with Dan Ingalls at Sun right now.
Subscribe to the FLOSS podcast, they have some very interesting guests on from time to time.
marsyas
In Greek mythology, Marsyas was a devotee of Rhea/Cybele. He was a Satyr, a animal-man/shaman figure, usually shown drinking, dancing, playing tambourines and flutes (the instruments of the Bacchic orgy) and sporting with Nymphai.
In some stories, Marsyas challenges Apollo to dueling-banjos, in some, it is Apollo who challenges Marsyas.
remote control
I just got a remote control for my computer, and it is so sweet. I don't have to get up to adjust the volume between each podcast, and I have it all hooked up to MPlayer, amixer and Enlightenment.
I decided to get the Microsoft Media Center Remote, it hooks up via USB to your computer, and is well supported under Linux. It has a very nice ergonomic button layout and feel in your hand, which is the most important thing.
Under Fedora 8, you first need to get the atrpms yum repository installed. To do this, you first import the atrpms keys:
rpm --import http://ATrpms.net/RPM-GPG-KEY.atrpms
and then put the following lines in /etc/yum.conf:
[atrpms]
name=Fedora Core $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/f$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
Then, you install lirc with yum:
yum install lirc lirc-lib lirc-lib-devel
and install the module into your kernel:
modprobe lirc_mceusb2
Then, get this file and copy it to /etc/lircd.conf:
http://lirc.sourceforge.net/remotes/mceusb/lircd.conf.mceusb
After this, you start lircd:
/etc/rc.d/init.d/lircd start
To have it automated at startup,
1. Add the below to /etc/modprobe.conf
alias char-major-61 lirc_mceusb2
2. Set the service to start on boot:
/sbin/chkconfig lircd on
To check to see if your remote control is working, and what buttons correspond to which symbols, type:
irw
When you press buttons on your remote control, you'll see something like:
siddhidatri 144 [~] % irw
000000037ff07bed 00 ChanUp mceusb
000000037ff07bec 00 ChanDown mceusb
000000037ff07bec 01 ChanDown mceusb
000000037ff07bec 02 ChanDown mceusb
000000037ff07bf1 00 Mute mceusb
000000037ff07bf1 01 Mute mceusb
000000037ff07be9 00 Play mceusb
000000037ff07be9 01 Play mceusb
000000037ff07be9 02 Play mceusb
000000037ff07bf1 00 Mute mceusb
000000037ff07bf1 01 Mute mceusb
000000037ff07bfe 00 One mceusb
000000037ff07bfe 01 One mceusb
000000037ff07bfd 00 Two mceusb
000000037ff07bfd 01 Two mceusb
000000037ff07bfd 02 Two mceusb
000000037ff07bfc 00 Three mceusb
000000037ff07bfc 01 Three mceusb
To get MPlayer to listen to your remote control, enable LIRC support when you build it:
cd MPlayer-1.0rc1/
./configure --prefix=/usr/sness/mplayer --enable-lirc
make
make install
To get other programs, like eesh from Enlightenment to listen to your remote control, use irexec. You configure irexec by adding definitions to this file.
My current ~/.lircrc looks like:
begin
button = VolUp
prog = irexec
repeat = 1
config = amixer -c 0 -- sset Master playback 1+
end
begin
button = VolDown
prog = irexec
repeat = 1
config = amixer -c 0 -- sset Master playback 1-
end
begin
button = ChanUp
prog = mplayer
repeat = 1
config = volume 1
end
begin
button = ChanDown
prog = mplayer
repeat = 1
config = volume -1
end
begin
button = Mute
prog = mplayer
repeat = 0
config = mute
end
begin
button = Pause
prog = mplayer
repeat = 0
config = pause
end
begin
button = Home
prog = mplayer
repeat = 0
config = pause
end
begin
button = Skip
prog = mplayer
repeat = 0
config = seek 1000
end
begin
button = Replay
prog = mplayer
repeat = 0
config = seek -1000
end
begin
button = More
prog = mplayer
repeat = 0
config = osd
end
begin
button = Rewind
prog = mplayer
repeat = 1
config = seek -10
end
begin
button = Forward
prog = mplayer
repeat = 1
config = seek +10
end
begin
button = Play
prog = mplayer
repeat = 1
config = play
end
begin
button = Stop
prog = mplayer
repeat = 1
config = quit
end
begin
button = Enter
prog = irexec
repeat = 0
config = /bin/zsh -c 'xscreensaver & ; xscreensaver-command -activate'
end
begin
button = Clear
prog = irexec
repeat = 0
config = xscreensaver-command -exit
end
begin
button = Guide
prog = irexec
repeat = 0
config = /bin/zsh -c 'eesh -e "goto_desktop 1" && eesh -e "goto_area 0 0"'
end
begin
button = RecTV
prog = irexec
repeat = 0
config = /bin/zsh -c 'eesh -e "goto_desktop 3" && eesh -e "goto_area 0 1"'
end
begin
button = LiveTV
prog = irexec
repeat = 0
config = /bin/zsh -c 'eesh -e "goto_desktop 3" && eesh -e "goto_area 0 0"'
end
begin
button = DVD
prog = irexec
repeat = 0
config = /bin/zsh -c 'eesh -e "goto_desktop 0" && eesh -e "goto_area 1 1"'
end
Saturday, May 24, 2008
stick
1/2 stick of butter = 1/4 cup
I'm making white bread this morning, from a recipe in my Julia Child's book. Wish me luck!
Friday, May 23, 2008
future
Future Audio Workshop
Wow, super cool interface!
Also, Interview: New Virtual Instrument Maker FAW Talks Usability and Design
Both sent to me by Neil Burroughs, a fellow graduate student in George Tzanetakis' lab.
aa
Audio Anecdotes - A way cool series of three boks about audio and computer audio. We have a copy of Volume I and II in the lab, and I am seriously considering buying a copy for myself.
I love books.
nime2008
The 8th International Conference New Interfaces For Musical Expression (NIME2008) program has just been annouced.
Thursday, May 22, 2008
progress
Tracking the Progress of a Playing Sound in Actionscript 3.0.
From the Actionscript 3.0 Cookbook, which I might just need to purchase. I love the Actionscript 3.0 manual I have, and the cookbook might be a nice addition.
Wednesday, May 21, 2008
cantillation font
It looks like the standard Microsoft Arial Unicode MS font supports cantillation marks. You can get it from code.google.com
fedora kernel
I need to add a small patch to my kernel, so under Fedora 8 you can do this by:
yum install yum-utils
yumdownloader --source kernel
rpm -ivh kernel-2.6.23.1-42.fc8.src.rpm
rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel.spec
Another good resource is CustomKernel on the Fedora Project Wiki.
biro
One of my new collaborators at UVIC is Daniel Peter Biro, he's writing a new piece for piece for solo viola, three voices, seven instruments and electronics for Vancouver New Music, how cool is that?
Tuesday, May 20, 2008
wm
Yay! Webmonkey is back. I have good memories about Webmonkey, from the prehistoric days of the web. Glad it's back.
@w00d
Vote for Sarah Atwood at Mahalo VLOG Idol, she's the host with most.
Check out her really cool epsiode on Mahalo about how to Hula dance.
And a very cool wordpress blog name, @w00d, how awesome is that? Major geek-cred there.
Monday, May 19, 2008
rest
REST - Representational state transfer
RESTwiki
Architectural Styles and the Design of Network-based Software Architectures - The original REST document, a thesis by Roy Thomas Fielding
and
REST Web Services - The best description I have ever seen of REST. Finally, an article that puts REST into plain english and gets rid of the Ruby on Rails fanboy REST hype.
arduino and music
Where to buy the Arduino, in Canada, this is RobotShop
Diecimila
DIY MIDI controllers using PIC microcontrollers and Basic Stamps
MIDI Control at Make magazine
MIDI Output
diy midi drum triggers
Freeduino
Arduino to MIDI for a drum controller
Arduino Playground
flash and processing
Processing is an interesting and exciting extension to Java that lets you do complex visualizations quickly.
I'm doing lots of Flash right now, and it looks like there are ways to get Flash and Processing to talk to each other.
It looks like Processing isn't quite as suitable for GUIs as Flash.
Sunday, May 18, 2008
pd
Miller Puckette is the creator of pd as well as a number of other software projects. There is documentation available for pd. He also has a book out called Theory and Techniques of Electronic Music, with online and PDF versions available.
Check out the Pd Repertory Project which aims to provide patches that can run selected pieces of the live electronic music repertory using the Pd program.
Also, a nice interface for an analog synth. I'm doing a lot of thinking about music interfaces lately.
hydra vs. dragon
The Hydra versus Dragon coding competition.
Emacs has long been able to have multiple people editting the same document.
BKL
Removing the Big Kernel Lock from the Linux kernel is proving to be a big problem, and this means big issues for real-time code. Interesting.
I have an RT kernel on this laptop, but periodically there are weird hangups when using mplayer, so I am currently using the vanilla Fedora 8 kernel.
baking
Mmm, I'm baking bread again this weekend, it's in the oven rising. It's taking a while because it has a lot of Spelt and Kamut in it.
I was interested in what is the optimal bread rising temperature, and it seems like 30C (86F) is the best rising temperature, but it can be as low as 80F and as high as 105F.
Here's some helpful links:
Care Of The Rising Dough
Bread Baking 101 : Part 1: Let the Dough Rise
Bread Baking Guide
HOW TO BAKE:
FIVE FACTORS TO GET YOUR BREAD TO RISE
Following wikipedia led me to:
relict - The term relict is used to refer to surviving remnants of natural phenomena. In biology a relict is an organism that at an earlier time was abundant in a large area but now occurs at only one or a few small areas. The distribution of a relict is characterized as endemic.
c++ xml
Wow, there are a ton of XML C++ parsers and writers out there. All the way from the massive Xerces and Expat down to tiny ones like tinyxml. For one of my current projects, writing a graph visualizer for Marsyas, I want to use something tiny for writing XML.
Some links:
Simple C++ class for XML writing
CodeProject - Simple C++ class for XML writing
XMLIO - nestable C++ XML parser/writer
XML Programming with C++
TinyXML - TinyXML is a simple, small, C++ XML parser that can be easily integrated into other programs.
FlexibleParser
Arabica C++ XML parser toolkit
xmlParser
Xerces
Expat
Friday, May 16, 2008
data flow
Flexible event scheduling for data-flow audio processing a paper by George and Neil.
ABSTRACT
Real-time audio and music processing frequently requires actions to be taken relative to a number of different control rates such as audio sample rate or sensor inputs. These processing systems frequently use schedulers to manage this complexity. The design of a flexible scheduling system must avoid limiting the types of actions or the range of control rates available. Abstracting time and events from the underlying scheduler provides a high degree of flexibility for designers of processing networks. Marsyas[4] is an open source software framework for analysis, retrieval, and synthesis of audio signals with specific emphasis to Music Information Retrieval applications. The Marsyas scheduler uses these abstractions to provide a highly extensible scheduler.
mixman dm2
A Linux Alsa MIDI device driver for the Mixman dm2(TM) virtual turntable device.
Nice. We have one here at the lab, I want to try to get it running with Linux.
mod_cband
Manage Apache Download Speed And Traffic Limits With mod_cband - Slow down your apache with mod_cband - Will be nice for testing the Orchive FFT mp3 file downloads, to make sure they work over slow connections
mod_cband
apxs - APache eXtenSion tool - Used by mod_cband to talk to apache.
sonic
SonicVisualiser - A very interesting C++ with Qt application for looking at sound files with a variety of different analysis methods. Overlays all the different analyses on top of each other. I learned about this from reading the proceedings of ISMIR 2006
rubberband - an audio stretching library used by SonicVisualiser.
fresh fedora
Installing Freshrpms yum on Fedora 8:
rpm -hiv http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/8/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm
rpm --import http://freshrpms.net/RPM-GPG-KEY-freshrpms
Thursday, May 15, 2008
Don't use "flash" for a controller method name
In Rails, don't use "flash" for a controller action name
This one bit me in the ass today. I was getting some crazy weird errors:
/!\ FAILSAFE /!\ Thu May 15 11:26:01 -0700 2008
Status: 500 Internal Server Error
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.sweep
And it turned out the only problem was that I had created a "def flash" method in my controller. I was making a Flash player, so this is probably DHH's way of getting back at people who use Flash instead of AJAX. I'm on to you, DHH. ;)
Wednesday, May 14, 2008
mod_cband
The main mod_cband site appears to be down, but you can get it directly from the mod_cband page on sourceforge.
flash
Flash standalone player fails to load content via HTTP - On slow connections, The Flash player can sometimes fail to load Flash content. Good to know.
2880
A little gotcha that just got me: Flash won't apply a ColorMatrixFilter to an image larger than 2880 pixels in width or height. I found an article that talks about a way around this, namely, you draw into a new BitmapData object.
Tricky!
rtaudio
RtAudio - RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows (DirectSound and ASIO) operating systems.
We're using this in Marsyas for our audio engine. Looks nice, especially the new version 4 callback API, instead of using blocking calls for audio.
matrix
Matrix at wikipedia
Vectors at matlab
Column vs Row Vectors
"The dimensions of a matrix are always given with the number of rows first, then the number of columns."
Interesting, I always think in x first and then y, but for matricies, you specify rows (y) then columns (x).
Tuesday, May 13, 2008
private unit
I'm interested in testing private member functions and variables in C++ classes for the unit tests I'm writing. I found a couple articles about this:
Unit Testing Of C++ Classes
How to unit test C++ private and protected member functions?
Monday, May 12, 2008
trees
Tree Listening. An experiment where they hook up sensors to trees, and turn the things they sense into music. Beautiful.
unit testing c++
Building projects with Ruby on Rails made me a TDD (Test Driven Development) convert, and now that I'm working with C++, I just need to be doing unit testing with C++. Marsyas, the library that I'm working with has regression testing but doesn't yet have unit testing. I'm evaulating different testing frameworks.
A great resource that evaulates all the C++ testing frameworks is Exploring the C++ Unit Testing Framework Jungle by Noel Llopis. It's a well written article that goes into great depth about the different frameworks. After reading it, I am leaning toward CxxTest.
Dr. Dobbs Journal has an excellent article about CxxTest.
Here is a page listing all the C/C++ testing frameworks.
CxxTest
CppTest
TUT
CppUnit
cutee
Sunday, May 11, 2008
victoria festivals
electronics
Places to buy electronic parts in Canada.
It looks like Newark.com and Digikey might be my best bets for buying components.
Now, I just have to figure out what to build first. Something simple, from plans that someone else has made, so I can get my feet wet again. I miss the smell of solder and the feeling of building circuits, can't wait to get started again!
Saturday, May 10, 2008
sicp
Structure and Interpretation of Computer Programs, a so so cool video lecture series at MIT by Hal Abelson and
Sweet.
openspace + voice
I was at a really interesting performance at Open Space here in Victoria recently.
First of all, Kathy Kennedy led us around the city on a soundwalk. This was a different kind of soundwalk though, because each of us carried a FM radio around tuned to the local campus radio station which was broadcasting some ambient drone music.
Kathy was also broadcasting a signal on a little pirate radio transmitter that she had setup on top of the building. As we walked around the streets, our radios would randomly pick up the two stations, sometimes flicking briefly into other stations. People looked at this crowd of strange people carrying radios and humming with curiosity.
It would be cool to do this as more of a performance piece, perhaps we could spread out through the downtown, meeting up randomly, music interleaving. The radios were interesting because the buildings would distort the signal, but the other stations on the dial did interfere with the experiment. Perhaps we should do it with a less populated frequency on the dial? Perhaps there would be people walking around who would be transmitters, and others who would be receivers?
Could we do this with digital media? Live singers? Try to find where the singers are performing by using your own radio to locate their transmitter, and then as more people find the singers, the louder the amplification would be?
Later that night Christine Duncan gave us a wonderful performance of her 8 octave vocal range, with clicks and barks and whoops, poetry and music combined. Hexaphone, or rather four members of Hexaphone also performed a variety of works.
One of my favorite was a performance of a John Cage piece where two performers would play a game of chance, in this case, Snakes and Ladders, and the game board was mic'd and amplified just below the point of feedback. Very fun and reminded me of John Cage's work with the I Ching.
Friday, May 09, 2008
therm
I want to plot a temperature plot for the FFTPNG code I'm writing, here are some resources:
Wavelength and Colour
converting colour and wavelength at gamedev.net
How can I transform wavelength data into RGB data when using the Image Processing Toolbox?
Spectral and XYZ Color Functions
Colormap question
FORTRAN code for Approximate RGB values for Visible Wavelengths
Rendering Spectra
The best resource of them all was Color Science at midnightkite.com
power spectrum
I've been working with the PowerSpectrum code inside of Marsyas, and this led me to read up about Spectral Density on Wikipedia. The PowerSpectrum calculates the Spectral Density of a Spectrum inside Marsyas.
This led me to the very interesting topic of Colours of Noise. I'd heard of white noise and pink noise, but never of Green Noise, or Azure Noise. Wow, my mind has just been blown.
ftp
FTP directory for the Create project at USCB
Video and info about Point Line Cloud, an album from Curtis Roads (wikipedia article).
xv
xv
download xv
xv jumbo patches
xv jumbo patches readme
Download Jasper - necessary to get those xv jumbo patches working
Thursday, May 08, 2008
make
Working with Makefiles. It has been a while, and I needed to brush up on how to declare and use variables:
To declare:
LIBS = -lpng -lfreetype -lpthread -lasound -lmad -lvorbisfile
To use:
tutorial: tutorial.o
g++ -O3 -Wall -fPIC -o tutorial tutorial.o /usr/sness/marsyas/lib/libmarsyas.a /usr/sness/lib/libpngwriter.a ${LIBS}
flash 9 audio
The supported audio formats for external audio in Flash 9 are MP3 and FLV.
Using Sound in ActionScript 3: Part I
how to make actionscript 3 play generated pcm wave data - Wacky and wild.
soundwriter
SoundWriter is a neat little ActionScript 3.0 library that lets you create your own sound files for Flash 9 on the fly.
Flash SoundTransform
Something I just ran into with Flash: If you want to change the volume of a Sound object, though the SoundChannel you get when you press play and then through the SoundTransform object, you have to instantiate a SoundTransform object and apply it to your SoundChannel, like this:
mySoundTransform = new SoundTransform;
mySoundTransform.volume = 0.5;
mySoundChannel.soundTransform = mySoundTransform;
Tuesday, May 06, 2008
ERR
Runtime errors in Flash 9.
I was stumped for quite a while this afternoon about the error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Flash5$/mouseMoveListener()
I just turned out that I had redeclared a variable inside the new() constructor, like this:
class Zoomer extends Sprite {
private var box:Sprite;
private var dragleft:Sprite;
public function new() {
super();
var dragleft = new Sprite();
}
function mainMove (e:MouseEvent):Void {
dragleft.x = e.stageX;
}
That var shouldn't be in there, it should look like this:
class Zoomer extends Sprite {
private var box:Sprite;
private var dragleft:Sprite;
public function new() {
super();
dragleft = new Sprite();
}
function mainMove (e:MouseEvent):Void {
dragleft.x = e.stageX;
}
stribe
The Stribe is a really neato controller for music with 1024 invididually addressable LEDs and using softpots for control. All plans are available from the inventor, Josh Boughey. Nice.
Monday, May 05, 2008
getBytesLoaded
getBytesLoaded is not in ActionScript 3, it was removed. Instead use URLLoader and the bytesLoaded property.
Subscribe to:
Posts (Atom)