We joined atlhack to discuss and collaborate on creative code projects. Many interesting projects follow!
Notes so far:
A few simple use cases:
1) Me
Looking for a masters program:
Search/sort by:
Geographic Region,
Size of the City,
Ranking of the School
2) Ben
Goes to the site because "its cool". Expects:
Get the map
Ranking slider bars
Numbered or lettered according to ranking, if there is one
otherwise
Search for the city / name, sort based on proximity
Certain sized school
Update dynamically
3) Graham
Looking for a phd program:
Search/sort using:
quality of teaching
how published / cited people are
Specifics: program keyword searches ("computer audio", etc)
Size of the city, culture of the city
4) Titus
Ratios
Looking for a grad program:
Major Specializations
Admission requirements
Average GRE
Number of students
Religious/Political Affiliations
Number of plublications (Impact factor)
Cost
If there are "out of state" benefits
Regional Weather (how cold it is)
Extracurricular activities
USNews rankings
Tiers / Risk Minimization
Undergrad:
class size
Acceptance
Retention
Average GPA
Internet Connectivity / Most Wired / Restrictions (OS, Firewalls)
A "Good" search result: 20
Search by "course", like "Semiconductors"
Biases:
Computing Platform
Research groups
vocational vs theory
political
religious
GALA
Landscape:
buildings vs trees
city vs town
Where they go after school:
Grad programs
Companies (colleges that recruiters visit)
Startups
Commotion is a realtime graphics system that I have been working on for
a while. It's Objective-C, OpenGL, and some Cocoa. I had
started work on it in 2003 for Sha Xin Wei at Georgia Tech's New Media
Center (in the LCC) as a text animation system. We were working
on the next generation of Hubbub, and Commotion was meant to be a
replacement for ActiveText, a Windows / DirectX animation system by Jason Lewis.
Commotion has still not become as mature as ActiveText, and since Xin
Wei's move to Canada, it has strayed from the original goal of text
animation to a more broad goal of realtime dynamic object management.
If I were to describe what Commotion does in 30 seconds or less, it would go something like this:
Eclipse is a powerful IDE and framework for language development. In this project, we build on the Eclipse platform to support operations and tasks that commonly appear in the course of systems biology.
The project aims to support seamlessly the many biological data formats, such as FASTA, and interface with NCBI and the ExPASy Proteomics Server. It aims to provide a unified interface for biologists working in molecular biology, systems biology, and genetics by treating DNA and DNA-like data as a 'programming language'.
The beginnings of a project on developing tools that will provide simple ways of building your schedule without having to do all the work manually.
Current ideas being tossed around:
Based the influence of:
Zils and Pachet - Musaicing (DAFX 01) (results)
Tristan Jehan - Creating Music by Listening (PhD thesis)
Make a better tool for editing recorded music.
Incorporating more of the musical structure will benefit both novices and experts at making collage and adding samples to works. For example, when "mashing up" existing recordings, one must first establish a tempo grid (source: Boot Camp - Mashing for Beginners). Since many people are working on Machine Listening problems now, we should be able to find a few algorithms good enough to establish a decent tempo grid.
Our overall strategy is to apply the positive results found in machine listening (note segmentation, beat segmentation, timbre similarity, rhythm similarity) in a way that presents a rich but facile interface for making new music out of old music.
We can find additional sources of expertise to apply to our editor. For instance, we can frame our problem of finding a sample out of a huge library as an information visualization problem.
Creating Passionate Users proposes that one way for software to be engaging is to have a number of "levels" which users naturally progress through to achieve greater mastery.
Here are some proposed level tasks for Mused users and developers. They range from Level One: Music Fan to Level Ten: Grand Collage Ninja.
1. Simple Modification - Take an existing music track and speed up the tempo, or change the key.
Sample Addition - Take an existing track, add samples from another song.
Sample Addition-Subtraction - Take an existing track, delete rhythmic or melodic material to leave holes, and add material from other music to replace it.
Harmonic Meddling - Take an existing track, and change the key of a limited part of the song.
Static Tempo Mixtape - Take a string of tracks, and modify them to have the same tempo. Cross-fade between them in the transitions.
Dynamic Tempo Mixtape - Take a string of tracks, and change the tempo smoothly from one track to the next, as well as crossfading between them in the transitions.
Power Hour - Create a beatmatched one hour mix for Jim's Power Hour.
Stylized Mixtape - Make either a Static or Dynamic Tempo Mixtape with elements of Simple Modification, Sample Addition or Subtraction, and Harmonic Meddling in each song. Come up with a creative concept for the mixtape.
Classic Mash (Sample Addition x2) - Take two familiar but stylistically different songs and interlace them.
Cover Song (Sample Addition x5) - Recreate a musical track as in Sample Addition, but draw most of the musical material from at least 10 tracks in equal proportions.
Creative Composition - Make an original composition from 10's of songs, using bits of vocals, rhythms, and instrument lines in new arrangements.
10. Comprehensive Composition - Create a song with a totally novel structure containing samples from 100's of different tracks, each of them lending a recognizible style to the song, but without any full melodies lifted from one particular piece.
This approach affords several benefits. It gives a set of intermediate milestones for development. Once development is finished, it provides a clear path (like a tutorial) for a user to gain mastery in progressively difficult tasks. Also, it makes us all feel like ninjas. Which is good.
Titus suggests Sonic Fountry's ACID which uses audio data pre-labeled with beats.
Tristan's page references Celemony's Melodyne, Bias's Peak, Ableton's Live, and Emagic's Logic Audio.
I've personally used Cakewalk, Audacity, Fruity Loops, and Tracktion One (raw material software). I still must try Fruity Loops Studio (latest), and Tracktion Two.
[ynniv: you should check out Dr. Rex in the Reason suite, as well]
Review Criteria:
1. Automatic Segmentation Processes present - algorithms that find the beat, find the notes, or anything novel in this regard.
2. How the sound is organized into a GUI
3. Any other special features or upshots
My attempt at constructing a basic graphics pipeline. The pipleine should load vertices from an established format (ie obj files), transform polygons into screen space, perform lighting calculations and rasterize.
Emphasis is on understanding the various stages of pipeline optimization rather than competing with DirectX or OpenGL.
It turns out that I have to do this as a TA in Alla Sheffer's class. Bresenham is included (which is finished). Texture mapping is a BONUS.The project was difficult because of some problems correcting seams in polygons but very straightforward. Source can be furnished upon request.
Possible future avenues of the project are interfacing with the GPU to accelerate the pipeline, but this is unlikely to happen.
GUM-Sticks!
The starting point for work on devices that bridge "stupid devices".
Some ideas:
Todo:
In Laurie Anderson's performance piece The End of the Moon she suggests that instead of ending sentences with periods, we might end them with clocks, signaling how long was spent on each.
I thought, "Emacs!", with the idea of making a gimmicky blog toy. Luke convinced me we might work to make it more generic, so it could be used as a program analysis tool as well.
The first version is rough, inserts directly into the text, and doesn't account for edits.
Future versions will have the following characteristics:
1. Instead of using keystrokes, will take advantage of emacs' structure of generic coding-text systems. It already knows where the statements begin and end.
2. Represent the time-stamps in some hidden form in the text, perhaps like glyphs or text properties. This would imply a separate render command. Luke points out that we'll need accompanying files with these annotations for the source code case.
3. Come up with more clever renderings.
4. Can turn the system off.
The first draft is at ravelite.org/code/clocks/.
Suckerville: the Game (early planning phase) is based on the comics I write. A few of which are at my comics page. I thought it would be neat to create a game with these characters where you could interact with them. This idea transformed into a lofty concept for a complex(-ish) society simulator. This game is single player and therefore all of the society, except for the players character, are simulated.
This game is loosely inspired by the Nintendo's "Animal Crossing." I saw my brother playig it one day and noticed his character had a shovel. I asked if he could hit people on the head with it, for a hilarious cartoony response. The answer was no, unfortunately. I thought I'd make the game like this except you could hit people on the head with a shovel. Naturally this would only be fun If they reacted to what you did, but how far could this go? The problem with the characters in Animal Crossing is that everything they do is tightly scripted. How can characters made to be dynamic. Many game programmers dream of creating emergent behavior in their dynamic content. Is this even possible?
Imagine walking around a city of ridiculous cartoon characters. They talk to you and to each other. They tell you what they like and dislike. They tell you that they don't like it when you hit them with a shovel. They don't like it when Charlie down the block hits them with a shovel and ask if maybe you could do a favor and hit him with a shovel. And the shovel smacking is only one of the many things you'll be able to do. The point is, the characters "know what you are doing and they "remember", and this affects the way they behave towards you. These characters are not like the typical video game characters that sit around helplessly while you run their errends either. They can do all of the same things you can do. And they can talk to each other as well as you.
The original idea is based around concepts
The Agent AI is the focus of the simulation. Each character should seem to have a life of their own, and the characters collectively should act as a system. Aspects of this are:
Goals and Challenges:
One goal here is to avoid equilibrium for the sake of extremes. The society should not have a predictable daily routine and there will be several factors to keep this from happening. Primarily, the player will have great power to stir things up. The player is an element of the system that is not under computer control, so the player's behavior is not likely to be systematic. In addition random or scripted disasters may befall the town. Overall, randomness will be introduced into every decission a character makes.
The map represents the city in which the game takes place. It will comprise all of the physical objects in the game.
structure: