I've been busy lately. The journey to begin to understand FPGA programming is neither short nor easy.
Video Games
GrazerBeam is still a thing. I haven't done any actual work on it, but I've put a little thought into it. I ordered a Pandora, so when I get mine and fine the time I'll start work on GrazerBeam for that. I feel that analog sticks would allow for more skill-based difficulty or something.
I've got another small game in development called Ten Strokes to Victory (nsfw). It combines elements from the rhythm, typing, and masturbation genres. It's much simpler than GrazerBeam, so I'm going to try to get some work done on weekends, maybe, if there's time. That means I might finish it before May.
Not Video Games
I'm turning away from video games some in my personal projects. I've got two projects in the works that relate to music. Sinusynth is a parametric sinusoidal synthesizer. I made the original prototype in September and used it to make this abomination. There are a number of improvements that can be made, including dynamic synchronization of phase to phase 0 at t = 0 to avoid undesirable volume changes caused by changes in frequency. There are also some significant simplifications that can be made to the way sounds are described.
The other project is one that I also prototyped last year. I don't know what the demand is, and I don't particularly care, but there aren't a lot of Theremin companies out there, so maybe there is a market, especially given how much most Theremins cost. I've had the opportunity to play a Moog Etherwave, and having tried to build some Theremins on breadboards, I can really appreciate the excellent engineering that went into the instrument. It's really, really beautiful...
Anyway, I feel like there's a lot more that can be done with the Theremin form than has been done. A typical Theremin produce a single output signal consisting of a frequency and an amplitude. The signal can be amplified and played by a loudspeaker, but that's about it. It's not useful for much else.
I intend to create a Theremin that outputs two voltage signals: one to describe frequency, and one to describe volume. Different modules can then be installed in the Theremin or connected to the Theremin to produce tones based on those two voltage signals. The Theremin could serve as a standalone instrument using oscillator and signal processing modules, or it could serve as an analog controller for some other instrument or device using its two voltage outputs.
Modules might also be used to modify the way the Theremin is played. A simple differentiator on the volume signal changes the volume control from a position sensor to a motion sensor, so that the faster the performers hand moves, the louder the Theremin plays. The voltage signals could be processed by a microcontroller and discretized to produce only notes of a scale or transformed to change the relationship between distance between the performer and the antenna and output pitch or volume.
Summary
I intend to begin work on the modular Theremin project full time in May. If I have received my Pandora, I may also begin work on GrazerBeam in may during my free time. Along the way I may drop a little time in a few other things here and there, but until May I don't expect to get much done.
Friday, March 4, 2011
Thursday, October 14, 2010
Blur/Glow/CRT

