• Click here for a list of all my projects.
  • Click here for Touchlib info. Source code here.
  • Click here for our multitouch community site.

Tuesday, January 30, 2007

Today's Work

I got a bunch of stuff done on Genome's tracker module. You now scroll patterns larger than the screen, and you can box select with the mouse. I'm planning on putting my own spin on the tracker in an attempt to bring it into the 21st century. For one, I'm making it horizontal instead of vertical (mirroring pretty much every other music program out there). Mouse interaction will be much better than in the past (read: Buzz). You will still be able to do everything with the keyboard, but there's no reason why you shouldn't be able to do everything with the mouse too. Gone is the fact that deleting a cell moves all the cells beneath it up. I always felt that this was annoying behavior. Sometimes it does come in handy for moving blocks of notes around, however a lot of the time you just want to delete something without messing up your timing for everything else. Instead, I will leverage box selection and allow users to move around blocks of notes with the keyboard or mouse, or I will add another keyboard short cut (like ctrl-delete) to do the old behavior.

On the touchlib front, on suggestion from some other #ftir'ers I checked out Oscpack and FLOSC. I was able to get both up and running fairly easily so I think I may take a shot at adding OSC support to Touchlib. I will use the TUIO protocol which is already used by the reactivision software. A handful of programs already support this protocol - Audiomulch for one - so it could expand the available applications that can work with touchlib. Also, it will alow for development in Flash (with FLOSC) which is exciting to me as a Flash Developer. This could be a good option for people to start making apps without having to mess with C++.

Labels: , ,

Monday, January 29, 2007

Multitouch News

The Nuigroup website is now in full swing, with all major parts operational. Be sure to check out some of the latest news postings and drop by the forum. I'll be making all my multitouch related news postings on there from now on.

Labels:

Genome Progress

Today I got the Library working. There are still a few things left to do (like allow for sorting), but the basic functionality is there. Now I think I will focus on improving some of the major modules and getting things to the point where you can start making simple songs, before I loop back around and refine things. The first will be the Tracker module which is just one of several input devices you can use to sequence your music. I'm also planning on doing a piano roll, 808-style drum sequencer, and maybe one or two experimental interfaces.

Labels: ,

Thursday, January 25, 2007

Genome Progress


I fixed up some more GUI related items today. I still need to do a few more GUI related things and then I will work on the Library. The Library will be used for everything from songs to presets and it will work similar to iTunes' song list, allowing you to sort and filter your presets and songs by category, genre, author, rating and more. I will also allow the option of preset 'Variants' which are variations of a preset. This way you can have several versions of the same pad sound (different effects, filter settings, etc). It will also be useful for the Builder module where you may want to save different settings with the same basic construction.


The Library will also abstract the file system - the user just says 'save preset' and provides some metadata. There will be no need to pick what directory you want to save it in and no directories to organize or misplace. Genome handles all that behind the scenes. The library will also give the option to publish your presets or songs online and to download other people's work from within the app.

Labels: ,

Tuesday, January 23, 2007

Multitouch Website

Chris Moore is in the process of setting up a website devoted to the Multitouch community. It will feature news, forums and a wiki. Right now, the forum is up and running, and already has a bunch of members. Feel free to join and post your questions and discoveries about multitouch screens. Also be sure to check out the Showcase area which has some video's you might not have seen.

Eventually I hope this site will become the hub for DIY multitouch news (in addition to other cool related stuff). I will transition my multitouch posts to that site and keep this blog focused on my own projects.

Labels: ,

Monday, January 22, 2007

Genome Progress

I fixed a major memory leak in Genome today. Before the memory usage would go up 10-15k every second. I figured out that the leak is actually not even a fault of mine - it originated in the stringstream class, which is apparently a known issue. I was using the stringstream class in a processing loop, which explains the constant memory leak. I made some changes and now the leak is gone.

Otherwise, I've gotten a bunch of stuff done on the control surfaces and general fixes and improvements.

Saturday, January 20, 2007

More Multitouch Options

For those looking into software options to power their multitouch tables, here are a couple possibilities worth considering. One is this blob tracking module for PureData (PD), which might allow you to write your applications in PD. Another is the Reactivision software, which is used in the reacTable. It features marker detection and blob detection, but not blob tracking, so it might take a little work to get it functioning with an FTIR screen.

Genome Progress

This morning I got the basic copy / paste stuff working. I still need to implement it for the tracker / module view elements, but the basics are functioning. I also made it so you can paste controls onto the Control Surfaces and drag them around to reposition them which makes it really easy to set them up.

In other news, Paniq posted an update on his music app, Aldrin.

Friday, January 19, 2007

Genome Progress

I got the Builder module working yesterday and reworked some things with module serialization in order to get it to save properly. The nice thing about that Builder is that it will use the same interface as the track view which keeps everything consistent. Plus, any features I add will work everwhere.

I started working on some copy / paste functionality. I realized that this will actually be a major enhancement over VST since you'll be able to select which parameters you want to copy from one module to another. In VST, the only way to share data is to save a preset and load it elsewhere. In Genome you'll be able to copy the Amplitude envelope from one synth (attack, decay, sustain, release) and copy it to another synth (maybe even a totally different kind of synth).

