Projects
Click on a project below to go to that section of the web pageCurrent projects:
"Medieval Apprentice" PROLOG text adventure
"AmbiNet" neural network classifier
"MATMOOG" analog synthesizer
Monte Carlo "War" Simulation
Neural Network Model of Efferent Neural Signals
Axon Neural Network Synthesizer
Music and Sound:
Independent Component Analysis (ICA)
Wavelet Analysis of Music
Physical Constraints on Wavelets
Sound Objects
Letter-Spirit Feature Recognition of Sounds
Fractal Compression of Sound
Computer Theory:
Ping-Pong Model of Computation
"Machina X" board/ computer game
New Programming Language
New Operating System
Distributed Windows 98
Automatic Geometrical Theorem Prover
Pseudo-Science as a Belief Network
Automatic Code Generation
Monte Carlo "Solitaire" Simulation
Neural Networks:
Free-memory Neural Network Model
Neural Network Classifier for Sunspot Activity
Rotoscope Football Demo
Games:
Time-slip Space Shooter
SpaceFrog
SimHouse
Ultimate Platform Scroller
"Gods" City-building Game
Prophecy Trail
Pennsic
Court Intrigue
Miscellaneous:
A Skeptic's Guide to Electromagnetic Waves
Pat's Puzzle Page
Consulting Article
Boulder Computer Game Developer's Asscociation
3D Cinematography
-
"Medieval Apprentice" PROLOG Text Adventure
I was doing a joint project for my Artificial Intelligence and Computer Theory classes. It was videogame using Perl and Prolog together. I decided on using SWI-Prolog, and I started working on the axiom base. However, I never did the user interface except as screen snapshots.
-
"AmbiNet" Neural Network Classifier
I am still trying to build an "ambient sound neural net classifier" for a San Francisco Bay-area artist named Bill Fontana. I finished the main theoretical basis for the project last year, and I have produced a paper of my results. Please contact me for a copy.
However, I have been bogged down for the last year trying to get an implementation working in Microsoft Visual C++. I currently have a demo running, and I'm hoping to fix all the bugs by the end of this semester. Bill would like to use the program in a "sound sculpture" he is working on.
-
"MATMOOG" analog synthesizer
I have started to build an analog sound synthesizer in MATLAB. This is an easy project, but I only get to work on it in my spare time. However, it's been a lot of fun to work on, and it's given my a lot of insight into the "psychoacoustic" nature of analog synthesis.
-
Monte Carlo "War" Simulation
Check out a recent statistics paper on the Web. I studied the game theory of the card game "War", and came up with some fun results. It has a user-friendly Java applet that illustrates the game, which is kind of fun to play around with. I hope I can redo this paper sometime in the future, especially using a different card game, like Solitaire.
-
Neural Network Model of Efferent Neural Signals
For an introductory artificial intelligence class, I modeled "efferent" neural signals in human hearing. I'm using a neural network with some special filters to simulate the phenomenon. See my final paper hosted on my University site.
-
Axon Neural Network Synthesizer
Another project: using a neural network to gradually learn the important features of a sound in real-time. I will post *.WAV files if I get this working. This was my original idea for the AXON neural net synthesizer. To do this, I'm working on a neural net implementation as well as trying to learn Independent Component Analysis (ICA) and wavelet decomposition.
-
Independent Component Analysis (ICA)
I've always liked the idea of ICA. I think maybe the ability to discover features or parameters automatically from music could lead to a new form of music synthesizer.
-
Wavelet Analysis of Music
I'm a little tired of Fast Fourier Analysis (FFT) on discrete digitized sounds. Though the FFT gives a lot of information, it's impossible to modify the FFT and turn it back into the original signal (due to the windowing). I'm hoping wavelets would be a good solution. I've bought a few books, but haven't read them yet. Put this on the long list of things I'd like to learn. I *think* it's similar to doing a Maximum Likelihood of various transformed "mother wavelets". See the next item for my idea of a project for next semester's "Natural Language Processing" course.
-
Physical Constraints on Wavelets
The human voice can only hit a certain frequency range (and some frequencies are more prevalent/ probable than others), and the medium of air also limits the frequencies that can be transmitted. Plus, the ear has another limited range, with different sensitivity of different ranges. Anyway, this limits the possible wavelet transformations that can be done. All sound is a linear combination of sine waves, so maybe all this prior information will help me do wavelet decomposition with physical limitation in mind. Or something like that.
-
"Machina X" Board/ Computer Game
I've got a demo for this one, and maybe Rod Derrick's family and friends will let me test out this one. I played it for my History of Computing class, but most of the students were underwhelmed. The biggest problem right now is that players want to take forever to figure out the actions of playing certain cards. Also, finding the right mix of cards (and figuring out if the game should be played "statically" or "dynamically") is being a problem. I'll probably finish this up in Access and distribute the game for free over the web
-
New Programming Language
The joke goes like this: a professor asks a grad student to create a database to store all the student's grades. A month later, the professor checks in on the grad student, expecting the work to be done. The student replies, "I've written the operating system and designed the programming language... all I've got to do is write a compiler and I'll be done!"
I'm not that bad, but I *did* think up a clever twist on programming languages while I was taking a Java class. Then, I quickly forgot my ideas. But they are written down somewhere, they really are. Another language was designed to easily morph programs into other programs for use in genetic algorithms. Of course, in C++, morphing "for (int i; i<10; i++)" into "fom (int i...)" will break the code. How to let small changes have small differences but still let the program run?
-
New Operating System
Again, I can't remember what I was going to do, but I had a bunch of ideas at one point. I think it was a form of "meta-Windows" that ran the operating system in emulation and reality at the same time, and compared the output. Ideally, it couldn't crash (grin).
-
Distributed Windows 98
This one fascinates my, but I'm just learning about Windows programming. It would be fun to have windows all over the place on different computers, and I could send messages back and forth. The output would all appear on one computer, although bits of Windows would be everywhere.
-
Geometrical Theorem Prover
I love two-dimensional compass-and-ruler geometry. The search space is HUGE, but it would be cool to automatically find some new constructions. For example, I've forgotten how to make a perfect pentagon using only a compass and an unmarked ruler. Does anybody remember?
Scratch pad:
A game that modifies its instructions in real-time (like Cosmic Encounter)
A computer that modifies its instructions in real-time
Computer-brain-surgery robot arm (i.e. it solders itself)
Explore Non-Von-Neumann architectures
Study parallel processing algorithms
A Java Turing Machine simulation on the web
CU Prisoner's Dilemma Competition