Was messing around with some ideas for GrazerBeam and some techniques from DSP. Ended up with this. It's not much of a CRT, but I think it looks nice.
Tuesday, July 27, 2010
GrazerBeam
It's been a couple weeks since I stopped on limit quest and started grazerbeam, so this post is a little bit overdue.
Also improved the width so that images are no longer cutoff all the time.
Wednesday, June 23, 2010
LORA finished, Limit Quest just beginning
3D gameplay, 2D graphics. Tile sizes are 33"x33"x22" and derived from the character's height ,which is why they are in inches. The guy there is for size reference. Movement involves ladders, stairs, and ramps as well as futuristic devices such as teleporter rays and pneumatic elevators (not shown).
Wednesday, June 16, 2010
Monday, June 14, 2010
Cells Redux Image loading bug
I have found that on a number of windows computers, Cells Redux fails to load images. Further investigation reveals that this is not true. The SFML image gives the correct height and width of images, openGL appears to create the textures without any problem. I honestly don't know why its not displaying anything.
I plan to rebuild the Windows version using static linking and a newer version of gcc in the near future. Maybe that will fix it. I sure hope so.
I plan to rebuild the Windows version using static linking and a newer version of gcc in the near future. Maybe that will fix it. I sure hope so.
Friday, June 4, 2010
Wednesday, June 2, 2010
Cells Redux Progress
Almost there... mouse interaction is going to be rather ugly, but then again this whole thing is pretty ugly. As to the tutorial... I don't even know. Maybe it would be better to just have a readme...
- Mouse interaction
- Better tutorial
Add resume menu optionImprove key repeat speed issueAdd a high score tableMake checking give some indication of what or how much is wrong. As it stands, failing on a fully locked board basically means starting over. Maybe have options.Come up with a more elegant solution than the reset button.Add bitmap fontsGet rid of that console, add a title to the window, make an icon for the gameGameplay options: Color/Grayscale, Numbers/Colors/Both,Autodetect locked board and shuffle?(Removed)Sudden Death Mode (this may well be a luck thing and a bad idea)(Removed)Legend on/off(Removed)
Tuesday, May 18, 2010
I wasn't done after all
What good is sleep anyway? The top buttons now work as far as placing parts goes. The rotate and flip buttons also work. The light gray ghost shows what will happen if you click. The flip buttons light up to tell you if they're on. An orientation indicator on the rotate button would be nice too. It's possible to place parts, but not to edit them.
The buttons still don't interact, and I've thought about it some. Button movement is not as important as part placement and editing, so it's bumped down on the list to the end right after the new element color picking (where do you think that red transistor was supposed to come from?).
The buttons still don't interact, and I've thought about it some. Button movement is not as important as part placement and editing, so it's bumped down on the list to the end right after the new element color picking (where do you think that red transistor was supposed to come from?).
Monday, May 17, 2010
Progress for 10-5-17
There is a button class that handles some collision detection (no reaction) and all its graphics details. With support inside main, it can be moved (right now only the grid button is supported). The only buttons there that works is the grid button. There are display lists for 16 1-point components and 5 2-point components, all shown in the screenshot. The circuit shown is the same as before; hardcoded using the single-point component class. That class has no provisions for interacting with the user. Those will probably be handled in main in a general fashion. Should probably add a standard cursor button to switch back from deleting. Next up:
- Make those buttons interact with each other.
- Make it possible to add components using the buttons.
- Make it possible to edit components.
- Create a button configuration file.
- Screenshot support with provisions for existing files.
- Schematic file format.
- No windows API here. It will load and save from hardcoded filenames.
Betron I Schematic
This is all hardcoded, and the text was added in paint, but everything else was generated by software. The code looks something like
testNode->setList(NPN);
testNode->setPos(19,20);
testNode->draw();
testNode->setList(NPN);
testNode->setPos(19,20);
testNode->draw();
for each component, so It's pretty straightforward how this can be generalized into lists. Right now two-point components are handled with the one-point component class, but only because the two-point class doesn't yet exist. For the same reason, lines are handled with GL_LINES.
The whole thing actually took an hour or so to type out, and much of that time was devoted to matching grid points to points in the schematic in my notebook. That will not be a problem when the program has an interface. The main thing to note here is how sexy the schematic looks.
The whole thing actually took an hour or so to type out, and much of that time was devoted to matching grid points to points in the schematic in my notebook. That will not be a problem when the program has an interface. The main thing to note here is how sexy the schematic looks.
The circuit itself is fairly straightforward. The left side is two current mirrors. The red transistor is the DUT. depending on its type, one of the the current mirrors supplies a small current to the base, and then current at the collector can be measured via the collector voltage. There is a fixed conversion fact from the difference between collector voltage and supply voltage and the transistor beta given by
(thank you, LaTeX) where alpha_m, Vs, and VBE are for the current mirrors, and Vs is the total voltage from the positive rail to the negative rail.
Circuit Symbols
Dependent Voltage Source, Dependent Current Source, Op-Amp
Indie Voltage Source, Indie Current Source, AC Voltage Source
Node, Open Circle, Supply Arrow, Ground, Zener Diode
Resistor, Capacitor, Inductor, Diode
NPN, PNP, NMOS, PMOS
Maybe add Transformer, Potentiometer, Variable resistor, a couple more grounds
These are all coded straight in opengl. The plan is to make the code sufficiently general that I can add any amount of additional components easily in the future. That might mean making each buttons for each component and dockable entity that can be somehow enabled and disabled. That way adding a new component is just a matter of adding a new buttons, telling it what type of component it's looking at (2-point or 1-point), and showing it the display list.
Indie Voltage Source, Indie Current Source, AC Voltage Source
Node, Open Circle, Supply Arrow, Ground, Zener Diode
Resistor, Capacitor, Inductor, Diode
NPN, PNP, NMOS, PMOS
Maybe add Transformer, Potentiometer, Variable resistor, a couple more grounds
These are all coded straight in opengl. The plan is to make the code sufficiently general that I can add any amount of additional components easily in the future. That might mean making each buttons for each component and dockable entity that can be somehow enabled and disabled. That way adding a new component is just a matter of adding a new buttons, telling it what type of component it's looking at (2-point or 1-point), and showing it the display list.
Sunday, May 16, 2010
This is how it's done
This is all hardcoded, but it's all coded in such a way that it's straightforward to generalize into lists of objects. That same generalization will make it possible to extend lines a little bit so the look nicer at edges (look at the emitters of the transistors here). Some may say that resistors should have more than just the one notch. The whole aesthetic here depends on elements being square on the grid. Don't ask me how I'm going to handle inductors.
Saturday, May 8, 2010
Plans for the Future
Summer's coming up, and that means full time development on Limit Quest. Before that, though, I'm gonna want a week or so to cool off from this past semester. I might also take that time to start thinking about game programming again with a remake of Cells using everything I've learned about game making. My goals are to make it look more polished, improve some really annoying things in the interface (for example: it's possible to resume the game from the main menu, but not obvious; I just had to guess and hope I was right.), and maybe make a nicer tutorial. I can apply new programming techniques to make the game much more compact and elegant.
Mainly for my own benefit before I forget, here's a list of some things to do:
Mainly for my own benefit before I forget, here's a list of some things to do:
- Add resume menu option
- Improve key repeat speed issue
- Mouse interaction
- Add a high score table
- Make checking give some indication of what or how much is wrong. As it stands, failing on a fully locked board basically means starting over. Maybe have options.
- Come up with a more elegant solution than the reset button. Autodetect locked board and shuffle? Sudden Death Mode (this may well be a luck thing and a bad idea)
- Add bitmap fonts
- Better tutorial
- Get rid of that console, add a title to the window, make an icon for the game
- Gameplay options: Color/Grayscale, Numbers/Colors/Both, Legend on/off
Wednesday, March 3, 2010
Sunday, February 21, 2010
Thinking of you (no not you)
Thinking of balding man. Thinking of a beefy flag system that throws caution to the wind and lets me blow my brains out (metaphorically) if I want to. Right now it goes like this:
Saturday, January 30, 2010
It's not easy being...
I am fairly certain this one is based half on a toilet bowl and half on the cover of that one version of beowulf.
Friday, January 22, 2010
Subscribe to:
Posts (Atom)