All this is possible since in Genome, all parameters inherit from an abstract Parameter class. This allows the host to have some basic information and control over any parameter on any synth. It also allows me to automatically serialize all the parameters of any module. And, it enables me to have a highly decoupled architecture which ends up being more bug free and also easier to extend. In the VST world, managing the parameters and the GUI is largely up to the VST which ends up being a lot of wasted work. In Genome it is possible to create a synth without writing any gui related code. You also don't need to worry about saving parameters. Plus you get a library of DSP modules to pick from (OSC's, filters, etc). You would only need to write code if you want to create custom elements. So, making a new synth might only involve writing some new oscillators and plugging in some readily available components.

Thursday, January 18, 2007

Genome Progress

I got most of the basics working for the Control Surfaces. You can add controls from other modules and control their parameters from one interface. I think a good mechanic for how the user will create these surfaces is simply to allow them to copy and paste controls onto them. Originally I planned to give the user some kind of parameter browser which would allow them to browse the entire module hierarchy to select parameters, but I think this will be much more intuitive and fast. This will have to wait a little bit though since I need to come up with a global copy/paste system first. Right now I am working on the "Builder" module which will allow you to create your own synths and effects. It's probably the single largest piece of core functionality left to write, so I am eager to get it working. I'm hoping to have something functioning today.

*update*: The "Builder" module breathed it's first breaths today. woo!

In other unrelated news, I resigned from my job last week to take a new position at a different company. I always find it hard to leave a place, but I think this new job will be a lot more enjoyable for me, not to mention offering better benefits, pay, and a more laid back, small company atmosphere.

New Jeff Han goodies

Here's a a very cool new video of one of his screens in action along with some pretty cool demos of the software. His new company is http://www.perceptivepixel.com/, though info is pretty sparse at the moment. Also there's a nice article here: http://www.fastcompany.com/subscr/112/open_features-canttouchthis.html Sounds like a fun place to work. :)

Thanks to Chris Moore for tipping me off.

Monday, January 15, 2007

Designing Interfaces mini book review

I finished up the Designing Interfaces book I mentioned a couple posts ago. Overall it was a decent book and I would recommend it. Being a design pattern fan, I appreciate that this book breaks down common design practices into patterns and tells you when you would want to use them and what kinds of problems it solves. The most useful parts of the book were those that dealt with program flow and layout and the last section that dealt with graphic design. The section that dealt with all the UI widgets was good to have but most programmers should be familiar with these already. The author was wise to include examples from current popular programs like iTunes which makes it easy to recognize and understand the patterns.

On a side note, while reading this book, I realized that what I really want is a book on graphic design, not UI patterns. I already have a good grasp on workflow, widgets and layouts - now I want to make it look good. If anyone is interested, I found this nice little list of graphic design tips.

In conclusion - I would say this is a good book for anyone who wants to get started designing interfaces or people looking to brush up on their knowledge. It covers all the bases. The one fault of this book is that it's a bit short. It might have been nice to have some case studies. But, it's short length makes it a good reference.

Another genome UI

Here's my latest attempt. Feedback welcome.

Sunday, January 14, 2007

Genome Progress

In addition to some enhancements and improvements, I got some of the basic 'Control Surface' functionality working. This will allow you to build interfaces that control other modules. This should be a nice way to make a surface that just has the controls you are interested in tweaking for a song or track. Later I will add the ability to add elements to the surface that can have scripts attached. This should allow for a massive amount of flexibility for power users who want to try some experimental things with Genome. The control surfaces will also be useful for when I make it possible to build synths and effects from scratch.

I have also started reading a couple books on GUI design - though I am not bad at art, there's always someone who complains that my interfaces are ugly, so I figured it's about time that I learn a little bit of theory. I'll post some reviews of the books when I'm finished.

Monday, January 08, 2007

Another Video..

I also came across this other video entitled "God Engine" and it's pretty funny. In this application, users use a lighter to cause living organisms to grow. Check it out.

DIY Multitouch Video

One of our fellow FTIR seekers has posted a video of his project. Here he is evaluating a possible compliant surface made using silicone sealant



Labels: ,

New Linux music studio app


Linux Audio nerds may be interested to see that MusE (Any relation to Muse Research, the company that made the Receptor hardware box?) is working on it's own Open Source sequencer (also called MusE). Here's the link which sums up the the features. It can play windows VSTi's in addition to the linux ones. Get it here.

Labels: ,

Thursday, January 04, 2007

Genome Progress 4


I took care of a few more UI issues today and I might do one or two more before setting aside the UI stuff again to take care of the 'Control Surface' functionality. It's a pretty big piece of the pie so I'd like to start figuring out how it will work and where it will fit in.

Wednesday, January 03, 2007

Genome Progress 3


Today I got the navigational buttons working. Genome will feature a navigational method that should be very familiar to anyone who has ever browsed a website. There will be a left nav bar listing all the "sibling" modules and a "bread crumb" style bar listing the current path. This paradigm is even used in Windows vista's directory explorer, and I think it has proven to be an efficient way to to navigate hierarchical data such as a disk directory, XML, web page, etc.. It should allow you to get anywhere in the song in 1 or 2 clicks. An efficient workflow is very important for any creative tool as it affects how quickly you can get your ideas down. It also affects the level of frustration for users trying to find what they are looking for. A familiar interface should make it easy for new users to get started.

Tuesday, January 02, 2007

A few more Genome shots


I spent the day improving the GUI on Genome. There's still quite a bit left to do, but it's amazing how much better it looks now that the colors are matched up and some gradients are on there.

I also put together a list of expected features for Genome.