<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5969446635761530481</id><updated>2012-01-18T13:19:45.179+01:00</updated><category term='G3'/><category term='visual'/><category term='processing'/><category term='MacOSX'/><category term='monome'/><category term='DIY'/><category term='HowTo'/><category term='floppy'/><category term='conway'/><category term='oF'/><category term='noflash'/><category term='cellular automata'/><category term='mplayer'/><category term='Xmodmap'/><category term='foto'/><category term='arduinome'/><category term='sound'/><category term='python'/><category term='esagoni'/><category term='debian'/><category term='video'/><category term='layout'/><category term='x86_64'/><category term='context free art'/><category term='Tcl/Tk'/><category term='pdnoo'/><category term='X11'/><category term='iMac'/><category term='pd'/><category term='hardware'/><category term='italiano'/><category term='PPC'/><category term='allarme'/><category term='pitagora'/><category term='caanoo'/><category term='linux'/><category term='arduino'/><category term='circuit bending'/><category term='workshop'/><category term='english'/><category term='webcam'/><category term='tilt'/><category term='multiplexing'/><category term='motor'/><category term='config'/><category term='G4'/><category term='pixel'/><category term='software'/><category term='drum machine'/><category term='wmii'/><category term='sensor'/><category term='physical computing'/><category term='L-system'/><category term='Yamaha-DD6'/><category term='formal grammar'/><category term='R'/><title type='text'>elettrofonesi</title><subtitle type='html'>elettro [e-let-tro]
primo elemento di parole composte della terminologia tecnica, con il sign. di “elettrico”.
&lt;br&gt;
fonesi [fo-nè-ʃi]
MED Suono percepito con l'auscultazione del polmone.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-6152286421823157571</id><published>2011-08-04T15:50:00.006+02:00</published><updated>2011-08-05T17:24:09.062+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='caanoo'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='pdnoo'/><category scheme='http://www.blogger.com/atom/ns#' term='pd'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>Pdnoo</title><content type='html'>Pdnoo is a PDa port for caanoo.&lt;br /&gt;&lt;a href="http://pd-anywhere.sourceforge.net/"&gt;PDa&lt;/a&gt; is a Pd clone for &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Palm_%28PDA%29"&gt;PDAs&lt;/a&gt;.&lt;br /&gt;So with this port you can run &lt;a href="http://puredata.info/"&gt;Pd&lt;/a&gt; on your &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/GP2X_Caanoo"&gt;caanoo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All needed files are downloadable on &lt;a href="http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,6,761"&gt;OpenHandhelds.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Here is a copy of the included readme:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: php"&gt;pdnoo&lt;br /&gt;a PDa port for caanoo&lt;br /&gt;&lt;br /&gt;pdnoo is composed by two softwares:&lt;br /&gt;1. PDa (Pure Data Anywhere)&lt;br /&gt;2. A 'proof of concept' frontend written in Bennu&lt;br /&gt;&lt;br /&gt;PDa was compiled with the official GPH toolchain, using a modified makefile&lt;br /&gt;(included into this distrubution) and without graphical support.&lt;br /&gt;I added these lines to PDa makefile:&lt;br /&gt;&lt;br /&gt;====================line40=====================&lt;br /&gt;# CAANOO toolchain&lt;br /&gt;&lt;br /&gt;ifeq ($(CC), arm-gph-linux-gnueabi-gcc)&lt;br /&gt;pd_LDFLAGS += -elf2flt -static -static-libgcc&lt;br /&gt;pd_LIBS = -lm -lpthread&lt;br /&gt;pd_DEFINES +=  -D__linux__ -Dfork=getpid&lt;br /&gt;extra_DEFINES += -D__linux__ -Dfork=getpid&lt;br /&gt;endif&lt;br /&gt;&lt;br /&gt;====================line128====================&lt;br /&gt;caanoo:&lt;br /&gt;        make pd_SRC="$(pd_SRC) $(extra_SRC)" DEFINES="-DPD -DUNIX -DSTATIC" CC="arm-gph-linux-gnueabi-gcc"\&lt;br /&gt;             pd pd-watchdog $(BIN_DIR)/pdsend \&lt;br /&gt;             $(BIN_DIR)/pdreceive&lt;br /&gt;&lt;br /&gt;I also had to delete all esd related stuff.&lt;br /&gt;&lt;br /&gt;To make PDa useful, you need some kind of frontend which have to speak with&lt;br /&gt;pd in some way.&lt;br /&gt;If you put a [netreceive] object into your pd-patch, you can send TCP&lt;br /&gt;packets to pd.&lt;br /&gt;This packets must follow the FUDI protocol, that can be easily implemented&lt;br /&gt;into you custom code if you wish. A more simple approach is to call 'pdsend'&lt;br /&gt;executable (included) that will make the job for you ('pdreceive' is also&lt;br /&gt;included).&lt;br /&gt;&lt;br /&gt;You can write a frontend in your favourite language, I made one with Bennu,&lt;br /&gt;because its caanoo support is good and it is a very simple language.&lt;br /&gt;You can read the source of my code by opening 'pdnoo.prg' with your favourite&lt;br /&gt;editor.&lt;br /&gt;'pdnoo.gpe' is a simple script that starts pd, compiles and starts the bennu&lt;br /&gt;application.&lt;br /&gt;To make everything work you have to install the bennu-runtime by coping&lt;br /&gt;'bgd-runtime' directory into the same directory where 'pdnoo' directory and&lt;br /&gt;'pdnoo.gpe' file are.&lt;br /&gt;If you whish to install the runtime somewhere else, please edit the PATH lines&lt;br /&gt;of 'pdnoo.gpe' properly.&lt;br /&gt;&lt;br /&gt;Please condider my example frontend as 'proof of concept', its work is to read&lt;br /&gt;touchscreen's coordinates and to send them to pd through 'pdsend'. It is not&lt;br /&gt;perfect and right now to stop it you need to reset your caanoo.&lt;br /&gt;&lt;br /&gt;If you are interested in updates or other things related to pdnoo please&lt;br /&gt;visit my blog, where I will put my future improvements.&lt;br /&gt;http://elettrofonesi.blogspot.com&lt;br /&gt;&lt;br /&gt;If you are interested in the source code of PDa go here:&lt;br /&gt;http://pd-anywhere.sourceforge.net&lt;br /&gt;&lt;br /&gt;To read about and download Bennu go here:&lt;br /&gt;http://www.bennugd.org&lt;br /&gt;&lt;br /&gt;You can find the same GPH toolchain I used here:&lt;br /&gt;http://git.fungp.com&lt;br /&gt;&lt;br /&gt;If you do not have a caanoo but a gp2x here you can find a very similar thing&lt;br /&gt;that actually inspired me:&lt;br /&gt;http://mccormick.cx/projects/gp2xPd/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you do not know Pd, please visit this page:&lt;br /&gt;http://puredata.info&lt;br /&gt;&lt;br /&gt;To learn more about FUDI protocol:&lt;br /&gt;http://wiki.puredata.info/en/FUDI&lt;br /&gt;&lt;br /&gt;I hope that this piece of software can be useful to musical experimenters or&lt;br /&gt;to game developers who want to implement more dynamic sounds than a static&lt;br /&gt;collection of waves.&lt;br /&gt;Have fun with pdnoo, and please share your patch/code!&lt;/pre&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-6152286421823157571?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/6152286421823157571/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/08/pdnoo.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6152286421823157571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6152286421823157571'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/08/pdnoo.html' title='Pdnoo'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-8938425200988701705</id><published>2011-03-09T19:09:00.003+01:00</published><updated>2011-03-09T19:40:59.656+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='noflash'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='mplayer'/><title type='text'>Life without flash: tube script improved</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;An improved version of my &lt;a href="http://elettrofonesi.blogspot.com/2011/02/life-without-flash-how-to-see.html"&gt;tube script&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;With this edit URLs is not needed.&lt;br /&gt;It extracts the VIDEO_ID and generates the URL.&lt;br /&gt;It works with youtbe and vimeo only.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Call it in this way:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: php"&gt;tube "http://vimeo/or/youtube/url"&lt;/pre&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;pre class="brush: php"&gt;#!/bin/bash&lt;br /&gt;if [ `echo "$1" | grep vimeo` ]&lt;br /&gt;  then&lt;br /&gt;    VIDEO_ID=`echo "$1" | tr "=" "\n" | grep "&amp;amp;server" | tr -d [:alpha:] | tr -d "&amp;amp;"`&lt;br /&gt;    VIDEO_URL="http://vimeo.com/$VIDEO_ID"&lt;br /&gt;elif [ `echo "$1" | grep youtube` ]&lt;br /&gt;  then&lt;br /&gt;    if [ ! `echo "$1" | grep watch` ]&lt;br /&gt;      then&lt;br /&gt;        VIDEO_ID=`echo "$1" | awk -F "?" '{print $1}' | awk -F "/" '{print $5}'`&lt;br /&gt;    else&lt;br /&gt;        VIDEO_ID=`echo "$1" | awk -F "&amp;amp;" '{print $1}' | awk -F "=" '{print $2}'`&lt;br /&gt;    fi&lt;br /&gt;    VIDEO_URL="http://www.youtube.com/watch?v=$VIDEO_ID"&lt;br /&gt;fi&lt;br /&gt;clive --stream-exec="mplayer -really-quiet %i" -s $VIDEO_URL&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-8938425200988701705?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/8938425200988701705/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/03/life-without-flash-tube-script-improved.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/8938425200988701705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/8938425200988701705'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/03/life-without-flash-tube-script-improved.html' title='Life without flash: tube script improved'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-3560614200716644688</id><published>2011-02-27T12:43:00.003+01:00</published><updated>2011-03-09T19:41:21.469+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='noflash'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='mplayer'/><title type='text'>Life without flash: How to see youtube/vimeo videos</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I use a script called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tube&lt;/span&gt;:&lt;/div&gt;&lt;pre class="brush: php"&gt;#!/bin/bash&lt;br /&gt;clive --stream-exec="mplayer -really-quiet %i" -s $*&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;syntax is important:&lt;/div&gt;&lt;pre class="brush: php"&gt;tube http://www.youtube.com/v/VIDEO_ID_NUM&lt;br /&gt;tube http://www.youtube.com/watch?v=VIDEO_ID_NUM&lt;br /&gt;tube http://vimeo.com/VIDEO_ID_NUM&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;New version &lt;a href="http://elettrofonesi.blogspot.com/2011/03/life-without-flash-tube-script-improved.html"&gt;here!&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-3560614200716644688?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/3560614200716644688/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/02/life-without-flash-how-to-see.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3560614200716644688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3560614200716644688'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/02/life-without-flash-how-to-see.html' title='Life without flash: How to see youtube/vimeo videos'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-7211688381341154017</id><published>2011-01-24T13:52:00.000+01:00</published><updated>2011-01-24T13:52:00.680+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='iMac'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='G3'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='X11'/><title type='text'>Debian on iMac G3 PPC</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;I installed Debian squeeze in an old iMac G3 and it rocks!&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;It was a standard Debian PPC installation, the only difficult thing was to configure Xorg.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;I was luky enough to find some xorg.conf on the web, from people with my same problems and I made a collage from two of them.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;With the following file I have 1024x768 resolution, 24 bit colors and the rigth keyboardmap.&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;Section "InputDevice"&lt;br /&gt; Identifier "Generic Keyboard"&lt;br /&gt; Driver  "kbd"&lt;br /&gt; Option  "XkbRules" "xorg"&lt;br /&gt; Option  "XkbModel" "pc104"&lt;br /&gt; Option  "XkbLayout" "us"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt; Identifier "Configured Mouse"&lt;br /&gt; Driver  "mouse"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Device"&lt;br /&gt; Identifier "Configured Video Device"&lt;br /&gt; BusID  "PCI:0:16:0"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt; Identifier "Configured Monitor"&lt;br /&gt; Option  "DPMS"&lt;br /&gt; HorizSync 59-61&lt;br /&gt;  VertRefresh 75-117&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "Screen"&lt;br /&gt; Identifier "Default Ssdudcreen"&lt;br /&gt; Monitor  "Configured Monitor"&lt;br /&gt; DefaultDepth 24&lt;br /&gt;EndSection&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-7211688381341154017?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/7211688381341154017/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/i-installed-debian-squeeze-in-old-imac.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7211688381341154017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7211688381341154017'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/i-installed-debian-squeeze-in-old-imac.html' title='Debian on iMac G3 PPC'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-7921998249253241916</id><published>2011-01-16T17:34:00.003+01:00</published><updated>2011-02-27T12:45:30.748+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='G4'/><category scheme='http://www.blogger.com/atom/ns#' term='Xmodmap'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>AltGr on Debian iBookG4</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I'm tired to press &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fn&lt;/span&gt;, press &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Alt&lt;/span&gt; and then release &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fn&lt;/span&gt; to have an &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;AltGr&lt;/span&gt; like key.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;For that reason I have added this line to my &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.xmodmaprc&lt;/span&gt; file:&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;keycode 104 = 0xfe03&lt;/pre&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Now, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Enter&lt;/span&gt; key (that is not &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Return&lt;/span&gt; key) between &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple_R&lt;/span&gt; key and arrows is mapped as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;AltGr&lt;/span&gt;, and this is a wise thing.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-7921998249253241916?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/7921998249253241916/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/altgr-on-debian-ibookg4.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7921998249253241916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7921998249253241916'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/altgr-on-debian-ibookg4.html' title='AltGr on Debian iBookG4'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-3878376376665526034</id><published>2011-01-10T12:08:00.000+01:00</published><updated>2011-01-10T12:08:00.695+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='wmii'/><title type='text'>wmiirc</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;In the last days I played a lot with my wmiirc file, and now I think it's done.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Customizations:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;xmodmap autostart &lt;i&gt;(line 3)&lt;/i&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Navigation keys &lt;i&gt;(lines 8 to 12)&lt;/i&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Theme &lt;i&gt;(lines 15 to 18)&lt;/i&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Status bar with volume, CPU, RAM, swap, battery, time &lt;i&gt;(lines 39 to 46)&lt;/i&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Keybindings &lt;i&gt;(lines 130, 140 and from 158 to 167)&lt;/i&gt;. Note the last one wich opens a custom menu called powerlist used to halt/reboot/sleep/hibernate the machine.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Actionlist menù does not show anymore some custom script inside &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.wmii&lt;/span&gt; directory &lt;i&gt;(lines 239 to 243)&lt;/i&gt;. Those are scripts to halt/reboot/etc and are called with powerlist.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Powerlist menù, shows only some file inside &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.wmii&lt;/span&gt; directory &lt;i&gt;(lines 245 to 248)&lt;/i&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;#!/bin/sh -f&lt;br /&gt;&lt;br /&gt;xmodmap ~/.xmodmaprc&lt;br /&gt;&lt;br /&gt;# Configure wmii&lt;br /&gt;&lt;br /&gt;# Configuration Variables&lt;br /&gt;MODKEY=Mod4&lt;br /&gt;UP=Up&lt;br /&gt;DOWN=Down&lt;br /&gt;LEFT=Left&lt;br /&gt;RIGHT=Right&lt;br /&gt;&lt;br /&gt;# Colors tuples: "&amp;lt;text&amp;gt; &amp;lt;background&amp;gt; &amp;lt;border&amp;gt;"&lt;br /&gt;WMII_FOCUSCOLORS='#303030 #ecedee #ecedee'&lt;br /&gt;WMII_NORMCOLORS='#959595 #303030 #303030'&lt;br /&gt;WMII_BACKGROUND='#303030'&lt;br /&gt;WMII_FONT='-xos4-terminus-*-*-*-*-*-*-*-*-*-*-*-*'&lt;br /&gt;&lt;br /&gt;set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)&lt;br /&gt;WMII_MENU="dmenu -b -fn '$WMII_FONT' -nf '$1' -nb '$2' -sf '$4' -sb '$5'"&lt;br /&gt;WMII_9MENU="wmii9menu -font '$WMII_FONT' -nf '$1' -nb '$2' -sf '$4' -sb '$5' -br '$6'"&lt;br /&gt;WMII_TERM="x-terminal-emulator"&lt;br /&gt;&lt;br /&gt;# Column Rules&lt;br /&gt;wmiir write /colrules &amp;lt;&amp;lt;!&lt;br /&gt;/.*/ -&amp;gt; 58+42&lt;br /&gt;!&lt;br /&gt;&lt;br /&gt;# Tagging Rules&lt;br /&gt;wmiir write /tagrules &amp;lt;&amp;lt;!&lt;br /&gt;/XMMS.*/ -&amp;gt; ~&lt;br /&gt;/MPlayer.*/ -&amp;gt; ~&lt;br /&gt;/.*/ -&amp;gt; sel&lt;br /&gt;/.*/ -&amp;gt; 1&lt;br /&gt;!&lt;br /&gt;&lt;br /&gt;# Status Bar Info&lt;br /&gt;status() {&lt;br /&gt; echo -n $(amixer get PCM | tail -1 | awk '{print $5}' | tr -d []%) '|' \&lt;br /&gt;  $(uptime | awk '{print $9}' | tr -d , | cut -c 3-4) '|' \&lt;br /&gt;  $(free | head -2 | tail -1 | awk '{print ($3 * 100) / $2}' | cut -c -2) '|' \&lt;br /&gt;  $(free | tail -1 | awk '{print ($3 * 100) / $2}' | cut -c -4) '|' \&lt;br /&gt;  $(ibam --percentcharge | head -1 | awk '{print $3}') '|' \&lt;br /&gt;  $(date | awk '{print $5}' | cut -c -5)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Event processing&lt;br /&gt;#  Processed later by `wmiiloop' and evaled.&lt;br /&gt;#  Duplicate the eval line and replace 'eval' with 'echo' for details.&lt;br /&gt;eventstuff() {&lt;br /&gt; cat &amp;lt;&amp;lt;'!'&lt;br /&gt; # Events&lt;br /&gt; Event Start&lt;br /&gt;  case "$1" in&lt;br /&gt;  wmiirc)&lt;br /&gt;   exit;&lt;br /&gt;  esac&lt;br /&gt; Event Key&lt;br /&gt;  fn=$(echo "$@" | sed 's/[^a-zA-Z_0-9]/_/g')&lt;br /&gt;  Key_$fn "$@"&lt;br /&gt; Event CreateTag&lt;br /&gt;  echo "$WMII_NORMCOLORS" "$@" | wmiir create "/lbar/$@"&lt;br /&gt; Event DestroyTag&lt;br /&gt;  wmiir remove "/lbar/$@"&lt;br /&gt; Event FocusTag&lt;br /&gt;  wmiir xwrite "/lbar/$@" "$WMII_FOCUSCOLORS" "$@"&lt;br /&gt; Event UnfocusTag&lt;br /&gt;  wmiir xwrite "/lbar/$@" "$WMII_NORMCOLORS" "$@"&lt;br /&gt; Event UrgentTag&lt;br /&gt;  shift&lt;br /&gt;  wmiir xwrite "/lbar/$@" "*$@"&lt;br /&gt; Event NotUrgentTag&lt;br /&gt;  shift&lt;br /&gt;  wmiir xwrite "/lbar/$@" "$@"&lt;br /&gt; Event LeftBarClick&lt;br /&gt;  shift&lt;br /&gt;  wmiir xwrite /ctl view "$@"&lt;br /&gt; # Actions&lt;br /&gt; Action quit&lt;br /&gt;  wmiir xwrite /ctl quit&lt;br /&gt; Action exec&lt;br /&gt;  wmiir xwrite /ctl exec "$@"&lt;br /&gt; Action rehash&lt;br /&gt;  proglist $PATH &amp;gt;$progsfile&lt;br /&gt; Action status&lt;br /&gt;  set +xv&lt;br /&gt;  if wmiir remove /rbar/status 2&amp;gt;/dev/null; then&lt;br /&gt;   sleep 2&lt;br /&gt;  fi&lt;br /&gt;  echo "$WMII_NORMCOLORS" | wmiir create /rbar/status&lt;br /&gt;  while status | wmiir write /rbar/status; do&lt;br /&gt;   sleep 1&lt;br /&gt;  done&lt;br /&gt; Event ClientMouseDown&lt;br /&gt;  client=$1; button=$2&lt;br /&gt;  case "$button" in&lt;br /&gt;  3)&lt;br /&gt;   do=$(eval $WMII_9MENU -initial "${menulast:-SomeRandomName}" Nop Delete Fullscreen)&lt;br /&gt;   case "$do" in&lt;br /&gt;   Delete)&lt;br /&gt;    wmiir xwrite /client/$client/ctl kill;;&lt;br /&gt;   Fullscreen)&lt;br /&gt;    wmiir xwrite /client/$client/ctl Fullscreen on;;&lt;br /&gt;   esac&lt;br /&gt;   menulast=${do:-"$menulast"}&lt;br /&gt;  esac&lt;br /&gt; # Key Bindings&lt;br /&gt; Key $MODKEY-Control-t&lt;br /&gt;  case $(wmiir read /keys | wc -l | tr -d ' \t\n') in&lt;br /&gt;  0|1)&lt;br /&gt;   echo -n $Keys | tr ' ' '\012' | wmiir write /keys&lt;br /&gt;   wmiir xwrite /ctl grabmod $MODKEY;;&lt;br /&gt;  *)&lt;br /&gt;   wmiir xwrite /keys $MODKEY-Control-t&lt;br /&gt;   wmiir xwrite /ctl grabmod Mod3;;&lt;br /&gt;  esac&lt;br /&gt; Key $MODKEY-space&lt;br /&gt;  wmiir xwrite /tag/sel/ctl select toggle&lt;br /&gt; Key $MODKEY-d&lt;br /&gt;  wmiir xwrite /tag/sel/ctl colmode sel default&lt;br /&gt; Key $MODKEY-s&lt;br /&gt;  wmiir xwrite /tag/sel/ctl colmode sel stack&lt;br /&gt; Key $MODKEY-m&lt;br /&gt;  wmiir xwrite /tag/sel/ctl colmode sel max&lt;br /&gt; Key $MODKEY-a&lt;br /&gt;  Action $(actionlist | eval $WMII_MENU) &amp;amp;&lt;br /&gt; Key $MODKEY-p&lt;br /&gt;  sh -c "$(eval $WMII_MENU &amp;lt;$progsfile)" &amp;amp;&lt;br /&gt; Key $MODKEY-Tab #t&lt;br /&gt;  wmiir xwrite /ctl "view $(tagsmenu)" &amp;amp;&lt;br /&gt; Key $MODKEY-Return&lt;br /&gt;  eval $WMII_TERM &amp;amp;&lt;br /&gt; Key $MODKEY-Shift-space&lt;br /&gt;  wmiir xwrite /tag/sel/ctl send sel toggle&lt;br /&gt; Key $MODKEY-f&lt;br /&gt;  wmiir xwrite /client/sel/ctl Fullscreen toggle&lt;br /&gt; Key $MODKEY-Shift-c&lt;br /&gt;  wmiir xwrite /client/sel/ctl kill&lt;br /&gt; Key $MODKEY-Shift-Tab #t&lt;br /&gt;  wmiir xwrite "/client/$(wmiir read /client/sel/ctl)/tags" "$(tagsmenu)" &amp;amp;&lt;br /&gt; Key $MODKEY-$LEFT&lt;br /&gt;  wmiir xwrite /tag/sel/ctl select left&lt;br /&gt; Key $MODKEY-$RIGHT&lt;br /&gt;  wmiir xwrite /tag/sel/ctl select right&lt;br /&gt; Key $MODKEY-$DOWN&lt;br /&gt;  wmiir xwrite /tag/sel/ctl select down&lt;br /&gt; Key $MODKEY-$UP&lt;br /&gt;  wmiir xwrite /tag/sel/ctl select up&lt;br /&gt; Key $MODKEY-Shift-$LEFT&lt;br /&gt;  wmiir xwrite /tag/sel/ctl send sel left&lt;br /&gt; Key $MODKEY-Shift-$RIGHT&lt;br /&gt;  wmiir xwrite /tag/sel/ctl send sel right&lt;br /&gt; Key $MODKEY-Shift-$DOWN&lt;br /&gt;  wmiir xwrite /tag/sel/ctl send sel down&lt;br /&gt; Key $MODKEY-Shift-$UP&lt;br /&gt;  wmiir xwrite /tag/sel/ctl send sel up&lt;br /&gt; Key $MODKEY-F7&lt;br /&gt;  thunar &amp;amp;&lt;br /&gt; Key $MODKEY-F8&lt;br /&gt;  iceweasel &amp;amp;&lt;br /&gt; Key $MODKEY-F9&lt;br /&gt;  claws-mail &amp;amp;&lt;br /&gt; Key XF86AudioMute&lt;br /&gt;  amixer sset PCM 0 &amp;amp;&lt;br /&gt; Key XF86PowerDown&lt;br /&gt;  Action $(powerlist | eval $WMII_MENU) &amp;amp;&lt;br /&gt;!&lt;br /&gt; for i in 0 1 2 3 4 5 6 7 8 9; do&lt;br /&gt;  cat &amp;lt;&amp;lt;!&lt;br /&gt; Key $MODKEY-$i&lt;br /&gt;  wmiir xwrite /ctl view "$i"&lt;br /&gt; Key $MODKEY-Shift-$i&lt;br /&gt;  wmiir xwrite /client/sel/tags "$i"&lt;br /&gt;!&lt;br /&gt; done&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# WM Configuration&lt;br /&gt;wmiir write /ctl &amp;lt;&amp;lt; EOF&lt;br /&gt;font $WMII_FONT&lt;br /&gt;focuscolors $WMII_FOCUSCOLORS&lt;br /&gt;normcolors $WMII_NORMCOLORS&lt;br /&gt;grabmod $MODKEY&lt;br /&gt;border 1&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;export WMII_MENU WMII_9MENU WMII_FONT WMII_TERM&lt;br /&gt;export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS&lt;br /&gt;&lt;br /&gt;# Feed events to `wmiiloop' for processing&lt;br /&gt;eval "$(eventstuff | sed 's/^[ ]//' | { . wmiiloop; })"&lt;br /&gt;&lt;br /&gt;echo "$Keys" | tr ' ' '\n' | wmiir write /keys&lt;br /&gt;&lt;br /&gt;# Functions&lt;br /&gt;Action() {&lt;br /&gt; action=$1; shift&lt;br /&gt; if [ -n "$action" ]; then&lt;br /&gt;  Action_$action "$@" \&lt;br /&gt;  || conf_which $action "$@"&lt;br /&gt; fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;proglist() {&lt;br /&gt; paths=$(echo "$@" | sed 'y/:/ /')&lt;br /&gt; ls -lL $paths 2&amp;gt;/dev/null \&lt;br /&gt;  | awk '$1 ~ /^[^d].*x/ &amp;amp;&amp;amp; NF &amp;gt; 2 { print $NF }' \&lt;br /&gt;  | sort | uniq&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Misc&lt;br /&gt;progsfile="$WMII_NS_DIR/.proglist"&lt;br /&gt;Action status &amp;amp;&lt;br /&gt;proglist $PATH &amp;gt;$progsfile &amp;amp;&lt;br /&gt;&lt;br /&gt;xsetroot -solid "$WMII_BACKGROUND" &amp;amp;&lt;br /&gt;&lt;br /&gt;# Setup Tag Bar&lt;br /&gt;seltag="$(wmiir read /tag/sel/ctl 2&amp;gt;/dev/null)"&lt;br /&gt;wmiir ls /lbar |&lt;br /&gt;while read bar; do&lt;br /&gt; wmiir remove "/lbar/$bar"&lt;br /&gt;done&lt;br /&gt;wmiir ls /tag | sed -e 's|/||; /^sel$/d' |&lt;br /&gt;while read tag; do&lt;br /&gt; if [ "X$tag" = "X$seltag" ]; then&lt;br /&gt;  echo "$WMII_FOCUSCOLORS" "$tag" | wmiir create "/lbar/$tag" &lt;br /&gt; else&lt;br /&gt;  echo "$WMII_NORMCOLORS" "$tag" | wmiir create "/lbar/$tag"&lt;br /&gt; fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;# More functions&lt;br /&gt;tagsmenu() {&lt;br /&gt;        wmiir ls /tag | sed 's|/||; /^sel$/d' | eval $WMII_MENU&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;actionlist() {&lt;br /&gt; { proglist $WMII_CONFPATH | grep -v dormi | grep -v iberna | grep -v riavvia | grep -v spegni&lt;br /&gt;  echo -n $Actions | tr ' ' '\012'&lt;br /&gt; } | sort | uniq&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;powerlist() {&lt;br /&gt;        {       proglist $WMII_CONFPATH | grep -v wmii | grep -v welcome&lt;br /&gt;        } | sort | uniq&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;conf_which() {&lt;br /&gt; which=$(which which)&lt;br /&gt; prog=$(PATH="$WMII_CONFPATH" $which $1); shift&lt;br /&gt; [ -n "$prog" ] &amp;amp;&amp;amp; $prog "$@"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Stop any running instances of wmiirc&lt;br /&gt;echo Start wmiirc | wmiir write /event || exit 1&lt;br /&gt;&lt;br /&gt;wmiir read /event |&lt;br /&gt;while read event; do&lt;br /&gt; set -- $event&lt;br /&gt; event=$1; shift&lt;br /&gt; Event_$event $@&lt;br /&gt;done 2&amp;gt;/dev/null&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-3878376376665526034?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/3878376376665526034/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/wmiirc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3878376376665526034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3878376376665526034'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/wmiirc.html' title='wmiirc'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-7646078370054120760</id><published>2011-01-06T23:18:00.001+01:00</published><updated>2011-09-01T14:19:42.645+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>Arduino on Debian PPC</title><content type='html'>&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you want to program Arduino boards in Debian PPC systems you should use &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;arduino-core&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; &lt;a href="http://packages.debian.org/squeeze/arduino-core"&gt;package&lt;/a&gt;, because the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;arduino&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; &lt;a href="http://packages.debian.org/squeeze/arduino"&gt;package&lt;/a&gt; for PPC architecture &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=609152"&gt;is broken&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;arduino-core&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; is console based, and uses a Makefile to talk to arduino.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here are the steps you have to follow to use it: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Install &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;arduino-core&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;# aptitude install arduino-core&lt;/pre&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;(Remember to do not use &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;aptitude&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; if you usually use &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;apt-get&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Add yourself to &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;uucp&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; and &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;dialout&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; groups:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;# gpasswd -a USERNAME uucp&lt;br /&gt;# gpasswd -a USERNAME dialout&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;dialout&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; is needed to handle &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/dev/tty*&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; files, &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;uucp&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; seems necessary to work with &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;avrdude&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now you have to create a &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; in the same directory whre the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.pde&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; file is.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I have an &lt;a href="http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove"&gt;Arduino 2009&lt;/a&gt; with an ATmega329 microcontroller, so my &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; looks like this:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;ARDUINO_DIR = /usr/share/arduino&lt;br /&gt;&lt;br /&gt;#TARGET       = CLItest&lt;br /&gt;#ARDUINO_LIBS = LiquidCrystal&lt;br /&gt;&lt;br /&gt;MCU          = atmega328p&lt;br /&gt;F_CPU        = 32000000&lt;br /&gt;ARDUINO_PORT = /dev/ttyUSB*&lt;br /&gt;&lt;br /&gt;AVRDUDE_ARD_PROGRAMMER = arduino&lt;br /&gt;AVRDUDE_ARD_BAUDRATE   = 57600&lt;br /&gt;#AVRDUDE_ARD_EXTRAOPTS  = -F&lt;br /&gt;&lt;br /&gt;include /usr/share/arduino/Arduino.mk&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you use a different microcontroller you should set &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MCU&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; and &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;F_CPU&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; variables properly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now you are ready to program your arduino! Assuming that you want to upload &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://www.arduino.cc/en/Tutorial/Blink"&gt;Blink.pde&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; (and that you and your &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;is in the same directory of &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Blink.pde&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;), type:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;$ make TARGET=Blink&lt;br /&gt;$ make TARGET=Blink upload&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The first line creates the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.hex&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; file and the second upload it to the board.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;For more informations:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;nano /usr/share/doc/arduino-core/README.Debian&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-7646078370054120760?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/7646078370054120760/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/arduino-on-debian-ppc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7646078370054120760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7646078370054120760'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/arduino-on-debian-ppc.html' title='Arduino on Debian PPC'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-2306995066588500748</id><published>2011-01-01T20:02:00.000+01:00</published><updated>2011-01-01T20:02:50.509+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='tilt'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='allarme'/><category scheme='http://www.blogger.com/atom/ns#' term='sensor'/><title type='text'>Allarme! v0.1</title><content type='html'>&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_ATrQjMBhX9g/TR92addVoaI/AAAAAAAAAYA/ko-NvUNUP40/mollami.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ATrQjMBhX9g/TR92addVoaI/AAAAAAAAAYA/ko-NvUNUP40/mollami.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_ATrQjMBhX9g/TR92addVoaI/AAAAAAAAAYA/ko-NvUNUP40/mollami.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;A python alarm for my iBookG4.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;It will be useful when I'll leave the desk of the public library looking for a cup of coffee.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;It works on my Debian setup and probably will NOT work on your system without modifications.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;#Allarme! v0.1&lt;br /&gt;#reads /sys/devices/ams/current file (senso) to get informations from the&lt;br /&gt;#internal tilt sensor of Apple's iBooks. It works on my Debian iBookG4 and&lt;br /&gt;#probably it will NOT work on your system without modifications.&lt;br /&gt;#If the variation of one of sensor's values is greater than threshold (thr)&lt;br /&gt;#it will play a sound (not included) located in $HOME/.allarme.wav and&lt;br /&gt;#print a warning message (messo) on the console.&lt;br /&gt;#Copyright 2011 Francesco Aggazio.&lt;br /&gt;&lt;br /&gt;#This program is free software: you can redistribute it and/or modify&lt;br /&gt;#it under the terms of the GNU General Public License as published by&lt;br /&gt;#the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;#(at your option) any later version.&lt;br /&gt;&lt;br /&gt;#This program is distributed in the hope that it will be useful,&lt;br /&gt;#but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#GNU General Public License for more details.&lt;br /&gt;&lt;br /&gt;#You should have received a copy of the GNU General Public License&lt;br /&gt;#along with this program.  If not, see &lt;http: licenses="" www.gnu.org=""&gt;.&lt;br /&gt;&lt;br /&gt;import os&lt;br /&gt;import time&lt;br /&gt;import pygame&lt;br /&gt;&lt;br /&gt;thr = 2&lt;br /&gt;messo = "Mollami!"&lt;br /&gt;senso = "/sys/devices/ams/current"&lt;br /&gt;home = os.environ['HOME']&lt;br /&gt;&lt;br /&gt;inf = open(senso, "r")&lt;br /&gt;incat = inf.readline()&lt;br /&gt;inli = incat.split()&lt;br /&gt;x = int(inli[0])&lt;br /&gt;y = int(inli[1])&lt;br /&gt;z = int(inli[2])&lt;br /&gt;&lt;br /&gt;pygame.init()&lt;br /&gt;&lt;br /&gt;while 1:&lt;br /&gt;  exx = x&lt;br /&gt;  exy = y&lt;br /&gt;  exz = z&lt;br /&gt;  f = open(senso, "r")&lt;br /&gt;  cat = f.readline()&lt;br /&gt;  li = cat.split()&lt;br /&gt;  x = int(li[0])&lt;br /&gt;  y = int(li[1])&lt;br /&gt;  z = int(li[2])&lt;br /&gt;  dfx = abs(abs(exx) - abs(x))&lt;br /&gt;  dfy = abs(abs(exy) - abs(y))&lt;br /&gt;  dfz = abs(abs(exz) - abs(z))&lt;br /&gt;  if dfx &amp;gt; thr or dfy &amp;gt; thr or dfz &amp;gt; thr:&lt;br /&gt;    print messo&lt;br /&gt;    pygame.mixer.Sound(os.path.join(home, ".allarme.wav")).play()&lt;br /&gt;  #print exx, " ", exy, " ", exz, " : ", x, " ", y, " ", z&lt;br /&gt;  time.sleep(1)&lt;/http:&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-2306995066588500748?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/2306995066588500748/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/allarme-v01.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/2306995066588500748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/2306995066588500748'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2011/01/allarme-v01.html' title='Allarme! v0.1'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ATrQjMBhX9g/TR92addVoaI/AAAAAAAAAYA/ko-NvUNUP40/s72-c/mollami.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-7590668334996414672</id><published>2010-12-27T16:58:00.001+01:00</published><updated>2011-02-27T12:46:16.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='G4'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='wmii'/><category scheme='http://www.blogger.com/atom/ns#' term='X11'/><title type='text'>Debian and wmii for my iBookG4</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;I just installed &lt;a href="http://www.debian.org/"&gt;debian&lt;/a&gt; on my &lt;a href="http://en.wikipedia.org/wiki/IBook#iBook_G4"&gt;iBookG4&lt;/a&gt;, and &lt;a href="http://wmii.suckless.org/"&gt;wmii&lt;/a&gt; makes me &lt;a href="http://upload.wikimedia.org/wikipedia/en/9/90/Fonz_Pic.PNG"&gt;happy&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Just a few hints for a good configuration:&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Install &lt;a href="http://pbbuttons.berlios.de/projects/pbbuttonsd/"&gt;pbbuttonsd&lt;/a&gt; for &lt;a href="http://upload.wikimedia.org/wikipedia/commons/f/ff/Koeh-108.jpg"&gt;Apple&lt;/a&gt;'s special buttons and &lt;a href="http://en.wikipedia.org/wiki/Political_power#Political_power_and_the_question_of_good_and_evil"&gt;power&lt;/a&gt; management.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Install &lt;a href="http://ibam.sourceforge.net/"&gt;ibam&lt;/a&gt; if you need a good &lt;a href="http://en.wikipedia.org/wiki/Battery_%28crime%29#Distinction_between_battery_and_assault"&gt;battery&lt;/a&gt; monitor.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Install &lt;a href="http://mnm.uib.es/gallir/cpudyn/"&gt;cpudyn&lt;/a&gt; to r&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;educe power consuption. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;And to integrate these new nice features to wmii:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Copy and edit &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;wmiirc&lt;/span&gt;:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: python"&gt;$ cp /etc/X11/wmii-3.5/wmiirc ~/.wmii-3.5/wmiirc&lt;br /&gt;$ nano ~/.wmii-3.5/wmiirc&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Replace this:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;# Status Bar Info&lt;br /&gt;status() {&lt;br /&gt;        echo -n $(uptime | sed 's/.*://; s/,//g') '|' $(date)&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;With this: &lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;# Status Bar Info&lt;br /&gt;status() {&lt;br /&gt;        echo -n $(amixer get Master | tail -1 | awk '{print $5}' | tr -d []%) '|' $(ibam --percentcharge | head -1 | awk '{print $3}') '|' $(date | awk '{print $5}' | tr -d ,.)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Now you can see in informations about volume, battery charge and &lt;a href="http://en.wikipedia.org/wiki/Top_Industrial_Managers_for_Europe"&gt;time&lt;/a&gt; in your status bar.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Create halt, reboot, suspend and &lt;a href="http://en.wikipedia.org/wiki/Suspended_animation#Human_hibernation"&gt;hibernate&lt;/a&gt; scripts:&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;~/.wmii-3.5/halt &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;#!/bin/bash&lt;br /&gt;dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;~/.wmii-3.5/reboot &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;#!/bin/bash&lt;br /&gt;dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/.wmii-3.5/sleep&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;#!/bin/bash&lt;br /&gt;pbbcmd sleep&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/.wmii-3.5/hibernate&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;#!/bin/bash&lt;br /&gt;pbbcmd hibernate&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;And do not forget to add yourself to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;powerdev&lt;/span&gt; group and to write a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.xinitrc&lt;/span&gt; like this:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;exec ck-launch-session wmii&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-7590668334996414672?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/7590668334996414672/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/12/debian-and-wmii-for-my-ibookg4.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7590668334996414672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/7590668334996414672'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/12/debian-and-wmii-for-my-ibookg4.html' title='Debian and wmii for my iBookG4'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-2887035494094800119</id><published>2010-11-29T14:33:00.004+01:00</published><updated>2011-02-27T12:47:18.339+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Tcl/Tk'/><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='G4'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='X11'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>Tcl/Tk for R 2.12 on MacOSX 10.4 PPC</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;On &lt;a href="http://elettrofonesi.blogspot.com/2010/11/r-212-on-mac-os-x-tiger-104-ppc.html"&gt;my previous post&lt;/a&gt; I wrote how to install R 2.12 on MacOSX Tiger.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Unfortunately with that method you have to use the ugly X11 terminal to open a Tcl/Tk window, because if you try to load the library with a non X11 native terminal, like MacOSX default Terminal or I-Term, you'll get something like:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&amp;gt; library(tcltk)&lt;br /&gt;Loading Tcl/Tk interface ... done&lt;br /&gt;Warning message:&lt;br /&gt;In fun(...) : no display name and no $DISPLAY environment variable&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This error can be avoided setting &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DISPLAY&lt;/span&gt; system variable:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&amp;gt; Sys.setenv=("DISPLAY"=":0")&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Now, if you have X11 running, every Tcl/Tk window will call the X11 server, and this is a good thing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Even if it works, I actually don't like this solution. I want to use MacOSX native Tcl/Tk libraries and Aqua, but i don't find a way that doesn't require &lt;a href="http://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#Aqua-TclTk-headers-and-libraries-_0028optional_0029"&gt;R recompilation&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-2887035494094800119?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/2887035494094800119/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/11/tcltk-for-r-212-on-macosx-104-ppc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/2887035494094800119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/2887035494094800119'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/11/tcltk-for-r-212-on-macosx-104-ppc.html' title='Tcl/Tk for R 2.12 on MacOSX 10.4 PPC'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-1113738743315108651</id><published>2010-11-21T13:09:00.011+01:00</published><updated>2011-02-27T12:46:47.078+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacOSX'/><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='PPC'/><category scheme='http://www.blogger.com/atom/ns#' term='G4'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>HowTo: R 2.12 on Mac OS X Tiger 10.4 PPC</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;R_GUI for Tiger is supported until R 2.10.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;If you need R 2.12 the only way is to forget about graphical interfaces.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Manual compilations was a dependencies hell, fortunately there is a port called "r-base" in fink.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;Install Xcode from your Mac OS X DVD.&lt;/li&gt;&lt;li&gt;Install X11 from the same DVD.&lt;/li&gt;&lt;li&gt;Install Fink from &lt;a href="http://www.finkproject.org/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;If you want a GUI install Fink commander from &lt;a href="http://finkcommander.sourceforge.net/"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Enable Unstable packages, read how &lt;a href="http://www.finkproject.org/faq/usage-fink.php?phpLang=en#unstable"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Install "r-base". It will take some time...&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Now you have R binary in:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;/sw/bin/R&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;and R Framework in:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;/Volumes/YourHD/sw/Library/Framework/R.framework/&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I tried to manually compile R.app without luck, it doesn't like a library. If you can do it please tell me how.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Anyway, if you open X11 (Applications/Utilities/X11.app) you have an old school terminal where you can type:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;cd /Volumes/YourHD/sw/bin&lt;br /&gt;./R&lt;br /&gt;&lt;br /&gt;R version 2.12.0 (2010-10-15)&lt;br /&gt;Copyright (C) 2010 The R Foundation for Statistical Computing&lt;br /&gt;ISBN 3-900051-07-0&lt;br /&gt;Platform: powerpc-apple-darwin8.11.0 (32-bit)&lt;br /&gt;&lt;br /&gt;R `e un software libero ed `e rilasciato SENZA ALCUNA GARANZIA.&lt;br /&gt;Siamo ben lieti se potrai redistribuirlo, ma sotto certe condizioni.&lt;br /&gt;Scrivi 'license()' o 'licence()' per dettagli su come distribuirlo.&lt;br /&gt;&lt;br /&gt;R `e un progetto di collaborazione con molti contributi esterni.&lt;br /&gt;Scrivi 'contributors()' per maggiori informazioni e 'citation()'&lt;br /&gt;per sapere come citare R o i pacchetti di R nelle pubblicazioni.&lt;br /&gt;&lt;br /&gt;Scrivi 'demo()' per una dimostrazione, 'help()' per la guida in linea, o&lt;br /&gt;'help.start()' per l'help navigabile con browser HTML.&lt;br /&gt;Scrivi 'q()' per uscire da R.&lt;br /&gt;&lt;br /&gt;&amp;gt; &lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Nice, it calls an X11 window if you plot() something too!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Just too simple, obviously it's no time to claim victory. Try to compile some external library, probably you will get something like:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;MACOSX_DEPLOYMENT_TARGET environment variable set to: 10.1&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;For which you have to type:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;Sys.setenv("MACOSX_DEPLOYMENT_TARGET"="10.4")&lt;/pre&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;before every:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;install.packages()&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;Finally, I find X11 terminal too ugly, I like &lt;a href="http://iterm.sourceforge.net/"&gt;I-Term&lt;/a&gt;, try it!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;UPDATE:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;Read &lt;a href="http://elettrofonesi.blogspot.com/2010/11/tcltk-for-r-212-on-macosx-104-ppc.html"&gt;here&lt;/a&gt; how to open Tcl/Tk windows.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-1113738743315108651?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/1113738743315108651/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/11/r-212-on-mac-os-x-tiger-104-ppc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1113738743315108651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1113738743315108651'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/11/r-212-on-mac-os-x-tiger-104-ppc.html' title='HowTo: R 2.12 on Mac OS X Tiger 10.4 PPC'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-6395381450730609283</id><published>2010-11-05T16:06:00.007+01:00</published><updated>2011-09-04T14:43:04.588+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='layout'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>Simple Preamp Layout</title><content type='html'>&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here is a stripboard layout of a simple preamp that you can wire up in ten minutes:&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ATrQjMBhX9g/TNQan_SLcpI/AAAAAAAAAW0/UPRSt5TbHWI/s1600/preamp.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="295" src="http://2.bp.blogspot.com/_ATrQjMBhX9g/TNQan_SLcpI/AAAAAAAAAW0/UPRSt5TbHWI/s400/preamp.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;div style="font-family: Times; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I just tried it with a piezo and it is good enough for me.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Times; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Based on&amp;nbsp;&lt;a href="http://www.experimentalistsanonymous.com/diy/Schematics/Amplifiers%20and%20VCAs/Simple%20Electret%20Mic%20Preamp.GIF"&gt;this schematic&lt;/a&gt;&amp;nbsp;from&amp;nbsp;&lt;a href="http://www.experimentalistsanonymous.com/"&gt;experimentalists anonymous&lt;/a&gt;&lt;/span&gt;.&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-6395381450730609283?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/6395381450730609283/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/11/simple-preamp-layout.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6395381450730609283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6395381450730609283'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/11/simple-preamp-layout.html' title='Simple Preamp Layout'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ATrQjMBhX9g/TNQan_SLcpI/AAAAAAAAAW0/UPRSt5TbHWI/s72-c/preamp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-1447439384997988468</id><published>2010-09-27T12:19:00.000+02:00</published><updated>2010-09-27T12:19:22.899+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='formal grammar'/><category scheme='http://www.blogger.com/atom/ns#' term='visual'/><category scheme='http://www.blogger.com/atom/ns#' term='L-system'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>L-catenula</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ATrQjMBhX9g/TKBrffLrGLI/AAAAAAAAAWc/2RCshov-oMc/s1600/L_catenula.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_ATrQjMBhX9g/TKBrffLrGLI/AAAAAAAAAWc/2RCshov-oMc/s200/L_catenula.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;First attempt to play with L-systems. Lines oriented  following Anabaena catenula development rules, degrees influenced by  mouseY.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Development rules taken from &lt;a href="http://algorithmicbotany.org/papers/#abop"&gt;Algorithmic Beauty of Plants&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="580" scrolling="no" src="http://www.openprocessing.org/visuals/iframe.php?visualID=12511&amp;amp;width=500&amp;amp;height=500" width="528"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  size(500, 500);&lt;br /&gt;  smooth();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw()&lt;br /&gt;{&lt;br /&gt;  background(0);&lt;br /&gt;  Ciclo co = new Ciclo("ea", 9, 1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Ciclo&lt;br /&gt;{&lt;br /&gt;  //w è l'iniziatore&lt;br /&gt;  String w = "";&lt;br /&gt;  //Queste sono le variabili coinvolte nelle trasformazioni.&lt;br /&gt;  //Le pNa sono cio che è, le pNb ciò che sarà.&lt;br /&gt;  String p1a = "a", p1b = "eb";&lt;br /&gt;  String p2a = "e", p2b = "da";&lt;br /&gt;  String p3a = "b", p3b = "a";&lt;br /&gt;  String p4a = "d", p4b = "e";&lt;br /&gt;  //g0 è la generazione attuale, g1 è la generazione futura.&lt;br /&gt;  String g0, g1 = "";&lt;br /&gt;  int n, l;&lt;br /&gt;  //Variabili per il disegno:&lt;br /&gt;  int posX, posY; float posG;&lt;br /&gt;  int lung; float grad;&lt;br /&gt;  &lt;br /&gt;  Ciclo(String _w, int _n, int _l)&lt;br /&gt;  {&lt;br /&gt;    w = _w; n = _n; l = _l;&lt;br /&gt;    //La prima generazione in assoluto consiste nel solo iniziatore w.&lt;br /&gt;    g0 = w;&lt;br /&gt;    posX = mouseX; //width / 2;&lt;br /&gt;    posY = height / 2;&lt;br /&gt;    posG = 0;&lt;br /&gt;    &lt;br /&gt;    //Il ciclo si ripete per il numero di generazioni desiderato, indicato dalla variabile n.&lt;br /&gt;    for (int i= 0; i &amp;lt; n; i++)&lt;br /&gt;    {&lt;br /&gt;      lung = 15; //int(map(abs(mouseX - (width / 2)), 0, width / 2, 10, 50));&lt;br /&gt;      grad = map(mouseY, 0, height, 125, 55);&lt;br /&gt;      //Prima si definisce il sistema attraverso le stringhe.&lt;br /&gt;      stringa();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  private void stringa()&lt;br /&gt;  {&lt;br /&gt;    //La generazione attuale g0 viene esaminata in tutta la sua lunghezza.&lt;br /&gt;    //l rappresenta il numero di lettere da esaminare alla volta, è pari a 1 se si desidera &lt;br /&gt;    //un'analisi lettera per lettera, pari a 2 per esaminare coppie di lettere e così via.&lt;br /&gt;    for (int i = 0; i &amp;lt;= g0.length() - l; i = i + l)&lt;br /&gt;    {&lt;br /&gt;      //Si crea il segmento da comparare, questo parte dal punto in cui si è arrivati nella&lt;br /&gt;      //stringa (i) al punto definito dalla lunghezza del segmento desiderato (i + l).&lt;br /&gt;      String c = g0.substring(i, i + l);&lt;br /&gt;      //Qui avvengono le trasformazioni in base alle variabili pN* per creare la nuova generazione.&lt;br /&gt;      if (c.equals(p1a) == true)&lt;br /&gt;      {&lt;br /&gt;        g1 = g1 + p1b;&lt;br /&gt;        linea(lung, true, grad);&lt;br /&gt;      }&lt;br /&gt;      else if (c.equals(p2a) == true)&lt;br /&gt;      {&lt;br /&gt;        g1 = g1 + p2b;&lt;br /&gt;        linea(lung, true, grad);&lt;br /&gt;      }&lt;br /&gt;      else if (c.equals(p3a) == true)&lt;br /&gt;      {&lt;br /&gt;        g1 = g1 + p3b;&lt;br /&gt;        linea(lung, false, grad);&lt;br /&gt;      }&lt;br /&gt;      else if (c.equals(p4a) == true)&lt;br /&gt;      {&lt;br /&gt;        g1 = g1 + p4b;&lt;br /&gt;        linea(lung, false, grad);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    //println(g0);&lt;br /&gt;    //La nuova generazione diventa la vecchia, e si azzera g1 per poter ricominciare il ciclo.&lt;br /&gt;    g0 = g1;&lt;br /&gt;    g1 = "";&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  private void linea(int lunghezza, boolean destra, float gradi)&lt;br /&gt;  {&lt;br /&gt;    if (destra == false)&lt;br /&gt;    {&lt;br /&gt;      gradi = 360 - gradi;&lt;br /&gt;    }&lt;br /&gt;    float nposG = posG + gradi;&lt;br /&gt;    int nposX = posX + int((cos(radians(nposG))) * lunghezza);&lt;br /&gt;    int nposY = posY + int((sin(radians(nposG))) * lunghezza);&lt;br /&gt;    stroke(0x80558877); strokeWeight(6);&lt;br /&gt;    line(posX, posY, nposX, nposY);&lt;br /&gt;    posX = nposX;&lt;br /&gt;    posY = nposY;&lt;br /&gt;    posG = nposG;&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-1447439384997988468?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/1447439384997988468/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/09/l-catenula.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1447439384997988468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1447439384997988468'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/09/l-catenula.html' title='L-catenula'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ATrQjMBhX9g/TKBrffLrGLI/AAAAAAAAAWc/2RCshov-oMc/s72-c/L_catenula.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-116619091811461470</id><published>2010-09-20T15:10:00.002+02:00</published><updated>2010-09-24T18:42:40.883+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='motor'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='floppy'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>How to drive a floppy with arduino</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/TJdOpzS-ZoI/AAAAAAAAAWI/k9MbfZokowQ/flopps.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="175" src="http://lh5.ggpht.com/_ATrQjMBhX9g/TJdOpzS-ZoI/AAAAAAAAAWI/k9MbfZokowQ/flopps.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Every floppy has read/write head moved by a stepper motor.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;It's easy to drive that motor using the built in interface, all you have to do is to wire some pin to ground ad power up the floppy. &lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Actually two pins are used to drive the motor. One controls direction (pin 18) and one controls steps (pin 20).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;In my setup an arduino board controls those pins with the right timing to generate a sound of a specified frequency.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;This is the wiring:&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/TJdOp42mOrI/AAAAAAAAAWE/NwYtvMxljfE/floppi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/TJdOp42mOrI/AAAAAAAAAWE/NwYtvMxljfE/floppi.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;And this is the code:&lt;/div&gt;&lt;pre class="brush: java"&gt;//pin collegati ai floppy, due per ogni floppy, il primo è lo step_pin, il secondo il dir_pin&lt;br /&gt;byte fd[] = {2, 3, 4, 5};&lt;br /&gt;&lt;br /&gt;//sequencer&lt;br /&gt;int steps = 16;&lt;br /&gt;float seq_f[] = {400, 300, 200, 410, 130, 230, 270, 280, 300, 200, 100, 310, 230, 330, 370, 380};&lt;br /&gt;int seq_t[] = {500, 500, 200, 500, 500, 300, 500, 500, 500, 500, 200, 500, 500, 300, 500, 500};&lt;br /&gt;boolean seq_d[] = {true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false};&lt;br /&gt;&lt;br /&gt;//------------------------------------------------------&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  //attiva i pin dei floppy&lt;br /&gt;  for (byte i = 0; i &lt; 4; i++)&lt;br /&gt;  {&lt;br /&gt;    pinMode(fd[i], OUTPUT);&lt;br /&gt;  }&lt;br /&gt;  //Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//------------------------------------------------------&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;  for (int i = 0; i &lt; steps; i++)&lt;br /&gt;  {&lt;br /&gt;    muovi(0, seq_d[i], seq_f[i], seq_t[i]);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//------------------------------------------------------&lt;br /&gt;&lt;br /&gt;// fl: numero del floppy, dir: true == avanti, f: frequenza, n: numero di passi (n &lt;= 86)&lt;br /&gt;void muovi(byte fl, boolean dir, float f, int t)&lt;br /&gt;{&lt;br /&gt;  //setta i pin del floppy&lt;br /&gt;  byte step_pin = fl * 2;&lt;br /&gt;  byte dir_pin = (fl * 2) + 1;&lt;br /&gt;  &lt;br /&gt;  //calcola il periodo T di delay tra un passo e l'altro data la frequenza f&lt;br /&gt;  float T = (1 / f) * 1000000;&lt;br /&gt;  &lt;br /&gt;  //alza o abbassa il dir_pin a seconda della direzione dir (true == avanti)&lt;br /&gt;  if (dir == true)&lt;br /&gt;  {&lt;br /&gt;    digitalWrite(fd[dir_pin], HIGH); &lt;br /&gt;    digitalWrite(13, HIGH);  //led indicatore direzione&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    digitalWrite(fd[dir_pin], LOW);&lt;br /&gt;    digitalWrite(13, LOW);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  //numero di iterazioni (n) ottenuto dal tempo desiderato per una nota (t, in ms) diviso il&lt;br /&gt;  //tempo richiesto per un ciclo (T per 2 passi) moltiplicato 1000 (poichè T è espresso in s)&lt;br /&gt;  float n = t / (T * 2) * 1000;&lt;br /&gt;  &lt;br /&gt;  //alza e abbassa lo step_pin per un numero di passi n col giusto delay&lt;br /&gt;  for (int i = 0; i &lt; n; i++)&lt;br /&gt;  {&lt;br /&gt;    digitalWrite(fd[step_pin], HIGH);&lt;br /&gt;    delayMicroseconds(T);&lt;br /&gt;    digitalWrite(fd[step_pin], LOW);&lt;br /&gt;    delayMicroseconds(T);&lt;br /&gt;  }&lt;br /&gt;  //Serial.println(n, DEC);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://www.epanorama.net/circuits/diskstepper.html"&gt;Here&lt;/a&gt; is a good article about floppy's motors.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-116619091811461470?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/116619091811461470/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/09/how-to-drive-floppy-with-arduino.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/116619091811461470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/116619091811461470'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/09/how-to-drive-floppy-with-arduino.html' title='How to drive a floppy with arduino'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/TJdOpzS-ZoI/AAAAAAAAAWI/k9MbfZokowQ/s72-c/flopps.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-589376588823231131</id><published>2010-06-01T18:55:00.003+02:00</published><updated>2010-06-01T18:58:11.524+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>.conkyrc</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/TAU7E8HIXsI/AAAAAAAAAVY/OwgP7EuIc2k/conky.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/TAU7E8HIXsI/AAAAAAAAAVY/OwgP7EuIc2k/conky.png" /&gt;&lt;/a&gt;&lt;/div&gt;My new .conkyrc file, based on &lt;a href="http://www.quicktweaks.com/2008/09/27/gmail-weather-beauty-right-on-your-ubuntu-desktop/"&gt;this one&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Needs &lt;a href="http://www.dafont.com/pizzadude-bullets.font"&gt;PizzaDude Bullets&lt;/a&gt; and &lt;a href="http://www.dafont.com/style-bats.font"&gt;StyleBats&lt;/a&gt; fonts.&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;use_xft yes&lt;br /&gt;xftfont verdana:size=8&lt;br /&gt;alignment top_left&lt;br /&gt;gap_y -1&lt;br /&gt;xftalpha 0.8&lt;br /&gt;own_window no&lt;br /&gt;own_window_type override&lt;br /&gt;own_window_transparent yes&lt;br /&gt;own_window_hints undecorated,sticky,below,skip_taskbar,skip_pager&lt;br /&gt;double_buffer yes&lt;br /&gt;draw_shades no&lt;br /&gt;draw_outline no&lt;br /&gt;draw_borders no&lt;br /&gt;stippled_borders 10&lt;br /&gt;border_margin 4&lt;br /&gt;border_width 1&lt;br /&gt;default_shade_color grey&lt;br /&gt;default_outline_color black&lt;br /&gt;default_color BADCDD&lt;br /&gt;use_spacer none&lt;br /&gt;no_buffers yes&lt;br /&gt;uppercase no&lt;br /&gt;color1 F8DF58&lt;br /&gt;&lt;br /&gt;TEXT&lt;br /&gt;&lt;br /&gt;${color 989898}${font StyleBats:size=16}2${font}  uptime:  ${uptime_short}&lt;br /&gt;&lt;br /&gt;${color 989898}${font StyleBats:size=16}A${font}  cpu: ${cpu cpu0}%&lt;br /&gt;${color 989898}${cpugraph 20,200 eth0 000000 989898}&lt;br /&gt;${color 989898}${font StyleBats:size=16}l${font}  ram: $memperc%&lt;br /&gt;${membar 6,200}&lt;br /&gt;${color 989898}${font StyleBats:size=16}b${font}  swap: $swapperc%&lt;br /&gt;${swapbar 6,200}&lt;br /&gt;&lt;br /&gt;${color 989898}${font StyleBats:size=16}j${font}  root: ${fs_free /}/${fs_size /}&lt;br /&gt;${fs_bar 6,200 /}&lt;br /&gt;${color 989898}${font StyleBats:size=16}i${font}  partio: ${fs_free /media/partio}/${fs_size /media/partio}&lt;br /&gt;${fs_bar 6,200 /media/partio}&lt;br /&gt;&lt;br /&gt;${color 989898}${font PizzaDude Bullets:size=16}r${font}  download: ${downspeed eth0} Kb/s&lt;br /&gt;${color 989898}${downspeedgraph 20,200 eth0 000000 989898}&lt;br /&gt;${color 989898}${font PizzaDude Bullets:size=16}v${font}  upload: ${upspeed eth0} Kb/s &lt;br /&gt;${color 989898}${upspeedgraph 20,200 eth0 000000 989898}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-589376588823231131?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/589376588823231131/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/06/conkyrc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/589376588823231131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/589376588823231131'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/06/conkyrc.html' title='.conkyrc'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/TAU7E8HIXsI/AAAAAAAAAVY/OwgP7EuIc2k/s72-c/conky.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-231068743532649010</id><published>2010-05-31T01:26:00.003+02:00</published><updated>2010-05-31T10:06:33.299+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='x86_64'/><title type='text'>Alternative Arduino Serial Monitor</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;On my Arch64 box Arduino's Serial Monitor crashes. I don't know why but I'm used to this kind of bugs... live at 64bit was never easy.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;So I wrote a simple python script which let me see serial communications on the console:&lt;/div&gt;&lt;pre class="brush: python"&gt;import serial&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;seriale = serial.Serial('/dev/ttyUSB0', 9600, timeout = 1)&lt;br /&gt;&lt;br /&gt;while 1:&lt;br /&gt;  print(seriale.read(seriale.inWaiting()))&lt;br /&gt;  time.sleep(0.1)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-231068743532649010?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/231068743532649010/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/alternative-arduino-serial-monitor.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/231068743532649010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/231068743532649010'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/alternative-arduino-serial-monitor.html' title='Alternative Arduino Serial Monitor'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-690997441874814751</id><published>2010-05-26T14:42:00.006+02:00</published><updated>2011-01-03T02:53:10.051+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='oF'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='physical computing'/><category scheme='http://www.blogger.com/atom/ns#' term='x86_64'/><title type='text'>HowTo: OpenFrameworks on Arch Linux x86_64</title><content type='html'>&lt;ul&gt;&lt;li&gt;Install dependencies: &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: python"&gt;pacman gstreamer0.10 gstreamer0.10-plugins alsa-lib libxmu libxxf86vm udev base-devel libraw1394 ffmpeg mesa&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Download the newest code from &lt;a href="http://github.com/openframeworks/openFrameworks"&gt;github&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Edit &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"libs/openFrameworksCompiled/project/linux64/makefile "&lt;/span&gt; &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;and add&lt;/span&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"-D__STDC_CONSTANT_MACROS"&lt;/span&gt; to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"USER_CFLAGS"&lt;/span&gt; (line &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;15&lt;/span&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Edit &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"libs/openFrameworks/video/ofUCUtils.cpp "&lt;/span&gt; and comment lines &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;19&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;20&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Go to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"libs/openFrameworksCompiled/project/linux64"&lt;/span&gt; and launch &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"make"&lt;/span&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Delete &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"libs/fmodex/lib/linux64/libfmodexp64.so"&lt;/span&gt; see why &lt;a href="http://www.openframeworks.cc/forum/viewtopic.php?f=5&amp;amp;t=3969&amp;amp;p=21264#p21264"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-690997441874814751?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/690997441874814751/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/howto-openframework-on-arch-linux-x8664.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/690997441874814751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/690997441874814751'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/howto-openframework-on-arch-linux-x8664.html' title='HowTo: OpenFrameworks on Arch Linux x86_64'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-403561637820154222</id><published>2010-05-21T17:41:00.002+02:00</published><updated>2010-05-21T17:50:09.728+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yamaha-DD6'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='drum machine'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='pd'/><category scheme='http://www.blogger.com/atom/ns#' term='physical computing'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>Yamaha-DD6 e Pd</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S_anuOaGkRI/AAAAAAAAAVE/HzV0fMKQAhc/pd.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S_anuOaGkRI/AAAAAAAAAVE/HzV0fMKQAhc/pd.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Con questa semplicissima patch è possibile pilotare la &lt;a href="http://elettrofonesi.blogspot.com/2010/05/yamaha-dd-6-e-arduino.html"&gt;Yamaha-DD6 modificata&lt;/a&gt; con lo stesso &lt;a href="http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-python.html"&gt;firmware scritto per python&lt;/a&gt;, d'altronde, sempre di connessione seriale si tratta.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Tutto ruota intorno a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[comport]&lt;/span&gt; oggetto per il quale non sono riuscito a trovare una guida, ma che per fortuna ha un help abbastanza chiaro, per visualizzarlo attaccate all'input un messaggio con scritto &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"help"&lt;/span&gt; senza le virgolette e cliccatelo.&lt;br /&gt;&lt;br /&gt;Il messaggio &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"devices"&lt;/span&gt; mostra nella console i dispositivi seriali disponibili, e "open" apre quello con il numero corrispondente.&lt;br /&gt;&lt;br /&gt;I messaggi &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"10" "11" "12" "13"&lt;/span&gt; sono i messaggi che vengono mandati in seriale, e nel mio caso, corrispondono ai pin che arduino deve &lt;i&gt;triggare&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-403561637820154222?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/403561637820154222/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-pd.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/403561637820154222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/403561637820154222'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-pd.html' title='Yamaha-DD6 e Pd'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/S_anuOaGkRI/AAAAAAAAAVE/HzV0fMKQAhc/s72-c/pd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-8748779706566166280</id><published>2010-05-21T11:07:00.009+02:00</published><updated>2010-09-23T21:41:03.650+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yamaha-DD6'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='drum machine'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>Yamaha DD6 e Python</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/S_ZMIdtLWRI/AAAAAAAAAUo/9SEzuMwvrpk/python.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_ATrQjMBhX9g/S_ZMIdtLWRI/AAAAAAAAAUo/9SEzuMwvrpk/python.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Adesso posso pilotare la mia &lt;a href="http://elettrofonesi.blogspot.com/2010/05/yamaha-dd-6-e-arduino.html"&gt;Yamaha-DD6&lt;/a&gt; con python!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Mi sono basato sul software scritto da &lt;a href="http://principialabs.com/arduino-python-4-axis-servo-control/"&gt;questo tizio&lt;/a&gt; per controllare dei servo.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Grazie al suo codice triggare la Yamaha da terminale è stato abbastanza indolore. Ma ora ecco i miei codici:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Questo è lo sketch di arduino, in pratica si limita ad aspettare una connessione seriale, e se esiste, prende un byte, presume che quel byte sia il numero del pin da triggare (non ho acora messo nessun tipo di controllo) e lo trigga:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  for (int i = 10; i &amp;lt; 14; i++)&lt;br /&gt;  {&lt;br /&gt;    pinMode(i, OUTPUT);&lt;br /&gt;  }&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;  if (Serial.available() &amp;gt; 0)&lt;br /&gt;  {&lt;br /&gt;    trig(Serial.read());&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void trig(int pad)&lt;br /&gt;{&lt;br /&gt;  digitalWrite(pad, HIGH);&lt;br /&gt;  delay(5);&lt;br /&gt;  digitalWrite(pad, LOW);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Per quanto riguarda python, ho utilizzato &lt;a href="http://pyserial.sourceforge.net/"&gt;pySerial&lt;/a&gt; per la comunicazione seriale.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Queste 8 righe fanno partire una connessione seriale e mandano attraverso questa un byte.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Quando si lancia la funzione &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;trig(n)&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;n&lt;/span&gt; è il bit trasmesso e deve corrispondere al numero del pin da triggare (in questo caso&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; n = 11&lt;/span&gt;):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;import serial&lt;br /&gt;&lt;br /&gt;seriale = serial.Serial('/dev/ttyUSB0', 9600, timeout = 1)&lt;br /&gt;&lt;br /&gt;def trig(pad):&lt;br /&gt;  seriale.write(chr(pad))&lt;br /&gt;&lt;br /&gt;trig(11)&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Nota: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Con lo stesso firmware si può usare anche &lt;a href="http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-pd.html"&gt;Pd per pilotare la Yamaha&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-8748779706566166280?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/8748779706566166280/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-python.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/8748779706566166280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/8748779706566166280'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-python.html' title='Yamaha DD6 e Python'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_ATrQjMBhX9g/S_ZMIdtLWRI/AAAAAAAAAUo/9SEzuMwvrpk/s72-c/python.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-1973885214731813239</id><published>2010-05-20T20:02:00.011+02:00</published><updated>2010-05-21T17:47:44.776+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yamaha-DD6'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='drum machine'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='physical computing'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>Yamaha-DD6 e Arduino</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S_V0JS6yb3I/AAAAAAAAATA/n9gs6g1_M9I/s1600/prototipo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="430" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S_V0JS6yb3I/AAAAAAAAATA/n9gs6g1_M9I/s640/prototipo.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho appena finito di collegare la mia "nuova" Yamaha DD-6 ad Arduino.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Non è la prima volta che mi cimento a interfacciare una batteria elettronica ad Arduino (&lt;a href="http://elettrofonesi.blogspot.com/2009/11/dragga-machine.html"&gt;Dragga Machine&lt;/a&gt;) ma devo dire che questa volta sono stato davvero più pulito.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho usato pochissimi pezzi, e inoltre credo che questo metodo si possa tranquillamente implementare su altre batterie elettroniche provviste di pad piezoelettrici.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho collegato un pin digitale di Arduino per ogni contatto positivo dei piezo, ma tra questi ho messo una resistenza per proteggere la circuiteria interna della batteria, e un diodo per proteggere Arduino da eventuali "risalite" di corrente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;In pratica ho ripetuto quattro vole questo schema:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S_V0WBX7-8I/AAAAAAAAATg/-mIALkCwOos/schema.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S_V0WBX7-8I/AAAAAAAAATg/-mIALkCwOos/schema.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ovviamente mettendo in comunicazione le masse della batteria elettronica e di arduino. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Alla fine ho ottenuto questo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/S_V0J7YHQ8I/AAAAAAAAATE/tI2QQDtPjLA/s1600/circuito.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://lh4.ggpht.com/_ATrQjMBhX9g/S_V0J7YHQ8I/AAAAAAAAATE/tI2QQDtPjLA/s640/circuito.png" width="568" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; E l'ho avvitato sopra la PCB originale:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/S_V0KkYMqnI/AAAAAAAAATM/kt1u4h5FoBQ/s1600/fattodentro.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://lh4.ggpht.com/_ATrQjMBhX9g/S_V0KkYMqnI/AAAAAAAAATM/kt1u4h5FoBQ/s640/fattodentro.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; Ecco un particolare del collegamento al piezo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/S_V0KLxAZhI/AAAAAAAAATI/dqIk916wm2g/s1600/contatto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S_V0KLxAZhI/AAAAAAAAATI/dqIk916wm2g/s640/contatto.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Per ognuno dei quattro contatti ho usato un mini-jack per poter collegare facilmente qualunque cosa voglia usare per "triggare".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/S_V0V-M594I/AAAAAAAAATc/5qLSS8wad0E/jack_fuori.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S_V0V-M594I/AAAAAAAAATc/5qLSS8wad0E/jack_fuori.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; Finora ho provato solo con  Arduino, ma dovrebbe bastare un qualunque impulso da 5V.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/S_V8oaGpK-I/AAAAAAAAAT8/q-FoP2-Rcf4/arduino.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="184" src="http://lh4.ggpht.com/_ATrQjMBhX9g/S_V8oaGpK-I/AAAAAAAAAT8/q-FoP2-Rcf4/arduino.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Infine ecco un semplicissimo sketch che ho usato come test, come vedete, per triggare basta "alzare" il pin per poi "abbassarlo" subito dopo, 5 millisecondi vanno benissimo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;int pad0 = 10;&lt;br /&gt;int pad1 = 11;&lt;br /&gt;int pad2 = 12;&lt;br /&gt;int pad3 = 13;&lt;br /&gt;&lt;br /&gt;int del = 500;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  for (int i = pad0; i &amp;lt; 4; i++)&lt;br /&gt;  {&lt;br /&gt;    pinMode(i, OUTPUT);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;  trig(pad0);&lt;br /&gt;  delay(del);&lt;br /&gt;  trig(pad1);&lt;br /&gt;  delay(del);&lt;br /&gt;  trig(pad2);&lt;br /&gt;  delay(del);&lt;br /&gt;  trig(pad3);&lt;br /&gt;  delay(del);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void trig(int pad)&lt;br /&gt;{&lt;br /&gt;  digitalWrite(pad, HIGH);&lt;br /&gt;  delay(5);&lt;br /&gt;  digitalWrite(pad, LOW);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Prossimamente scriverò uno sketch per poter pilotare la batteria qualunque cosa possa mandare messaggi in seriale, come ad esempio Pd, python eccetera.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Anche provare a usarla con &lt;a href="http://www.varal.org/ttymidi/"&gt;ttymidi&lt;/a&gt; dev'essere interessante...&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Aggiornamento 21-05-2010:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;/b&gt;Sono riuscito a triggare i pad attraverso python e una connessione seriale, i dettagli sono &lt;a href="http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-python.html"&gt;qui&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;E con lo stesso sketch usato per python si può usare anche &lt;a href="http://elettrofonesi.blogspot.com/2010/05/yamaha-dd6-e-pd.html"&gt;Pd per pilotarla&lt;/a&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-1973885214731813239?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/1973885214731813239/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/yamaha-dd-6-e-arduino.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1973885214731813239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1973885214731813239'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/yamaha-dd-6-e-arduino.html' title='Yamaha-DD6 e Arduino'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/S_V0JS6yb3I/AAAAAAAAATA/n9gs6g1_M9I/s72-c/prototipo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-188792195281899169</id><published>2010-05-16T16:43:00.003+02:00</published><updated>2010-05-16T16:50:09.625+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='circuit bending'/><title type='text'>Buddha Machine</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;How many times  have you found just a single resistor to bend?&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;For instance, this  Buddha Machine is a one-stupid-resistor-toy:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/S-1qxyVHnsI/AAAAAAAAARU/BqGOZWqAgHM/budd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="440" src="http://lh4.ggpht.com/_ATrQjMBhX9g/S-1qxyVHnsI/AAAAAAAAARU/BqGOZWqAgHM/budd.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;But this time I  connected a pitch knob and a LDR in series.&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;LDR is in front of a flashing led  drived by a 555 timer. The result is an interesting pitch-tremolo-like  effect:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IbX5z2b22U4&amp;hl=it_IT&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/IbX5z2b22U4&amp;hl=it_IT&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;center&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This  is the schematic of the added circuit:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S_ABEH8Yn8I/AAAAAAAAASg/zxcCO4R9O6g/ldr.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S_ABEH8Yn8I/AAAAAAAAASg/zxcCO4R9O6g/ldr.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I used a fixed value (1k) for R1, but  if you put a variable resistor&amp;nbsp; you can change the amount of dark time  besides the blinking time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Values are not critical, but this is a  good combination.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-188792195281899169?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/188792195281899169/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/buddha-machine.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/188792195281899169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/188792195281899169'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/buddha-machine.html' title='Buddha Machine'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_ATrQjMBhX9g/S-1qxyVHnsI/AAAAAAAAARU/BqGOZWqAgHM/s72-c/budd.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-5565616766035022485</id><published>2010-05-03T13:15:00.008+02:00</published><updated>2010-05-14T17:18:11.667+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>LoFi-O</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;LoFi-O è un generatore di suoni lo-fi che ho progettato ultimamente.&lt;br /&gt;Contiene 2 oscillatori a onda quadra e 2 LFO basati sull'inverter CD40106, e un filtro passa basso attivo basato sull'opamp TL071.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/S96nPYx7X1I/AAAAAAAAAQc/XXm4aFjXc2M/blog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_ATrQjMBhX9g/S96nPYx7X1I/AAAAAAAAAQc/XXm4aFjXc2M/blog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I suoi suoni sono interessanti e ne sono abbastanza fiero, presto posterò lo schema e il layout per stripboard, intanto godetevi il video per farvi un'idea delle sue potenzialità:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/12rsXblSmSw&amp;hl=it_IT&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/12rsXblSmSw&amp;hl=it_IT&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Dato che sul video la qualità dell'audio fa abbastanza schifo ho uppato anche qualche minuto di audio su soundcloud. In realtà i suoni di LoFi-O sono molto LoFi, ma tanto vale sentire una registrazione quasi decente:&lt;/div&gt;&lt;br /&gt;&lt;object height="81" width="100%"&gt; &lt;param name="movie" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Faggaz%2Flofi-o&amp;amp;show_comments=true&amp;amp;auto_play=false&amp;amp;color=ff7700"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed allowscriptaccess="always" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Faggaz%2Flofi-o&amp;amp;show_comments=true&amp;amp;auto_play=false&amp;amp;color=ff7700" type="application/x-shockwave-flash" width="100%"&gt;&lt;/embed&gt; &lt;/object&gt;   &lt;a href="http://soundcloud.com/aggaz/lofi-o" style="font-family: Arial,Helvetica,sans-serif;"&gt;LoFi-O&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; by &lt;/span&gt;&lt;a href="http://soundcloud.com/aggaz" style="font-family: Arial,Helvetica,sans-serif;"&gt;aggaz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Schema:&lt;/span&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/S-1pbG6Na7I/AAAAAAAAARM/y_bkLHW7f-I/s1600/lofio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="550" src="http://lh3.ggpht.com/_ATrQjMBhX9g/S-1pbG6Na7I/AAAAAAAAARM/y_bkLHW7f-I/s640/lofio.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-5565616766035022485?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/5565616766035022485/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/lofi-o.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/5565616766035022485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/5565616766035022485'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/05/lofi-o.html' title='LoFi-O'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_ATrQjMBhX9g/S96nPYx7X1I/AAAAAAAAAQc/XXm4aFjXc2M/s72-c/blog.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-6265079387219462555</id><published>2010-04-16T11:47:00.001+02:00</published><updated>2010-04-17T20:49:13.202+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><category scheme='http://www.blogger.com/atom/ns#' term='circuit bending'/><title type='text'>Living Circuits</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/S8gwxxTGK_I/AAAAAAAAAP4/fq0hSX0K84I/s1600/mini_fronte.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S8gwxxTGK_I/AAAAAAAAAP4/fq0hSX0K84I/s640/mini_fronte.png" width="451" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/S8gwyPnSp4I/AAAAAAAAAP8/VySI9yaVVW0/s1600/mini_retro.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://lh3.ggpht.com/_ATrQjMBhX9g/S8gwyPnSp4I/AAAAAAAAAP8/VySI9yaVVW0/s640/mini_retro.png" width="452" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-6265079387219462555?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/6265079387219462555/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/04/living-circuits.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6265079387219462555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6265079387219462555'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/04/living-circuits.html' title='Living Circuits'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ATrQjMBhX9g/S8gwxxTGK_I/AAAAAAAAAP4/fq0hSX0K84I/s72-c/mini_fronte.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-4138174393720879633</id><published>2010-02-26T14:26:00.005+01:00</published><updated>2010-02-26T14:37:01.672+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><category scheme='http://www.blogger.com/atom/ns#' term='circuit bending'/><title type='text'>oElica</title><content type='html'>&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Un tempo questa era la sua forma:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S4fEyYGARzI/AAAAAAAAAPU/5uKcvI_Q4ME/ori.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S4fEyYGARzI/AAAAAAAAAPU/5uKcvI_Q4ME/ori.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;In origine l'elicotterino doveva essere in grado di svolazzare e girare su se stesso, ma io l'ho ricevuto rotto, dato che un qualche stolto bambino ha avuto il coraggio di buttarlo, noncurante del suo suono perfetto.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S4fEx7baM8I/AAAAAAAAAPQ/aboN_q_8jGc/dev.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="289" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S4fEx7baM8I/AAAAAAAAAPQ/aboN_q_8jGc/dev.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho cominciato subito a bendarlo, e l'elicotterino deve aver apprezzato la cosa perchè ha mostrato subito il suo potenziale, anche se per trovare i punti migliori ovviamente c'è voluto un po' di tempo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho aggiunto potenziometri e condensatori, dei primi adoro il controllo fine, i secondi hanno permesso gli pseudo filtri e i ritmi ipnotici.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Il circuito veniva alimentato con 4 pile da 1,5V, ma fortunatamente funzionava tranquillamente anche a 5V, così ho aggiunto un &lt;a href="http://www.datasheetcatalog.com/datasheets_pdf/L/7/8/0/L7805CV.shtml"&gt;7805&lt;/a&gt; per poterlo alimentare con una batteria da 9V, che è meno ingombrante.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho comprato una scatolina bellissima per l'occasione e questo è il risultato finale:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/S4ZPWDrPCDI/AAAAAAAAAO0/bq2rFXfEjoo/stito.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S4ZPWDrPCDI/AAAAAAAAAO0/bq2rFXfEjoo/stito.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/S4ZPV9OawuI/AAAAAAAAAOw/GGwbHAJhDx8/ssin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh4.ggpht.com/_ATrQjMBhX9g/S4ZPV9OawuI/AAAAAAAAAOw/GGwbHAJhDx8/ssin.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S4ZPVde9vuI/AAAAAAAAAOs/YfJPpNyYUZs/sret.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S4ZPVde9vuI/AAAAAAAAAOs/YfJPpNyYUZs/sret.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Ovviamente non potevano mancare le immagini sonore:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ESCuEMYPjKk&amp;hl=it_IT&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ESCuEMYPjKk&amp;hl=it_IT&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-4138174393720879633?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/4138174393720879633/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/02/oelica.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/4138174393720879633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/4138174393720879633'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/02/oelica.html' title='oElica'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/S4fEyYGARzI/AAAAAAAAAPU/5uKcvI_Q4ME/s72-c/ori.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-6205551823707592301</id><published>2010-02-01T21:16:00.005+01:00</published><updated>2010-02-01T23:05:00.644+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='conway'/><category scheme='http://www.blogger.com/atom/ns#' term='cellular automata'/><title type='text'>Cianobatteri</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S2c1ivuzolI/AAAAAAAAANM/kYX-a1pNsbE/cianobatteri.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S2c1ivuzolI/AAAAAAAAANM/kYX-a1pNsbE/cianobatteri.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Just another Conway's game of life implementation, strongly based on "2D CA Glider" by Alasdair Turner, but with circles and colors that reminds me Cyanobacteria.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Click and drag to inoculate!  &lt;/span&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="580" scrolling="no" src="http://www.openprocessing.org/visuals/iframe.php?visualID=7324&amp;amp;width=500&amp;amp;height=500" width="528"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;/* Cianobatteri&lt;br /&gt; * Just another Conway's game of life implementation,&lt;br /&gt; * strongly based on "2D CA Glider" by Alasdair Turner,&lt;br /&gt; * but with circles and colors that reminds me Cyanobacteria.&lt;br /&gt; * Writed by Francesco Aggazio, licensed under Creative Commons&lt;br /&gt; * Attribution-Share Alike 3.0 license.&lt;br /&gt; * Work: http://openprocessing.org/visuals/?visualID=7160&lt;br /&gt; * License: http://creativecommons.org/licenses/by-sa/3.0/&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int c = 50;&lt;br /&gt;int cx; int cy;&lt;br /&gt;int s = 500 / c;&lt;br /&gt;boolean [][] cells;&lt;br /&gt;boolean [][] nextcells;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void setup() &lt;br /&gt;{ &lt;br /&gt;  size(500,500);&lt;br /&gt;  cells = new boolean [c][c];&lt;br /&gt;  nextcells = new boolean [c][c];&lt;br /&gt;  for (int i = 0; i &amp;lt; c; i++)&lt;br /&gt;  {&lt;br /&gt;    for (int j = 0; j &amp;lt; c; j++)&lt;br /&gt;    {&lt;br /&gt;      cells[i][j] = false;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  noStroke();&lt;br /&gt;  smooth();&lt;br /&gt;  frameRate(6);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void draw()&lt;br /&gt;{&lt;br /&gt;  background(0);&lt;br /&gt;  color colore = 0x80000000;&lt;br /&gt;  for (int i = 0; i &amp;lt; c; i++)&lt;br /&gt;  {&lt;br /&gt;    for (int j = 0; j &amp;lt; c; j++)&lt;br /&gt;    {&lt;br /&gt;      if (cells[i][j] == true)&lt;br /&gt;      {&lt;br /&gt;        int incol = 0;&lt;br /&gt;        for (int m = -1; m &amp;lt;= 1; m++)&lt;br /&gt;        {&lt;br /&gt;          for (int n = -1; n &amp;lt;= 1; n++)&lt;br /&gt;          {&lt;br /&gt;            if (!(m == 0 &amp;amp;&amp;amp; n == 0))&lt;br /&gt;            {&lt;br /&gt;              if (cells[(i+m+c)%c][(j+n+c)%c] == true)&lt;br /&gt;              {&lt;br /&gt;                incol++;&lt;br /&gt;              }&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;        if (incol &amp;lt; 3)&lt;br /&gt;        {&lt;br /&gt;          colore = 0x8030a236;//5dd463;&lt;br /&gt;        }&lt;br /&gt;        else if (incol == 3)&lt;br /&gt;        {&lt;br /&gt;          colore = 0x80256a6a;&lt;br /&gt;        }&lt;br /&gt;        else if (incol &amp;gt; 3)&lt;br /&gt;        {&lt;br /&gt;          colore = 0x805dd463;//8ed46a;&lt;br /&gt;        }&lt;br /&gt;        fill(colore);&lt;br /&gt;        ellipse((i * s) + (s / 2), (j * s) + (s / 2), s * 2, s * 2);&lt;br /&gt;      }&lt;br /&gt;      // count up how many alive around us&lt;br /&gt;      int number = 0;&lt;br /&gt;      for (int m = -1; m &amp;lt;= 1; m++)&lt;br /&gt;      {&lt;br /&gt;        for (int n = -1; n &amp;lt;= 1; n++)&lt;br /&gt;        {&lt;br /&gt;          if (!(m == 0 &amp;amp;&amp;amp; n == 0))&lt;br /&gt;          {&lt;br /&gt;            if (cells[(i+m+c)%c][(j+n+c)%c] == true)&lt;br /&gt;            {&lt;br /&gt;              number++;&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;      // counted up... now set state of cell for next generation&lt;br /&gt;      if (number &amp;lt; 2 || number &amp;gt; 3)&lt;br /&gt;      {&lt;br /&gt;        nextcells[i][j] = false;&lt;br /&gt;      }&lt;br /&gt;      else if (number == 3)&lt;br /&gt;      {&lt;br /&gt;        nextcells[i][j] = true;&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;        nextcells[i][j] = cells[i][j];&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }   &lt;br /&gt;  for (int i = 0; i &amp;lt; c; i++)&lt;br /&gt;  {&lt;br /&gt;    for (int j = 0; j &amp;lt; c; j++)&lt;br /&gt;    {&lt;br /&gt;      cells[i][j] = nextcells[i][j];&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void mousePressed()&lt;br /&gt;{&lt;br /&gt;  cx = int(mouseX / s);&lt;br /&gt;  cy = int(mouseY / s);&lt;br /&gt;  if (cells[cx][cy] == true)&lt;br /&gt;  {&lt;br /&gt;    cells[cx][cy] = false;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;    cells[cx][cy] = true;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void mouseDragged()&lt;br /&gt;{&lt;br /&gt;  if (mouseX &lt; width &amp;&amp; mouseX &gt; 0 &amp;&amp; mouseY &lt; height &amp;&amp; mouseY &gt; 0)&lt;br /&gt;  {&lt;br /&gt;  cx = int(mouseX / s);&lt;br /&gt;  cy = int(mouseY / s);&lt;br /&gt;  cells[cx][cy] = true;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-6205551823707592301?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/6205551823707592301/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/02/cianobatteri.html#comment-form' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6205551823707592301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6205551823707592301'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/02/cianobatteri.html' title='Cianobatteri'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/S2c1ivuzolI/AAAAAAAAANM/kYX-a1pNsbE/s72-c/cianobatteri.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-6450483820450023691</id><published>2010-01-25T12:05:00.000+01:00</published><updated>2010-01-25T12:19:56.344+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='visual'/><category scheme='http://www.blogger.com/atom/ns#' term='foto'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>PixeLine</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S115JNrHAwI/AAAAAAAAAMs/WTF8U4OyqIs/pixeline.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S115JNrHAwI/AAAAAAAAAMs/WTF8U4OyqIs/pixeline.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This simple sketch controls pixel's colors of a picture and makes a line of the same color of the pixel itself if its color's value is in a certain range determined by cursor's position.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Left = Red&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Rigth = Blue&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Up = Green&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;For the first time I used &lt;a href="http://www.openprocessing.org/"&gt;OpenProcessing.org&lt;/a&gt; to run a sketch online, and this is a good thing! Enjoy!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;iframe frameborder="0" height="395" scrolling="no" src="http://www.openprocessing.org/visuals/iframe.php?visualID=7160&amp;amp;width=420&amp;amp;height=315" width="448"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;And obviously, here is the code!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;/* PixeLine. Makes lines over a pixel of the same color of &lt;br /&gt; * the pixel itself if color's value is in a certain range &lt;br /&gt; * determined by cursor's position. &lt;br /&gt; * Writed by Francesco Aggazio and licensed under Creative &lt;br /&gt; * Commons Attribution-Share Alike 3.0 Unported. &lt;br /&gt; */ &lt;br /&gt;  &lt;br /&gt; &lt;br /&gt;PImage img = loadImage("cubo.png"); &lt;br /&gt;color[] pic = new color[img.width * img.height]; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;void setup() &lt;br /&gt;{ &lt;br /&gt;  size(420, 315); &lt;br /&gt;  img.loadPixels(); &lt;br /&gt;  arrayCopy(img.pixels, pic); &lt;br /&gt;} &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;void draw() &lt;br /&gt;{ &lt;br /&gt;  image(img, 0, 0); &lt;br /&gt;  color colo = 0; &lt;br /&gt;  arrayCopy(pic, img.pixels); &lt;br /&gt;  for (int i = 0; i &amp;lt; (width * height); i++) &lt;br /&gt;  { &lt;br /&gt;    int l = int(random(1) * 20); &lt;br /&gt;    int r = int(map(mouseX, 0, width, 254, 0)); &lt;br /&gt;    int g = int(map(mouseY, 0, height, 254, 0)); &lt;br /&gt;    int b = int(map(mouseX, 0, width, 0, 254)); &lt;br /&gt;    if (red(img.pixels[i]) &amp;lt; r &amp;amp;&amp;amp; green(img.pixels[i]) &amp;lt; g &amp;amp;&amp;amp; blue(img.pixels[i]) &amp;lt; b) &lt;br /&gt;    { &lt;br /&gt;      colo = img.pixels[i]; &lt;br /&gt;      for (int a = 0; a &amp;lt; l; a++) &lt;br /&gt;      { &lt;br /&gt;        int v = i - (width * a); &lt;br /&gt;        if ( v &amp;lt; 0) &lt;br /&gt;        { &lt;br /&gt;          v = 0; &lt;br /&gt;        } &lt;br /&gt;        img.pixels[v] = colo; &lt;br /&gt;      } &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;  img.updatePixels(); &lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-6450483820450023691?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/6450483820450023691/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/pixeline.html#comment-form' title='7 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6450483820450023691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6450483820450023691'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/pixeline.html' title='PixeLine'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/S115JNrHAwI/AAAAAAAAAMs/WTF8U4OyqIs/s72-c/pixeline.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-3474855323738775654</id><published>2010-01-21T16:48:00.000+01:00</published><updated>2010-01-25T12:20:35.624+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webcam'/><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='visual'/><category scheme='http://www.blogger.com/atom/ns#' term='esagoni'/><category scheme='http://www.blogger.com/atom/ns#' term='foto'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>MoscaView</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;MoscaView è la naturale evoluzione di &lt;a href="http://elettrofonesi.blogspot.com/2010/01/esagonia.html"&gt;Esagonia&lt;/a&gt;.&lt;br /&gt;I bordi dei singoli esagoni sono stati eliminati per avere un effetto somigliante alla visione che potrebbe avere una mosca. Ecco un breve video, anche questa volta accellerato non so perchè... Come se non bastesse youtube ha ridimensionato automaticamente il video, che altrimenti avrebbe l'asse &lt;i&gt;y&lt;/i&gt; più lungo dell'&lt;i&gt;x&lt;/i&gt;, ma rende comunque l'idea.&lt;br /&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Rxk_ccS6CMU&amp;hl=it&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Rxk_ccS6CMU&amp;hl=it&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Sebbene le modifiche al codice siano minime, lo riporto qui sotto nella sua interezza, praticamente ho sostituito &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;stroke(0, 0, 0)&lt;/span&gt; con &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;noStroke()&lt;/span&gt;, e naturalmente ho eliminato &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;strokeWidth()&lt;/span&gt;.&lt;br /&gt;Inoltre ho aggiunto il codice necessario alla registrazione del video sull'hard disk.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;import processing.video.*;&lt;br /&gt;Capture videoin;&lt;br /&gt;MovieMaker film;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  size(410, 450);&lt;br /&gt;  colorMode(RGB, 255);&lt;br /&gt;  background(0, 0, 0);&lt;br /&gt;  noStroke();&lt;br /&gt;  smooth();&lt;br /&gt;//  println(Capture.list());&lt;br /&gt;  videoin = new Capture(this, width, height, "la_tua_webcam", 30);&lt;br /&gt;  film = new MovieMaker(this, width, height, "il_tuo_file", 30, MovieMaker.H263, MovieMaker.HIGH);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void captureEvent(Capture videoin)&lt;br /&gt;{&lt;br /&gt;  videoin.read();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void draw()&lt;br /&gt;{&lt;br /&gt;  pattern(23, 6);&lt;br /&gt;  film.addFrame();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void esagono(int x, int y, int l)&lt;br /&gt;{&lt;br /&gt;  beginShape();&lt;br /&gt;  vertex(x + (l / 2), y);&lt;br /&gt;  vertex(x + (l / 2) + l, y);&lt;br /&gt;  vertex(x + (l * 2), y + sqrt(sq(l) - sq(l / 2)));&lt;br /&gt;  vertex(x + (l / 2) + l, y + (sqrt(sq(l) - sq(l / 2)) * 2));&lt;br /&gt;  vertex(x + (l / 2), y + (sqrt(sq(l) - sq(l / 2)) * 2));&lt;br /&gt;  vertex(x, y + sqrt(sq(l) - sq(l / 2)));&lt;br /&gt;  vertex(x + (l / 2), y);&lt;br /&gt;  endShape();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void pattern(int n, int l)&lt;br /&gt;{&lt;br /&gt;  int x = (width / 2) - l; int y = 0; int b = int(sin(radians(60)) * l);&lt;br /&gt;  for (int e = 0; e &amp;lt; n; e++)  &lt;br /&gt;  {&lt;br /&gt;    int ix = x; int iy = y;&lt;br /&gt;    for (int i = 0; i &amp;lt; (n + e); i++)&lt;br /&gt;    {&lt;br /&gt;      color colore = videoin.get((ix + l), (iy + b));&lt;br /&gt;      fill(colore);&lt;br /&gt;      esagono(ix, iy, l);&lt;br /&gt;      ix = ix + (l + (l / 2));&lt;br /&gt;      iy = iy + b;&lt;br /&gt;    }&lt;br /&gt;    x = x - (l + (l / 2));&lt;br /&gt;    y = y + b;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  int c = (n - 1) * 2;&lt;br /&gt;  x = x + (l + (l / 2));&lt;br /&gt;  y = y + b;&lt;br /&gt;  for (int a = 0; a &amp;lt; c; a++)&lt;br /&gt;  {&lt;br /&gt;    int ix = x; int iy = y;&lt;br /&gt;    for (int o = 0; o &amp;lt; c; o++)&lt;br /&gt;    {&lt;br /&gt;      color colore = videoin.get((ix + l), (iy + b));&lt;br /&gt;      fill(colore);&lt;br /&gt;      esagono(ix, iy, l);&lt;br /&gt;      ix = ix + (l + (l / 2));&lt;br /&gt;      iy = iy + b;&lt;br /&gt;    }&lt;br /&gt;    c = c - 1;&lt;br /&gt;    y = y + (b * 2);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void keyPressed()&lt;br /&gt;{&lt;br /&gt;  if (key == ' ')&lt;br /&gt;  {&lt;br /&gt;    film.finish();&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;Devo ringraziare Venom per avermi suggerito di togliere i bordi, è stata proprio una buona idea e dato che mi ha fatto notare che la comprensione del codice non è proprio immediata ecco una breve descrizione delle funzioni principali: &lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;esagono(int x, int y, int l)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;calcola le coordinate di tutti i vertici necessari alla creazione di un esagono e lo disegna. Il calcolo delle coordinate è impostato in maniera tale da poter variare senza difficoltà sia le coordinate dell'esagono stesso (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;x&lt;/span&gt; e &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;y&lt;/span&gt;) sia la lunghezza del lato dell'esagono (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;l&lt;/span&gt;). Per ottenere questo risultato ho fatto un ampio uso del teorema di pitagora, scelta ovvia se si considera un esagono come un insieme di triangoli. Mi sono basato su &lt;a href="http://it.wikipedia.org/wiki/File:Esagono.png"&gt;questo&lt;/a&gt; disegno partendo dal vertice in alto a sinistra, quindi a chi è interessato a studiare il codice consiglio di dargli un'occhiata durante la lettura. &lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pattern(int n, int l)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S1h0JrwC9UI/AAAAAAAAAMM/35DAaTw2iVs/esagoni.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://lh5.ggpht.com/_ATrQjMBhX9g/S1h0JrwC9UI/AAAAAAAAAMM/35DAaTw2iVs/esagoni.png" width="286" /&gt;&lt;/a&gt;genera un esagono di esagoni, che è il pattern che da la forma all'immagine vista. È possibile scegliere sia la lunghezza del lato di ogni esagono in pixel (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;l&lt;/span&gt;), sia la lunghezza del lato dell'esagono di esagoni, in numero di esagoni (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;n&lt;/span&gt;). La variabile &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;b&lt;/span&gt; è l'equivalente di &lt;i&gt;a&lt;/i&gt; dell'immagine sopra. Ogni esagono è posizionato nelle giuste coordinate attraverso due serie di due cicli for. Il motivo è chiarificato dall'immagine accanto.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;La prima serie posiziona gli esagoni numerati in nero, e a ogni ciclo aggiunge un esagono, mentre la seconda quelli coi numeri in bianco, e ad ogni ciclo sottrae un esagono. I numeri rispecchiano l'ordine seguito dall'algoritmo. In questa maniera, a ogni ciclo, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pattern()&lt;/span&gt; chiama &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;esagono()&lt;/span&gt;, posiziona l'esagono alle sue coordinate e lo colora con il colore del pixel dell'input video corrispondente al centro dell'esagono stesso.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-3474855323738775654?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/3474855323738775654/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/moscaview.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3474855323738775654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3474855323738775654'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/moscaview.html' title='MoscaView'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/S1h0JrwC9UI/AAAAAAAAAMM/35DAaTw2iVs/s72-c/esagoni.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-1521640898230744162</id><published>2010-01-21T00:01:00.000+01:00</published><updated>2010-01-25T12:20:57.432+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webcam'/><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='visual'/><category scheme='http://www.blogger.com/atom/ns#' term='esagoni'/><category scheme='http://www.blogger.com/atom/ns#' term='foto'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>Esagonia</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/S1eIOJUBqDI/AAAAAAAAALo/Nxk1kU8Z-Uc/s512/esagonia.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S1eIOP1yFgI/AAAAAAAAALs/labVjv_st38/esameta.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Genera un esagono di esagoni e li colora a seconda dell'input video proveniente dalla webcam.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Sia la lunghezza del lato dei singoli esagoni (l) che il numero degli esagoni che compongono il lato del grande pattern esagonale (n) sono&amp;nbsp; facilmente modificabili.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Questa accanto è un'immagine processata con questo algoritmo, ritrae un temibile draghetto di plastica. L'immagine è scalata del 50%, ma la dimensione originale può essere visualizzata cliccando sopra l'immagine stessa. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Questo è lo stesso input non processato, notate le fauci.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/S1eIOZORx9I/AAAAAAAAALw/hwCfYbw_Puo/esano.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S1eIOZORx9I/AAAAAAAAALw/hwCfYbw_Puo/esano.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Infine ecco il codice:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;import processing.video.*;&lt;br /&gt;Capture videoin;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  size(600, 633);&lt;br /&gt;  colorMode(RGB, 255);&lt;br /&gt;  background(0, 0, 0);&lt;br /&gt;  stroke(0, 0, 0);&lt;br /&gt;  strokeWeight(2);&lt;br /&gt;  smooth();&lt;br /&gt;//  println(Capture.list());&lt;br /&gt;  videoin = new Capture(this, width, height, "nome_della_tua_webcam", 30);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void captureEvent(Capture videoin)&lt;br /&gt;{&lt;br /&gt;  videoin.read();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void draw()&lt;br /&gt;{&lt;br /&gt;  pattern(32, 6);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void esagono(int x, int y, int l)&lt;br /&gt;{&lt;br /&gt;  beginShape();&lt;br /&gt;  vertex(x + (l / 2), y);&lt;br /&gt;  vertex(x + (l / 2) + l, y);&lt;br /&gt;  vertex(x + (l * 2), y + sqrt(sq(l) - sq(l / 2)));&lt;br /&gt;  vertex(x + (l / 2) + l, y + (sqrt(sq(l) - sq(l / 2)) * 2));&lt;br /&gt;  vertex(x + (l / 2), y + (sqrt(sq(l) - sq(l / 2)) * 2));&lt;br /&gt;  vertex(x, y + sqrt(sq(l) - sq(l / 2)));&lt;br /&gt;  vertex(x + (l / 2), y);&lt;br /&gt;  endShape();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void pattern(int n, int l)&lt;br /&gt;{&lt;br /&gt;  int x = (width / 2) - l; int y = 0; int b = int(sin(radians(60)) * l);&lt;br /&gt;  for (int e = 0; e &amp;lt; n; e++)  &lt;br /&gt;  {&lt;br /&gt;    int ix = x; int iy = y;&lt;br /&gt;    for (int i = 0; i &amp;lt; (n + e); i++)&lt;br /&gt;    {&lt;br /&gt;      color colore = videoin.get((ix + l), (iy + b));&lt;br /&gt;      fill(colore);&lt;br /&gt;      esagono(ix, iy, l);&lt;br /&gt;      ix = ix + (l + (l / 2));&lt;br /&gt;      iy = iy + b;&lt;br /&gt;    }&lt;br /&gt;    x = x - (l + (l / 2));&lt;br /&gt;    y = y + b;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  int c = (n - 1) * 2;&lt;br /&gt;  x = x + (l + (l / 2));&lt;br /&gt;  y = y + b;&lt;br /&gt;  for (int a = 0; a &amp;lt; c; a++)&lt;br /&gt;  {&lt;br /&gt;    int ix = x; int iy = y;&lt;br /&gt;    for (int o = 0; o &amp;lt; c; o++)&lt;br /&gt;    {&lt;br /&gt;      color colore = videoin.get((ix + l), (iy + b));&lt;br /&gt;      fill(colore);&lt;br /&gt;      esagono(ix, iy, l);&lt;br /&gt;      ix = ix + (l + (l / 2));&lt;br /&gt;      iy = iy + b;&lt;br /&gt;    }&lt;br /&gt;    c = c - 1;&lt;br /&gt;    y = y + (b * 2);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-1521640898230744162?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/1521640898230744162/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/esagonia.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1521640898230744162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1521640898230744162'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/esagonia.html' title='Esagonia'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ATrQjMBhX9g/S1eIOP1yFgI/AAAAAAAAALs/labVjv_st38/s72-c/esameta.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-6119082106777930720</id><published>2010-01-08T20:16:00.000+01:00</published><updated>2010-01-26T00:06:06.022+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='formal grammar'/><category scheme='http://www.blogger.com/atom/ns#' term='visual'/><category scheme='http://www.blogger.com/atom/ns#' term='pitagora'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='context free art'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>Context Free Art</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Ho scoperto &lt;a href="http://www.contextfreeart.org/"&gt;Context Free Art&lt;/a&gt; e mi piace moltissimo!&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;CFDG è &lt;/span&gt;un simpatico programma open source che permette di generare immagini da algoritmi descritti in maniera molto semplice, senza la complessa sintassi tipica dei linguaggi di programmazione a cui siamo abituati. Ciò è reso possibile grazie all'utilizzo di una &lt;a href="http://it.wikipedia.org/wiki/Grammatica_libera_dal_contesto"&gt;grammatica libera dal contesto&lt;/a&gt;, che è una forma di &lt;a href="http://it.wikipedia.org/wiki/Grammatica_formale"&gt;grammatica formale&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una grammatica formale è qualcosa di diverso dalla grammatica dei  &lt;a href="http://it.wikipedia.org/wiki/Linguaggio_naturale"&gt;linguaggi naturali&lt;/a&gt;, le sue regole sono regole matematiche e astratte, e per definizione deve essere costituita da:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un insieme finito di simboli terminali (in pratica lettere).&lt;/li&gt;&lt;li&gt;Un insieme finito di simboli non terminali.&lt;/li&gt;&lt;li&gt;Un insieme finito di regole di produzione.&lt;/li&gt;&lt;li&gt;Un simbolo iniziale.&lt;/li&gt;&lt;/ul&gt;Con questi elementi è possibile generare un certo numero di stringhe che sono le parole che nel loro insieme formano il linguaggio formale. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://it.wikipedia.org/wiki/Noam_Chomsky"&gt;Noam Chomsky&lt;/a&gt; è stato il pioniere che durante gli anni 50 studiò i vari tipi di grammatiche formali e fu il primo a descriverne una &lt;a href="http://it.wikipedia.org/wiki/Gerarchia_di_Chomsky"&gt;gerarchia&lt;/a&gt; in base al loro potere generativo. La sua ricerca era orientata verso la comprensione delle strutture dei linguaggi naturali, quelli parlati da noi umani, ma i principi da lui esposti possono essere utilizzati anche per altri scopi.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.contextfreeart.org/mediawiki/index.php/About"&gt;Chris Coyne &lt;/a&gt;è quello che ha scritto &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;CFDG e per farlo si è basato su questi principi, solo che il suo programma usa come simboli terminali forme anzichè lettere. Quest'approccio permette di generare forme complesse a partire da forme semplici quali quadrati, triangoli e cerchi.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Per dare un'idea del potenziale di questo fantastico software pubblico qui sotto qualche immagine che ho generato in questi giorni accompagnate dai rispettivi codici. Vedrete come poche righe bastino per avere risultati complessi.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Siccome mi trovo a Crotone, terra di Pitagora, ho cominciato generando un semplice albero pitagorico:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="brush: java"&gt;startshape ALBEROPITAGORICO&lt;br /&gt;&lt;br /&gt;rule ALBEROPITAGORICO {&lt;br /&gt; SQUARE {}&lt;br /&gt; ALBEROPITAGORICO {y 1 x -0.5 r 45 s 0.7}&lt;br /&gt; ALBEROPITAGORICO {y 1 x 0.5 r -45 s 0.7}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/S0d0ldNBhPI/AAAAAAAAAKg/BiMxowLefto/albero_pitagorico.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://lh6.ggpht.com/_ATrQjMBhX9g/S0d0ldNBhPI/AAAAAAAAAKg/BiMxowLefto/albero_pitagorico.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;È immediatamente evidente come sia semplice creare un'iterazione.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;startshape&lt;/span&gt; è la prima istruzione obbligatoria, e indica la forma base, in questo caso &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ALBEROPITAGORICO&lt;/span&gt;.&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; ALBEROPITAGORICO &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;è la prima e unica regola, crea un quadrato e poi chiama se stessa due volte, ma con qualche variazione. In entrambi i casi crea un quadrato più piccolo, pari al 70% del primo, ma mentre nel primo caso il quadrato è ruotato di 45°, nel secondo invece è ruotato di -45°. Anche la posizione rispetto all'asse &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;x&lt;/span&gt; è diversa nei due quadrati &lt;i&gt;"figli"&lt;/i&gt;, poichè sono posizionati ognuno su un lato diverso, mentre quella rispetto all'asse &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;y&lt;/span&gt; è uguale nei due casi, perchè entrambi sono sopra il quadrato &lt;i&gt;"padre"&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Tale operazione viene ripetuta per ogni quadrato figlio (iterazione) generando il frattale qui sopra.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Poichè parliamo di Pitagora e poichè da poco so cos'è un coseno ho deciso di generare un'altro albero simile al primo ma con le proporzioni dei quadrati figli diverse, in modo da avere un triangolo rettangolo tra i quadrati.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Poichè un angolo deve essere di 90° ho ruotato i quadrati figli di 60° e 30°, e per la grandezza ho dato il valore di &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sin(30)&lt;/span&gt; al più piccolo e di &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cos(30)&lt;/span&gt; al più grande. Qualche aggiustamento agli assi &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;x&lt;/span&gt; e &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;y&lt;/span&gt; &lt;i&gt;et voilà&lt;/i&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;startshape ALBEROPITAGORICO_RETTANGOLO&lt;br /&gt;&lt;br /&gt;rule ALBEROPITAGORICO_RETTANGOLO {&lt;br /&gt; SQUARE{}&lt;br /&gt; ALBEROPITAGORICO_RETTANGOLO {y 1.1 x 0.34 r -30 s 0.87}&lt;br /&gt; ALBEROPITAGORICO_RETTANGOLO {y 0.85 x -0.6 r 60 s 0.5}&lt;br /&gt;}&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/S0d0leBrdTI/AAAAAAAAAKk/7LYYx2W7F0I/albero_pitagorico_rettangolo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://lh4.ggpht.com/_ATrQjMBhX9g/S0d0leBrdTI/AAAAAAAAAKk/7LYYx2W7F0I/albero_pitagorico_rettangolo.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Infine ho preso questo bel ramo a spirale e l'ho ruotato 7 volte di 45° in modo da avere una forma circolare composta da 8 rami che mi ricorda un cavolo, ecco dunque, senza ulteriori indugi, il cavolo pitagorico:&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;startshape CAVOLO_PITAGORICO&lt;br /&gt;&lt;br /&gt;rule RAMO {&lt;br /&gt; SQUARE{}&lt;br /&gt; SQUARE{s 0.9 b 1}&lt;br /&gt; RAMO {y 1.1 x 0.34 r -30 s 0.87}&lt;br /&gt; RAMO {y 0.85 x -0.6 r 60 s 0.5}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;rule CAVOLO_PITAGORICO {&lt;br /&gt; RAMO {}&lt;br /&gt; RAMO {r 45}&lt;br /&gt; RAMO {r 90}&lt;br /&gt; RAMO {r 135}&lt;br /&gt; RAMO {r 180}&lt;br /&gt; RAMO {r 225}&lt;br /&gt; RAMO {r 270}&lt;br /&gt; RAMO {r 315}&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/S0d0lmK1nWI/AAAAAAAAAKo/dZkq2gTmDbk/s1600/cavolo_pitagorico.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_ATrQjMBhX9g/S0d0lmK1nWI/AAAAAAAAAKo/dZkq2gTmDbk/s400/cavolo_pitagorico.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Questa volta ho dovuto aggiungere un quadrato bianco più piccolo sopra ogni quadrato nero di base, per ottenere solo i bordi dei quadrati, in modo da non avere come risultato un'immagine troppo confusa.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Questo è quello che fin'ora ho fatto con CFDG, e sopratutto solo quello che ho capito del suo funzionamento. Per chi volesse approfondire, oltre ai &lt;a href="http://www.contextfreeart.org/mediawiki/index.php/CFDG_HOWTO"&gt;tutorial sul sito ufficiale&lt;/a&gt; e alle varie pagine di wikipedia già linkate, consiglio un'ottimo articolo chiamato &lt;i&gt;"Structural Synthesis using a Context-Free Grammar Approach"&lt;/i&gt; &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;scaricabile in pdf da &lt;a href="http://blog.hvidtfeldts.net/index.php/2009/12/generative-art-2009-conference-milano/"&gt;questo post&lt;/a&gt;, e le lezioni del corso &lt;i&gt;"DECO2013: Generative Design Systems"&lt;/i&gt; consultabili &lt;a href="http://web.arch.usyd.edu.au/%7Ekgra7942/DECO2013/"&gt;qui&lt;/a&gt;. Essenziale è il pdf &lt;i&gt;"Context Free in a Nutshell"&lt;/i&gt; che sta &lt;a href="http://www.contextfreeart.org/mediawiki/index.php/Reference_Card"&gt;qui&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-6119082106777930720?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/6119082106777930720/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/context-free-art.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6119082106777930720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/6119082106777930720'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2010/01/context-free-art.html' title='Context Free Art'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ATrQjMBhX9g/S0d0ldNBhPI/AAAAAAAAAKg/BiMxowLefto/s72-c/albero_pitagorico.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-3912852097751755497</id><published>2009-12-27T23:15:00.000+01:00</published><updated>2010-01-25T12:21:46.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webcam'/><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='visual'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><category scheme='http://www.blogger.com/atom/ns#' term='physical computing'/><category scheme='http://www.blogger.com/atom/ns#' term='italiano'/><title type='text'>Circular Pixels</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;In questi ultilimi giorni ho giocato un po' con &lt;a href="http://processing.org/"&gt;Processing&lt;/a&gt; e &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt;. Nonostante la mia poca esperienza con Processing, i risultati sono stati molto soddisfacenti.&lt;br /&gt;Avvelendomi delle librerie &lt;a href="http://processing.org/reference/libraries/serial/index.html"&gt;Serial&lt;/a&gt; e &lt;a href="http://processing.org/reference/libraries/video/index.html"&gt;Video&lt;/a&gt; incluse nell'ultima versione sono riuscito con poco sforzo a manipolare i pixel dell'input video della webcam con sei potenziometri collegati ad arduino.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/SzemKsybLGI/AAAAAAAAAJE/UdAZp7xo1sg/s1600/ardu_analog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/SzemKsybLGI/AAAAAAAAAJE/UdAZp7xo1sg/s640/ardu_analog.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Arduino si limita a prendere i sei valori analogici, ad allinearli in una comoda stringa e a spedire questa stringa via comunicazione seriale. &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;int anali = 6;&lt;br /&gt;int tolleranza = 9;&lt;br /&gt;int valore[6];&lt;br /&gt;int vecchio[6];&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  Serial.begin(57600);  &lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;  for (int n = 0; n &amp;lt; anali; n++)&lt;br /&gt;  {&lt;br /&gt;    valore[n] = analogRead(n);&lt;br /&gt;    if (abs(vecchio[n] - valore[n]) &amp;gt; tolleranza)&lt;br /&gt;    {&lt;br /&gt;    vecchio[n] = valore[n];&lt;br /&gt;    for (int i = 0; i &amp;lt; anali; i++)&lt;br /&gt;    {&lt;br /&gt;      Serial.print(valore[i], DEC);&lt;br /&gt;      if (i &amp;lt; (anali - 1))&lt;br /&gt;      {&lt;br /&gt;        Serial.print(",");&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    Serial.println();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Processing riceve questa stringa, la divide nei singoli valori (i quali sono separati da virgole), e li associa ad alcune divertenti variabili. Allo stesso tempo si collega alla webcam, prende il colore di un pixel ogni tanto e traccia un cerchio di quel colore a quelle coordinate, il risultato finale è un'immagine composta non da punti, ma da cerchi.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;import processing.serial.*;&lt;br /&gt;import processing.video.*;&lt;br /&gt;Serial seriale;&lt;br /&gt;Capture videoin;&lt;br /&gt;MovieMaker film;&lt;br /&gt;&lt;br /&gt;int x = 400;&lt;br /&gt;int y = 300;&lt;br /&gt;int an0 = 1;&lt;br /&gt;int an1 = 1;&lt;br /&gt;int an2 = 1;&lt;br /&gt;int an3 = 1;&lt;br /&gt;int an4 = 1;&lt;br /&gt;int an5 = 1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  size(x, y);&lt;br /&gt;  background(0);&lt;br /&gt;  smooth();&lt;br /&gt;  noFill();&lt;br /&gt;&lt;br /&gt;  videoin = new Capture(this, width, height, "Common PixArt PAC207 based webcam (0x2468)", 30);&lt;br /&gt;  film = new MovieMaker(this, width, height, "/Volumes/partio/cpawm7.avi", 30, MovieMaker.BMP, MovieMaker.HIGH);&lt;br /&gt;  &lt;br /&gt;  seriale = new Serial(this, Serial.list()[2], 57600);&lt;br /&gt;  seriale.bufferUntil('\n');&lt;br /&gt;  seriale.clear();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw()&lt;br /&gt;{ &lt;br /&gt;  //image(videoin, 0, 0);&lt;br /&gt;    &lt;br /&gt;  color rosso = color(an4, 0, 0);&lt;br /&gt;  color verde = color(0, an5, 0);&lt;br /&gt;  color blu = color(0, 0, an0);&lt;br /&gt;  &lt;br /&gt;  color csum1 = blendColor(rosso, verde, ADD);&lt;br /&gt;  color csum2 = blendColor(csum1, blu, ADD);&lt;br /&gt;  &lt;br /&gt;  int raggio = an1;&lt;br /&gt;  int spazio = an2;&lt;br /&gt;  int opacita = an3;&lt;br /&gt;  &lt;br /&gt;  for (int scany = 0; scany &amp;lt; y; scany = scany + spazio)&lt;br /&gt;  {&lt;br /&gt;    for (int scanx = 0; scanx &amp;lt; x; scanx = scanx + spazio)&lt;br /&gt;    {&lt;br /&gt;      color colore = videoin.get(scanx, scany);&lt;br /&gt;      int colorsum = blendColor(colore, csum2, ADD);&lt;br /&gt;      stroke(colorsum, opacita);&lt;br /&gt;      ellipse(scanx, scany, raggio, raggio);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  film.addFrame();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void serialEvent(Serial seriale)&lt;br /&gt;{&lt;br /&gt;  String flusso = seriale.readStringUntil('\n');&lt;br /&gt;  flusso = trim(flusso);&lt;br /&gt;  int quanti[] = int(split(flusso, ','));&lt;br /&gt;&lt;br /&gt;  an0 = int(map(quanti[0], 0, 1023, 0, 254));&lt;br /&gt;  an1 = int(map(quanti[1], 0, 1023, 1, 100));&lt;br /&gt;  an2 = int(map(quanti[2], 0, 1023, 5, 100));&lt;br /&gt;  an3 = int(map(quanti[3], 0, 1023, 0, 254));&lt;br /&gt;  an4 = int(map(quanti[4], 0, 1023, 0, 254));&lt;br /&gt;  an5 = int(map(quanti[5], 0, 1023, 0, 254));&lt;br /&gt;  &lt;br /&gt;  print(an0);&lt;br /&gt;  print(",");&lt;br /&gt;  print(an1);&lt;br /&gt;  print(",");&lt;br /&gt;  print(an2);&lt;br /&gt;  print(",");&lt;br /&gt;  print(an3);&lt;br /&gt;  print(",");&lt;br /&gt;  print(an4);&lt;br /&gt;  print(",");&lt;br /&gt;  println(an5);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void captureEvent(Capture videoin)&lt;br /&gt;{&lt;br /&gt;  videoin.read();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void keyPressed()&lt;br /&gt;{&lt;br /&gt;  if (key == ' ')&lt;br /&gt;  {&lt;br /&gt;    film.finish();&lt;br /&gt;  }&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Dei sei potenziometri, uno controlla il raggio dei cerchi, uno lo spazio tra i cerchi, un'altro l'opacità dei cerchi. Gli altri tre possono influenzare il colore variando la quantità di rosso, verde e blu.&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Nello sketch ci sono pure le righe che ho usato per registrare il video sull'hard disk, ovvero tutte le chiamate a MovieMaker, che fa parte della libreria video.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Non so per quale motivo il video salvato è accellerato, forse è una conseguenza del fatto che il mio mac è vecchio e lento, e java è ancora più lento e, mentre registro, per passare da un frame all'altro, processing ci impiega più di quanto dovrebbe, effetto che sparisce quando si guarda la registrazione (che appare quindi velocizzata). Non so, ma in ogni caso gli effetti grafici sono interessanti e lo smanettamento è divertente.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yJW66hZtqxE&amp;hl=it&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yJW66hZtqxE&amp;hl=it&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-3912852097751755497?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/3912852097751755497/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2009/12/circular-pixels_27.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3912852097751755497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/3912852097751755497'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2009/12/circular-pixels_27.html' title='Circular Pixels'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/SzemKsybLGI/AAAAAAAAAJE/UdAZp7xo1sg/s72-c/ardu_analog.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-2492050855284752865</id><published>2009-11-25T10:42:00.001+01:00</published><updated>2010-01-28T12:00:06.560+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='drum machine'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='pd'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='circuit bending'/><title type='text'>Dragga Machine</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;I added two new knobs to my awesome Bontempi toy drum machine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/SwwKwP9VSEI/AAAAAAAAADk/5TZ_3pU6Awc/bontempi_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_ATrQjMBhX9g/SwwKwP9VSEI/AAAAAAAAADk/5TZ_3pU6Awc/bontempi_1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The first time I modified this toy I was able to found only the pitch resistor. When I tried do add other bends I fried a fuse-resistor and I had to go to a TV specialist to repair it! (I did not know nothing about the existence of fuse-resistors at the time).&lt;br /&gt;After this bad experience I added some contact to link it with arduino.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Firstly I built a bad looking perfboard prototype. It worked but I fried some transistor.&lt;br /&gt;Anyway I was able to drive it with Pd, as showed in this old video:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pJSISmCNXII&amp;hl=it_IT&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pJSISmCNXII&amp;hl=it_IT&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt; At a later time I etched an handmade arduino shield. Like the first prototype it's based on &lt;a href="http://en.wikipedia.org/wiki/2N2222"&gt;2N2222&lt;/a&gt; transistors, but this time I added a vactrol for digital pitch control!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/SwwKwV4uXJI/AAAAAAAAADo/SdGRQQTnNmo/pcb_back.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh4.ggpht.com/_ATrQjMBhX9g/SwwKwV4uXJI/AAAAAAAAADo/SdGRQQTnNmo/pcb_back.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/46JoIRHLbUc&amp;hl=it_IT&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/46JoIRHLbUc&amp;hl=it_IT&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/SwwKw1AolvI/AAAAAAAAADw/6E8Qe3_IBro/shield.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh4.ggpht.com/_ATrQjMBhX9g/SwwKw1AolvI/AAAAAAAAADw/6E8Qe3_IBro/shield.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Some day ago I tried again to bend it, and this time I was lucky! I was able to add two more noisy knobs and now it's perfect for lofi techno amateurs!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5Kn-H9vcDt8&amp;hl=it_IT&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5Kn-H9vcDt8&amp;hl=it_IT&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;I don't have a schematic of the board, but it's a really simple circuit based on &lt;a href="http://www.mayothi.com/transistors.html"&gt;trasistor switches&lt;/a&gt;.&lt;br /&gt;For those interested in software, I used the &lt;a href="http://at.or.at/hans/pd/objects.html#pduino"&gt;Pduino Object + Firmata Firmware&lt;/a&gt; and there's my &lt;a href="http://www.mediafire.com/?mm2gnbntmmn"&gt;patch!&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/SwwKwqBCu_I/AAAAAAAAADs/TLMj82b0UVg/pdpatch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/SwwKwqBCu_I/AAAAAAAAADs/TLMj82b0UVg/pdpatch.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-2492050855284752865?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/2492050855284752865/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2009/11/dragga-machine.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/2492050855284752865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/2492050855284752865'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2009/11/dragga-machine.html' title='Dragga Machine'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ATrQjMBhX9g/SwwKwP9VSEI/AAAAAAAAADk/5TZ_3pU6Awc/s72-c/bontempi_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5969446635761530481.post-1329651403951776259</id><published>2009-11-22T13:41:00.002+01:00</published><updated>2010-05-31T10:09:37.853+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduinome'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='multiplexing'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='monome'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='pd'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><category scheme='http://www.blogger.com/atom/ns#' term='physical computing'/><title type='text'>Arduinome x16adc mod</title><content type='html'>&lt;span style="font-family: arial; font-size: 100%;"&gt;Some times ago I hacked my &lt;a href="http://en.wikipedia.org/wiki/Arduinome"&gt;arduinome&lt;/a&gt; to add 16 potentiometers to it.&lt;br /&gt;I writed about it only on &lt;a href="http://monome.org/"&gt;monome&lt;/a&gt;'s &lt;a href="http://post.monome.org/comments.php?DiscussionID=4888&amp;amp;page=1#Item_0"&gt;forum&lt;/a&gt; but I think it can be a good subject for my first article on this blog.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_ATrQjMBhX9g/Swa6vD4Ci7I/AAAAAAAAACE/BPPFA7fTXYo/arduinome_shield.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://lh5.ggpht.com/_ATrQjMBhX9g/Swa6vD4Ci7I/AAAAAAAAACE/BPPFA7fTXYo/arduinome_shield.png" style="cursor: pointer; float: right; height: 239px; margin: 0pt 0pt 10px 10px; width: 344px;" /&gt;&lt;/a&gt;&lt;br /&gt;Basically, it's a good way to fill &lt;a href="http://www.arduino.cc/"&gt;arduino&lt;/a&gt;'s free analog input pins. They should be free if, like me, you are playing with an &lt;a href="http://unsped.blogspot.com/"&gt;unsped&lt;/a&gt; shield.&lt;br /&gt;&lt;br /&gt;Arduinomes works on three levels:&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;li&gt;&lt;b&gt;Hardware&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Firmware&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Software&lt;/b&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;b&gt;&lt;/b&gt;we must touch all these levels to add our potentiometers.&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;br /&gt;&lt;b&gt;Hardware&lt;/b&gt;&lt;br /&gt;An arduino board has 6 analog input pins, but we can add more inputs with &lt;a href="http://en.wikipedia.org/wiki/Multiplexer"&gt;multiplexing&lt;/a&gt;.&lt;br /&gt;I choosed &lt;a href="http://www.alldatasheet.com/datasheet-pdf/pdf/157678/TI/CD4067B.html"&gt;cd4067&lt;/a&gt; multiplexer, it's an analog multiplexer 100% arduino compatible.&lt;br /&gt;Luckily I found some free information about how to use it, "&lt;a href="http://itp.nyu.edu/physcomp/Tutorials/Multiplexer"&gt;Introduction to Physical Computing&lt;/a&gt;" was very usefull.&lt;br /&gt;I developed a simple circuit to add it to your arduinome, here is the schematic:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_ATrQjMBhX9g/SwaubCepYlI/AAAAAAAAACA/VyVCNDaLyvw/s640/x16adc_schem.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://lh4.ggpht.com/_ATrQjMBhX9g/SwaubCepYlI/AAAAAAAAACA/VyVCNDaLyvw/s640/x16adc_schem.png" style="cursor: pointer; display: block; height: 549px; margin: 0px auto 10px; text-align: center; width: 640px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see I used analog pins to drive cd4067, actually only ANALOG_0 is an analog input, others choose multiplexer's channel only, so they act like digital output pin. You can use every arduino's digital pin to do it, but I found them comfortable.&lt;br /&gt;&lt;i&gt;C2&lt;/i&gt; (I know, it shoul be &lt;i&gt;C1&lt;/i&gt;) is there for supply decoupling.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Firmware&lt;/b&gt;&lt;br /&gt;Obviously I had to change arduinome's firmware. &lt;i&gt;Arduinome firmware&lt;/i&gt; is part of an open source project, the original version can be found on &lt;a href="http://sourceforge.net/projects/arduinome/"&gt;sourceforge&lt;/a&gt;. The pde file with my modifications can be downloaded through monome's &lt;a href="http://post.monome.org/comments.php?DiscussionID=4888&amp;amp;page=1#Item_0"&gt;forum&lt;/a&gt;, it's in the &lt;i&gt;x16adc_code.zip&lt;/i&gt; archive.&lt;br /&gt;I will not write here all modifications I wrote, I will discuss most important modifications only.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.&lt;/b&gt; I added to arduinome's firmware the same code of the tutorial linked above to handle cd4067 pins. These lines are crucial:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void cd4_setChannel(int cd4_whichChannel)&lt;br /&gt;{&lt;br /&gt;  for (int cd4_bitPosition = 0; cd4_bitPosition &amp;lt; 4; cd4_bitPosition++)&lt;br /&gt;  {&lt;br /&gt;    int cd4_bitValue = (cd4_whichChannel &amp;gt;&amp;gt; cd4_bitPosition) &amp;amp; 1;&lt;br /&gt;    int cd4_pinNumber = cd4_firstPin + cd4_bitPosition;&lt;br /&gt;    digitalWrite(cd4_pinNumber, cd4_bitValue);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;i&gt;cd4_whichChannel&lt;/i&gt; can be a number from 0 to 15, each value is shifted 4 times and masked. These 2 operations are needed to generate 16 different combinations of the 4 control pins. Read this &lt;a href="http://www.arduino.cc/playground/Code/BitMath"&gt;bit math&lt;/a&gt; tutorial if you don't know nothing about bit shifting and masking.&lt;br /&gt;The following table shoul clearify what the function do:&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/SwlcjQQEPWI/AAAAAAAAADE/3Z9jfjIVKho/shiftab.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://lh3.ggpht.com/_ATrQjMBhX9g/SwlcjQQEPWI/AAAAAAAAADE/3Z9jfjIVKho/shiftab.png" style="cursor: pointer; display: block; height: 249px; margin: 0px auto 10px; text-align: center; width: 619px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;Every value is shifted of 0 and masked, then is shifted of 1 and masked, and so on, until 3. The last four columns represents the pin states of the 4 control pins in the 16 calls, as you can see every row is different from each other. This means that every call returns a different control pin pattern.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&lt;/b&gt; This was the most important modification:&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void sendADC(int port, int value)&lt;br /&gt;{&lt;br /&gt;  Serial.print((1 &amp;lt;&amp;lt; 4) | (port &amp;amp; 0xF), BYTE);&lt;br /&gt;  Serial.print(((value &amp;gt;&amp;gt; 2) &amp;amp; 0xFF), BYTE);&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;the original code was:&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void sendADC(int port, int value)&lt;br /&gt;{&lt;br /&gt;  Serial.print((1 &amp;lt;&amp;lt; 4) | ((port &amp;lt;&amp;lt; 2) &amp;amp; 0x0C) | ((value &amp;gt;&amp;gt; 8) &amp;amp; 0x03), BYTE);&lt;br /&gt;  Serial.print(value &amp;amp; 0xFF, BYTE);&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;This function sends ADC values to Arduinome Serial following monome's serial &lt;a href="http://docs.monome.org/doku.php?id=tech:protocol:40h"&gt;protocol&lt;/a&gt;.&lt;a href="http://lh3.ggpht.com/_ATrQjMBhX9g/SwgX7GdiwFI/AAAAAAAAACk/uiTG0VmDDNc/cd4067.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://lh3.ggpht.com/_ATrQjMBhX9g/SwgX7GdiwFI/AAAAAAAAACk/uiTG0VmDDNc/cd4067.png" style="cursor: pointer; float: left; height: 144px; margin: 0pt 10px 10px 0pt; width: 83px;" /&gt;&lt;/a&gt; As you can see on the link above, &lt;i&gt;adc_val&lt;/i&gt; stream has &lt;i&gt;"value"&lt;/i&gt; 10 bit long and &lt;i&gt;"port"&lt;/i&gt; only 2 bit long. This means that we can have 1024 different adc values, but only 4 ports. This is why monomes can handle 4 potentiometers only. A 10 bit resolution is a very good resolution, it's the same of arduino's analog digital converters, so this protocol passes down adc values at the maximum resolution. I had to sacrifice resolution to add more than 4 potentiometers, I taked 2 bits from &lt;i&gt;"value"&lt;/i&gt; and put it to &lt;i&gt;"port"&lt;/i&gt;, so now I have a 8 bit resolution for values and up to 16 ports.&lt;br /&gt;In my version of &lt;i&gt;sendADC "address"&lt;/i&gt; is the same, &lt;i&gt;"port"&lt;/i&gt; has 4 relevants bits &lt;i&gt;("&amp;amp; 0xF" means "&amp;amp; 1111")&lt;/i&gt; and there's no need to add the first 2 bits of &lt;i&gt;"value"&lt;/i&gt; to &lt;i&gt;"data0"&lt;/i&gt;.&lt;br /&gt;&lt;i&gt;"data1"&lt;/i&gt; contains the 8 bits of value, and all bits are relevant &lt;i&gt;("&amp;amp; 0xFF" means "&amp;amp; 11111111")&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.&lt;/b&gt; I'm not a C developer, I can't modify Arduinome Serial GUI to have 16 switch, so I had to bypass the &lt;i&gt;ADCEnableState&lt;/i&gt; control in Arduinome Firmware to always send ADC values.&lt;br /&gt;For that reason I've commented 610, 611, 617 lines.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Software&lt;/b&gt;&lt;br /&gt;Now that the protocol is different, it's necessary to change Arduinome Serial too.&lt;br /&gt;I can't "speak" C, but luckily modifications were easy to find. I had to change only 6 lines on 3 different files of the source code. You can download Arduinome serial souce and edit the files yourself or download my modified files from monomes's forum (Mac OS X only, look inside &lt;i&gt;x16adc_code.zip&lt;/i&gt;). In any way you have to compile the source.&lt;br /&gt;Here is all modified lines:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;message.c&lt;/b&gt; &lt;i&gt;lines: 28 to 32&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void messagePackAdcVal(t_message *message, uint8 port, uint8 val)&lt;br /&gt;{&lt;br /&gt;  message-&amp;amp;gt;data0 = (kMessageTypeAdcVal &amp;amp;lt;&amp;amp;lt; 4) | (port &amp;amp;amp; 0x0F);&lt;br /&gt;  message-&amp;amp;gt;data1 = (uint8)val;&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;b&gt;message.h&lt;/b&gt; &lt;i&gt;lines: 67, 68&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;#define messageGetAdcPort(message) ((message).data0 &amp;amp; 0xF)&lt;br /&gt;#define messageGetAdcVal(message) ((uint16)(message).data1)&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;line 89&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;void messagePackAdcVal(t_message *message, uint8 port, uint8 val);&lt;/pre&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;i&gt;(uint8 val was uint16 val)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ApplicationController.mm&lt;/b&gt; &lt;i&gt;line 193&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;handleAdcValueChangeEvent(device, messageGetAdcPort(*message), (float)(messageGetAdcVal(*message)) / (float)0xFF);&lt;/pre&gt;&lt;span style="font-family: arial; font-size: 100%;"&gt;&lt;i&gt;(was 0x3FF)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Basically there are the same "serial stream" modifications, but from the point of view of the reciver.&lt;br /&gt;I changed &lt;i&gt;uint16&lt;/i&gt; to &lt;i&gt;uint8&lt;/i&gt; because now &lt;i&gt;"value"&lt;/i&gt; has 8 bits only.&lt;br /&gt;Value's relevant bits are 8 and not 10, so I changed &lt;i&gt;0x3FF&lt;/i&gt; to &lt;i&gt;0xFF&lt;/i&gt;.&lt;br /&gt;&lt;b&gt;END!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now is time for a good picture of the finished product!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_ATrQjMBhX9g/SwgdIYfIcSI/AAAAAAAAACo/Sxh628yZbmk/s912/arduinome_off.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://lh6.ggpht.com/_ATrQjMBhX9g/SwgdIYfIcSI/AAAAAAAAACo/Sxh628yZbmk/s912/arduinome_off.png" style="cursor: pointer; display: block; height: 321px; margin: 0px auto 10px; text-align: center; width: 551px;" /&gt;&lt;/a&gt;&lt;br /&gt;The thing woks, but it's not perfect. It's an hack more than a mod, and some error can occur.&lt;br /&gt;I tried it with &lt;a href="http://www.puredata.org/"&gt;Pd&lt;/a&gt; on Mac Os X only, and sometimes values seems to flicker. I don't know why, maybe Pd serial communication is slow? I think so because if I only watch values on the console monitor without playing there's no flickering. I can't be sure about it because I need testers! If you are interested, you can download my Pd patch to try the mod &lt;a href="http://www.mediafire.com/?jm4gi2degm2"&gt;here&lt;/a&gt;.&lt;br /&gt;It's a 8 step sequencer with filter and sample rate control.&lt;br /&gt;If you don't have modded your arduinome you can play with the original version of this patch, it's called &lt;a href="http://www.mediafire.com/?xomyiyntyjd"&gt;stePd&lt;/a&gt; and is free.&lt;br /&gt;&lt;br /&gt;This is the maximum I was able to do, I think it can be better, so it would be nice if someone would try to build and refine it.&lt;br /&gt;If you like potentiometers and arduinomes, drop me a line!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5969446635761530481-1329651403951776259?l=elettrofonesi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elettrofonesi.blogspot.com/feeds/1329651403951776259/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://elettrofonesi.blogspot.com/2009/11/arduinome-x16adc-mod.html#comment-form' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1329651403951776259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5969446635761530481/posts/default/1329651403951776259'/><link rel='alternate' type='text/html' href='http://elettrofonesi.blogspot.com/2009/11/arduinome-x16adc-mod.html' title='Arduinome x16adc mod'/><author><name>aggaz</name><uri>http://www.blogger.com/profile/08227020889158590387</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ATrQjMBhX9g/Sw_NwRc24XI/AAAAAAAAAIE/o4RoxchayKM/S220/ascii64.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_ATrQjMBhX9g/Swa6vD4Ci7I/AAAAAAAAACE/BPPFA7fTXYo/s72-c/arduinome_shield.png' height='72' width='72'/><thr:total>3</thr:total></entry></feed>
