theremin à crayon

The “Not-just-for-sci-fi electronic instrument” that is played without being touched + a graphic tablet on top & some very simple electronics in the case (power / convert the theremin via USB). Both antennas (control voltage for volume and pitch) are routed to PureData.

The patch is really just a bridge (open sound control) to MyPaint (open-source graphics application for digital painters). Right now the volume is linked to the diameter of the brush and the pitch is linked to the brightness color (this can be changed in the code see below).

BTW this is the beauty of the open source movement: had the idea in the morning, talk to some people on #mypaint in the afternoon, hack the source for my needs during the night and went to bed with a working prototype. Ready-made Solutions Require Ready-made Problems; For Everything Else There Is Open Source Software!

Video

Source

MyPaint: share/gui/document.py -> pyliblo server (receive from pd)

import liblo, sys
 
class Document (CanvasController):
	def __init__(self, app, leader=None):
		global created
		if(created == False):
			self.server = liblo.Server(9997)
			self.server.add_method("/mp/radius", 'f', self.oscradius)
			self.server.add_method("/mp/zoom", 'f', self.osczoom)
			self.server.add_method("/mp/rotate", 'f', self.oscrotate)
			gobject.timeout_add(20, self.pollcheck)
			created = True
 
    def oscradius(self, path, args):
        adj = self.app.brush_adjustment['radius_logarithmic']
        adj.set_value(args[0])
 
    def oscv(self, path, args):
        h, s, v = self.app.brush.get_color_hsv()
        v = args[0]
        if v < 0.005: v = 0.005
        if v > 1.0: v = 1.0
        self.app.brush.set_color_hsv((h, s, v))
 
    def osczoom(self, path, args):
        self.tdw.set_zoom(args[0])
 
    def oscrotate(self, path, args):
        self.tdw.set_rotation(args[0])
 
    def pollcheck(self):
        self.server.recv(10)        self.finished = False
        Stroke.serial_number += 1
        self.serial_number = Stroke.serial_number
        return True

MyPaint: share/mypaint/lib/stroke.py -> pyliblo client (send pressure, x, y to pd)

import liblo, sys
    def __init__(self):
        self.target = liblo.Address(1234)
 
    def record_event(self, dtime, x, y, pressure, xtilt,ytilt):
        self.tmp_event_list.append((dtime, x, y, pressure, xtilt,ytilt))
        liblo.send(self.target, "/mypaint/pressure", pressure)

PureData patch:
bridgepd

25

03 2013

heavy box

NFAQ

how heavy?
32lb (14.5 kg) roughly a medium-sized dog

what are you going to do with it?
a centralized place for my digit/art project and my analog output. think of it as an effects unit or dsp in a box, but it’s also a silent computer with good processing power (as the time of this writing). the main project is to remix videos on the fly while playing an instrument.

what os/software are you using?
ubuntu studio with a low-latency kernel; pure data (effect rack, video player); sooperlooper (looping station); control (osc android application) all open source project

what kind of wood did you use?
okoumé (marine plywood). it’s a light wood and i was able to cut it with a x-acto!

i want more information
sure! source of the project (mainly related to the electronics) are here

13

01 2013

puredata on a tablet

here’s a short video showing puredata running on a ARM v7 / Cortex-A9 tablet (Zenithink c71 aka uPad: 1ghz, 512mb ram). i got this tablet for 144$ CAD. it is possible to connect an arduino to it (via USB) so anyone can “extend it” with sensors and such. there’s also a bluetooth / wifi and a 5 points touchscreen. right now alsa is not working (start pd with -oss) and the video driver (mali) is not accelerated.

thanks to xllamas for sharing the information and also the http://makeplaylive.com/ for the initial work.

i am currently working on a new prototype of “la guitar à crayon” called “string pad”. bought a guitar kit for 160$. all set to start working on this project.

09

04 2012

Online Speech Recognition for Dictation

I’m working on the integration of kiku (voice recognition to control your OS) to Vinux (Linux for the visually impaired). For now the feedback about kiku is great, but one thing people wants is a solution for dictation (that is, speech to text). kiku could be use for that task, but sadly there is no good (accurate) acoustic model available under GPL (Voxforge is a good start, but not there yet – please contribute).

So i came up with this online speech recognition for dictation solution to overcome this limitation. Speak in different languages, spell check, translate and text to speech all in one place. You’ll need Google Chrome and a microphone.

16

06 2011

p-waves physical feedback

on march 11 my apartment in tokyo was shook by an earthquake of magnitude 9.0:

since i don’t have a mobile phone (i must be the only one in japan without a keitai) i wasn’t aware of the incoming earthquake and my software was useless (being alert 10 minutes after the earthquake):

by detecting the primary waves we know in how many seconds (depending on the epicenter location) an earthquake will occur. i don’t know if it’s possible to build a p waves monitoring device (anyone?), but for now i’m using a free software (windows & japanese only) that send me an alert (no hardware required).

connecting the software to a microcontroller was not that hard, but since i don’t want to boot in windows just for monitoring the p waves i had to hack little. grosso modo: virtual box (windows in linux) -> autoit (checking for a p waves popup) -> create file <- linux bash checking for new file -> send serial command to arduino -> physical feedback.

please make a donation to the japanese red cross society

Japan Earthquake and Pacific Tsunami

24

03 2011