Pitch detection, get those notes right!

Eye stabs

Place where our files will be: http://code.google.com/p/eyestabs/


Give this entry an award


File Uploader Date
Pitch detection, get those notes right!
illume 2008/09/09 23:27
start of intro
illume 2008/09/08 23:20

Diary Entries

eye stabs. Do you? We figured out a possible idea for our game.

We're going to do a music game. Since everyone in our team plays music, that seems like a fun thing to do. So you'll need a computer keyboard, a joypad, or a real instrument and microphone to play our game. We wanted the program to be useful too... to help train peoples ears, and maybe other musical skills.

Different 'lengths of string' play different notes on a guitar. So that's how it matches up with the theme.


In the dirty underground music scene often referred to as 'eye stabs', there are lethal gigs in select nightclubs around the world. Musicians play for eyes. A tune is played to the musician, and they must figure out the notes played.

Fuck up the tune, and you are stabbed in the eye! Get the tune right, fortune and respect are yours! Better than the riches and the adoration though -- rich club owners can give you spare eyes... and provide doctors that can give you back eyes you have had stabbed out.

So are you prepared to put your eyes on the line? Can you play well enough to avoid a stab in the eye? Do you trust the sleazy club owners doctors to fix your eye if it does get stabbed?

                      q o o p
                      q o!o p
                      d o!o b
                  .'   |!!!|   `.\
                 /     !===!     \\
                 |    /|!!!|\    ||
                  \   \!!!!!/   //
                   )   `==='   ((
                 .'    !!!!!    `..
                /      !!!!!      \\
               |       !!!!!       ||
               |       !!!!!       ||
               |       !!!!!       ||
                \     =======     //
                 `.    ooooo    .;'

1 comment

basic intro sequence, with music

A basic intro sequence, with music.


Add a comment

intro screenshot, and what we did.

Last night 'akalias' did:
- initial import of notes.py, scales / intervals / pitch -> note mapping
- Pitch recognition prototype: analyse_play.py

I(illume) worked on the intro sequence a bit more, and got the game moving from intro, to note tapping part, and back to exit. I also did some more on the note tapping interface (which is the one where it shows you notes that you need to play). think sing star, or those bouncing balls in karaoke. So soon we should have a minimal game working... which we can then keep improving. I hope it'll be fun!

Here's a shot of our animated intro sequence. Note the guitar strings ;)

1 comment

Pitch detection of a guitar, and simple note/song interface.

Nicholas has been playing around with pitch detection on his guitar. Seems to be almost working.

Get those notes right! Notes come up on the bottom, and the notes you play appear on the top. This is just a functional moch up of the main game screen. Lots of other meta game screens are going to be in the game.   Including a doctors surgery where you can repair your eye, and club scenes. aka is working on the art work for them.

1 comment

Was spending 6 hours on a multithreaded streaming video player worth it?

um... I'm not sure. oh well... it was fun!

Add a comment

Not submitting final entry, will post later. + Postmortem.


Congrats to everyone who took part, pyweek was really fun! I look forward to playing your games.

we're not going to post a final entry. Our game isn't really at the stage where we'd like it to be... There's still a number of core features required before it's a 'game'. At the moment, it's kind of a fun intro, and a demo of what the game could be.

So we'll make a release some time in the next few weeks. Because we want to show everyone... but not before the basic elements are in place.

Until then, if anyone is bored, you can look at our subversion repository. The intro is pretty cool at the moment :) I think we spent far too long on the intro... so maybe that's worth a little download.

things that went well

  • kick arse intro (goes for 60 seconds or so). I would be happy playing it at party.
  • played around with portaudio. Which seems like the best solution for portable audio. I think we might use it in pygame (with likely something like swmixer)
  • learned to use ocempgui (finally).
  • got pitch recognition working for guitar fairly well. Learned about how the algorithm works, and the various limitations.
  • with a little more work, the game could teach people about music. We hoped to make it a useful program, as well as fun. Nicholas has already taken the pitch recognition parts to allow it to talk to other ear training programs.
  • pygame.threads.tmap combined with pygame.fastevents turned out to be a really nice way to do multithreading.
  • authors of libraries we used were very helpful. Especially Nathan(swmixer), and Marcus(ocempgui).
  • cool samples, and music. moxi made some cool music and samples. We only managed to use some of them because of the rush. However we are going to use more later.
  • found 4 new pygame bugs, and about 8 bugs in other python libraries. Even though they wasted time, it was good to find them.

  • things that went badly

  • thinking pyweek ended on sunday 5pm, when it ended sunday 10am.
  • dissapearing gfx team member, so I had to work on gfx elements at the last moments, when we realised he wasn't going to contribute.
  • spent most of the time on the intro. Including spending six hours failing to get the video playing with pygame.movie, and instead writing a multithreaded motion jpeg video player.
  • game elements left to the end. We should have polished those parts first. (But had lots of fun with other stuff :)
  • python bloat, and py2exe. Python really has put on the megabytes since python2.3. Took a while getting the size down from an initial 26MB to 6MB.
  • had technical issues getting the pitch recognition stuff working. That took a while. Was kind of pythons fault really. Including issues with the GIL(pyaudio doesn't release the GIL). Also the non deterministic way in which python does stuff (dicts, garbage collection, finalisers). Calling processes in python is also hard to do multiplatform nicely(even, and especially between different versions of windows).
  • issues with pygame sound loops, and Sound object loading. This wasted a lot of time.

    --eye stabs.
  • 1 comment