-
Harry Potter PS/2 Mouse
08/01/2014 at 16:46 • 0 commentsHi,
here are the PS/2 Harry Potter mouse details.
The mouse glows red when you move it : it shines between the buttons and lights the harry potter logo, which is transparent. Should I used it in this project, to control filters, pitch, balance, volume or reverb depth?
Or maybe it deserves a project on its own ? Maybe I should open it up, and try to mod it ?
You judge, here are the photos:
MOUSE NOT POWERED :
MOUSE POWERED, NOT MOVING:
MOUSE POWERED + MOVING :
-
Bass Line instrument selection
07/27/2014 at 18:52 • 0 commentsImplemented instrument selection for the bass line, using the '+' and '-' keys. Also found a way to record the audio directly, the next movies will have a much better sound quality.
-
Added Filter Resonance Control
07/27/2014 at 16:27 • 0 commentsAdded a second potmeter to control filter resonance of the bassline. Had to place it horizontally to avoid obstructing the usb cable.
new situation :
pot1 : bass line filter cutoff control
pot2 : bass line filter resonance controlThis allows to shape your sound like an analog synth. But there's more ! You can not only filter synth like sounds such as the square and sawtooth synth leads. You can apply to piano, flute, gunshot, applause, oooh choir, bird tweet, telephone ring, ...
Amazing effects :-). The code is updated in the repo.
See photo for the new setup :
-
Synth implementation : key release handling
07/27/2014 at 14:02 • 0 commentsThe teensy ps/2 keyboard library was extended to support notification of key releases.
I maintained backwards compatibility and added 2 new public methods :
add 'rel' to the usual method, and provide an iskeyrelease bool parameter.
this parameters is referenced and set to true when the keypress was a release..
Only a few keys are supported right now. I plan to refactor the code to eliminate redundancy and implement full playable keyboard.
So the code below shows a simple example of sounding a synth sound as long as key 'c' is pressed.
void loop() {
...
if (keyboard.availablerel()) {
// read the next key
bool iskeyrelease = false;
char c = keyboard.readrel(iskeyrelease);
KeyboardHandler(c,iskeyrelease);
}
..
}
#define _SYNTHPRESS_STATUSCODE 0x90
#define _SYNTHRELEASE_STATUSCODE 0x80
void KeyboardHandler(char key,bool iskeyrelease)
{
static bool c_pressed = false;
byte synthstatuscode;
byte volumecode;synthstatuscode = iskeyrelease ? _SYNTHRELEASE_STATUSCODE : _SYNTHPRESS_STATUSCODE;
volumecode = iskeyrelease ? 0x00 : leadvolume;if(key=='c')
{
if(!c_pressed || iskeyrelease)
{
midiwrite(synthstatuscode, 40, volumecode);
}
c_pressed = !iskeyrelease;
return;
}
}