<?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-4908934190193877178</id><updated>2012-01-18T21:05:50.601Z</updated><category term='puredata'/><category term='csound'/><category term='streaming'/><category term='índices'/><category term='MIDI'/><category term='netescopio'/><category term='python'/><category term='gnu/linux'/><category term='vídeo'/><category term='oggro'/><title type='text'>El Oggro</title><subtitle type='html'>"No toda es vigilia la de los ojos abiertos" Macedonio</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>98</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8504662169090869899</id><published>2009-03-18T12:01:00.002Z</published><updated>2009-03-18T12:03:37.650Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Programming Electronic Music in Pd</title><content type='html'>&lt;div style="text-align: justify;"&gt; &lt;span style="font-style: italic;"&gt;Tutorial designed for self-study, principally for composers.      It begins with explanations of basic programming and acoustic      principles then gradually builds up to the most advanced      electronic music processing techniques. The book’s teaching approach      is focused primarily on hearing, which we consider a faster and      more enjoyable way to absorb new concepts than through abstract      formulas.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Por ahora sólo en inglés &lt;a href="http://www.pd-tutorial.com/english/index.html"&gt;puedes leerlo online aquí.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8504662169090869899?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8504662169090869899/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8504662169090869899' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8504662169090869899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8504662169090869899'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2009/03/programming-electronic-music-in-pd.html' title='Programming Electronic Music in Pd'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3315378147607283194</id><published>2008-11-02T18:19:00.006Z</published><updated>2009-03-18T12:00:48.992Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>LinuxAV</title><content type='html'>Desde &lt;a href="http://linuxav.blogspot.com/"&gt;linuxAV&lt;/a&gt;, enlazo a tres entradas interesantes para el videoaudiolinuxeo y otros vicios:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://linuxav.blogspot.com/2008/10/dispositivos-alsa-default-hw-plughw.html"&gt;Dispositivos ALSA; default, hw, plughw&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linuxav.blogspot.com/2008/10/19-comandos-ffmpeg-para-todos.html"&gt;19 comandos ffmpeg para todos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linuxav.net/2009/03/la-salida-digital-de-audio-en-linux/"&gt;La salida digital de audio en Linux&lt;/a&gt;&lt;br /&gt;&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/4908934190193877178-3315378147607283194?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3315378147607283194/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3315378147607283194' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3315378147607283194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3315378147607283194'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2008/11/linuxav.html' title='LinuxAV'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2386079310534263344</id><published>2008-09-19T20:06:00.004+01:00</published><updated>2008-09-19T20:20:16.091+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnu/linux'/><title type='text'>Linux en punto</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/SNP4-hReA7I/AAAAAAAAAL4/crmlpp44JTY/s1600-h/relojusb.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/SNP4-hReA7I/AAAAAAAAAL4/crmlpp44JTY/s320/relojusb.jpg" alt="" id="BLOGGER_PHOTO_ID_5247811743783977906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aprovechando el tener un reloj con memoria USB, me he animado a probar distros de linux. Su capacidad de 120Mb no da para mucho, aunque suficiente para la versión usb de Gparted&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gparted.sourceforge.net/liveusb.php"&gt;http://gparted.sourceforge.net/liveusb.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Siguiendo las instrucciones dictadas en dicha página, he podido instalar esa minidistro en el reloj. El único paso delicado como bien indica la guía, es&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;cat /usr/lib/syslinux/mbr.bin &gt; /dev/&lt;span style="color: rgb(255, 0, 0);"&gt;sdb&lt;/span&gt;&lt;/blockquote&gt;en el que se hace un volcado directo sobre una unidad montada (en mi caso fue sda).  Ya sabes: &lt;span style="font-style: italic;"&gt;there is no warranty for this free software. &lt;/span&gt;Como paso previo a dicha instalación, formateé la unidad (el reloj)  a FAT32 y marqué la etiqueta de arranque (boot).&lt;br /&gt;&lt;br /&gt;Mañana que me toca instalar gnu/linux en un equipo intentaré particionar el disco a la hora del té. A ver si la persona interesada capta la indirecta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2386079310534263344?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2386079310534263344/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2386079310534263344' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2386079310534263344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2386079310534263344'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2008/09/linux-en-punto.html' title='Linux en punto'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/SNP4-hReA7I/AAAAAAAAAL4/crmlpp44JTY/s72-c/relojusb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-836180784363326186</id><published>2008-06-15T22:01:00.006+01:00</published><updated>2008-07-26T08:57:09.906+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Pure:dyne miso</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/SFWFRIvcqyI/AAAAAAAAALw/iadFy-jyWEY/s1600-h/Pantallazo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/SFWFRIvcqyI/AAAAAAAAALw/iadFy-jyWEY/s320/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5212218673201982242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pure:dyne, distribución de GNU/Linux creada para artistas multimedia, publica nueva versión. En realidad es más que un cambio de versión, ya que se podría decir que es un nuevo pure:dyne. A partir de ahora se basará en debian, aunque sigue siendo un cd-live sin opción a instalación.&lt;br /&gt;&lt;br /&gt;La nueva página del proyecto se encuentra &lt;a href="https://devel.goto10.org/puredyne"&gt;aquí.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edición 26 ju&lt;/span&gt;l:   Creada la página que explica cómo tunear una debian lenny instalada para &lt;a href="http://devel.goto10.org/puredyne/wiki/DocInstallSystem"&gt;convertirla en pure:dyne&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://devel.goto10.org/puredyne"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-836180784363326186?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/836180784363326186/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=836180784363326186' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/836180784363326186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/836180784363326186'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2008/06/puredyne-miso.html' title='Pure:dyne miso'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZIIUDghgB4E/SFWFRIvcqyI/AAAAAAAAALw/iadFy-jyWEY/s72-c/Pantallazo.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8839496340144490052</id><published>2008-05-21T23:40:00.005+01:00</published><updated>2008-05-21T23:55:31.076+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Noticias de vuelta, processing y lily</title><content type='html'>Hola de nuevo. Vuelvo para no volver...&lt;br /&gt;&lt;br /&gt;Varias web en relación a noticias más o menos recientes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Processing sin Java&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;pero...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para quien no lo conozca, processing es un lenguaje y un entorno de código abierto para programar gráficos interactivos. Está diseñado por y para artistas multimedia. Para más información visita:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://processing.org/"&gt;http://processing.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Un vídeo vale más que una imágen:&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="302"&gt;    &lt;param name="allowfullscreen" value="true"&gt;    &lt;param name="allowscriptaccess" value="always"&gt;    &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1031578&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;    &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1031578&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1031578?pg=embed&amp;amp;sec=1031578"&gt;learn2code - lesson 1 - getting started&lt;/a&gt; from &lt;a href="http://www.vimeo.com/learn2code?pg=embed&amp;amp;sec=1031578"&gt;Dan Chudnov&lt;/a&gt; on &lt;a href="http://vimeo.com/?pg=embed&amp;amp;sec=1031578"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://onebiglibrary.net/learn2code/lesson-01-getting-started"&gt;http://onebiglibrary.net/learn2code/lesson-01-getting-started&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Processing goza de buena salud. Si quisieras usarlo debes tener instalada la java-run-time en tu máquina, paquete sun-java6-jre en tu distro favorita.&lt;br /&gt;&lt;br /&gt;Pues la noticia tiene que ver con esto justamente. John Resig, ha portado el grueso de rutinas java, a javascript, por lo que sería posible escribir y "hablar" processing desde el navegador (recomendado forzoso, Firefox 3). En su web:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ejohn.org/blog/processingjs/"&gt;http://ejohn.org/blog/processingjs/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;encontrarás un montón de ejemplos. Javascript is for artist&lt;br /&gt;&lt;br /&gt;También hay una buena introducción a processing, en esta web:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://go.yuri.at/p5/tutorial/"&gt;http://go.yuri.at/p5/tutorial/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Lily&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entre las jugosas posibilidades que trae Firefox 3, una sugerente es que hace posible correr este añadido, el cual implemente un lenguaje visual con cajitas, digamos modo-pd ( http://www.lilyapp.org/httpd.mov ), que permite crear aplicaciones complejas en el navegador. Entre las funcionalidades de dicho engendro, está la de usar el protocolo OSC para conectarse a programas que lo soporte, como pd.&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo, en el que unas pelotitas mandan su posición vía OSC al programa chuck que se encarga de darle sonido&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="407"&gt;    &lt;param name="allowfullscreen" value="true"&gt;    &lt;param name="allowscriptaccess" value="always"&gt;    &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=625739&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;    &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=625739&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="407"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/625739?pg=embed&amp;amp;sec=625739"&gt;SVG to OSC&lt;/a&gt; from &lt;a href="http://www.vimeo.com/billorcutt?pg=embed&amp;amp;sec=625739"&gt;Bill Orcutt&lt;/a&gt; on &lt;a href="http://vimeo.com/?pg=embed&amp;amp;sec=625739"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En la página de lily hay unos cuantos ejemplos. La verdadera utilidad de lily, está en tu mente. Apaga este cacharro y lily no sirve para nada&lt;br /&gt;&lt;br /&gt;Página del proyecto: &lt;a href="http://blog.lilyapp.org/lily/demo/"&gt;http://blog.lilyapp.org/lily/demo/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como curiosidad, lily interpretando la estructura de un archivo xml como gráficos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.lilyapp.org/images/google-sketch4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://blog.lilyapp.org/images/google-sketch4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8839496340144490052?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8839496340144490052/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8839496340144490052' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8839496340144490052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8839496340144490052'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2008/05/noticias-de-vuelta-processing-y-lily.html' title='Noticias de vuelta, processing y lily'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5213757253675071627</id><published>2008-01-31T14:22:00.000Z</published><updated>2008-01-31T15:06:48.246Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Reconstruyendo Documentación sobre PureData</title><content type='html'>Después del palo de lynksee estoy recreando la wiki de documentación sobre pure data en castellano en wikia:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.puredata.wikia.com/"&gt;http://es.puredata.wikia.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-5213757253675071627?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5213757253675071627/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5213757253675071627' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5213757253675071627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5213757253675071627'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2008/01/reconstruyendo-documentacin-sobre.html' title='Reconstruyendo Documentación sobre PureData'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6261993278076951100</id><published>2007-12-14T11:37:00.001Z</published><updated>2007-12-14T11:49:20.455Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>PureDataVideopedia</title><content type='html'>Alguien ha tenido la idea de crear un canal sobre PureData en youtube, para recopilar clasificados los vídeos que hemos ido subiendo. Pasado mi tiempo de &lt;span style="font-style: italic;"&gt;gran silencio&lt;/span&gt;, espero ir aportando más videos.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/profile_play_list?user=PureDataVideopedia"&gt;http://www.youtube.com/profile_play_list?user=PureDataVideopedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La ventaja es la gran difusión que tiene youtube, pero como inconveniente está la mala calidad de vídeo que ofrece este portal...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Habemus PDT (Pure Data TV)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;nota&lt;/span&gt;: no confundir con PDT: &lt;/span&gt;&lt;a style="font-style: italic;" href="http://puredata.lynksee.com/wiki/Puredata_para_Teletubbies"&gt;Pure Data para Teletubbies&lt;/a&gt;&lt;span style="font-style: italic;"&gt; (ahora en peligro de extinción)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;nota a la nota&lt;/span&gt;: PDT es un grito de guerra, intraducible a la mayor parte de otros idiomas, que viene a ser como a un imperativo a liberarse ;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6261993278076951100?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6261993278076951100/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6261993278076951100' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6261993278076951100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6261993278076951100'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/12/puredatavideopedia.html' title='PureDataVideopedia'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-132133980555517952</id><published>2007-11-21T16:21:00.000Z</published><updated>2007-11-21T17:21:52.146Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>Problema serio</title><content type='html'>A diferencia de la pdpedia.org que está a buen recaudo,  los textos que salieron de este blog y luego se ampliaron formando la wiki de &lt;a href="http://puredata.lynksee.com/wiki/Documentaci%C3%B3n_sobre_Pure_Data"&gt;documentación en castellano de puredata&lt;/a&gt;  corre un serio peligro.  He recibido un correo de lynksee, diciendo que cierran el lugar por problemas de money.  Estoy a la espera de respuesta sobre si podría tener copia de al menos, la base de datos de la wiki...y así evitar la copia apresurada y, a mano.&lt;br /&gt;&lt;br /&gt;lo gratis a veces se paga caro...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se admiten sugerencias&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EDITADO&lt;/span&gt;: podría llevar la wiki a otra parte.  Me siento netapátrida&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-132133980555517952?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/132133980555517952/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=132133980555517952' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/132133980555517952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/132133980555517952'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/11/problema-serio.html' title='Problema serio'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6621274548719593352</id><published>2007-11-02T20:46:00.000Z</published><updated>2007-11-02T20:53:02.787Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vídeo'/><title type='text'>kdenlive</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kdenlive.org/images/kdenlive-0_5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.kdenlive.org/images/kdenlive-0_5.png" alt="" border="0" /&gt;&lt;/a&gt;kdenlive es un editor no linear para vídeo muy sencillo,&lt;br /&gt;&lt;br /&gt;Para instalarlo sigue las instrucciones en su wiki:&lt;br /&gt;http://en.wikibooks.org/wiki/Kdenlive/Getting_and_installing&lt;br /&gt;&lt;br /&gt;un ejemplo de la sencillez de uso (comparado con Cinelerra) lo verás aquí:&lt;br /&gt;&lt;br /&gt;http://kdenlive.org/tutorials/videos/transitions.ogg&lt;br /&gt;&lt;br /&gt;http://kdenlive.org/tutorials/videos/markers.ogg&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6621274548719593352?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6621274548719593352/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6621274548719593352' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6621274548719593352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6621274548719593352'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/11/kdenlive.html' title='kdenlive'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6816014939847449188</id><published>2007-10-02T20:01:00.000+01:00</published><updated>2007-10-02T20:08:17.459+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pdpedia en castellano da sus primeros pasos</title><content type='html'>La pdpedia ( &lt;a href="http://wiki.puredata.info/"&gt;http://wiki.puredata.info/&lt;/a&gt; ) ya tiene sección en castellano, así como en otros idiomas. Necesitamos colaboradores para ir documentando los cientos de clases/objetos que constituye el entorno pd. Si estás interesad@ avisa, o bien contacta con la lista de usuarios.&lt;br /&gt;&lt;br /&gt;Por ahora se tomará de referencia la versión en inglés, por lo que la labor será principalmente de traducción.&lt;br /&gt;&lt;br /&gt;La página de la sección en castellano es: http://wiki.puredata.info/es/Portada&lt;br /&gt;&lt;br /&gt;Por otra parte, &lt;a href="http://puredata.lynksee.com/wiki/Portada"&gt;nuestra wiki&lt;/a&gt;, se limitará ahora a proyectos de traducción (si es que alguien se anima :) ) así como recopilar tutoriales, manuales, y en general domumentación en castellano sobre pd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6816014939847449188?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6816014939847449188/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6816014939847449188' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6816014939847449188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6816014939847449188'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/10/pdpedia-en-castellano-da-sus-primeros.html' title='Pdpedia en castellano da sus primeros pasos'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6395668459701391770</id><published>2007-09-17T09:37:00.000+01:00</published><updated>2007-09-17T09:41:09.233+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>[polywavesynth]</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.pkstonemusic.com/images/polywavesynth.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.pkstonemusic.com/images/polywavesynth.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Together, these two objects make up a ready-to-use,   CPU-cycle-stingy, OSC-addressable polyphonic "wave" synthesizer --   the tag "wave" is used for want   of a better (short) descriptor for the somewhat unusual mix of   synth technologies employed, which is table-driven subtractive synthesis with a   dash of FM.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pkstonemusic.com/polyWaveSynth.html"&gt;http://www.pkstonemusic.com/polyWaveSynth.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6395668459701391770?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6395668459701391770/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6395668459701391770' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6395668459701391770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6395668459701391770'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/09/polywavesynth.html' title='[polywavesynth]'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8826250336122872875</id><published>2007-09-12T10:24:00.000+01:00</published><updated>2007-09-12T10:26:35.896+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pdpedia</title><content type='html'>Se esta comenzando con el proyecto pdpedia, un intento de unificar la documentación del incontable grupo de clases, externals y abstracciones que hay ya para pd.&lt;br /&gt;&lt;br /&gt;http://pdpedia.at.or.at/test/index.php/Main_Page&lt;br /&gt;&lt;br /&gt;Esperemos que siga adelante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8826250336122872875?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8826250336122872875/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8826250336122872875' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8826250336122872875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8826250336122872875'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/09/pdpedia.html' title='Pdpedia'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2402750469552345486</id><published>2007-08-22T12:55:00.000+01:00</published><updated>2007-08-22T12:56:53.081+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: tutorial tablas de datos</title><content type='html'>Se ha añadido a la wiki un tutorial de tablas de datos. Aun está en construcción:&lt;br /&gt;&lt;a href="http://puredata.lynksee.com/wiki/Documentaci%C3%B3n_sobre_Pure_Data"&gt;http://puredata.lynksee.com/wiki/Documentaci%C3%B3n_sobre_Pure_Data&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como siempre, cualquier colaboración es bien recibida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2402750469552345486?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2402750469552345486/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2402750469552345486' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2402750469552345486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2402750469552345486'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/08/pd-tutorial-tablas-de-datos.html' title='Pd: tutorial tablas de datos'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8973628762644726521</id><published>2007-07-05T12:42:00.000+01:00</published><updated>2007-07-05T12:45:31.407+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Soundsnap</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.soundsnap.com/themes/ojoo/ojoo-logo.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.soundsnap.com/themes/ojoo/ojoo-logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;banco social de sonidos&lt;br /&gt;&lt;a href="http://www.soundsnap.com/"&gt;http://www.soundsnap.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8973628762644726521?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8973628762644726521/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8973628762644726521' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8973628762644726521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8973628762644726521'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/07/soundsnap.html' title='Soundsnap'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-142299371041179549</id><published>2007-07-03T18:35:00.000+01:00</published><updated>2007-07-03T23:50:25.335+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Probando reacTIVision en Ubuntu</title><content type='html'>Para quien no lo conozca reacTIVisión es un software de visión artificial, que permite mediante unas figuras llamadas amebas (gráficos fiduciales) , captándolas con una cámara, controlar otros softwares vía OSC.&lt;br /&gt;&lt;br /&gt;http://mtg.upf.edu/reactable/?software&lt;br /&gt;&lt;br /&gt;Es el corazón del funcionamiento del famoso instrumento Reactable, desarrollado en la Pompeu Fabra. El autor se merece un premio!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0h-RhyopUmc"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0h-RhyopUmc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La prueba realizada se ha hecho con una webcam conceptronic [30 fps (352x288) / 15 fps (640x480)], y ubuntu feisty.  Reactivisión se comunicará con Puredata.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Preparación:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-Tener instalada la webcam y funcionando ;)&lt;br /&gt;- Tener Pure Data instalado y funcionando&lt;br /&gt;- La tabla de amebas con divertidos recortables&lt;br /&gt;&lt;br /&gt;Bajamos el deb para ubuntu desde la web:&lt;br /&gt;&lt;br /&gt;http://mtg.upf.edu/reactable/?software&lt;br /&gt;&lt;br /&gt;Usamos la manera convencional de instalación.&lt;br /&gt;&lt;br /&gt;a) En ubuntu haciendo doble-click sobre el paquete.&lt;br /&gt;b) escribiendo en un terminal: &lt;span style="font-style: italic;"&gt;sudo dpkg -i nombredelpaquete.deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bajamos el external para puredata desde la misma web:&lt;br /&gt;&lt;br /&gt;http://prdownloads.sourceforge.net/reactivision/TUIO_PureData-1.3.zip?download&lt;br /&gt;&lt;br /&gt;Descomprimimos (unzip nombredelarchivo.zip) , y dentro hay un archivo llamado source.zip. Lo descomprimimos, entramos en la carpeta source reciencreada, y make.&lt;br /&gt;&lt;br /&gt;Se creará el archivo TuioCliente.pd_linux. Lo copiamos a la carpeta pd/extra. NOTA: esto depende si tienes pd desde los repositorios, entonces la carpeta será /usr/lib/pd/extra, o bien pd-extended, en tal caso deberá ser a /usr/local/lib/pd/extra.&lt;br /&gt;&lt;br /&gt;Amebas&lt;br /&gt;&lt;br /&gt;Baja el archivo pdf de amebas o figuras fiduciales, e imprime alguna hoja. &lt;br /&gt;&lt;br /&gt;http://mtg.upf.edu/reactable/pdfs/fiducials.pdf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejecución&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Desde un terminal lanzas reacTIVision y comenzará a capturar lo que aparezcan en la webcam.  En la carpeta TUIO_puredata que bajamos y descomprimimos previamente, hay un ejemplo sencillo de uso:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RoqQS8Ta4ZI/AAAAAAAAAIs/xnX6RZj9VLQ/s1600-h/puretuio0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RoqQS8Ta4ZI/AAAAAAAAAIs/xnX6RZj9VLQ/s320/puretuio0.png" alt="" id="BLOGGER_PHOTO_ID_5083033784540651922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;reacTIVision se conecta con puredata via OSC, el protocolo TUIO son un conjunto de reglas de interpretación de los mensajes. El objeto [TuioClient] hace el trabajo sucio, generando mensajes como qué ameba se activa (en el pdf observa que cada una tiene un número), en qué posición de la pantalla está, y con qué ángulo. Como se puede ver en la figura anterior, se escalan los valores ancho y alto a 640x480, y se transforma el valor del ángulo a grados.&lt;br /&gt;&lt;br /&gt;Recortando alguna ameba, puedes probar en la consola de pd, que se dectecta la presencia de cada una de ellas, y también cuando sale del campo de visión.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RoqRi8Ta4aI/AAAAAAAAAI0/gnctqqeonW8/s1600-h/puretuio1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RoqRi8Ta4aI/AAAAAAAAAI0/gnctqqeonW8/s320/puretuio1.png" alt="" id="BLOGGER_PHOTO_ID_5083035158930186658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para hacer una prueba rápida, conociendo un poco la dinámica de pd, es fácil asociar la variable de giro a la frecuencia de un oscilador sinusoidal. Mientras que el mensaje de presencia o ausencia, encenderá o apagará dicho oscilador. Para ello podemos tomar el ejemplo ya hecho y añadirle un par de cosas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RoqR-cTa4bI/AAAAAAAAAI8/SNaQC6FZems/s1600-h/puretuio0-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RoqR-cTa4bI/AAAAAAAAAI8/SNaQC6FZems/s320/puretuio0-1.png" alt="" id="BLOGGER_PHOTO_ID_5083035631376589234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Al aparecer una ameba, el anterior patch no distingue de cuál se trata, si aparece una cualquiera se envía el mensaje 1 a "activo", si desaparece se envía 0. Ese valor encenderá o apagará la señal con [r activo]. El valor de grado es interpretado como frecuencia del oscilador. Es un test muy simple&lt;br /&gt;&lt;br /&gt;(añadido y ampliado en: &lt;a href="http://puredata.lynksee.com/wiki/Documentaci%C3%B3n_sobre_Pure_Data"&gt;Documentación sobre Pure Data&lt;/a&gt; )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-142299371041179549?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/142299371041179549/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=142299371041179549' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/142299371041179549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/142299371041179549'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/07/probando-reactivision-en-ubuntu.html' title='Probando reacTIVision en Ubuntu'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/RoqQS8Ta4ZI/AAAAAAAAAIs/xnX6RZj9VLQ/s72-c/puretuio0.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4594734087330651469</id><published>2007-06-19T22:45:00.000+01:00</published><updated>2007-06-19T22:49:54.099+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pure Data para Teletubbies</title><content type='html'>&lt;a href="http://puredata.lynksee.com/wiki/Puredata_para_Teletubbies"&gt;PDT&lt;/a&gt; (o Pure data para Teletubbies) es un tutorial pensado como toma de contacto con PD.&lt;br /&gt;&lt;br /&gt;Sucesivamente iremos añadiendo más documentación, que podrás consultar &lt;a href="http://puredata.lynksee.com/wiki/Documentaci%C3%B3n_sobre_Pure_Data"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-4594734087330651469?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4594734087330651469/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4594734087330651469' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4594734087330651469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4594734087330651469'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/pure-data-para-teletubbies.html' title='Pure Data para Teletubbies'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4328476429361375715</id><published>2007-06-17T23:21:00.001+01:00</published><updated>2009-01-08T11:27:40.348Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnu/linux'/><title type='text'>pure:dyne  instalación docking</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(INFORMACIÓN DESACTUALIZADA. La nueva puredyne tiene diferentes modos de instalación--&gt;  &lt;a href="http://code.goto10.org/projects/puredyne/wiki/PureInstall"&gt;http://code.goto10.org/projects/puredyne/wiki/PureInstall &lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Instrucciones para instalar fácilmente pure:dyne en un partición linux que tengas. En mi caso la instalaré en la partición hda1 donde tengo debian etch.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Bajamos la versión de pure:dyne que prefieras de&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(192, 192, 192);" href="http://puredyne.re-draw.org/"&gt;http://puredyne.re-draw.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;He probado con la testing, hoy a 17 de junio de 2007. Bajamos la imagen iso.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Creamos un directorio temporal para montar la imagen&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;mkdir /tmp/dyneiso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;y montamos la imagen&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;mount -o loop /donde/esté/puredyne.iso /tmp/dyneiso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Copiamos la carpeta /dyne de la imagen de cd al directorio raiz de nuestra partición.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;cp -rv /tmp/dyneiso/dyne /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Lo único que hay que hacer ahora es que grub sepa arrancar desde ahí, en la carpeta /dyne. editamos el menu de arranque de grub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;gedit /boot/grub/menu.lst&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;En el lugar adecuado añadimos el nuevo arranque&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;title Pure:dyne!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;root (hd0,0) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;kernel /dyne/linux root=/dev/ram0 rw load_ramdisk=1 max_loop=128 vga=788 splash=verbose &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;initrd /dyne/initrd.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;(son 4 lineas, title, root, kernel e initrd)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Sobre (hd0,0) debe apuntar a la partición donde copiaste el directorio dyne. (hd0,0) es hda1, (hd0,1) es hda2, ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;Ahora sólo habría que arrancar y seleccionar Pure:dyne!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;En el escritorio te saldrá una ventana de configuración. Si vas a la pestaña 'Getting started' y luego el botón 'Config and nest' verás un panel de control.  Importante para configurar idioma de mapa de teclado, tarjeta de sonido etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(192, 192, 192);"&gt;MODULOS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;pure:dyne tiene un sistema especial de paquetes o módulos. En la dirección que dí más arriba puedes ver una carpeta llamada modules. Los módulos están instalados en  la  donde copiaste /dyne subdirectorio /modules.  Puedes bajar desde la web los módulos que quieras y añadirlos a ese directorio. Al arrancar p:d lo tendrás instalado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;&lt;span&gt;Por ejemplo, bajando los módulos csound.dyne y processing.dyne y colocándolos en esa carpeta, tendrás los dos programas instalados en el siguiente reinicio.&lt;/span&gt;&lt;/span&gt;&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/4908934190193877178-4328476429361375715?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4328476429361375715/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4328476429361375715' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4328476429361375715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4328476429361375715'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/puredyne-instalacin-docking.html' title='pure:dyne  instalación docking'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1787697503860884438</id><published>2007-06-14T09:07:00.000+01:00</published><updated>2007-06-14T09:10:57.872+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>PureData-ES  traducción de textos</title><content type='html'>Desde &lt;a href="http://puredata.awardspace.com/"&gt;puredata-es&lt;/a&gt;  estamos llevando a cabo la traducción de algunos textos, por ahora introductorios a Pure Data. Se usa una wiki:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://puredata.lynksee.com/wiki/Main_Page"&gt;http://puredata.lynksee.com/wiki/Main_Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si estás interesad@ en colaborar, deja una mensaje aquí, o en el foro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-1787697503860884438?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1787697503860884438/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1787697503860884438' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1787697503860884438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1787697503860884438'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/puredata-es-traduccin-de-textos.html' title='PureData-ES  traducción de textos'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-172955508631662783</id><published>2007-06-11T18:08:00.000+01:00</published><updated>2007-06-11T20:29:35.533+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python--pd via OSC</title><content type='html'>Para conectar pd con el lenguaje python vía OSC usaremos la librería&lt;br /&gt;&lt;br /&gt;http://www.ixi-software.net/content/download/simpleosc0.2.zip&lt;br /&gt;&lt;br /&gt;puedes hacer desde un terminal&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;wget http://www.ixi-software.net/content/download/simpleosc0.2.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unzip simpleosc0.2.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cd simpleosc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahí encontrarás un patch ejemplo, así como un ejemplo en lenguaje python.&lt;br /&gt;&lt;br /&gt;Puedes copiar la librería (la carpeta osc) a:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/usr/local/lib/python&lt;/span&gt;&lt;span style="color: rgb(204, 102, 0); font-style: italic;"&gt;(versión-que-tengas)&lt;/span&gt;&lt;span style="font-style: italic;"&gt;/site-packages/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enviar mensajes a pd desde python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En el intérprete escribe:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;import osc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;osc.init()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El envío de mensajes es algo así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;osc.sendMsg("/hola",[1,2,'jojo',45],"localhost",9000)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;si tienes activo el patch ejemplo de pd, verás como imprime: /hola 1 2 jojo 45&lt;br /&gt;&lt;br /&gt;Si quieres enviar un paquete o fajo (bundle) de mensajes, creamos uno:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;mipaquete = osc.createBundle()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y ahora podemos ir añadiendo mensajes a mipaquete&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;osc.appendToBundle(mipaquete, "/test", [1, 2, 3]) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;osc.appendToBundle(mipaquete, "/test", [4, 5, 6])&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;cuando tengas el fajo lleno puedes enviarlo de un golpe con&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;osc.sendBundle(mipaquete,"localhost",9000)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Recibir mensajes desde pd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(en construcción)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-172955508631662783?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/172955508631662783/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=172955508631662783' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/172955508631662783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/172955508631662783'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/python-pd-via-osc.html' title='python--pd via OSC'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-418207311369000708</id><published>2007-06-07T22:53:00.000+01:00</published><updated>2007-06-08T22:41:27.750+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csound'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>csound &lt;--&gt; pd  vía OSC</title><content type='html'>Vamos a ver cómo conectar csound y pure data vía osc&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) Enviar datos desde csound a pd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Podemos construir un sencillo patch de ejemplo como este:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RmnLiMcWA2I/AAAAAAAAAIQ/eyTpUy64Yfg/s1600-h/osc0-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RmnLiMcWA2I/AAAAAAAAAIQ/eyTpUy64Yfg/s320/osc0-4.png" alt="" id="BLOGGER_PHOTO_ID_5073810243525673826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;usa los objetos del external oscx. En csound, suponiendo que funciona bien sólo necesitas un archivo csd como este:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;CsoundSynthesizer&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&amp;lt;CsOptions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&amp;lt;/CsOptions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;; ==============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;CsInstruments&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;sr      =       44100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;kr      =       44100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ksmps   =       1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;nchnls =       2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;instr 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;OSCsend     1, "localhost",9999, "/foo", "ff", p4,p5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;endin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/CsInstruments&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;; ==============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;CsScore&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;f0 300&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;i1 2 -1 60 100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;i1 + -1 67 100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;i1 + -1 63 40&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;e&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/CsScore&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/CsoundSynthesizer&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La clave es la línea:&lt;br /&gt;&lt;br /&gt;OSCsend     1, "localhost",9999, "/foo", "ff", p4,p5&lt;br /&gt;&lt;br /&gt;que lleva estos parámetros de entrada&lt;br /&gt;&lt;br /&gt;1 --- el mensaje se enviará cada vez que se active el instrumento&lt;br /&gt;"localhost" --- la dirección es la red local, podría ser otra&lt;br /&gt;9999 --- puerto que se usará&lt;br /&gt;"/foo" --- punto de acceso&lt;br /&gt;"ff" --- en este caso se enviarán 2 datos float (*)&lt;br /&gt;p4 y p5 --- datos enviados, en este caso leídos de la partitura&lt;br /&gt;&lt;br /&gt;(*) El tipo de mensajes se indican con una cadena cuyos caracteres son algunos de entre "bcdfilmst", que son las iniciales de: Boolean, character, double, float, 32-bit integer, 64-bit integer, MIDI, string y timestamp. Por ejemplo "sif" significa que se enviarán una cadena, un entero y un número float.&lt;br /&gt;&lt;br /&gt;Ejecutando este csd veremos cómo puredata imprime los valores que hemos almacenado en la partitura de csound&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Recibir datos en csound desde pd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este caso es un poco más complicado, porque requiere más conocimientos sobre el lenguaje. Un sencillo patch que envía datos podría ser este&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RmnLOMcWA1I/AAAAAAAAAII/8ZcJQu4pvC0/s1600-h/osc0-5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RmnLOMcWA1I/AAAAAAAAAII/8ZcJQu4pvC0/s320/osc0-5.png" alt="" id="BLOGGER_PHOTO_ID_5073809899928290130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usa la dirección localhost:9999/frec donde enviaremos valores de frecuencia. "/frec" es arbitrario, puedes elegir el nombre que quieras.&lt;br /&gt;&lt;br /&gt;El código de csound que recibe datos podría ser algo como este:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;CsoundSynthesizer&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&amp;lt;CsOptions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&amp;lt;/CsOptions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;; ==============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;CsInstruments&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;sr = 44100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;kr = 44100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ksmps = 100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;nchnls = 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;gihandle OSCinit 9999&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;turnon 100&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;instr 100 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; kf1 init 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;nxtmsg:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; kk  OSClisten gihandle, "/frec", "f", kf1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; if (kk == 0) goto ex&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; event "i",1,0,-1,kf1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;     printk 0,kf1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; kgoto nxtmsg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ex:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;endin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;instr 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; k2 linseg 1,1,0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; a1 oscil 8000*k2,p4,1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; out a1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;endin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/CsInstruments&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;; ==============================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;CsScore&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;f1 0 1024 10 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;f0 360&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/CsScore&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/CsoundSynthesizer&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hay dos instrumentos, el que lee y el que toca, ya que he añadido un instrumento (1) que interpreta el valor que recibe por /frec como una frecuencia de un oscilador.&lt;br /&gt;&lt;br /&gt;La línea clave es:&lt;br /&gt;kk  OSClisten gihandle, "/frec", "f", kf1&lt;br /&gt;&lt;br /&gt;kk es cero excepto cuando se recibe un mensaje, por lo cual se ejecuta el código que está despues de if, que es justamente:&lt;br /&gt;&lt;br /&gt;event "i",1,0,-1,kf1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Línea que genera un evento de partitura, que lanza el instrumento 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El efecto será que tocaremos en pd y oiremos csound, no es más que eso :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-418207311369000708?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/418207311369000708/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=418207311369000708' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/418207311369000708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/418207311369000708'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/csound-pd-va-osc.html' title='csound &lt;--&gt; pd  vía OSC'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/RmnLiMcWA2I/AAAAAAAAAIQ/eyTpUy64Yfg/s72-c/osc0-4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7496245810902215080</id><published>2007-06-07T22:08:00.000+01:00</published><updated>2007-06-07T22:40:29.522+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: OSC con oscx</title><content type='html'>Para usar el protocolo OSC, se usará el external oscx que viene con puredata extended. Usar OSC en pd es muy sencillo. Igual que hacíamos con el streaming vía icecast, la base para entender qué ocurre al enviar y recibir datos vía OSC, es saber de donde y a donde enviamos. Generalmente abriremos una dirección en la red, vista por nosotros por la expresión&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;maquina:puerto/puntodemontaje&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;por ejemplo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;mimaquina.org:1000/aua&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Representa la dirección de la máquina mimaquina.org puerto 1000 y dirección de montaje - o puedes verlo como una carpeta- aua. Usando el protocolo OSC es posible enviar simultaneamente datos a distintos puntos /aua1 /otra /yotra. Veremos cómo. Podría haber una máquina remota a la que le enviamos datos, a un determinado puerto.&lt;br /&gt;&lt;br /&gt;En el siguiente patch se usa el objeto [sendOSC], el cual recibe el mensaje "connect localhost 9999". Lo que hace es conectarse al puerto 9999 de la redlocal, para que otros programas lean en ese mismo puerto, los datos que enviemos. "disconnect" es lo que parece.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rmh1K8cWAxI/AAAAAAAAAHo/DAlYD-t-Sv0/s1600-h/osc0-0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rmh1K8cWAxI/AAAAAAAAAHo/DAlYD-t-Sv0/s320/osc0-0.png" alt="" id="BLOGGER_PHOTO_ID_5073433811117015826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La forma de los mensajes siempre es "send" seguido del punto al que enviaremos datos. Siempre se escribe "/" seguido de un nombre. "/aua aaa 8 3" enviará los mensajes aaa 8 y 3. Atención a que pueden enviarse de una vez mensajes a varios puntos con el tercer mensaje que aparece.&lt;br /&gt;&lt;br /&gt;Para verlo funcionar, un caso trivial es que pd envie, y en nuestra propia máquina pd escucha. Abre entonces otro patch (control+n) y crea&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/Rmh1TMcWAyI/AAAAAAAAAHw/-C1HvNfU7BA/s1600-h/osc0-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/Rmh1TMcWAyI/AAAAAAAAAHw/-C1HvNfU7BA/s320/osc0-1.png" alt="" id="BLOGGER_PHOTO_ID_5073433952850936610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[dumpOSC 9999] escucha o lee lo que pase en el puerto indicado y lo envía por su salida. Si pulsamos sucesivamente los tres mensajes "send" del patch anterior, veremos en la consola de pd escrito:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print: /aua aaa 8 3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print: /frec 880&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print: /aua 5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;print: /frec 256&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Es así de simple, lo cual da una idea de que viene a ser un MIDI extendido adaptado al lenguaje de redes, y sobre todo más flexible permitiendo conectar de muchas maneras máquinas localmente o remotamente, y enviar datos&lt;br /&gt;en la estructura que decidamos.&lt;br /&gt;&lt;br /&gt;Exite un objeto del mismo external llamado [OSCroute] que es justamente similar a route pero para mensajes OSC. Si transformas el segundo patch creado por este, lo verás en funcionamiento&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/Rmh1ZscWAzI/AAAAAAAAAH4/SR4H4a4yiaQ/s1600-h/osc0-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/Rmh1ZscWAzI/AAAAAAAAAH4/SR4H4a4yiaQ/s320/osc0-2.png" alt="" id="BLOGGER_PHOTO_ID_5073434064520086322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&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/4908934190193877178-7496245810902215080?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7496245810902215080/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7496245810902215080' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7496245810902215080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7496245810902215080'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/pd-osc.html' title='Pd: OSC con oscx'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZIIUDghgB4E/Rmh1K8cWAxI/AAAAAAAAAHo/DAlYD-t-Sv0/s72-c/osc0-0.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-9120260428797998415</id><published>2007-06-07T13:03:00.000+01:00</published><updated>2007-06-07T13:05:59.782+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>KeyJnote. Presentaciones en PDF mejoradas</title><content type='html'>Instrucciones castellano&lt;br /&gt;http://ronroneos.com/keyjnote.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-9120260428797998415?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/9120260428797998415/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=9120260428797998415' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/9120260428797998415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/9120260428797998415'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/keyjnote-presentaciones-en-pdf.html' title='KeyJnote. Presentaciones en PDF mejoradas'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5751522132657559719</id><published>2007-06-04T18:13:00.000+01:00</published><updated>2007-06-04T18:17:16.290+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnu/linux'/><title type='text'>latex en castellano</title><content type='html'>&lt;span style="color: rgb(255, 153, 0);"&gt;El siguiente texto está tomado de este &lt;/span&gt;&lt;a style="color: rgb(51, 51, 255);" href="http://barrapunto.com/journal.pl?op=display&amp;uid=22&amp;amp;id=13833"&gt;enlace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Me he instalado Ubuntu en el portátil y, al ir a compilar un documento nuevo en LaTeX, me he encontrado con que cascaba nada más encontrarse con el primer acento o eñe. El motivo es que Ubuntu usa por defecto la codificación UTF-8 en el sistema y en todas las aplicaciones que lo soportan, incluido Vim, que es el editor que uso, por tanto hay que decirle a LaTeX que nuestros nuevos documentos están ahora codificados en UTF-8, y no en latin1 (con los viejos documentos que tuviésemos ya hechos en latin1 no hay problema alguno, no hay que hacer nada). ¿Cómo lo hacemos? Es sencillo, solo se requieren dos pasos:&lt;br /&gt;&lt;br /&gt; 1. Instalamos los paquetes debian latex-ucs y latex-ucs-uninames.&lt;br /&gt; 2. Con esto ya tenemos instalado el paquete ucs.sty, que nos da el soporte para Unicode en LaTeX.&lt;br /&gt;&lt;br /&gt;    Ahora ya solo nos queda declarar su uso en la cabecera de nuestros nuevos documentos LaTeX. Así:&lt;br /&gt;&lt;br /&gt; 3. &lt;span style="color: rgb(153, 153, 153);"&gt;\usepackage{ucs}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      \usepackage[utf8]{inputenc}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    Incluso, según la documentación, puede suprimirse la primera línea en muchos casos.&lt;br /&gt;&lt;br /&gt;    Por supuesto, estas líneas sustituyen a:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      \usepackage[latin1]{inputenc}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    Podemos seguir usando sin problema el paquete "babel" de nuestra lengua si queremos disponer de soporte para nuestra lengua distinta del inglés:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      \usepackage[spanish]{babel}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero que le sea útil a alguien, a mí me ha llevado un buen rato darme cuenta de lo que estaba pasando. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-5751522132657559719?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5751522132657559719/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5751522132657559719' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5751522132657559719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5751522132657559719'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/06/latex-en-castellano.html' title='latex en castellano'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3739271880915083711</id><published>2007-05-31T17:42:00.000+01:00</published><updated>2007-06-02T10:58:16.071+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: until</title><content type='html'>&lt;div style="text-align: justify;"&gt;until (hasta) representa el bucle de puredata. Genera tantos bang como le digas, en secuencia. En el siguiente patch:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/Rl77ib3rGaI/AAAAAAAAAHA/0MP9Te54DOg/s1600-h/1.15-0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/Rl77ib3rGaI/AAAAAAAAAHA/0MP9Te54DOg/s320/1.15-0.png" alt="" id="BLOGGER_PHOTO_ID_5070766799481149858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;si pulsas sobre el mensaje 10, se imprimirán 10 bangs, igual con otro número.  Es fácil de entender si lo pruebas. Este aparente inofensivo objeto es un arma de doble filo. Imagina que realizas el siguiente patch&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rl78UL3rGcI/AAAAAAAAAHQ/z-PCnumLvNs/s1600-h/1-15-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rl78UL3rGcI/AAAAAAAAAHQ/z-PCnumLvNs/s320/1-15-2.png" alt="" id="BLOGGER_PHOTO_ID_5070767654179641794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nada impide al until detenerse por lo que probablemente tendrás que matar el programa pd, o incluso reiniciar el ordenador, que se bloqueará. El segundo inlet de ultil puede recibir un bang que lo detiene, pero si ya has iniciado el patch anterior, es demasiado tarde...&lt;br /&gt;&lt;br /&gt;Un ejemplo menos agresivo con until es hacer un contador como el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rl78LL3rGbI/AAAAAAAAAHI/iDo1gsiptJ4/s1600-h/1-15.1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rl78LL3rGbI/AAAAAAAAAHI/iDo1gsiptJ4/s320/1-15.1.png" alt="" id="BLOGGER_PHOTO_ID_5070767499560819122" border="0" /&gt;&lt;/a&gt;El bang activa un trigger que dispara dos bang, primero el de la derecha y luego el de la izquierda. El de la derecha pondrá a 0 el contador de más abajo, mientras que el de la izquierda envia 20 a until, por lo que generará 20 bangs. El resultado es que el contador cuenta de 0 a 19. En este caso no hay que tener miedo de until porque recibe un número de exacto de bangs. El problema ocurre cuando un [until] perdido de la mano de dios, no recibe orden de detenerse.&lt;br /&gt;&lt;br /&gt;Una aplicación directa del patch anterior, es escribir de un golpe todos los valores en una tabla.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rl792r3rGdI/AAAAAAAAAHY/77e0McmCdiM/s1600-h/1.15-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rl792r3rGdI/AAAAAAAAAHY/77e0McmCdiM/s320/1.15-3.png" alt="" id="BLOGGER_PHOTO_ID_5070769346396756434" border="0" /&gt;&lt;/a&gt;Casi todo es como el caso anterior, sólo que esta vez hay una tabla de datos con 10 datos.  En concreto he configurado la tabla con x de 0 a 9, e y de 0 a 100. Cada valor del contador, se pasa por un trigger que genera el valor, y luego un bang. El valor selecciona en [tabwrite array1] que posición de la tabla queremos escribir, y el bang activa [random 100] generando un número aleatorio entre 0 y 99. El resultado es que rellena la tabla con números aleatorios cada vez que pulsas en bang superior.&lt;br /&gt;&lt;br /&gt;El mensaje ;array1 const 0 pone todos los valores de la tabla a 0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Un último ejemplo de cómo usar util para dibujar funciones en una tabla. Ya que  until emite tantos bangs como queramos, puede hacerse que cada bang calcule un punto de una función y lo dibuje en la tabla (dicha tabla tiene 199 puntos, con el valor y entre 0 y 1):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RmE-l73rGeI/AAAAAAAAAHg/KaASnexyops/s1600-h/campanagauss.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RmE-l73rGeI/AAAAAAAAAHg/KaASnexyops/s320/campanagauss.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5071403476843174370" /&gt;&lt;/a&gt;&lt;br /&gt;&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/4908934190193877178-3739271880915083711?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3739271880915083711/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3739271880915083711' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3739271880915083711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3739271880915083711'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/pd-until.html' title='Pd: until'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZIIUDghgB4E/Rl77ib3rGaI/AAAAAAAAAHA/0MP9Te54DOg/s72-c/1.15-0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6052619869455601821</id><published>2007-05-30T08:55:00.000+01:00</published><updated>2007-05-30T08:58:04.967+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Libro Miller Puckette</title><content type='html'>&lt;a href="http://crca.ucsd.edu/%7Emsp/techniques.htm"&gt;The theory and Technique of Electronic Music&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6052619869455601821?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6052619869455601821/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6052619869455601821' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6052619869455601821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6052619869455601821'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/libro-miller-puckette.html' title='Libro Miller Puckette'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4990428305313497021</id><published>2007-05-23T12:12:00.000+01:00</published><updated>2007-06-25T16:34:44.020+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vídeo'/><title type='text'>Conversiones Audio/Video &lt;---&gt; Audio/Video</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;&lt;a href="http://oggro.lynksee.com/wiki/Conversi%C3%B3n_de_audio"&gt;Conversión de audio&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oggro.lynksee.com/wiki/Conversi%C3%B3n_de_v%C3%ADdeo"&gt;Conversión de vídeo&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-4990428305313497021?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4990428305313497021/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4990428305313497021' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4990428305313497021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4990428305313497021'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/conversiones-audiovideo-audiovideo.html' title='Conversiones Audio/Video &lt;---&gt; Audio/Video'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6254711153252447205</id><published>2007-05-23T09:52:00.000+01:00</published><updated>2007-05-23T09:55:38.455+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Play ogg</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlQBXb3rGZI/AAAAAAAAAG4/p6uSVELbJ5I/s1600-h/play_ogg_large.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlQBXb3rGZI/AAAAAAAAAG4/p6uSVELbJ5I/s320/play_ogg_large.png" alt="" id="BLOGGER_PHOTO_ID_5067676982828538258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Campaña de la FSF para alentar al uso del formato contenedor de audio/video ogg.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fsf.org/resources/formats/playogg"&gt;http://www.fsf.org/resources/formats/playogg&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6254711153252447205?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6254711153252447205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6254711153252447205' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6254711153252447205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6254711153252447205'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/play-ogg.html' title='Play ogg'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZIIUDghgB4E/RlQBXb3rGZI/AAAAAAAAAG4/p6uSVELbJ5I/s72-c/play_ogg_large.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4336433679356580087</id><published>2007-05-20T19:00:00.000+01:00</published><updated>2007-06-18T21:48:42.052+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Samplers (paso 6.8)</title><content type='html'>&lt;div style="text-align: justify;"&gt;La estructura de un sampler es simplemente un sonido digital almacenado en la memoria,  y algún mecanismo que lea esa secuencia de datos (muestras) desde un punto a otro, a distintas velocidades.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EJEMPLO DE UN SAMPLER SENCILLO CON tabplay~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlCUINjAt8I/AAAAAAAAAGg/IKueiLgPbeA/s1600-h/sampler1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlCUINjAt8I/AAAAAAAAAGg/IKueiLgPbeA/s320/sampler1.png" alt="" id="BLOGGER_PHOTO_ID_5066712449588180930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para empezar una fórmula sencilla. Sabiendo la frecuencia de muestro de un sonido digital (el número de muestras guardadas por segundo), y lo que dura exactamente, puedes saber cuántas muestras o bytes de usará en memoria. La fórmula es  Muestras=FrecmuestreoxDuración. En el patch anterior, sabía de antemano la duración exacta del sonido en segundos, y por supuesto la frecuencia de muestreo, por tanto es fácil conocer el número de muestras. Ese número lo usé para crear un array.&lt;br /&gt;&lt;br /&gt;Por otro lado, el objeto [soundfiler] es capar de cargar en una tabla un sonido almacenado en un archivo. El mensaje 'read' hace eso precisamente. [soundfiler] devuelve el número de muestras leidas.&lt;br /&gt;&lt;br /&gt;[tabplay~] cuando recibe un bang, lee lo almacenado en una matriz que le digamos. En este caso 'drum'. Por tanto, el bang dispara el sonido almacenado en la tabla.&lt;br /&gt;&lt;br /&gt;Añadiendo lo siguiente al patch:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlCUUNjAt9I/AAAAAAAAAGo/dSsVWRzNzps/s1600-h/sampler2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlCUUNjAt9I/AAAAAAAAAGo/dSsVWRzNzps/s320/sampler2.png" alt="" id="BLOGGER_PHOTO_ID_5066712655746611154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se puede leer una y otra vez  el contenido de la tabla. El truco está en que [tabplay~] envía un bang por la salida de la derecha cuando termina. Este bang podríamos reenviarlo a la entrada de nuevo, haciendo un bucle. He interpuesto [spigot] simplemente para que el bucle pueda detenerse.&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/O9Rppon4tyA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/O9Rppon4tyA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SAMPLER USANDO phasor~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RlCUddjAt-I/AAAAAAAAAGw/Z_u9QVMkh1Q/s1600-h/sampler3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RlCUddjAt-I/AAAAAAAAAGw/Z_u9QVMkh1Q/s320/sampler3.png" alt="" id="BLOGGER_PHOTO_ID_5066712814660401122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este caso es un poco más elaborado. El fucionamiento de [soundfiler] es similar.  Sin embargo la columna de la izquierda requiere pararse más. Vamos por partes:&lt;br /&gt;&lt;br /&gt;- [/ 44100]  Divide el número de muestras entre la frecuencia de muestreo, que por la fórmula vista más arriba, eso es la duración del sonido.&lt;br /&gt;&lt;br /&gt;-[pow -1] eleva un número a -1, o lo que es lo mismo, uno partido por ese número.  Si considero que la duración del sonido es el periodo de una onda (lo que se repite), ¿cómo calculo la frecuencia de ese sonido?, justamente haciendo el inverso del periodo. Ejemplo: un sonido que tiene un periodo de 0.5, tendrá de frecuencia 1/0.5=2 Hz.&lt;br /&gt;&lt;br /&gt;-[sig~] transforma un número en una señar digital.&lt;br /&gt;&lt;br /&gt;-[phasor~] va de 0 a 1 linealmente tantas veces por segundo como indique la precuencia que indiquemos. Por tanto, si multiplicamos la salida de phasor~ por un número n. obtendremos una señal que va de 0 a n, tantas veces por segundo como indique la frecuencia. Eso es justo lo que hemos hecho, multiplicar phasor~ por el número de muestras. phasor~ en este caso es un puntero que leerá la tabla, desde 0 hasta el número de muestras.&lt;br /&gt;&lt;br /&gt;-Finalmente [tabread4~] lee la tabla según la señal que entre por su inlet principal. Se podría usar [line~] para indicar qué valores leer.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Prueba a variar la caja de números debajo de pow y escucharás la tabla leída a distintas velocidades. A velocidades negativas, lee alrevés.&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DMFj8W7nKvo"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/DMFj8W7nKvo" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se puede variar ligeramente el patch para que empiece a leer en la muestra que quieras, y termine donde quieras, simplemente escalando phasor~. Tambien se puede añadir el flag -resize a la mensaje read de soundfiler, redimensionando la tabla para que se ajuste a la muestra cargada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-4336433679356580087?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4336433679356580087/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4336433679356580087' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4336433679356580087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4336433679356580087'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/pd-samplers-paso-68.html' title='Pd: Samplers (paso 6.8)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZIIUDghgB4E/RlCUINjAt8I/AAAAAAAAAGg/IKueiLgPbeA/s72-c/sampler1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7726830163014574703</id><published>2007-05-15T19:10:00.000+01:00</published><updated>2007-05-20T12:50:50.098+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Ondas famosas con phasor (paso 3.7)</title><content type='html'>Phasor genera una función rampa lineal de 0 a 1. Es suficiente con esta señal, para producir las ondas típicas de la síntesis sustractiva clásica. Representada, siendo el eje x el tiempo, podría quedar así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlA1pNjAt7I/AAAAAAAAAGQ/hhqsCYQPMgI/s1600-h/rampa2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RlA1pNjAt7I/AAAAAAAAAGQ/hhqsCYQPMgI/s320/rampa2.png" alt="" id="BLOGGER_PHOTO_ID_5066608562919225266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El siguiente patch , será la base para ver la construcción de las ondas. Dos array de 208 puntos (esto es arbitrario), dos  [tabwrite~] cada uno apuntando a su array, y un [phasor~] del que podremos cambiar su frecuencia. También podríamos cambiar la fase con el inlet frio de [phasor~]. Como siempre, pulsa sobre las imágenes para ampliarlas un poco.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rkn3-sFWHYI/AAAAAAAAAFY/OVM7RohT_F4/s1600-h/1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rkn3-sFWHYI/AAAAAAAAAFY/OVM7RohT_F4/s320/1.png" alt="" id="BLOGGER_PHOTO_ID_5064851912312364418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En el panel (canvas) verde se transformará phasor~ en otra onda.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ONDA CUADRADA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RkouVsFWHeI/AAAAAAAAAGI/7WGxPoKkNr8/s1600-h/cuadrada.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RkouVsFWHeI/AAAAAAAAAGI/7WGxPoKkNr8/s320/cuadrada.png" alt="" id="BLOGGER_PHOTO_ID_5064911681077255650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ONDA RAMPA&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/Rkn4S8FWHaI/AAAAAAAAAFo/PDfH-mHFy58/s1600-h/3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/Rkn4S8FWHaI/AAAAAAAAAFo/PDfH-mHFy58/s320/3.png" alt="" id="BLOGGER_PHOTO_ID_5064852260204715426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ONDA SENOIDAL&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rkn4aMFWHbI/AAAAAAAAAFw/02LFjjleBrU/s1600-h/4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rkn4aMFWHbI/AAAAAAAAAFw/02LFjjleBrU/s320/4.png" alt="" id="BLOGGER_PHOTO_ID_5064852384758767026" border="0" /&gt;&lt;/a&gt;ONDA DIENTE DE SIERRA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rkn4hsFWHcI/AAAAAAAAAF4/uO8Vym-_qUU/s1600-h/5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rkn4hsFWHcI/AAAAAAAAAF4/uO8Vym-_qUU/s320/5.png" alt="" id="BLOGGER_PHOTO_ID_5064852513607785922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ONDA TRIANGULAR&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rkn4wMFWHdI/AAAAAAAAAGA/pVFQZkwu828/s1600-h/6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rkn4wMFWHdI/AAAAAAAAAGA/pVFQZkwu828/s320/6.png" alt="" id="BLOGGER_PHOTO_ID_5064852762715889106" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-7726830163014574703?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7726830163014574703/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7726830163014574703' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7726830163014574703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7726830163014574703'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/pd-ondas-famosas-con-phasor.html' title='Pd: Ondas famosas con phasor (paso 3.7)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZIIUDghgB4E/RlA1pNjAt7I/AAAAAAAAAGQ/hhqsCYQPMgI/s72-c/rampa2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8921919925499304395</id><published>2007-05-04T19:42:00.000+01:00</published><updated>2007-05-04T19:45:29.999+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>TetrisPD</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rjt_KsFWHXI/AAAAAAAAAFQ/VoGdt7TmjMk/s1600-h/Pantallazo-tetris.pd++-+-home-rodrigo-Desktop-tetrispd.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/Rjt_KsFWHXI/AAAAAAAAAFQ/VoGdt7TmjMk/s320/Pantallazo-tetris.pd++-+-home-rodrigo-Desktop-tetrispd.png" alt="" id="BLOGGER_PHOTO_ID_5060778427889884530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Mateo Sistisette asombrosamente ha realizado un juego de tetris enteramente con puredata. Lo puede bajar aquí:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://puredata.org/Members/matteosistisette/tetrispatch"&gt;http://puredata.org/Members/matteosistisette/tetrispatch&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El patch inicial es tetris.pd&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8921919925499304395?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8921919925499304395/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8921919925499304395' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8921919925499304395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8921919925499304395'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/05/tetrispd.html' title='TetrisPD'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/Rjt_KsFWHXI/AAAAAAAAAFQ/VoGdt7TmjMk/s72-c/Pantallazo-tetris.pd++-+-home-rodrigo-Desktop-tetrispd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-120175061374341775</id><published>2007-04-26T19:21:00.000+01:00</published><updated>2007-04-26T19:25:26.007+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnu/linux'/><title type='text'>GNU/Linux: fuentes ttf</title><content type='html'>&lt;p align="justify"&gt;A continuación detallamos tres formas para instalar tus fuentes en linux:&lt;/p&gt;&lt;span class="Estilo2"&gt;&lt;b&gt;&lt;u&gt;1ª forma:&lt;/u&gt;&lt;/b&gt; &lt;/span&gt;&lt;p align="justify"&gt;La manera mas sencilla de instalar las fuentes, si dispones del navegador Konqueror, es abrirlo y poner la siguiente URL en la línea de dirección:&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;fonts:/&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;y copiar directamente las fuentes dentro de la carpeta Personal. De esta manera ya estarán a disposición de los programas que quieran usarlas.&lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;b&gt;&lt;u&gt;2ª forma:&lt;/u&gt; &lt;/b&gt;&lt;p align="justify"&gt;Sirve para la mayoría de las distribuciones, sólo tienes que copiar las fuentes a /usr/share/fonts.&lt;br /&gt;&lt;br /&gt;// Creamos el directorio donde vamos a instalar las fuentes&lt;br /&gt;&lt;strong&gt;#mkdir /usr/share/fonts/misfuentes&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;//Copiamos las fuentes descargadas (y descomprimidas), al directorio que hemos creado anteriormente&lt;br /&gt;&lt;strong&gt;#cp mis_primeras_fuentes/* .ttf /usr/share/fonts/misfuentes&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;//Para actualizar todos los ficheros de caché de fuentes&lt;br /&gt;&lt;strong&gt;#fc-cache -f&lt;/strong&gt; &lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;b&gt;&lt;u&gt;3ª forma:&lt;/u&gt;&lt;/b&gt; &lt;p align="justify"&gt;Si tienes una versión reciente de RedHat, Suse o Debian, éstas tienen soporte para fuentes TrueType, para comprobarlo abre una ventana de terminal y escribe el comando &lt;i&gt;&lt;b&gt;ttmkfdir&lt;/b&gt;&lt;/i&gt;. Este comando simplemente debe desplegar el número " &lt;b&gt;0 &lt;/b&gt;", o sino una larga lista de nombres de fuentes. Si nos dice "comando no encontrado", entonces estas instrucciones que detallamos a continuación no pueden ser usadas, tendras que buscar cómo hacerlo para tu distribución en concreto. &lt;/p&gt;&lt;p align="justify"&gt;El siguiente paso es que crees un nuevo directorio para tus fuentes, por ejemplo /usr/local/fonts/ttf ( si eliges otro, deberas adaptar las instrucciones). Este directorio debe ser accesible por todos los usuarios. No olvidar que algunas de las instrucciones deben ser realizadas como usuario root.&lt;/p&gt;&lt;p align="justify"&gt;Copia todas las fuentes truetype(*.ttf) dentro del directorio /usr/local/fonts/ttf (en mi caso). &lt;/p&gt;&lt;p align="justify"&gt;En una ventana de terminal, escribe lo siguiente: &lt;/p&gt;&lt;div align="justify"&gt;&lt;b&gt;cd /usr/local/fonts/ttf ttmkfdir &gt; fonts.scale mkfontdir &lt;/b&gt;&lt;/div&gt;&lt;p align="justify"&gt;En el directorio se deberán haber generado dos nuevos archivos ("fonts.scale" y "fonts.dir"), que simplemente contienen una lista con el nombre completo de las fuentes para cada fuente truetype. &lt;/p&gt;&lt;p align="justify"&gt;Por último, debes agregar el nuevo directorio a la lista de rutas en que XWindows buscará fuentes. Si eres usuario de Red Hat puedes hacerlo con el siguiente comando:&lt;/p&gt;&lt;p align="justify"&gt;&lt;b&gt;chkfontpath -a /usr/local/fonts/ttf &lt;/b&gt;&lt;/p&gt;&lt;p align="justify"&gt;y si no lo eres, edita directamente el archivo /etc/X11/fs/config (o /etc/X11/xfs/config), busca la linea que empieza con "catalogue", y agrega el directorio de las fuentes al final de la lista, separado por una coma.&lt;/p&gt;&lt;a href="http://observatorio.cnice.mec.es/modules.php?op=modload&amp;name=News&amp;amp;file=article&amp;sid=387"&gt;fuente&lt;/a&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Muchas fuentes "free", aquí: http://www.webpagepublicity.com/free-fonts-c.html#FreeFonts&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-120175061374341775?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/120175061374341775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=120175061374341775' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/120175061374341775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/120175061374341775'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/gnulinux-fuentes-ttf.html' title='GNU/Linux: fuentes ttf'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7586182684961860533</id><published>2007-04-23T19:01:00.000+01:00</published><updated>2007-04-23T19:02:17.050+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>escoitar.org</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;Unha aproximación ao son dun lugar é unha aproximación ao seu patrimonio. Percibir, comprender e concibir a nosa identidade sonora, a dos nosos lugares e as nosas xentes, a súa coherencia e idiosincrasia, é un exercicio necesario e saudable. Escoitar.org é un proxecto de dinamización social aberto e libre cuxo obxectivo principal é a difusión e promoción do fenómeno sonoro e a súa exploración con fins sociais e documentais. Escoitar.org é tamén unha actividade do PROXECTO-EDICIÓN (CGAC, MARCO e Fundación Seoane). Podes participar engadindo as tuas gravacións. Benvido a Escoitar.org.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;&lt;a style="color: rgb(51, 102, 255);" href="http://www.escoitar.org/"&gt;&lt;span style="font-weight: bold;"&gt;http://www.escoitar.org/&lt;/span&gt;&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/4908934190193877178-7586182684961860533?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7586182684961860533/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7586182684961860533' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7586182684961860533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7586182684961860533'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/escoitarorg.html' title='escoitar.org'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3275329545185327631</id><published>2007-04-20T15:32:00.000+01:00</published><updated>2007-04-20T15:44:31.099+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Grabar un wav (paso 3.6)</title><content type='html'>&lt;div style="text-align: justify;"&gt;[dac~] envia la señal digital a la salida que tengas configurada: la tarjeta de sonido, u otro programa vía jack. En algún caso puede ser útil salvar la sesión de pd en un archivo wav, pera eso está el objeto [writesf~].  El siguiente es un ejemplo sencillod de grabador.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RijROVH-uVI/AAAAAAAAAFA/jb5xNyrS5_c/s1600-h/3.6-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RijROVH-uVI/AAAAAAAAAFA/jb5xNyrS5_c/s320/3.6-1.png" alt="" id="BLOGGER_PHOTO_ID_5055520625842370898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"open" abrirá el archivo que quieras y lo dejará listo para grabar. "-wave" indica que se usará el formato wav . El número que acompaña a writesf~ es justo el número de canales. Entonces, no hay más que pulsar start y comienza la grabación.&lt;br /&gt;&lt;br /&gt;En el caso de querer grabar archivos con nombres distintos, es muy útil el objeto [makefilename]. En el siguiente patch hay tres ejemplos de uso.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RijRUFH-uWI/AAAAAAAAAFI/J2SC_KQdDJQ/s1600-h/3.6-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RijRUFH-uWI/AAAAAAAAAFI/J2SC_KQdDJQ/s320/3.6-2.png" alt="" id="BLOGGER_PHOTO_ID_5055520724626618722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;pulsa sobre la imagen para agrandar&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A) Al cambiar la caja de números, [makefilename] toma el número como entero (%i) y lo coloca en medio de un nombre, creando un símbolo que envía a la caja de símbolos. Es útil para crear una secuencia de archivos numerados.&lt;br /&gt;&lt;br /&gt;B) Podemos elegir entre dos o varios símbolos que serán insertados en un nombre (%s).&lt;br /&gt;&lt;br /&gt;C) En este ejemplo, hay un contador que irá generando una secuencia 0,1,2,3,... Ese valor se inserta con [makefilename] en un símbolo que representa una dirección de archivo. 'open -wave $1' lee dicho símbolo, como sabrás $1 significa tomar el primer valor del mensaje de entrada. Por tanto irá abriendo archivo-0.wav, archivo-1.wav, archivo-2.wav, etc&lt;br /&gt;&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/4908934190193877178-3275329545185327631?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3275329545185327631/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3275329545185327631' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3275329545185327631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3275329545185327631'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/pd-grabar-un-wav-paso-36.html' title='Pd: Grabar un wav (paso 3.6)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/RijROVH-uVI/AAAAAAAAAFA/jb5xNyrS5_c/s72-c/3.6-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2230480338828142483</id><published>2007-04-15T15:01:00.000+01:00</published><updated>2007-04-15T15:20:23.595+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>Ea! estupidez artificial</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RiIz4q7U4OI/AAAAAAAAAE4/tI0OZM7gSAk/s1600-h/escher-galer%C3%ADa.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RiIz4q7U4OI/AAAAAAAAAE4/tI0OZM7gSAk/s320/escher-galer%C3%ADa.jpg" alt="" id="BLOGGER_PHOTO_ID_5053658780551930082" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;"Galería" , Escher&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Apenas un homenaje al siguiente texto de Borges, que siempre me hizo reir, a la vez que sentía una &lt;span style="font-weight: bold;"&gt;global&lt;/span&gt; vergüenza ajena hacia los grandes &lt;span style="font-style: italic;"&gt;hitos de la humanidad&lt;/span&gt;. "Ajena" dicho en ese sentido en el que me incluye: "no soy cualquiera, soy un hombre, alto, gordo de espíritu, colchonero, mequetrefe, avaricioso, equizotípico..."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:Verdana;font-size:100%;"  &gt;"&lt;strong&gt;E&lt;/strong&gt;sas ambigüedades, redundancias y deficiencias recuerdan a las que el Dr. Franz Kuhn atribuye a cierta enciclopedia china que se titula &lt;span style="color: rgb(102, 102, 102);"&gt;Emporio celestial de conocimientos benévolos&lt;/span&gt;. En sus remotas páginas está escrito que los animales se dividen en:&lt;br /&gt;&lt;br /&gt;(a) pertenecientes al Emperador,&lt;br /&gt;(b) embalsamados,&lt;br /&gt;(c) amaestrados,&lt;br /&gt;(d) lechones,&lt;br /&gt;(e) sirenas,&lt;br /&gt;(f) fabulosos,&lt;br /&gt;(g) perros sueltos,&lt;br /&gt;(h) incluídos en esta clasificación,&lt;br /&gt;(i) que se agitan como locos,&lt;br /&gt;(j) innumerables,&lt;br /&gt;(k) dibujados con un pincel finísimo de pelo de camello,&lt;br /&gt;(l) etcétera,&lt;br /&gt;(m) que acaban de romper el jarrón,&lt;br /&gt;(n) que de lejos parecen moscas. &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;"&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:Verdana;font-size:100%;"  &gt;&lt;strong&gt;J&lt;/strong&gt;orge Luis Borges,&lt;em&gt; El idioma analítico de John Wilkins, &lt;/em&gt;en&lt;em&gt; &lt;/em&gt;"Otras inquisiciones", 1925&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;br /&gt;&lt;br /&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/4908934190193877178-2230480338828142483?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2230480338828142483/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2230480338828142483' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2230480338828142483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2230480338828142483'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/ea-estupidez-artificial.html' title='Ea! estupidez artificial'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZIIUDghgB4E/RiIz4q7U4OI/AAAAAAAAAE4/tI0OZM7gSAk/s72-c/escher-galer%C3%ADa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5057771934491285738</id><published>2007-04-10T19:57:00.000+01:00</published><updated>2007-04-10T20:14:00.169+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: polifonía con poly (Paso 2.4)</title><content type='html'>&lt;div style="text-align: justify;"&gt;[Poly] funciona como una puerta para datos MIDI, que permite un número de notas pulsadas. Dicho de otra manera pone límite en número de voces a la polifonía. Mira el siguiente ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhvhX67U4MI/AAAAAAAAAEo/eyXY1EdoJgU/s1600-h/2.4-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhvhX67U4MI/AAAAAAAAAEo/eyXY1EdoJgU/s320/2.4-1.png" alt="" id="BLOGGER_PHOTO_ID_5051879208097472706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Recibe mensajes con los valores (nota volumen) típicos del formato MIDI.&lt;br /&gt;&lt;br /&gt;[poly 3] pone a tres el número máximo de notas pulsadas. Si pulsas una tras otras, los mensajes de la izquierda, ocuparás las notas posibles. Al pulsar los de la derecha (al despulsarlas), dejas hueco a que se pulsen nuevas. En la salida de pd, verás algo como esto:&lt;br /&gt;&lt;br /&gt;print: 1 60 100&lt;br /&gt;print: 2 67 100&lt;br /&gt;print: 3 70 100&lt;br /&gt;print: 3 70 0&lt;br /&gt;print: 2 67 0&lt;br /&gt;print: 1 60 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si cambias el patch añadiendo una nota más, o bien pulsas alguna de las de la izquierda 2 veces, verás que [poly], una vez ocupadas las 3 notas pulsadas, no permite el paso de ninguna más.&lt;br /&gt;&lt;br /&gt;Si tienes un teclado MIDI, o controlador externo a pd (con jack y vkeybd por ejemplo), realiza el siguiente montaje:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhvheK7U4NI/AAAAAAAAAEw/sJWovB-w8So/s1600-h/2.4-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhvheK7U4NI/AAAAAAAAAEw/sJWovB-w8So/s320/2.4-2.png" alt="" id="BLOGGER_PHOTO_ID_5051879315471655122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[poly 4] permitirá que pulses hasta 4 notas simultáneas. Por el primer outlet, obtienes la voz que activas o desactivas, por tanto podrías usar [select] para enviar cada voz a una tarea distinta.&lt;br /&gt;&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/4908934190193877178-5057771934491285738?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5057771934491285738/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5057771934491285738' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5057771934491285738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5057771934491285738'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/pd-polifona-con-poly.html' title='Pd: polifonía con poly (Paso 2.4)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZIIUDghgB4E/RhvhX67U4MI/AAAAAAAAAEo/eyXY1EdoJgU/s72-c/2.4-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-9145181082613072512</id><published>2007-04-09T16:44:00.000+01:00</published><updated>2007-04-16T19:07:44.955+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><title type='text'>Capturar stream con mplayer</title><content type='html'>&lt;span style="font-weight: bold;"&gt;CAPTURAR AUDIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Necesitas tener instalado mplayer :)&lt;br /&gt;&lt;br /&gt;El comando es:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;mplayer &lt;span style="color: rgb(255, 153, 0);"&gt;urldelaradio-online&lt;/span&gt; -dumpstream&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eso creará el archivo stream.dump, si quisieras darle otra nombre, puedes utilizar la opción &lt;span style="font-style: italic;"&gt;-dumpfile archivoquequieras.mpg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo convertimos a wav, suponiendo que el nombre del archivo creado es stream.dump,  con:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;mplayer stream.dump -ao pcm:file=&lt;span style="color: rgb(255, 102, 102);"&gt;archivodesalida.wav&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya puedes borrar el archivo stream.dump&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;rm stream.dump&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entonces puedes hacer una conversión a ogg&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;oggenc -o  archivoquequieras.ogg archivodesalida.wav&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya está ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CAPTURAR VIDEO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este caso usaremos mencoder, el codificador de medios de mplayer. Si conoces la dirección stream de video, por ejemplo esta:&lt;br /&gt;&lt;br /&gt;rtsp://streaming.multicasttech.com/AmericaFreeTVComedy.sdp&lt;br /&gt;&lt;br /&gt;Puedes capturarla en avi con el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;mencoder rtsp://streaming.multicasttech.com/AmericaFreeTVComedy.sdp &lt;/span&gt;&lt;span style="color: rgb(51, 255, 51); font-style: italic;"&gt;-o prueba.avi&lt;/span&gt;&lt;span style="font-style: italic;"&gt; -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800:keyint=250:vqmin=2 -oac mp3lame -lameopts vbr=0:br=64:mode=3 -vf pp=tn/lb,&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-style: italic;"&gt;scale=384:288&lt;/span&gt;&lt;span style="font-style: italic;"&gt; -sws 1 -&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;endpos 60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Crea un avi escalado a 348x288, codificado en mpeg4, con sonido mp3 de calidad 64 en mono. Realiza una captura de 60 segundos ( -endpos 60)&lt;/span&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/4908934190193877178-9145181082613072512?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/9145181082613072512/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=9145181082613072512' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/9145181082613072512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/9145181082613072512'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/capturar-stream-de-audio-con-mplayer.html' title='Capturar stream con mplayer'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3895175851133856043</id><published>2007-04-06T15:14:00.000+01:00</published><updated>2007-04-06T15:26:52.020+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: separator (paso 4.8)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Como ya sabes, en la línea que une gemhead con un objeto de dibujo, es posible añadir transformaciones. Digamos que [gemhead] actua como un objeto metro para el renderizado, al que además vamos añadiendo indicaciones sobre posición, rotación color etc. Por otra parte, como hemos visto, en la misma línea se pueden añadir varios objentos de dibujo, de manera que van heredando las transformaciones que le hicimos a los anteriores.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;En algún caso, puede ser interesante poder bifurcar la línea de transformaciones en dos, de manera que dos objetos distintos, hereden por separado las transformaciones de otro. Para eso está el objeto [separator]. El siguiente ejemplo lo usa&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhZYSLJSdKI/AAAAAAAAAEY/qEENopVr1U4/s1600-h/4.8-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhZYSLJSdKI/AAAAAAAAAEY/qEENopVr1U4/s320/4.8-1.png" alt="" id="BLOGGER_PHOTO_ID_5050321101395227810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dibuja un rectángulo, parecido a como hacíamos en el paso 4.7. Pero aparece enseguida separator. La línea que viene de gemhead se bifurcará en dos (podrían ser más claro). De manera que se dibujarán dos rectángulos que heredan las transformaciones del primero. El efecto de este patch, una vez pones lo valores a punto, es este:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhZYXLJSdLI/AAAAAAAAAEg/NzAL75s8apU/s1600-h/4.8-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhZYXLJSdLI/AAAAAAAAAEg/NzAL75s8apU/s320/4.8-2.png" alt="" id="BLOGGER_PHOTO_ID_5050321187294573746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una especie de Y , o pinza. Si rotas o transladas el primero rectángulo (las primeras transformaciones que aparecen tras gemhead, y antes de separator), moverás el conjunto. Pero una vez en cada una de las bifurcaciones, puede controlar por ejemplo, la rotación de cada brazo de la Y por separado. En el patch anterior, marqué con gris, azul o rosa, el control de rotación de los rectángulos blanco, azul o rojo, respectivamente.&lt;br /&gt;&lt;br /&gt;Si observas tu propia mano, de la palma ves salir 5 dedos, los cuales pueden ser movidos independientemente, sin embargo, la posición de la mano, determina la de los dedos. En ese caso, haría falta un objeto [separator] por cada dedo.&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/4908934190193877178-3895175851133856043?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3895175851133856043/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3895175851133856043' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3895175851133856043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3895175851133856043'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/pd-separator-paso-48.html' title='Pd: separator (paso 4.8)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZIIUDghgB4E/RhZYSLJSdKI/AAAAAAAAAEY/qEENopVr1U4/s72-c/4.8-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-859096000018242147</id><published>2007-04-04T09:15:00.000+01:00</published><updated>2007-04-04T09:19:08.710+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>La espero</title><content type='html'>&lt;a href="http://www.rtve.es/FRONT_PROGRAMAS?go=111b735a516af85ccdc4135d9df82c2e123009d61eb00f778b60af793b191c31f8046a272f631c004398867965d4e365f6bb51d607e8b44729342148d02bba6201e79d6478432f87"&gt;El orden criminal del mundo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-859096000018242147?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/859096000018242147/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=859096000018242147' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/859096000018242147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/859096000018242147'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/la-espero.html' title='La espero'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5885340580691887751</id><published>2007-04-03T16:55:00.000+01:00</published><updated>2007-04-06T21:24:54.215+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Articulaciones con gemlists (paso 4.7)</title><content type='html'>&lt;div style="text-align: justify;"&gt;En el paso 4.6 vistes cómo efecta el orden de las transformaciones en una línea [gemhead]--&gt;[objeto]. Avanzando más en la cuestión, crearemos un rectánculo de anchura 0.1 y altura 0.5. El centro de coordenadas es también el centro del rectángulo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhJ_hMcrtRI/AAAAAAAAADI/ms_H5t0wLUE/s1600-h/4.7-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhJ_hMcrtRI/AAAAAAAAADI/ms_H5t0wLUE/s320/4.7-1.png" alt="" id="BLOGGER_PHOTO_ID_5049238340489688338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si primero rotamos, y luego desplazamos, conseguiremos que el rectángulo gire en torno al eje de rotación, en este caso el Z. El efecto será similar al de estar mirando la aguja de un reloj, la cual gira en torno a un eje fijado en su extremo. Si cambias el valor de "ROTA" verás que efectivamente ocurre.&lt;br /&gt;&lt;br /&gt;Vamos a crear varios objetos dependientes, como los eslabones de una cadena, o como un brazo articulado. Para ello, en la misma línea de gemhead, crearemos otro rectángulo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhJ_occrtSI/AAAAAAAAADQ/lGMQONe_kGk/s1600-h/4.7-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhJ_occrtSI/AAAAAAAAADQ/lGMQONe_kGk/s320/4.7-2.png" alt="" id="BLOGGER_PHOTO_ID_5049238465043739938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Presta atención a que hay dos objetos [translate] transformando el segundo rectángulo, pero por ahora el segundo no hace nada, así que no lo tengas en cuenta. Al contrario que antes, ahora trasladamos y luego rotamos, eso es así porque queremos que el segundo objeto rote sobre sí mismo, pero trasladado una cantidad. Con los valores que hay (no olvides pulsar el mensaje 0.5), se produce un dibujo como este:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhJ_uccrtTI/AAAAAAAAADY/OCB5bu0hwR0/s1600-h/4.7-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhJ_uccrtTI/AAAAAAAAADY/OCB5bu0hwR0/s320/4.7-3.png" alt="" id="BLOGGER_PHOTO_ID_5049238568122955058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El círculo azul no está realmente, pero ejemplifica el movimiento que puede seguir la ficha azul. El rojo, gira como la aguja de un reloj, mientras que el azul gira sobre sí mismo, colocado en el extremo del rojo. Si giro el objeto rojo, también muevo el azul, pero el azul es independiente en su giro.&lt;br /&gt;&lt;br /&gt;Añadiendo una traslación al objeto azul,&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhJ_1McrtUI/AAAAAAAAADg/YZ2YNB93iJY/s1600-h/4.7-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhJ_1McrtUI/AAAAAAAAADg/YZ2YNB93iJY/s320/4.7-4.png" alt="" id="BLOGGER_PHOTO_ID_5049238684087072066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Haremos que este gire sobre uno de sus extremos, colocado justamente al final del objeto rojo. Aunque en un plano, podemos decir que es la misma relación entre brazo y mano por ejemplo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhJ_7ccrtVI/AAAAAAAAADo/ElzERLx3bI4/s1600-h/4.7-5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RhJ_7ccrtVI/AAAAAAAAADo/ElzERLx3bI4/s320/4.7-5.png" alt="" id="BLOGGER_PHOTO_ID_5049238791461254482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Añadiendo otro rectángulo más, ya tendremos una cadena de tres piezas articuladas:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhKABscrtWI/AAAAAAAAADw/-cep4J_3QvE/s1600-h/4.7-6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhKABscrtWI/AAAAAAAAADw/-cep4J_3QvE/s320/4.7-6.png" alt="" id="BLOGGER_PHOTO_ID_5049238898835436898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pulsando el mensaje 0.5, se coloca cada pieza en su sitio. Sirve este valor, 0.5, para colocar todas, porque las tres miden 0.5, entonces todas se desplazan 0.5 unidades de la anterior.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhKAG8crtXI/AAAAAAAAAD4/94bJqzVGGm4/s1600-h/4.7-7png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhKAG8crtXI/AAAAAAAAAD4/94bJqzVGGm4/s320/4.7-7png" alt="" id="BLOGGER_PHOTO_ID_5049238989029750130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para simplificar a la vista el patch, podemos hacer uso de subpatch, uno para cada eslabón, de manera que desde el patch principal, sólo controlemos los ángulos de cada nivel&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhKAMscrtYI/AAAAAAAAAEA/1wJXqpGVwGc/s1600-h/4.7-8.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhKAMscrtYI/AAAAAAAAAEA/1wJXqpGVwGc/s320/4.7-8.png" alt="" id="BLOGGER_PHOTO_ID_5049239087813997954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He añadido un "nivel más" constituido por un círculo blanco, que ejemplifica que la cadena puede seguir más aún&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhKAaMcrtaI/AAAAAAAAAEQ/1oPZ8KSflak/s1600-h/4.7-10.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhKAaMcrtaI/AAAAAAAAAEQ/1oPZ8KSflak/s320/4.7-10.png" alt="" id="BLOGGER_PHOTO_ID_5049239319742231970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Un ejemplo de lo que hay en uno de los subpatch es esto:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhKAS8crtZI/AAAAAAAAAEI/UFSHPPE6jG8/s1600-h/4.7-9.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RhKAS8crtZI/AAAAAAAAAEI/UFSHPPE6jG8/s320/4.7-9.png" alt="" id="BLOGGER_PHOTO_ID_5049239195188180370" border="0" /&gt;&lt;/a&gt;[loadbang] hará que al cargar el patch se actualicen los valores 0.5 de traslación.&lt;br /&gt;&lt;br /&gt;Así obtenemos una figura articulada, cuya rotación por pieza puede controlarse en tiempo real. Más complejo pero posible es crear un organismo animado con cierto grado de articulación. Ya veremos [separator] para estructuras algo más complicadas. De todas formas el external pmpd  permite manejar  estructuras de objetos con  propiedades físicas, como fuerzas de atracción /repulsión, movimientos en partículas, etc.&lt;br /&gt;&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/4908934190193877178-5885340580691887751?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5885340580691887751/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5885340580691887751' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5885340580691887751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5885340580691887751'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/pd-articulaciones-con-gemlists-paso-47.html' title='Pd: Articulaciones con gemlists (paso 4.7)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZIIUDghgB4E/RhJ_hMcrtRI/AAAAAAAAADI/ms_H5t0wLUE/s72-c/4.7-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8022887977280276478</id><published>2007-04-03T11:21:00.000+01:00</published><updated>2007-04-03T17:29:42.013+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: orden en las transformaciones (paso 4.6)</title><content type='html'>&lt;div style="text-align: justify;"&gt;En la línea que une [gemhead] con el objeto a dibujar, se van añadiendo transformaciones, es lo que se conoce como gemlist. Dichas transformaciones se ejecutan según van apareciendo, por tanto el orden es importante, porque el resultado final puede ser distinto. El caso más claro es el de la rotación y la traslación.&lt;br /&gt;&lt;br /&gt;Puedes pensar que cada línea gemhead genera un sistema de ejes locales x, y, z.  Estos ejes se irán rotándo o trasladando para dibujar en cierta posición del espacio un objeto. Por ejemplo, en el caso de rotación o traslación, intenta imaginar estas dos situaciones.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;Primero roto, y luego desplazo-&gt;&lt;/span&gt; El sistema de ejes local que va a dibujar rota cierto ángulo, después se desplazará una cantidad en una dirección.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 204, 0);"&gt;Primero desplazo y luego rozo--&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt; &lt;/span&gt;El sistema de ejes local se desplaza en una dirección, y luego rota&lt;br /&gt;&lt;br /&gt;Con el siguiente montaje usando GEM puedes comprobar que el efecto resultante cambiar el orden de rotación y traslación, es distinto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhIupscrtPI/AAAAAAAAAC4/WUCUe-i-cn8/s1600-h/4.6-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RhIupscrtPI/AAAAAAAAAC4/WUCUe-i-cn8/s320/4.6-1.png" alt="" id="BLOGGER_PHOTO_ID_5049149426076726514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;pulsa en la imagen para ampliar&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el caso de&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt; "Primero roto y luego desplazo"&lt;/span&gt; el efecto será que el objeto gira alrededor del eje del que me he desplazado. Es el caso del círculo rojo.&lt;br /&gt;&lt;br /&gt;Por otra parte, en el caso &lt;span style="color: rgb(51, 204, 0); font-style: italic;"&gt;"Primero desplazo y luego roto"&lt;/span&gt;, el efecto será que el objeto desplazado gira sobre sí mismo. Es la situación del círculo verde.&lt;br /&gt;&lt;br /&gt;Hacerte una imagen de lo que ocurre al rotar y desplazar, es la única manera de predecir que va a pasar con cierto orden de transformaciones. Además es importante saberlo para organizar estructuras de objetos dependientes unos de otros.&lt;br /&gt;&lt;br /&gt;En relación a esto último, fíjate que en los objetos dibujados hay un outlet. Eso indica que se puede continuar la línea de transformaciones, y dibujar otros objentos ¡en la misma gemlist!. Este es un ejemplo de eso mismo&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhIuwMcrtQI/AAAAAAAAADA/zc7eO-25vPw/s1600-h/4.6-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RhIuwMcrtQI/AAAAAAAAADA/zc7eO-25vPw/s320/4.6-2.png" alt="" id="BLOGGER_PHOTO_ID_5049149537745876226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Primero se dibuja un círculo rojo y luego uno verde. Pero las primeras transformaciones afectarán a todo lo que venga debajo, en este caso, a los dos círculos. Mientras que las transformaciones que hay tras el primer [circle], no pueden afectar hacia atrás, entonces sólo afectan al círculo verde.&lt;br /&gt;&lt;br /&gt;Si imaginas el movimiento de tu brazo, te puede ayudar. Antebrazo, brazo, mano y dedos, en ese orden son una línea gemhead. El antebrazo mueve a todo lo demás, incluso la posición de los dedos en el espacio, sin embargo podemos mover los dedos, sin alterar la posición del brazo por ejemplo.&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/4908934190193877178-8022887977280276478?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8022887977280276478/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8022887977280276478' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8022887977280276478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8022887977280276478'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/04/pd-orden-en-las-transformaciones-paso.html' title='Pd: orden en las transformaciones (paso 4.6)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/RhIupscrtPI/AAAAAAAAAC4/WUCUe-i-cn8/s72-c/4.6-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4634894351083380172</id><published>2007-03-24T16:51:00.000Z</published><updated>2007-03-24T17:21:09.665Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>pd: emitir con oggcast~</title><content type='html'>&lt;div style="text-align: justify;"&gt;Si ya &lt;a href="http://oggro.blogspot.com/2007/02/emitir-por-icecast.html"&gt;has configurado tu servidor icecast&lt;/a&gt;, o bién tienes la posibilidad de usar alguno remoto, puedes emitir con puredata sonido ogg vorbis. Es decir usando puredata como fuente (source). Encontrarás el objeto oggcast~ en el external &lt;span style="font-weight: bold;"&gt;pdogg&lt;/span&gt;, cuyo desarrollo se ha detenido.&lt;br /&gt;&lt;br /&gt;El siguiente patch te permitirá emitir a un servidor icecast:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/RgVafN6vMfI/AAAAAAAAACk/DFNLC-dUK0I/s1600-h/oggcast.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/RgVafN6vMfI/AAAAAAAAACk/DFNLC-dUK0I/s320/oggcast.png" alt="" id="BLOGGER_PHOTO_ID_5045538449896976882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El objeto oggcast~ recibe desde la parte izquierda dos canales de un sonido muy simple.  Pero podría ser, cómo no, cualquier cosa, incluso un archivo ogg. También recibe mensajes colocados ahí de arriba a abajo para sencillez visual.&lt;br /&gt;&lt;br /&gt;-&lt;span style="font-style: italic;"&gt;server 1&lt;/span&gt;, indica que usará la 'nueva' versión de icecast2, por defecto es icecast.&lt;br /&gt;-&lt;span style="font-style: italic;"&gt;passwd&lt;/span&gt; es donde introduces tu contraseña como fuente, que debes haber configurado en tu servidor icecast, o bien te la darán si no eres administrador.&lt;br /&gt;-&lt;span style="font-style: italic;"&gt;connect localhost puredata.ogg 8000&lt;/span&gt;. Indica respectivamente, el nombre del servidor (localhost), el punto de montaje (puredata.ogg), y el puerto por el que emitirás (8000).  Este último depende del puerto que tengas abierto en tu máquina para emisiones.&lt;br /&gt;-&lt;span style="font-style: italic;"&gt;vbr 44100 2 0.9&lt;/span&gt;, indican la frecuencia de muestreo , el número de canales, y un número entre 0 y 1 indicador de la calidad del audio (1 máxima- 0 mínima).&lt;br /&gt;-&lt;span style="font-style: italic;"&gt;disconnect&lt;/span&gt;, como su nombre indica corta la emisión.&lt;br /&gt;-&lt;span style="font-style: italic;"&gt;TITLE&lt;/span&gt;, son las etiquetas que recibe el oyente para información. Puedes añadir otras como ARTIST, PERFORMER, DESCRIPTION, GENRE, LOCATION, COPYRIGHT, CONTACT, DATE&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;(para más opciones mira la ayuda de oggcast~)&lt;br /&gt;&lt;br /&gt;Atención a la salida caliente de oggcast~, devuelve 1 si está activo o 0 si está apagado. Por defecto oggcast~ usa 2 canales y un buffer de 512, como ves puedes configurarlo con dos parámetros, al definir el objeto oggcast~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-4634894351083380172?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4634894351083380172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4634894351083380172' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4634894351083380172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4634894351083380172'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/03/pd-emitir-con-oggcast.html' title='pd: emitir con oggcast~'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZIIUDghgB4E/RgVafN6vMfI/AAAAAAAAACk/DFNLC-dUK0I/s72-c/oggcast.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1870105390221297149</id><published>2007-03-13T10:13:00.000Z</published><updated>2007-03-30T12:00:11.038+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: interruptores moses y spigot(paso 1.14)</title><content type='html'>&lt;div style="text-align: justify;"&gt;En el manejo de secuencias de datos, es necesario contar con interruptores o algún sistema que interrumpa el flujo, a modo de grifo de un chorro de agua. En puredata, con unos cuantos objetos y con ingenio, ya pueden construirse muchos sistemas - en teoría con los operadores lógicos y los números binarios se ha contruido todo el resto del tinglado llamado 'computación'. Sin embargo, siempre es una alegría saber que hay un objeto que hace exáctamente lo que quieres ;)&lt;br /&gt;&lt;br /&gt;[moses] tiene dos salidas, y un parámetro de control, que se varía con la entrada fría. El funcionamiento es sencillo. Si los datos que vienen por la entrada principal, no superan el valor que indica la entrada fría, [moses] dejará pasar los datos. Pero pasado el valor umbral, el flujo de datos saldra por la segunda salida.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RfZ9jXsnCkI/AAAAAAAAACU/iUrFNAI7tOY/s1600-h/1.14-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RfZ9jXsnCkI/AAAAAAAAACU/iUrFNAI7tOY/s320/1.14-1.png" alt="" id="BLOGGER_PHOTO_ID_5041354879497865794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En el montaje de la izquierda el valor de referencia es 0, por tanto por debajo de 0 los datos saldrán por la izquierda, y por debajo de 0, por el outlet derecho. Es un forma de separar números positivos de negativos. Por otra parte, en el montaje de la derecha, el valor umbral es 100, y el funcionamiento el mismo. Se podría hacer un sistema que mantiene un flujo de números alrededor de un valor de referencia, haciendo que según se pasen lo valores, por arriba o por abajo del valor umbral, pasen cosas distintas.&lt;br /&gt;&lt;br /&gt;Otro ejemplo de uso de moses:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RgzsascrtOI/AAAAAAAAACw/cHM8QGgOyl4/s1600-h/1.14-1.2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RgzsascrtOI/AAAAAAAAACw/cHM8QGgOyl4/s320/1.14-1.2.png" alt="" id="BLOGGER_PHOTO_ID_5047669225727702242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Al hacer bang sobre random, generará un número entre 0 y 99. Si es menor que la cantidad indicada en la segunda entrada de moses , pasará al primer bang, si supera dicho número se genera al segundo bang. Estamos eligiendo entre dos caminos con la probabilidad que asignemos. Ejemplo, si colocamos el valor de moses a 50, ocurrirán  los dos bang inferiores con igual probabilidad, o dicho de otra manera, al 50 %&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[spigot] es un interruptor en el sentido convencional. Permite el paso de datos siempre que el valor de su inlet frio, no sea cero. Si es cero, se cierra el grifo, si es otro valor [spigot] no existe. Mira este ejemplo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RfZ9oXsnClI/AAAAAAAAACc/F2mht6RSLRQ/s1600-h/1.14-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RfZ9oXsnClI/AAAAAAAAACc/F2mht6RSLRQ/s320/1.14-2.png" alt="" id="BLOGGER_PHOTO_ID_5041354965397211730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En este caso uso mensajes 1 o 0 para que sea como un interruptor, aunque como ves le va que ni pintado un toggle (control+alt+T). Es un objeto muy básico y útil.&lt;br /&gt;&lt;br /&gt;[En el external unauthorized existe el objeto [spigot~] que funciona igual para señales de audio.]&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/4908934190193877178-1870105390221297149?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1870105390221297149/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1870105390221297149' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1870105390221297149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1870105390221297149'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/03/pd-interruptores-moses-y-spigotpaso-114.html' title='Pd: interruptores moses y spigot(paso 1.14)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ZIIUDghgB4E/RfZ9jXsnCkI/AAAAAAAAACU/iUrFNAI7tOY/s72-c/1.14-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7400429666109684777</id><published>2007-03-07T17:31:00.000Z</published><updated>2007-03-07T17:41:40.426Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>pimm....ploommmm</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HttF5HVYtlQ"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HttF5HVYtlQ" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://geekproject.com/william.aspx"&gt;&lt;br /&gt;http://geekproject.com/william.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El contenido del video anterior, es a este &lt;a href="http://www.adecorar.com/estilos/exotico/index.cfm?pagina=estilos_exotico_002_002"&gt;TEXTO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;lo que la sinceridad al embuste.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-7400429666109684777?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7400429666109684777/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7400429666109684777' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7400429666109684777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7400429666109684777'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/03/pimmploommmm.html' title='pimm....ploommmm'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2936545075300250225</id><published>2007-03-04T12:59:00.000Z</published><updated>2007-04-03T11:49:05.924+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Espiral de ruido</title><content type='html'>&lt;div style="text-align: justify;"&gt;Veremos cómo hacer un loop de textura de vídeo sencillo, usando pdp. Sin más, escribe:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RerC8Ppd52I/AAAAAAAAABU/Bvv4IsiQ2L8/s1600-h/5.2-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RerC8Ppd52I/AAAAAAAAABU/Bvv4IsiQ2L8/s320/5.2-1.png" alt="" id="BLOGGER_PHOTO_ID_5038053473415718754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Generará un cuadro de ruido, o dicho de otra forma, una foto estática con ruido, cuando pulsas bang. El ruido visual en este caso no es más que pixeles coloreados al azar.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDDvpd53I/AAAAAAAAABc/Cdlla2XyRR8/s1600-h/5.2-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDDvpd53I/AAAAAAAAABc/Cdlla2XyRR8/s320/5.2-2.png" alt="" id="BLOGGER_PHOTO_ID_5038053602264737650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se puede convertir la foto de ruido a un vídeo, añadiendo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZIIUDghgB4E/RerDKPpd54I/AAAAAAAAABk/BCCUfaEI650/s1600-h/5.2-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ZIIUDghgB4E/RerDKPpd54I/AAAAAAAAABk/BCCUfaEI650/s320/5.2-3.png" alt="" id="BLOGGER_PHOTO_ID_5038053713933887362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahorq aparece [metro] generando bangs cada 40 milisegundos. En un segundo (1000 milisegundos) habrán ocurrido 1000/40=25 bangs, que es el standard para el formato de video PAL. Pulsando 1 obtienes entonces una animación de ruido.&lt;br /&gt;&lt;br /&gt;Complicando ligeramente el patch anterior:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDTvpd55I/AAAAAAAAABs/f6-w9A9IphM/s1600-h/5.2-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDTvpd55I/AAAAAAAAABs/f6-w9A9IphM/s320/5.2-4.png" alt="" id="BLOGGER_PHOTO_ID_5038053877142644626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aparecen nuevos objetos de pdp. Ahora hay dos secuencias de bang, dos [metro], independientes. Cada cual genera una animación de ruido distinta. Una se actualiza cada 40 milisegundos y otra cada segundo. A la de la derecha, le aplicamos un pdp_zoom, para acercar las manchas de colores; puedes jugar con este parámetro. Pero lo importante aquí es cómo conjuntar las dos animaciones en una sola, y aquí es donde entra en juego el mezclador [pdp_mix]. Este objeto, mezclará en cierta proporción dos entradas de secuencias de fotogramas. La cantidad de una secuencia u otra depende del parámetro de control, en este caso 0.7, que puede controlarse por la entrada más a la derecha de [pdp_mix].&lt;br /&gt;&lt;br /&gt;Ahora, haciendo un truco de magia, añade esta extrañeza al montaje:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/RerDa_pd56I/AAAAAAAAAB0/MGKF1MG5kus/s1600-h/5.2-5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/RerDa_pd56I/AAAAAAAAAB0/MGKF1MG5kus/s320/5.2-5.png" alt="" id="BLOGGER_PHOTO_ID_5038054001696696226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo pripero es ver qué significa [pdp_del]. Básicamente es un delay para cuadros de vídeo. En este caso sin la indicación de nada más, produce un retraso de un fotograma o cuadro, de manera que produce una línea retrasada en el tiempo (de bangs). Prueba a mezclar un vídeo, con él mismo retrasado con pdp_del. Si usas retrasos muy grandes, le estarás pidiendo mucho proceso a tu equipo, ya que debe guardar los fotogramas de diferencia&lt;br /&gt;&lt;br /&gt;En la figura anterior, aparece una cosa curiosa. Se mezcla una línea de cuadros con ella misma retrasada un solo cuadro (pdp_del sin parámetros). El efecto conseguido es simplemente más suavidad en el movimiento, produciendo una textura más suave. Sin embargo fíjate que ahora la salida de pdp_mix, recoge el efecto y vuelve a ser reintroducido a pdp_del.&lt;br /&gt;&lt;br /&gt;También aparece [pdp_glx], la elección de este o xv dependerá de tu hardware. Si xv es genérico glx se usa para sistemas con aceleración gráfica.&lt;br /&gt;&lt;br /&gt;Ahora bien, al fotograma retardado podemos aplicarle transformaciones, por ejemplo, si cada cuadro retardado y reintroducido lleva también un pequeño giro, se puede dar el efecto de imagen giratoria en espiral, que es uno de los 'trucos' que buscamos. Altera el montaje a este:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDfvpd57I/AAAAAAAAAB8/ocbqPVYv3wk/s1600-h/5.2-6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDfvpd57I/AAAAAAAAAB8/ocbqPVYv3wk/s320/5.2-6.png" alt="" id="BLOGGER_PHOTO_ID_5038054083301074866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El bucle que creamos con pdp_mix y pdp_del ahora lleva las transformaciones de rotación y zoom. Juega con estos parámetros, añdiendo nuevos efectos.&lt;br /&gt;&lt;br /&gt;Un toque final, da el efecto deseado.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDlvpd58I/AAAAAAAAACE/hLIYBax3_cY/s1600-h/5.2-7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDlvpd58I/AAAAAAAAACE/hLIYBax3_cY/s320/5.2-7.png" alt="" id="BLOGGER_PHOTO_ID_5038054186380289986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;la mezcla final, vuelve ser añadida al video controlado con [metro 1000], mediante [pdp_add] que siemplemente suma dos cuadros. También hay un efecto del punto sobre el que se hay zoom enviando centerx a [pdp_zoom] (0 es a la izquierda y 1 a la derecha). Ajustando los parámetros, podrás obtener una espiral fractal giratoria:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDtvpd59I/AAAAAAAAACM/zDMQA8BcV4w/s1600-h/5.2-8.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/RerDtvpd59I/AAAAAAAAACM/zDMQA8BcV4w/s320/5.2-8.png" alt="" id="BLOGGER_PHOTO_ID_5038054323819243474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;fuente: http://www.yourmachines.org/tutorials/pdvideolan.html#step_3&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2936545075300250225?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2936545075300250225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2936545075300250225' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2936545075300250225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2936545075300250225'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/03/pd-espiral-de-ruido.html' title='Pd: Espiral de ruido'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZIIUDghgB4E/RerC8Ppd52I/AAAAAAAAABU/Bvv4IsiQ2L8/s72-c/5.2-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6849691357138323184</id><published>2007-03-02T12:58:00.000Z</published><updated>2007-03-02T20:24:58.515Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><title type='text'>Emitir desde webcam con icecast y oggfwd</title><content type='html'>Suponiendo que ya has &lt;a href="http://oggro.blogspot.com/2007/02/emitir-por-icecast.html"&gt;configurado tu servidor icecast2&lt;/a&gt;  o bien dispones un servidor donde emitir, necesitarás los paquetes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ffmpeg2theora&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;oggfwd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El primero es capaz de convertir video strimeado :) a ogg theora. El segundo te permite emitir ogg, video (theora) o audio (vorbis) a un servidor icecast.&lt;br /&gt;&lt;br /&gt;Voy a suponer que tu webcam funciona en el dispositivo /dev/video0&lt;br /&gt;&lt;br /&gt;La manera de capturar en video ogg lo que ve tu webcam es esta:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ffmpeg2theora --v4l /dev/video0 --inputfps 25 --nosound -v 10  -x 160 -y 120 -o&lt;/span&gt; salida.ogg&lt;br /&gt;&lt;br /&gt;Vamos por partes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--v4l /dev/video0&lt;/span&gt; indica el dispositivo que leerá. Sería posible usando dvgrab grabar desde una cámara digital, si tenemos capturadora en dv de vídeo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--inputfps 25&lt;/span&gt; es el número de cuadros por segundo, y esto depende de las características de tu webcam y de la calidad que quieras dar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--nosound&lt;/span&gt; es evidente....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-v 10 &lt;/span&gt;es un indicador de la calidad del video, por defecto es 5, prueba con varios valores.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-x 160 -y 120&lt;/span&gt; indican el tamaño de cada cuadro, valor que depende también de las posibilidades de tu webcam así como de la calidad que quieras dar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-o salida.ogg&lt;/span&gt; guardará el resultado en un archivo ogg llamado salida.ogg Como veremos puedes indicar /dev/stdout o sólo "-"  (sin comillas) para enviar la salida a la salida standar y así poder recoger el resultado con otro programa. Cosa que haremos para el streaming.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Las opciones para oggfwd son sencillas&lt;br /&gt;&lt;br /&gt;oggfwd ipdelservidor puerto contraseña puntodemontaje&lt;br /&gt;&lt;br /&gt;por ejemplo para emitir en la red local&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;oggfwd localhost  8000 tupassword puntodemontaje.ogg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si tu puerto para emitir es el 8000. Para enganchar la salida de ffmpeg2theora a la entrada de oggfwd y que emita, sólo tenemos que conectar las dos líneas así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ffmpeg2theora --v4l /dev/video0 --inputfps 25 --nosound -v 10  -x 160 -y 120 -o salida.ogg | oggfwd localhost  8000 tupassword puntodemontaje.ogg&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6849691357138323184?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6849691357138323184/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6849691357138323184' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6849691357138323184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6849691357138323184'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/03/emitir-desde-webcam-con-icecast.html' title='Emitir desde webcam con icecast y oggfwd'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1056817657881738269</id><published>2007-02-27T22:25:00.000Z</published><updated>2007-02-27T23:54:53.255Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><title type='text'>Emitir por icecast</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Para instalar icecast, necesitas el paquete icecast2. También usaremos ices2 para emitir audio vorbis ogg, al servidor, instalado en nuestro equipo. &lt;/p&gt;&lt;div&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Supongo que tienes un router adsl, y al menos un equipo al que tienes acceso como administrador ;)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;(como superusuario)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;apt-get install icecast2 ices2&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-weight: bold; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;icecast2&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;icecast2 se configura con archivo xml colocado en &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;/etc/icecast2/icecast.xml&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;si lo editas verás que tiene muchas opciones, sin embargo sólo se necesita colocar algunos datos clave. Si el editor que usas tiene sintaxis coloreada, será más cómodo a la vista (en vim escribe :syntax on).&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Atiende a estas opciones:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;clients&amp;gt;10&amp;lt;/clients&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;sources&amp;gt;2&amp;lt;/sources&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;clients hace referencia a el número de personas que podrán conectarse a tu servidor para escuchar. sources es el número de emisiones simultaneas. Esto dependerá que la capacidad del tu linea de internet, de la red y equipo que uses. Generalmente tendrás que usar números pequeños ;)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Seguimos&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;authentication&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;    &amp;lt;!-- Sources log in with username 'source' --&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;     &amp;lt;source-password&amp;gt;contraseña&amp;lt;/source-password&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;     &amp;lt;!-- Relays log in username 'relay' --&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;     &amp;lt;relay-password&amp;gt;hackme&amp;lt;/relay-password&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;     &amp;lt;!-- Admin logs in with the username given below --&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;     &amp;lt;admin-user&amp;gt;admin&amp;lt;/admin-user&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;     &amp;lt;admin-password&amp;gt;contraseña&amp;lt;/admin-password&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/authentication&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Debes definir una contraseña source-password, los programas que emitan. También admin-user y admin-password  para el control del servidor. Las tres contraseñas no tienen que ser la misma, de hecho si el administrador del servidor icecast y el que emite, no es misma persona, deberían ser distintas.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;hostname&amp;gt;localhost&amp;lt;/hostname&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Por ahora colocaremos 'localhost' en hostname. localhost es un nombre genérico para la red local. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;La configuración puede afinarse mucho, pero dejaremos las otras opciones por defecto. Guarda el archivo. Edita el archivo /etc/default/icecast2 y coloca la propiedad ENABLE en true. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Puedes lanzar el servidor con &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;/etc/init.d/icecast2 start&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;o pararlo con&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;/etc/init.d/icecast2 stop&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Por último, abre el navegador y ve a la dirección &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;http://localhost:8000&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;lo cual te mostrará la página del servidor que has instalado. Si intentas entrar en Administración, te pedirá el nombre y contraseña de administrador que configurastes en el archivo icecast.xml&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-weight: bold; text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;ices2&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;El servidor está corriendo, lo que necesitamos ahora es emitir datos desde una fuente (source). Para eso usaremos ices2 que nos permitirá emitir audio codificado en ogg a un servidor icecast. La fuente y el servidor no tienen que estar en la misma máquina, sin embargo en este ejemplo sí es así. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;ices2 es muy configurable según el tipo de emisión que queramos: lista de archivos, captura de sonido en tiempo real, etc. El siguiente es un ejemplo de configuración para emitir una lista de archivos ogg que tenemos colocados en alguna parte del sistema.  El siguiente ejemplo, yo lo pongo en /etc/icecast2/ices2.xml, pero no tiene que ser así. Puedes tener una lista de archivos de configuración en una carpeta especial. En cualquier caso este es un ejemplo, con el que puedes probar:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;ices&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;background&amp;gt;1&amp;lt;/background&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;logpath&amp;gt;/var/log/icecast2&amp;lt;/logpath&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;logfile&amp;gt;ices.log&amp;lt;/logfile&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;loglevel&amp;gt;4&amp;lt;/loglevel&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;consolelog&amp;gt;0&amp;lt;/consolelog&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;pidfile&amp;gt;/tmp/ices.pid&amp;lt;/pidfile&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;  &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;stream&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;metadata&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;name&amp;gt;Nombre de la raio&amp;lt;/name&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;genre&amp;gt;género&amp;lt;/genre&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;description&amp;gt;descripción&amp;lt;/description&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;/metadata&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;  &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;input&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;module&amp;gt;playlist&amp;lt;/module&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;param name="type"&amp;gt;basic&amp;lt;/param&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;param name="file"&amp;gt;/home/rodrigo/icemision.txt&amp;lt;/param&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;param name="random"&amp;gt;1&amp;lt;/param&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;param name="restart-after-reread"&amp;gt;0&amp;lt;/param&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;param name="once"&amp;gt;0&amp;lt;/param&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;/input&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;  &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;instance&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;hostname&amp;gt;localhost&amp;lt;/hostname&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;port&amp;gt;8000&amp;lt;/port&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;password&amp;gt;contraseña&amp;lt;/password&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;mount&amp;gt;/puntomontaje.ogg&amp;lt;/mount&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;  &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;reconnectdelay&amp;gt;2&amp;lt;/reconnectdelay&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;reconnectattempts&amp;gt;5&amp;lt;/reconnectattempts&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;maxqueuelength&amp;gt;80&amp;lt;/maxqueuelength&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;encode&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;                &amp;lt;nominal-bitrate&amp;gt;64000&amp;lt;/nominal-bitrate&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;                  &amp;lt;samplerate&amp;gt;44100&amp;lt;/samplerate&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;                  &amp;lt;channels&amp;gt;2&amp;lt;/channels&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;              &amp;lt;/encode&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;/instance&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;          &amp;lt;/stream&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;  &amp;lt;/ices&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;Lo que debes personalizar es lo siguiente:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;  &amp;lt;metadata&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;name&amp;gt;Nombre de la radio&amp;lt;/name&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;genre&amp;gt;género&amp;lt;/genre&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;      &amp;lt;description&amp;gt;descripción&amp;lt;/description&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;  &amp;lt;/metadata&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;Muy importante&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;param name="file"&amp;gt;/donde/quieras/listadeoggs.txt&amp;lt;/param&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;path de un archivo de texto que contiene una lista de los archivos ogg que se van a emitir.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;   &amp;lt;hostname&amp;gt;localhost&amp;lt;/hostname&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;   &amp;lt;port&amp;gt;8000&amp;lt;/port&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;  &amp;lt;password&amp;gt;contraseña&amp;lt;/password&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;  &amp;lt;mount&amp;gt;/puntodemontaje.ogg&amp;lt;/mount&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Tanto hostname como password, deben ser las mismas que configurastes para el servidor, respectivamente hostname y source-password.  El punto de montaje puedes ponerle cualquier nombre terminado, y es el punto de acceso a la emisión. Por ejemplo, ya que vamos a emitir en la red local, por el puerto 8000, la dirección va a ser&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;http://localhost:8000/puntodemontaje.ogg&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;También hay datos sobre la calidad del audio a emitir, cosa que debes tener en cuenta para emisiones masivas, las cuales deberían estar en mono y un grado de compresión considerable. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Necesitas crear un archivo de texto en alguna parte que contiene las direcciones de archivos ogg. Una ayuda para eso puede ser:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;find /home/tusuario/ -iname '*.ogg' &amp;gt; misogg.txt&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;La cual busca archivos terminados en .ogg en la carpeta que le digas, y mete los resultados en el archivo misogg.txt  No olvides decir dónde está dicho archivo en la configuración de ices2&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Guardando el nuevo ices2.xml, y suponiendo que lo has puesto en /etc/icecast2/ices2.xml  lanzamos ices2 así:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;ices2 /etc/icecast2/ices2.xml&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Si todo va bien, estarás emitiendo desde ices2 (source) hasta el servidor icecast, que está en la misma máquina. Para escuchar la emisión, desde algún usuario, escribe en el navegador:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;http://localhost:8000/canciones.ogg&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;suponiendo que el punto de montaje es /canciones.ogg&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Deberías escuchar tu música&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify; font-weight: bold;" dir="ltr"&gt;&lt;span style="font-size:130%;"&gt;Emitir a internet, o fuera de tu red local&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Para ello, debes asegurarte de que el puerto 8000 está abierto para tu máquina. Para ello denesitas saber:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;1- La ip del router (generalmente 192.168.1.1 )&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;2- El nombre y contraseña de administración del router, que te dan al instalarlo.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;3- La ip de tu máquina. Podría ser que varias máquinas estuvieran conectadas al mismo router. En este caso, la ip de la máquina que tenga el servidor icecast (como supongo que usas gnuLinux, escribe como root , ifconfig eth0, y en  inet addr tendrás la ip de tu máquina en la red local)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Debes entrar en la configuración del router, poniendo en el navegador:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;http://192.168.1.1   (busca en la documentación de tu router)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;En las opciones de nat, hay que abrir el puerto 8000. En mi caso, me pide los datos:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Ip Adresses&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;global: 0.0.0.0&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;internal: (coloca la ip de tu máquina, punto 3)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;type: tcp&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;External port range&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;start:8000&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;end:8000&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Internal port range&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;start:8000&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;end:8000&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Guarda la configuración y reinicia router.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;Ahora podrás emitir a internet, si conoces tu ip pública. Para conocerla puedes visitar:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;&lt;a href="http://www.adslayuda.com/ip.html"&gt;http://www.adslayuda.com/ip.html&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;(si tu provedor usa un proxi, la dirección ip que de dan en dicha dirección, será "falsa", deberías preguntar entonces)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" dir="ltr"&gt;La dirección para otros ;) será&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p dir="ltr" style="font-style: italic; text-align: justify;"&gt;http://tuippublica:8000/puntodemontaje.ogg.m3u&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-1056817657881738269?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1056817657881738269/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1056817657881738269' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1056817657881738269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1056817657881738269'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/02/emitir-por-icecast.html' title='Emitir por icecast'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2684178592665661228</id><published>2007-02-27T20:04:00.000Z</published><updated>2007-02-27T21:22:21.426Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: operaciones con expr (paso 1.13)</title><content type='html'>&lt;div style="text-align: justify;"&gt;PureData tiene una forma de escribir operaciones matemáticas en forma de cadenas de texto, tal y como lo escribiríamos en una fórmula. Esto se separa un poco de la filosofía conexionista, pero en realidad permite escribir objetos con formulas complejas, y todo metido en un recuadrito. Veamos la una de las más simples quizas:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/ReSO4zbWlxI/AAAAAAAAAAk/e5umqMOTtL8/s1600-h/1.13-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/ReSO4zbWlxI/AAAAAAAAAAk/e5umqMOTtL8/s320/1.13-1.png" alt="" id="BLOGGER_PHOTO_ID_5036307389835810578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;El objecto expr, realiza la suma. De igual manera podríamos usar otras operaciones. En el siguiente ejemplo se multiplican los valores que se reciben por las entradas, representadas por $f1 y$f2&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZIIUDghgB4E/ReSPBjbWlyI/AAAAAAAAAAs/tguSBCcx-lA/s1600-h/1.13-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZIIUDghgB4E/ReSPBjbWlyI/AAAAAAAAAAs/tguSBCcx-lA/s320/1.13-2.png" alt="" id="BLOGGER_PHOTO_ID_5036307540159665954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;la f1 se refiere a la entrada de la izquierda y la f2 a la derecha. Prueba a añadir más entradas, simplemente introduciendo más $fn en las operaciones.&lt;br /&gt;&lt;br /&gt;Un ejemplo más que calcula el valor seno de un número en grados&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZIIUDghgB4E/ReSPJDbWlzI/AAAAAAAAAA0/YIjeZD1LuhM/s1600-h/1.13-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZIIUDghgB4E/ReSPJDbWlzI/AAAAAAAAAA0/YIjeZD1LuhM/s320/1.13-3.png" alt="" id="BLOGGER_PHOTO_ID_5036307669008684850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;La f de $f1 significa float (número 'con decimales') sin embargo puedes cambiarlo por i, entero, o s símbolo. En la ayuda de pd encontrarás más ejemplos.&lt;br /&gt;&lt;br /&gt;Una opción interesante es añadir a las expresiones condicionales para la elección. El viejo if...then... tambien puedes incluirlo en las expresiones.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/ReSPPzbWl0I/AAAAAAAAAA8/yK5-mRxaWyQ/s1600-h/1.13-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/ReSPPzbWl0I/AAAAAAAAAA8/yK5-mRxaWyQ/s320/1.13-4.png" alt="" id="BLOGGER_PHOTO_ID_5036307784972801858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;En concreto en este caso, si el número $f1 es mayor que 0, se devuelve el mismo número, pero en caso contrario, se devuelve 0. La sintáxis viene a ser así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if (&lt;span style="color: rgb(51, 51, 255);"&gt;condición&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;lo que pasa si se da la condición&lt;/span&gt;, l&lt;span style="color: rgb(153, 51, 0);"&gt;o que pasa si no se da la condición&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como vés, esto añade la posibilidad de incluir ecuaciones y cálculos detallados en una caja de objeto, lo cual da mucha más potencia a nuestros patchs. También existe no obstante, expr~ para operaciones con las muestras de sonido en tiempo real, así como fexpr~ para manejar vectorialmente conjuntos de muestras, pero no lo veremos en este capítulo.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2684178592665661228?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2684178592665661228/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2684178592665661228' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2684178592665661228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2684178592665661228'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/02/pd-operaciones-con-expr.html' title='Pd: operaciones con expr (paso 1.13)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZIIUDghgB4E/ReSO4zbWlxI/AAAAAAAAAAk/e5umqMOTtL8/s72-c/1.13-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4278018675409995435</id><published>2007-02-23T10:46:00.000Z</published><updated>2007-05-20T11:58:19.716+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>pd: video tutoriales</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=1FhidNbA4M8"&gt;0 PD testing video&lt;/a&gt;&lt;br /&gt;Si haces eso y suena, ya puedes empezar a trabajar ;)&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=emXA-NtSAx0"&gt;1 PureData- envolvente sencilla&lt;/a&gt;&lt;br /&gt;Introducción al uso de [line]. Line recibe mensajes con dos argumentos, que respectivamente son 'hasta qué valor llegarás' y 'cuánto tiempo en milisegundos tardarás en alcanzarlo'&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=EqXHfAaIz64"&gt;2 PureData- batidos&lt;/a&gt;&lt;br /&gt;Montaje sencillo con dos osciladores. De paso, como sus frecuencias son muy cercanas, se muestra el efecto de batidos.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=KF4Gk84Y2bk"&gt;3 PureData- Oscilador de Tabla de ondas&lt;/a&gt;&lt;br /&gt;tabosc4~ lee una tabla tantas veces por segundo como indiquemos, eso permite dibujar la onda. Sig~ convierte a audio un valor numérico, esencial para controlar tabosc4~. Fijate como se pueden enviar dibujos de onda directamente a la tabla&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=XHA9V2J-UcA"&gt;4 PureData- Dibujar una onda diente de sierra&lt;/a&gt;&lt;br /&gt;phasor~ genera una onda con dibujo 'diente de sierra'. Puesto que genera valores entre 0 y 1, le restamos [-~  0.5] para centrarla. tabwrite~ dibuja la onda cuando recibe un bang&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=8X9piaeqt9g"&gt;5 PureData- objecto METRO&lt;/a&gt;&lt;br /&gt;Ejemplo sencillo de sincronización con [metro]. Metro tiene un parámetro expresado en milisegundos, que indica cada cuanto tiempo generará un bang. En el vídeo en tiempo real con pd, este objeto es esencial. El significado de select se ve por si mismo&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ioQ9ghfvcuE"&gt;6 PureData- Minisecuencia MIDI&lt;/a&gt;&lt;br /&gt;Aunque no es muy representativo de lo que puede hacerse con MIDI, ejemplo de generación de 10 notas midi, mientras las almacena en una tabla.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=CQpUVwSVUGg"&gt;7 PureData- player de ogg&lt;/a&gt;&lt;br /&gt;Se muestra un sencillo player de ogg vorbis. oggread~ pertenece al external pdogg, por tanto debes tenerlo instalado para que funcione (en la versión 0.39-2 de puredata-extended está). seek selecciona el punto desde donde el quieres escuchar, en segundos.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=O9Rppon4tyA"&gt;8 PureData- Sampler Simple&lt;/a&gt;&lt;br /&gt;Usando  [soundfiler] puedes leer un archivo de sonido externo en una tabla.  posteriormente con [tabplay~] es posible reproducirlo. En este ejemplo spigot funciona como un interruptor para activar un bucle en la reproducción.  ";pd dsp $1", muestra otra manera de activar/desactivar el sonido.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=NLjYHJBkP_k"&gt;9 PureData- Ondas desde phasor~&lt;/a&gt;&lt;br /&gt;Aplicando transformaciones directamente a la señar que produce phasor~, se pueden obtener las ondas típicas usadas en síntesis sustractiva. Senoidal, Cuadrada, Diente de sierra, Triangular, y por supuesto muchas más.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=DMFj8W7nKvo"&gt;10. PureData- Sampler con phasor~&lt;/a&gt;&lt;br /&gt;[phasor~] puede utilizarse como lector de una grabación, ya que va periodicamente desde 0 hasta 1. Multiplicando la salida de [phasor~] por el número de muestra, ira desde 0 hasta el número de muestras.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-4278018675409995435?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4278018675409995435/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4278018675409995435' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4278018675409995435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4278018675409995435'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/02/pd-video-tutoriales.html' title='pd: video tutoriales'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6034983130167550981</id><published>2007-02-18T18:25:00.000Z</published><updated>2007-02-18T18:43:19.270Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>"yo soy" es pasado</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.artehistoria.com/tienda/banco/jpg/MAC17048.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.artehistoria.com/tienda/banco/jpg/MAC17048.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;"cuadrado negro sobre fondo blanco" (1913)&lt;br /&gt;&lt;/span&gt;&lt;span class="texto2fichalink"&gt;&lt;span style="font-size:85%;"&gt;Kasimir Severinovitc Malévitch&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo más claro, contundente, radical, intrépido, valiente, preciso, real, científico, objetivo, considerado, compasivo, abierto, profundo, misterioso, oscuro, e íntimo que puedes decir es simplemente: &lt;span style="font-style: italic;"&gt;'yo soy' es pasado&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;¿Te atreves a realizarlo?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6034983130167550981?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6034983130167550981/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6034983130167550981' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6034983130167550981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6034983130167550981'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/02/yo-soy-es-pasado.html' title='&quot;yo soy&quot; es pasado'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2450506309729325500</id><published>2007-02-18T12:45:00.000Z</published><updated>2007-02-18T12:46:54.772Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>yourmachines</title><content type='html'>Algunos tutoriales (en inglés) sobre audio y video usando softwarel libre:&lt;br /&gt;http://www.yourmachines.org/tutorials.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2450506309729325500?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2450506309729325500/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2450506309729325500' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2450506309729325500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2450506309729325500'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/02/yourmachines.html' title='yourmachines'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8943168184395435758</id><published>2007-02-12T19:09:00.000Z</published><updated>2007-02-13T12:06:49.669Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Objetos pd</title><content type='html'>&lt;pre&gt;Clases para pd, incluyendo algunos paquetes externos usuales.&lt;br /&gt;&lt;a href="http://ptechnic.org/puredata/pdcommands.txt"&gt;http://ptechnic.org/puredata/pdcommands.txt&lt;/a&gt;&lt;br /&gt;(en traducción)&lt;br /&gt;&lt;br /&gt;&lt;olaf.matthes@gmx.de&gt;&lt;olaf.matthes@gmx.de&gt;&lt;br /&gt;&lt;/olaf.matthes@gmx.de&gt;&lt;/olaf.matthes@gmx.de&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8943168184395435758?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8943168184395435758/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8943168184395435758' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8943168184395435758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8943168184395435758'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/02/objentos-pd.html' title='Objetos pd'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-747284766269142181</id><published>2007-01-28T20:54:00.000Z</published><updated>2007-01-28T20:59:21.176Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Libro sobre técnicas de síntesis analógica</title><content type='html'>Jacob Joaquin ha escrito (en realidad revisado una versión anterior) este libro titulado "Explorando técnicas de síntesis analógica", que puede ser leído on-line aquí:&lt;br /&gt;&lt;a href="http://www.thumbuki.com/csound/articles/east/"&gt;&lt;br /&gt;http://www.thumbuki.com/csound/articles/east/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-747284766269142181?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/747284766269142181/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=747284766269142181' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/747284766269142181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/747284766269142181'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/01/libro-sobre-tcnicas-de-sntesis-analgica.html' title='Libro sobre técnicas de síntesis analógica'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8246505368082213881</id><published>2007-01-12T12:27:00.000Z</published><updated>2007-01-12T12:31:40.608Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Banco de imágenes y Sonidos del MEC</title><content type='html'>Banco de sonidos libres en formato ogg y mp3, también imágenes y animaciones, listos para descarga, en la web del Ministerio de Educación y Ciencia:&lt;br /&gt;&lt;a href="http://recursos.cnice.mec.es/bancoimagenes4/"&gt;&lt;br /&gt;http://recursos.cnice.mec.es/bancoimagenes4/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;puedes acceder directamente a los sonidos aquí:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://recursos.cnice.mec.es/bancoimagenes/sonidos/directorio.php"&gt;http://recursos.cnice.mec.es/bancoimagenes/sonidos/directorio.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8246505368082213881?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8246505368082213881/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8246505368082213881' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8246505368082213881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8246505368082213881'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2007/01/banco-de-imgenes-y-sonidos-del-mec.html' title='Banco de imágenes y Sonidos del MEC'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4434823975167961528</id><published>2006-11-30T22:12:00.000Z</published><updated>2006-11-30T22:25:39.910Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vídeo'/><title type='text'>Effectv</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://effectv.sourceforge.net/screenshots/ripple.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://effectv.sourceforge.net/screenshots/ripple.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://effectv.sourceforge.net/screenshots/edge.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://effectv.sourceforge.net/screenshots/edge.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Effectv&lt;/span&gt; es un procesador de efectos en tiempo real. Tiene una serie de efectos de vídeo que aplicas sobre una fuente. La instalación en Ubuntu/debian es sencilla si no vas buscando la última versión:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install effectv&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Suponiendo que tienes la webcam, cámara o capturadora etc en /dev/video, puedes lanzar effectv así&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;effectv -device /dev/video&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con las teclas de las flechas arriba o abajo vas cambiando de efecto. Puedes encontrar no obstante más información en:&lt;br /&gt;&lt;br /&gt;http://effectv.sourceforge.net/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*Grabar con vloopback&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;effectv soporta vloopback, por lo que puedes instalarlo (mirar aquí)  y lanzar effectv con una línea como esta:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;effectv -vloopback /dev/video1 -channel 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usando ffmpeg como codificador:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ffmpeg -vd /dev/video2 -s 320x240 effect.mpg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo cual guarda lo que procesa effectv en el archivo effect.mpg&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;*Añadir efectos en tiempo real a una video conferencia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por ejemplo usaremos amsn. La misma línea de antes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;effectv -vloopback /dev/video1 -channel 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lanzamos amsn, y en la configuración de la cámara (preferencias--&gt;otras--&gt;cámara) , selecciona effectv como controlador.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-4434823975167961528?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4434823975167961528/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4434823975167961528' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4434823975167961528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4434823975167961528'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/effectv.html' title='Effectv'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3704151458333578705</id><published>2006-11-28T19:01:00.000Z</published><updated>2006-11-28T19:26:50.219Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='csound'/><title type='text'>Blue</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.csounds.com/stevenyi/blue/screenshots/orchManager.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.csounds.com/stevenyi/blue/screenshots/orchManager.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;requiere Csound&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Blue es un entorno gráfico para Csound, aunque habría que decir que en muchos aspectos lo completa, incluso supera. La web de Blue es esta:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.csounds.com/stevenyi/blue/"&gt;http://www.csounds.com/stevenyi/blue/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;está escrito en java así que necesitaremos el java run-time para ejecutarlo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install  sun-java5-jre&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recomiendo bajar la última versión de blue, el paquete "installer".  Y lo ejecutamos con un línea como esta:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;java -jar blue_0.109.0_installer.jar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En el proceso de instalación eligirás dónde los vas a instalar. Yo lo pondré en mi carpeta de usuario, en la carpeta blue.&lt;br /&gt;&lt;br /&gt;Para ejecutarlo, sólo tienes que entrar en la carpeta blue, y en bin, para luego ejecutar&lt;br /&gt;&lt;br /&gt;./blue.sh&lt;br /&gt;&lt;br /&gt;O si quieres, crea un archivo de texto&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;vim blue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Escribe esto en él (pulsa i para escribir en vim)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#!/bin/bash&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;$HOME/blue/bin/blue.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Guarda el archivo pulsando :wq&lt;br /&gt;&lt;br /&gt;Da permisos de ejecución al archivo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo chmod +x blue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Guarda el archivo en /usr/local/bin&lt;br /&gt;&lt;br /&gt;Ahora podrás lanzar blue desde cualquier parte escribiendo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;blue&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-3704151458333578705?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3704151458333578705/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3704151458333578705' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3704151458333578705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3704151458333578705'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/blue.html' title='Blue'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3602525772087466341</id><published>2006-11-27T11:46:00.000Z</published><updated>2006-11-27T11:51:59.914Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>Avelino Herrera</title><content type='html'>Un sitio recomendable a los interesados en Audio, por la calidad de sus contenidos: tutoriales y ejemplos de síntesis sonora&lt;br /&gt;&lt;br /&gt;&lt;a href="http://avelino.gabiot.com/blog/"&gt;http://avelino.gabiot.com/blog/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-3602525772087466341?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3602525772087466341/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3602525772087466341' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3602525772087466341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3602525772087466341'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/avelino-herrera.html' title='Avelino Herrera'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7280396503646349307</id><published>2006-11-27T11:08:00.000Z</published><updated>2006-11-28T19:28:38.753Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: patch, subpatch y abstracciones (1.12)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Cuando abres pd y creas una ventana nueva (pulsando control+n o en el menú file) estás creando un Patch. La manera de organizar el entorno de programación es entonces en patchs. Un patch puede contener subpatch, o subventanas para nosotros, que se abren o guardan cuando guardamos el patch principal. En el siguiente ejemplo se han creado tres subpatch, escribiendo dentro de un objeto, "pd" seguido del nombre que queramos darle al subpatch.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/186/599235130638901/1600/848014/1.12-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/186/599235130638901/320/34824/1.12-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nada más crearlos se abrirán otras subventas, que puedes cerrarlas, y volverlas a abrir pulsando en los objetos correspondientes. Aunque fíjate que el tercero tiene tres inlets o entradas, y un outlet o salida. Eso es algo interesante de los subpatch, que pueden añadirse inlets u outlets para interactuar con ellos como si fueran objetos.  Este es el contenido del tercer subpatch del ejemplo anterior&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/186/599235130638901/1600/463748/1.12-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/186/599235130638901/320/94727/1.12-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los inlets se definen escribiendo precísamente "inlet", y se colocarán de izquierda a derecha; ese orden será el mismo que tendrán los inlets en la ventana general. Es un subpatch trivial, pues hace la suma de tres números. Igual que ocurre con los inlets, pasa con los outlets.&lt;br /&gt;&lt;br /&gt;De esta manera, puedes crear submontajes dentro de otros, manteniendo la interacción entre ellos, lo cual permite ordenar el programa en capas, para que sea mucho más tratable. Prueba a construir los subpatch anteriores, e interactuar con el subpatch que hace la suma de tres números.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Abstracciones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Algo que se deriva de lo anterior y es si cabe más interesante, es que lo que has aprendido sobre colocar objetos [inlet]  y [outlet] , puedes hacerlo sobre un patch general. Pero  entonces  ¿desde dónde?  y ¿a dónde?  enviará los datos. Puedes guardar el patch, y decirle a PureData dónde está mediante File--&gt;Path.... Imagina que creas un patch nuevo, e introducimos lo que hay en la segunda figura (la triple suma). Guardamos el patch, por ejemplo con el nombre trisuma.pd . Indicamos dónde lo puede encontrar a Pd, entonces ahora siempre que uses pd, puedes añadir tu nuevo objeto (abstracción)&lt;br /&gt;&lt;br /&gt;[trisuma]&lt;br /&gt;&lt;br /&gt;que tendrá tres inlet y un outlet. Así de simple. Es habitual, crearte una carpeta para tus abstracciones, de manera que si cambias de máquina o reinstalas pd, siempre puedes volver a indicar la localización de tus propios objetos, y usarlos.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&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/4908934190193877178-7280396503646349307?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7280396503646349307/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7280396503646349307' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7280396503646349307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7280396503646349307'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-patch-subpatch-y-abstracciones-112.html' title='Pd: patch, subpatch y abstracciones (1.12)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7429581046492119841</id><published>2006-11-18T20:26:00.000Z</published><updated>2006-11-18T20:35:44.635Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vídeo'/><title type='text'>Webcam, o intentarlo</title><content type='html'>&lt;div style="text-align: justify;"&gt;Peripecias para instalar una webcam en ubuntu linux.&lt;br /&gt;&lt;br /&gt;Enchufo la webcam usb, abro un terminal y escribo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;lsusb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo cual listará los dispositivos usb enchufados. A mí me sale&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Bus 001 Device 002: ID 046d:092f Logitech, Inc&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eso indica que tengo un dispositivo Logitech en el usb nº 2. Después de id viene el código de fabricante y número identificador del producto. &lt;span style="font-style: italic;"&gt;ID 046d:092f&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ve a esta lista, y comprueba que tu cámara (mirando la columna Vendor ID, y product ID) está soportada.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;http://mxhaard.free.fr/spca5xx.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si está podrás instalar el modulo spca5xx&lt;br /&gt;&lt;br /&gt;Aquí podrás bajar dos versiones del módulo según sea la versión de tu kernel&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;http://mxhaard.free.fr/download.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Averiguas la versión de tu kernel, escribiendo en un terminal&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;uname -r&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Baja entonces la opción que te convenga, según sea tu kernel más moderno o más antiguo.&lt;br /&gt;&lt;br /&gt;Para facilitar las herremietas necesarias para compilar, instalo el paquete module-assistant&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo apt-get install module-assistant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lanzo el programa como administrador&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo module-assistant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eligo la opción PREPARE, que me bajará los paquetes necesarios para compilar módulos, si no los tienes ya.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ve a donde lo hayas bajado, y descomprime&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;tar zxvf gspcav(...).tar.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;entra y escribe&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y luego&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cargas el módulo nuevo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo insmod spca5xx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(puedes reiniciar la máquina ahora si quieres, no se si el dispositivo de video se crea en este punto, o hay que reiniciar)&lt;br /&gt;&lt;br /&gt;Se han creado nuevos dispositivos de video&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;ls /dev/video*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora puedes instalar un programa para testear la webcam como camorama&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo apt-get install camorama&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con el comando camorama,  verás un programa sencillo para  trapichear con la  webcam. Si  tienes  varios dispositivos de vídeo, puedes ajustar el lanzamiento con &lt;span style="font-style: italic;"&gt;-d&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;camorama -d /dev/video0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&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/4908934190193877178-7429581046492119841?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7429581046492119841/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7429581046492119841' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7429581046492119841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7429581046492119841'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/webcam-o-intentarlo.html' title='Webcam, o intentarlo'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1796933918272319038</id><published>2006-11-18T11:38:00.000Z</published><updated>2006-11-28T19:38:26.247Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>huérfanos de sentido</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.webislam.com/imagenes/articulos/usura%20web.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.webislam.com/imagenes/articulos/usura%20web.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div  style="margin: 0cm 0cm 6pt; text-align: center;font-family:arial;"&gt;&lt;em&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;..[quien] no presta con usura ni cobra intereses..., un hombre así es justo.” &lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="text-align: center; font-family: arial;"&gt; &lt;/div&gt;&lt;div  style="margin: 0cm 0cm 6pt; text-align: center;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;(Ezequiel 18 8-9)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Me pregunto, si sería posible crear lugares exentos de especulación económica, como (supongo) que es el polo sur. Ante la mirada de la persona moderna y a la última -dicho con toda la ironía de la que soy capaz- esos lugares serían improductivos, altares a la inutilidad. "Algo es útil si es rentable en cuanto al capital que produce".&lt;br /&gt;&lt;br /&gt;Esa máxima que a muchos nos ronda la cabeza, como ronda la cabeza el número ganador 3 veces seguidas en una ruleta,  no es que sea verdad o mentira, es que es una exageración, una distorsión en la conciencia. Desde mi punto de vista, fruto de la adolescencia de la ciencia económica, que ha pasado y pasa, por una etapa narcisista, buscando sus propios límites. Como apuntó Amartya Sen, la economía debería volverse a las facultades de ética, y subyugarse como una disciplina brazo de esta. Pero amigos, la ética está en crisis como edificio único y global, por tanto la usura calculada campa a sus anchas, coja y sin bastón.&lt;br /&gt;&lt;br /&gt;Por añadir otra imagen a lo que quiero sugerir, me gustaría imaginar un gran bosque vedado a los humanos, para que me entendáis nada rentable e inútil; vacío de altruismo o avaricias. Que fuera virgen, aunque sólo sea de forma gestual  -gestos verdaderos que hacen ritos falsos- como reconocimiento de que hay cosas, la mayoría, que no nos pertenecen; más bien pertenecemos a ellas.&lt;br /&gt;&lt;br /&gt;¿Existe un lugar así?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-1796933918272319038?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1796933918272319038/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1796933918272319038' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1796933918272319038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1796933918272319038'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/hurfanos-de-sentido.html' title='huérfanos de sentido'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5662525251956486209</id><published>2006-11-17T13:05:00.000Z</published><updated>2006-11-17T13:16:36.078Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: transformaciones básicas (paso 5.2)</title><content type='html'>Añadamos al ejemplo anterior, otras transformaciones sencillas para vídeo (ver paso anterior)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/186/599235130638901/1600/98716/5.2-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/186/599235130638901/320/435012/5.2-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se añade&lt;br /&gt;&lt;br /&gt;[pdp_agc] para controlar el brillo&lt;br /&gt;[pdp_contrast]  para  el contraste&lt;br /&gt;[pdp_saturation]  controla la cantidad de blanco o saturación&lt;br /&gt;&lt;br /&gt;Son tres transformaciones básicas tanto en  la fotografía como  en la imagen en general.  Las tres se controlan mendiante un único inlet.&lt;br /&gt;&lt;br /&gt;En este otro ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/186/599235130638901/1600/664974/5.2-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/186/599235130638901/320/147049/5.2-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;que no mezclo con el anterior para  que sea más sencilla la comprensión,  se usan dos trasnformaciones también muy simples.  Esta vez un  sólo objeto  nos permite cambiar  dos parámetros  [pdp_zrot].  Los dos inlet empezando por la derecha controlan:&lt;br /&gt;&lt;br /&gt;1º  rotación. Puedes rotar la imagen de video una cantidad en grados&lt;br /&gt;2ª zoom. Haces zoom sobre ella, siendo 1 el aspecto original. Fíjate que puedes hacer un mosaico de imágenes alejando el zoom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-5662525251956486209?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5662525251956486209/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5662525251956486209' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5662525251956486209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5662525251956486209'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-transformaciones-bsicas-paso-52.html' title='Pd: transformaciones básicas (paso 5.2)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2871934108194638410</id><published>2006-11-10T13:17:00.000Z</published><updated>2006-11-10T13:29:53.831Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Puredyne</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://puredyne.goto10.org/attachment/wiki/ScreenShot/2.2.82-snap2-small.png?format=raw"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://puredyne.goto10.org/attachment/wiki/ScreenShot/2.2.82-snap2-small.png?format=raw" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Pulsa para ampliar&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Pure:dyne es una distribución de gnulinux, basada en &lt;a href="http://devel.dynebolic.org/http://devel.dynebolic.org/"&gt;dyne:coreII &lt;/a&gt;&lt;br /&gt;Su objetivo es proporcionar un sistema operativo libre, en forma de un CD-live (arrancable desde una unidad lectora de cd-rom), a artistas gráficos, de audio y video. Con utilidades para la creacción y el streaming. A diferencia de dyne:core, Pure:dyne incorpora PURE DATA, preinstalado con muchos importantes externals y abstracciones. También incorpora csound, supercollider, fluxus y otros programas muy potentes para audio.&lt;br /&gt;&lt;br /&gt;La web principal es:&lt;br /&gt;&lt;br /&gt;http://puredyne.goto10.org/wiki/&lt;br /&gt;&lt;br /&gt;lo puedes bajar desde aquí, eligiendo la versión estable o la última y "de pruebas"&lt;br /&gt;&lt;br /&gt;http://puredyne.re-draw.org/&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2871934108194638410?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2871934108194638410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2871934108194638410' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2871934108194638410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2871934108194638410'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-puredyne.html' title='Pd: Puredyne'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2234738565447524495</id><published>2006-11-09T18:05:00.000Z</published><updated>2006-11-09T18:19:21.619Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: modulación mediante tablas (paso 3.5)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Este es el ejemplo que viene en la instalación básica de pure data, llamado dos-tablas.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.5-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.5-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;pulsa sobre la imagen para ampliar&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Lo que se hace es crear  dos tablas (arrays). La de abajo  será la forma de onda del sonido que generaremos. Se ha creado con 259 puntos (256 que es una potencia de 2,  más  3, ya que usamos taboscil4~). La superior, llamada en este caso pitch11, la usaremos para controlar la frecuencia de lectura de la segunda.&lt;br /&gt;&lt;br /&gt;En primer lugar [sig~ 0.5] genera una señar digital con el valor constante 0.5.  Ese valor se le pasa al primer [tabosc4~]. Esto indica que se leerá la tabla pitch 0.5 veces por segundo, o lo que es lo mismo, tardará 2 segundos en leer la tabla entera.  El valor que se va obteniendo es el valor frecuencia para le segunda tabla [tabosc4~ waveform11].&lt;br /&gt;&lt;br /&gt;Prueba a realizar el montaje por tu cuenta, y dibuja con el ratón sobre la primera tabla. Para producir una onda suave en la segunda tabla, envía mensajes tipo sinesum a la segunda.&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/4908934190193877178-2234738565447524495?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2234738565447524495/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2234738565447524495' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2234738565447524495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2234738565447524495'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-modulacin-mediante-tablas-paso-35.html' title='Pd: modulación mediante tablas (paso 3.5)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-73045112033085590</id><published>2006-11-08T21:33:00.000Z</published><updated>2006-11-27T11:00:56.041Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: minisecuenciador (paso 2.3)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Este es un ejemplo muy sencillo de minisecuenciador de notas midi, nos servirá para conocer un poco mejor las tablas de datos (array)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.3-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.3-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La tabla array1 tiene 10 valores (puntos), y toman como rango (eje y) un número entre 0 y 12. Lo que ves a la derecha abajo, es un simple contador que va de 0 a 9 y empieza otra vez desde 0. Envía su valor a "contador". Este valor nos servirá para ir leyendo las distintas posiciones de la tabla array1. Aparece [int] ya que nos interesa valores entereros que son las notas midi. [int] genera un número entero truncando valores con decimales. Luego sumamos 60, para obtener un valor entre 60 y 72, es decir la octava de notas que está a partir de un "do central" de un piano.&lt;br /&gt;&lt;br /&gt;Con [makenote] generamos el evento midi, que en este caso tiene un parámetro velocity 100 y dura 100 milisegundos. Si tienes conectado, por ejemplo, mediante jack, el programa pure data a un sintetizador externo, oiremos las notas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.3-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.3-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por último resaltar, que si sobre la tabla array1 pulsas con el botón derecho y eliges propiedades, en la ventana "array" verás un botón de que dice "view list", ahí podrás introducir a mano los datos de la tabla, cosa muy útil en este caso.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.3-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.3-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Añadir que también pueden crearse o alterarse los datos de un array, enviando un mensaje directamente. Por ejemplo, si hemos inicializado array1, un mensaje que contenga&lt;br /&gt;&lt;br /&gt;array1 &lt;span style="font-weight: bold;"&gt;5&lt;/span&gt; 1 2 3 4 5 6&lt;br /&gt;&lt;br /&gt;aun sin conectar a nada, enviará a la tabla "array1" los datos "1 2 3 4 5 6", empezando en la posición 5. Entonces recuerda, primero se indica desde qué posición en la tabla vas a introducir los números y después los datos. Pruébalo.&lt;br /&gt;&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/4908934190193877178-73045112033085590?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/73045112033085590/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=73045112033085590' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/73045112033085590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/73045112033085590'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-minisecuenciador-paso-23.html' title='Pd: minisecuenciador (paso 2.3)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3302647691583473753</id><published>2006-11-08T11:24:00.000Z</published><updated>2006-11-11T22:41:51.904Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Ver video en tiempo real (paso 5.1)</title><content type='html'>Una vez instalado el external pdp, lo cargas desde la línea de comandos:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;pd -lib pdp&lt;br /&gt;&lt;br /&gt;O bien añadiendo -lib pdp al archivo .pdrc que está tu carpeta de usuario. Si has instalado pidip también, se añadirá a la carga al instalar pdp. El montaje quizás más simple que puedes escribir es como este&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/5.1-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/5.1-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Metro controla al objeto v4l (video for linux). El mensaje open indica que se leerá del dispositivo /dev/video. Por ejemplo si tuvieras una tarjeta capturadora de video, y una webcam, las podrás llamar desde algún dispositivo video0, video1, video2, etc. En mi caso /dev/video es un enlace simbólico a /dev/video0 que es donde tengo instalada una webcam.&lt;br /&gt;&lt;br /&gt;Metro hace que pdp reciba una imagen cada 40 milisegundos. Prueba a poner 1000, y verás la imagen actualizarse cada segundo.&lt;br /&gt;&lt;br /&gt;El siguiente objeto, que incluso podríamos haberlo omitido, sirve para ver en pantalla del computador lo que estás capturando. Ahí puedes colocar [pdp_glx] que usa el sistema gráfico con aceleración (opengl), propio de los nuevas distribuciones de linux, o bien [pdp_xv] que es más genérico.&lt;br /&gt;&lt;br /&gt;El mensaje dim, configura las dimensiones de la ventana donde verás el video (si recuerdas es similar a dim en Gem). Al pulsar sobre el objeto [pdp_xv] y elegir help, verás muchas opciones de configuración.&lt;br /&gt;&lt;br /&gt;Entre [pdp_v4l] y [pdp_xv] (o pdp_glx) se colocarán los efectos y transformaciones. Por ejemplo, en el siguiente ejemplo&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/5.1-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/5.1-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se captura en una foto, un "fotograma" del video que ves en pantalla, cuando haces click sobre el bang rojo. Es una aplicación sencilla, pero útil para utilizar la webcam como máquina de fotos.&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/4908934190193877178-3302647691583473753?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3302647691583473753/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3302647691583473753' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3302647691583473753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3302647691583473753'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-ver-video-en-tiempo-real-paso-51.html' title='Pd: Ver video en tiempo real (paso 5.1)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5291466515794490155</id><published>2006-11-07T23:36:00.001Z</published><updated>2008-05-21T23:53:02.766+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csound'/><title type='text'>Csound: instalación</title><content type='html'>&lt;span style="font-weight: bold;"&gt;ATENCIÓN: Este post necesita de edición. A fecha actual (mayo del 2008), el paquete de csound5 ya se encuentra en debian sid, y en ubuntu hardy. Un apt-get csound es suficiente para instalarlo... (continuará)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La vía rápida es instalar la versión 4 que está en los repositorios standard de debian/ubuntu. Para hacerlo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo apt-get install csound&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para instalar la versión 5 que tiene muchas mejoras y posibilidades en el entorno gnulinux, hay que batallar más por ahora. Al menos hasta hoy, a mí me da problemas de dependencias que hay que resolver. Esto es una guía para conseguir que funcione.&lt;br /&gt;&lt;br /&gt;bajo el deb de la última versión aquí:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://csound.sourceforge.net/#Downloads"&gt;http://csound.sourceforge.net/#Downloads&lt;/a&gt;&lt;a href="http://csound.sourceforge.net/#Downloads"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;instalo el deb:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo dpkg -i csound(version).deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;adapta esta línea a la versión que te hayas bajado.&lt;br /&gt;&lt;br /&gt;Puesto que instalamos de esta forma, al actualizar los paquetes, te sugerirá cambiarla por la oficial, la versión 4. Si actualizas automáticamente, te desinstalará el csound 5. Para fijar el paquete recien instalado, y que no lo actualice (no lo hace si compilas desde las fuentes), tenemos que escribir:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;(introduce tu contraseña)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;echo csound hold | dpkg --set-selections&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al ejecutar csound, hay problemas en las librerías:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;$csound&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;Localisation of messages is disabled, using default language.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;PortMIDI real time MIDI plugin for Csound&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;ALSA real-time audio and MIDI module for Csound by Istvan Varga&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;WARNING: could not open library '/usr/local/lib/csound/plugins/librtjack.so' (-1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;WARNING: could not open library '/usr/local/lib/csound/plugins/librtpa.so' (-1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;[...]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dice que con puede abrir librtjack.so ni librtpa.so. Vamos con la primera.&lt;br /&gt;&lt;br /&gt;Reviso dependencias de la librería librtjack.so con ldd.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt; ldd /usr/local/lib/csound/plugins/librtjack.so&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        linux-gate.so.1 =&gt;  (0xffffe000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libsndfile.so.1 =&gt; /usr/lib/libsndfile.so.1 (0xb7f64000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;*       libjack-0.80.0.so.0 =&gt; not found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libasound.so.2 =&gt; /usr/lib/libasound.so.2 (0xb7eaf000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libpthread.so.0 =&gt; /lib/tls/i686/cmov/libpthread.so.0 (0xb7e9d000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libc.so.6 =&gt; /lib/tls/i686/cmov/libc.so.6 (0xb7d6d000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libFLAC.so.7 =&gt; /usr/lib/libFLAC.so.7 (0xb7d2f000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libm.so.6 =&gt; /lib/tls/i686/cmov/libm.so.6 (0xb7d0d000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        libdl.so.2 =&gt; /lib/tls/i686/cmov/libdl.so.2 (0xb7d0a000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;        /lib/ld-linux.so.2 (0x80000000)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dice que no encuentra libjack-0.80.0.so.0&lt;br /&gt;&lt;br /&gt;busco:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;ls /usr/lib/libjack*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y encuetro una versión posterior, la 0.100.0.so.0, hago un elance simbólico:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;ln -s /usr/lib/libjack-0.100.0.so.0 /usr/lib/libjack-0.80.0.so.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;vamos con la otra dependencia incumplida, era la librería librtpa.so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;ldd /usr/local/lib/csound/plugins/librtpa.so&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        linux-gate.so.1 =&gt;  (0xffffe000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libsndfile.so.1 =&gt; /usr/lib/libsndfile.so.1 (0xb7efa000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libportaudio.so.2 =&gt; not found&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libjack-0.80.0.so.0 =&gt; /usr/lib/libjack-0.80.0.so.0 (0xb7ee3000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libasound.so.2 =&gt; /usr/lib/libasound.so.2 (0xb7e2e000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libpthread.so.0 =&gt; /lib/tls/i686/cmov/libpthread.so.0 (0xb7e1b000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libc.so.6 =&gt; /lib/tls/i686/cmov/libc.so.6 (0xb7cec000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libFLAC.so.7 =&gt; /usr/lib/libFLAC.so.7 (0xb7cae000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libm.so.6 =&gt; /lib/tls/i686/cmov/libm.so.6 (0xb7c8c000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        libdl.so.2 =&gt; /lib/tls/i686/cmov/libdl.so.2 (0xb7c89000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;        /lib/ld-linux.so.2 (0x80000000)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dice que no encuentra libportaudio.so.2. En este caso la versión de libportaudio que tengo es inferior, así que tengo que instalar una posterior.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.portaudio.com/&lt;br /&gt;&lt;br /&gt;Bajo la última versión estable, descomprimo, y&lt;br /&gt;se instala con&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;./configure&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;make &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Busco la librería recien instalada con&lt;br /&gt;sudo updatedb &amp;amp;&amp;amp; locate libportaudio&lt;br /&gt;&lt;br /&gt;y la encuentro la en /usr/local/lib, hago un enlace simbólico, para que esté en /usr/lib:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt; sudo ln -s /usr/local/lib/libportaudio.so.2.0.0  /usr/lib/libportaudio.so.2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y listo...ahora no da errores de dependencias.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VIM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes añadir el coloreado de sintaxis csound, para vim.&lt;br /&gt;&lt;br /&gt;en mi equipo estoy usando vim7.0, haciendo ls /usr/share/vim verás la o  las versiones de vim que tienes instaladas. En lo siguiente tendrías que cambiar el directorio vim70 por el que tu tengas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;sudo su&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;cd /usr/share/vim/vim70/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;mkdir templates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;wget http://www.eumus.edu.uy/docentes/jure/csound/vim/csound.vim.tgz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;tar zxvf csound.vim.tgz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora crea en tu carpeta de usuario un archivo llamado .vimrc, y copia en su interior esto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;au BufNewFile,BufRead *.orc,*.sco,*.csd   so $VIMRUNTIME/syntax/csound.vim&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;au BufNewFile,BufRead *.csd               so $VIMRUNTIME/macros/csound_macros.vim&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;au BufNewFile *.csd                       0r $VIMRUNTIME/templates/template.csd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;au BufNewFile *.orc                       0r $VIMRUNTIME/templates/template.orc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;syntax on&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora puedes crear y editar archivos csound fácilmente. Por ejemplo, si escribes vim prueba.csd, ya obtendrás el formato csd preparado para escribir, con las marcas colocadas. Además si pulsas F9, se compila lo que estés haciendo y escucharás el resultado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Csound y jack&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Como suelo trabajar sobre jack, creo el archivo .csoundrc en mi carpeta de usuario, de esa forma también me evito escribir siempre las mismas opciones para cargar csound mediante jack. En concreto añado esto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;-+rtaudio=jack --expression-opt -b 512 -B 2048 -odac:alsa_pcm:playback_ -d -m0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-5291466515794490155?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5291466515794490155/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5291466515794490155' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5291466515794490155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5291466515794490155'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/csound-instalacin.html' title='Csound: instalación'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1310927532524725675</id><published>2006-11-07T22:13:00.000Z</published><updated>2006-11-07T22:18:57.146Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: repositorios extra</title><content type='html'>Una manera fácil de instalar algunos externals para pd es añadir a tu Debian/ubuntu, los repositorios de caedes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo &lt;span style="color: rgb(102, 102, 102);"&gt;gedit&lt;/span&gt; /etc/apt/sources.list&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(donde pone &lt;span style="font-style: italic;"&gt;gedit&lt;/span&gt;, pon tu  editor favorito).  Añade esta línea.&lt;br /&gt;&lt;br /&gt;#extrenals para pd&lt;br /&gt;deb http://sindominio.net/~caedes/debian/ unstable main&lt;br /&gt;&lt;br /&gt;Guarda y:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes ahora instalar:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: arial; font-style: italic;"&gt;pd-pdp 0.12.4 (compilado con soporte mmx)&lt;br /&gt;pd-pidip 0.12.20&lt;br /&gt;pd-gem2pdp 0.5&lt;br /&gt;pd-osc ?&lt;br /&gt;pd-3dp-caedes (una versión con un objeto rectangle)&lt;br /&gt;pd-unauthorized 22-11-2003 (el resto de los externals de degoyon)&lt;br /&gt;pd-pdp-freeframe&lt;br /&gt;freeframe-petesvfx&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-1310927532524725675?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1310927532524725675/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1310927532524725675' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1310927532524725675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1310927532524725675'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-repositorios-extra.html' title='Pd: repositorios extra'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8433492287308786864</id><published>2006-11-07T16:38:00.000Z</published><updated>2006-11-27T11:07:56.960Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Secuenciar eventos con tabla (paso 1.11)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Una utilidad con una tabla es utilizarla como un disparador de eventos en secuencia, o un secuenciador.  Mira el siguiente montaje:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.11-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.11-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Al definir el array, he indicado 10 puntos, y la forma de dibujar también en puntos. Ajusta los valores del eje y (vertical) como quieras. Lo que ves en el ejemplo anterior, es un sistema que lee los valores que hay almacenados en la tabla, secuencialmente. Y cuando llega al final, comienza de nuevo.&lt;br /&gt;&lt;br /&gt;El objeto que lee es [tabread], pero lo que tiene enchufado arriba es un contador, que ya debes reconocer, y la operación módulo 10. El por qué funciona generando números de 0 a 9 y vuelta a empezar, está en esa propiedad de la operación módulo [%].&lt;br /&gt;&lt;br /&gt;Pulsa bang repetidamente para ver cómo lee los datos. Prueba a alterar los datos con el ratón. Finalmente prueba a colocar un [metro] que sustituya al bang, para que la lectura se haga ordenada en el tiempo.&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/4908934190193877178-8433492287308786864?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8433492287308786864/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8433492287308786864' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8433492287308786864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8433492287308786864'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-secuenciar-eventos-con-tabla.html' title='Pd: Secuenciar eventos con tabla (paso 1.11)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2681341805760879851</id><published>2006-11-03T16:26:00.000Z</published><updated>2006-11-07T17:04:22.344Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Tabla de ondas (paso 3.4)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Muy relacionado con el paso anterior está el uso de una tabla para dibujar una onda o suma de ellas. Esta tabla o dibujo sirve para producir un sonido, leyendo un número de veces por segundo lo que hay en ella. Por ejemplo, si en una tabla dibujamos el periódo de una onda seno, al utilizar esta técnica podríamos desarrollar una onda senoidal leyendo repetídamente  ese periodo un número de veces por segundo.&lt;br /&gt;&lt;br /&gt;En pure data existe el objento [tabosc4~], que a diferencia de [osc~] toma la forma de onda que tiene que reproducir, de una tabla (array). En el siguiente ejemplo se usa [tabosc4~] para generar una onda constituida por una suma de senos.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.4-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.4-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;pulsa el mensaje sinesum antes de nada&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Se escribe [tabosc4~ array1], ya que indicamos que se va a usar array1 como fuente de datos. Una distintión de tabosc4~ respecto a osc~ es que aquel, necesita un valor en forma de señal sonora para indicar la frecuencia a la que leerá la tabla, y no un número como el caso de [osc]. Para eso sirve [sig~] convierte un valor númerico en un flujo "sonoro" o para decirlo con propiedad en una señal digital.&lt;br /&gt;&lt;br /&gt;Para generar la onda que ves dibujada, le puedes enviar un mensaje a array1, como ves en la parte de abajo "array1 sinesum 512 .." (512 indica el número de puntos que se usarán para dibujar la onda). Debes entonces enviar este mensaje antes de nada, si quieres escuchar algo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;MUY IMPORTANTE&lt;/span&gt;: por la forma en la que se usa la tabla en la memoria para generar sonido, el número de puntos debe ser una potencia de 2. Cuanto mayor sea el nivel de detalle del dibujo, y por tanto mayor precisión para altas frecuencias, debes usar un número de puntos mayor. Sin embargo, al usar tabosc4~, introduce puntos que no están en la tabla (interpola) para suavizarla, en este caso es más eficiente usar una tabla de una potencia de 2 más 3 (interpola 4 puntos entre cada 2). 515 sería el número que deberíamos usar para mayor eficiencia, en el ejemplo anterior.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este ejemplo, se usa la abstracción output~ que venimos utilizando en estas notas, en la parte de audio.&lt;br /&gt;&lt;br /&gt;Podemos ahora retocar el ejemplo anterior, para que sea más instructivo. Veremos cómo cambia el dibujo según damos amplitud a los distintos parciales.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.4-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.4-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Simplemente se ha añadido $1, $2, $3, $4 a los valores de la amplitud de cada seno (mira abajo). Eso significa que tomará el valor, de los valores primero, segundo, tercero y cuarto respectivamente de un mensaje que le llege por el inlet. Para construir ese mensaje cambiante en tiempo real aplicamos un [pack f f f f] a cuatro números. De esta forma, alteras las cajas de números, entre 0 y 1, y verás inmediatamente lo que ocurre en el dibujo. Para que sea cómodo, cambié las propiedades de las cajas de números para que sólo se muevan en el rango 0-1, además interactúo con ellas pulsando "mayúsculas".&lt;br /&gt;&lt;br /&gt;El bang que hay encima de [pack] simplemente permite que cuando cambio alguna entrada "fría", le llegue un bang también al inlet caliente, haciendo que [pack] envíe su valor.&lt;br /&gt;&lt;br /&gt;Enseguida las ondas sobrepasan el recuadro de dibujo, que por defecto dibuja valores entre -1 y 1. Esto no tiene porqué saturar la señas porque puedes ajustar el nivel de decibelios en la salida. De cualquier forma si quieres ver el dibujo encajonado siempre entre -1 y 1, puedes aplicarle normalización. Enviándole al objento array, "normalize 1" ocurre eso justamente. Este es un ejemplo de envío de dos mensajes, añadiendo la normalización:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.4-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.4-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;aunque podrías escribir también dos mensajes independientes.&lt;br /&gt;&lt;br /&gt;El proceso de variar la tabla almacenada en memoria directamente, en tiempo real mientras se ejecuta el sonido, es instructivo, pero no práctico, pues como oirás se producen pops que ensucian el sonido.&lt;br /&gt;&lt;br /&gt;Por último, prueba a pintar con el ratón directamente sobre la tabla de ondas...&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/4908934190193877178-2681341805760879851?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2681341805760879851/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2681341805760879851' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2681341805760879851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2681341805760879851'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-tabla-de-ondas-paso-34.html' title='Pd: Tabla de ondas (paso 3.4)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6209845392693618601</id><published>2006-11-02T23:09:00.000Z</published><updated>2006-11-02T23:49:38.134Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='netescopio'/><title type='text'>conferencias arte/net</title><content type='html'>Interesantes conferencias:&lt;br /&gt;&lt;br /&gt;http://openserver.cccb.org/opserver/archivos/12opradio.php&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;&lt;a href="http://openserver.cccb.org/mp3/pls/documenta/MK2_cramer_opencont.m3u"&gt;OPEN CONTENT / FREE SOFTWARE&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;Florian Cramer&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;Contra la propietización de los ceros y los unos. El contenido digital sigue el mismo camino que el software, que pasó de ser gratuito en los años 70 a convertirse en un producto de propiedad desde 1980. El sistema operativo Linux es tal vez el ejemplo más poderoso que ha desarrollado el movimiento de software gratuito, aunque recientemente el concepto de "open content" se ha extendido y ha sido aplicado a otra clase de información digital. En esta conferencia se hará un repaso de la historia, filosofía y práctica del "open content" y el software gratuito o código abierto y se presentarán proyectos y modelos de licencias, apuntando los riesgos y problemas que conllevan.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;&lt;a href="http://openserver.cccb.org/mp3/pls/documenta/MK2_cramer_codepo.m3u"&gt;LITERATURA &amp; CÓDIGO (CODE POETRY)&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;Florian Cramer&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;En los últimos años, y no accidentalmente, el más estimulante net art ha tenido un foco especial en el código informático y de alguna manera ha revelado similitudes estéticas con la poesía concreta y otras literaturas experimentales. Florian Cramer intenta encontrar las relaciones entre literatura y código con la voluntad de esclarecer los puntos en común entre el texto con vocación poética y el texto con vocación informática.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;&lt;a href="http://openserver.cccb.org/mp3/pls/documenta/MK2_ehlers_re-sources.m3u"&gt; ELECTRONIC MUSIC RE-SOURCES&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;Ekkehard Ehlers&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td colspan="2"&gt;&lt;span class="textonormal"&gt;Ekkehard Ehlers, uno de los artistas alemanes más prolíficos y polifacéticos del ámbito de la música electrónica, es profesor de música y arte digitales en la Escuela Superior de Arte de Saarbrücken y de la Merz Akademie de Stuttgart.&lt;br /&gt;Ehlers habla de las más recientes evoluciones en el ámbito de la música electrónica. El objetivo de esta actividad es discutir, a través de numerosos ejemplos sonoros y versiones musicales, las posibilidades y perspectivas de la producción digital.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;etc...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-6209845392693618601?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6209845392693618601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6209845392693618601' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6209845392693618601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6209845392693618601'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/conferencias-artenet.html' title='conferencias arte/net'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1429973017696710147</id><published>2006-11-02T22:48:00.000Z</published><updated>2007-05-30T08:45:10.060+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>De umbral en umbral</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/day_and_night_escher.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/day_and_night_escher.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Grabado de Escher&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;Habla&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pero no separes el no de sí.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Y da a tu decir sentido:&lt;br /&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;dale sombra&lt;/span&gt;&lt;br /&gt;(Paul Celán)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;¿Hay un lugar más allá del sí o no?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-1429973017696710147?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1429973017696710147/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1429973017696710147' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1429973017696710147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1429973017696710147'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/de-umbral-en-umbral.html' title='De umbral en umbral'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-4705416140068117000</id><published>2006-11-02T18:49:00.000Z</published><updated>2006-11-07T16:38:41.210Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Creación de una tabla (paso 1.10)</title><content type='html'>&lt;div style="text-align: justify;"&gt;En el menú put--&gt; array, puedes acceder a un objeto muy interesante. Es una tabla o matriz de datos. Crea el siguiente montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.10-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.10-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La tabla, el rectángulo de la derecha, se crea donde hemos dicho  put--&gt; array. Tiene parámetros de configuración que debes conocer (ya sabes botón derecho y propiedades).  Al hacer esto último aparecen dos ventanas: canvas y array. En canvas por ejemplo puedes configurar los valores que puede tomar la tabla de izquierda a derecha (x range), y de arriba a abajo (y range). También, en el panel array configuramos el nombre (name) de la tabla, que por defecto será array1. También el número de puntos que tendrá la tabla. Estos datos debes conocerlos para usarla bien.  Desde el panel array eliges también si la visualización de la talba será por puntos, polígonos o líneas continuas.&lt;br /&gt;&lt;br /&gt;En el ejemplo aterior, se usa una tabla llamada array1, y con 100 puntos. El &lt;span style="font-style: italic;"&gt;rango x&lt;/span&gt; va de 0 a 99 por tanto, y el &lt;span style="font-style: italic;"&gt;rango y&lt;/span&gt; de -1 hasta 1. Con el objeto [tabread nonmbredetabla] puedes leer los valores almacenados en la tabla. El número que recible [tabread] por su único intlet es la posición x que queremos leer; este objeto nos devuelve el &lt;span style="font-style: italic;"&gt;y&lt;/span&gt; correspondiente. Podemos así almacenar una colección de datos que luego usaremos para enviarlo a algún objeto.&lt;br /&gt;&lt;br /&gt;Si en modo interactivo (control+e desde el modo edición) pasas el ratón por la línea dibujada en la tabla, verás que este cambia. Justo entonces puedes clicar y dibujar directamente datos.&lt;br /&gt;&lt;br /&gt;Ves abajo un mensaje que indica "&lt;span style="font-style: italic;"&gt;array1 sinesum ...&lt;/span&gt;". Este mensaje se envía directamente a la tabla, y dibuja en ella una suma de senos. Aunque ahora no lo veremos es muy útil para la síntesis sonora. Lo pongo como ejemplo de mensaje enviado directamente a la tabla.&lt;br /&gt;&lt;br /&gt;Prueba con este otro montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.10-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.10-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Es parecido al anterior, de hecho el mismo, pero he añadido dos posibilidades muy interesantes. La parte de abajo, a la izquierda, permite guardar los datos de la tabla en un archivo. Al hacer bang sobre [savepanel] se habre una ventana para elegir directorio y archivo, donde serán guardados los datos. El mensaje de abajo a la derecha, guarda los datos de la tabla en un archivo de texto, cuya dirección indicamos.&lt;br /&gt;&lt;br /&gt;Si pulsas botón derecho sobre tabread y luego help, obtendrás algunos datos de interés. Además en &lt;span style="font-style: italic;"&gt;2.control.examples/array.pd&lt;/span&gt; hay más datos sobre este tema. De cualquier manera, es más útil y aprendiendo posibilidades según vayas analizando los montajes que veas.&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/4908934190193877178-4705416140068117000?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/4705416140068117000/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=4705416140068117000' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4705416140068117000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/4705416140068117000'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/11/pd-creacin-de-un-tabla.html' title='Pd: Creación de una tabla (paso 1.10)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2443107361847457788</id><published>2006-10-31T15:17:00.000Z</published><updated>2006-11-02T19:28:35.182Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIDI'/><title type='text'>Fluidsynth/Qsynth</title><content type='html'>&lt;div style="text-align: justify;"&gt;Fluidsynth es un sintetizador de sonido para soundfonts. Permite cargar en memoria una fuente de sonidos soundfont y usarla en tiempo real. Para instalar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install fluidsynth&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes conseguir muchos soundfonts aquí:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.saunalahti.fi/kru99/links-to-SF-sites.htm"&gt;http://www.saunalahti.fi/kru99/links-to-SF-sites.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez tienes los soundfonts, el rendimiento de uno muy grande depende del equipo que tengas. En los siguientes ejemplos voy a suponer que el soundfont que usas se llama gmsfull.sf2&lt;br /&gt;&lt;br /&gt;fluidsynth tienes muchas opciones de carga. Esta sería un lanzamiento sencillo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;fluidsynth -a alsa -R no -C no gmsfull.sf2 unmidi.mid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oirás el fichero unmidi.mid tocado con la fuente gmsfull.sf2. &lt;span style="font-style: italic;"&gt;"-R no&lt;/span&gt;" indica sin reverb y &lt;span style="font-style: italic;"&gt;"-C no"&lt;/span&gt; sin chorus que los activa por defecto. -a elige la arquitectura de sonido a usar, que en este caso será alsa.&lt;br /&gt;&lt;br /&gt;Cuando ejecutas la línea anterior, entras en un entorno en modo texto que tiene ciertas opciones (escribe help). Para salir de ese entorno escribe quit, y pulsa intro.&lt;br /&gt;&lt;br /&gt;Podemos usar fluidsynth como un servidor midi, al que conectamos otros programas y/o clientes. Desde el terminal puedes hacerlo usando aconnect (&lt;a href="http://oggro.blogspot.com/2006/10/midi-con-alsa-acconect.html"&gt;ver ejemplo de aconnect&lt;/a&gt;). De esta forma es sencillo conectar por ejemplo un teclado externo para tocar con fluidsynth, o conectar rosegarden con este sintetizador. O muy interesante para conectarlo a pure data.&lt;br /&gt;&lt;br /&gt;Tambien podemos lanzar fluidsynth mediante jack con la opción -j en el comando de carga. De esta forma, y usando qjackctl por ejemplo es fácil hacer conexiones, visualmente, entre este y otros programas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;QSYNTH&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/Pantallazo-Qsynth.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/Pantallazo-Qsynth.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;qsynth es una interfaz gráfica para fluidsynth. Para instalarlo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install qsynth&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes lanzarlo como&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;qsynth -a alsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En el botón "Setup..." hay opciones de configuración, como por ejemplo, pulsando en la pestaña soundfonts, puedes cargar uno o varios soundfonts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;qsynth -j&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;lo carga mediante jack&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/4908934190193877178-2443107361847457788?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2443107361847457788/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2443107361847457788' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2443107361847457788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2443107361847457788'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/fluidsynthqsynth.html' title='Fluidsynth/Qsynth'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-96577787617867365</id><published>2006-10-30T18:37:00.000Z</published><updated>2006-12-08T00:22:48.466Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIDI'/><title type='text'>Midi con alsa (acconect)</title><content type='html'>Empieza abriendo un terminal y escribiendo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect -io&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Te dará una lista de los dispositivos (clientes) de entrada y salida MIDI disponibles. Este podría ser un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 0: 'System' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Timer           '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        1 'Announce        '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 14: 'Midi Through' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        0 'Midi Through Port-0'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 16: 'SBLive! Platinum [CT4760P]' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        0 'EMU10K1 MPU-401 (UART)'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 17: 'Emu10k1 WaveTable' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        0 'Emu10k1 Port 0  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        1 'Emu10k1 Port 1  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        2 'Emu10k1 Port 2  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        3 'Emu10k1 Port 3  '&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes usar como parámetro de aconnect -i, o también -o para ver por separado entradas y salidas. Cada cliente tiene un número, y uno o varios puertos. Por ejemplo el cliente 16, que es "SBLive! Platinum [CT4760P]", tiene un sólo puerto 0  'EMU10K1 MPU-401 (UART)', esto es un teclado o controlador externo externo. Se usa el formato cliente:puerto como verás más abajo, entonces el controlador externo es 16:0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Conectar el teclado virtual vkeybd y zynaddsubfx&lt;br /&gt;&lt;br /&gt;Como primer ejercicio, voy a necesitar por ejemplo los paquetes vkeybd (virtual keyboard) y zynaddsubfx (un sintetizador muy completo). Si aun no los tienes instalados:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install vkeybd zynaddsubfx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo que vamos a hacer es conectar el teclado virtual al sintetizador zynaddsubfx. En realidad este último ya tiene su propio teclado visual, pero imagina que no lo tuviera.&lt;br /&gt;&lt;br /&gt;Lanzo los dos programas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;zynaddsubfx &amp; vkeybd &amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora si ejecuto aconnect -io obtengo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 0: 'System' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Timer           '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    1 'Announce        '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 14: 'Midi Through' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Midi Through Port-0'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 16: 'SBLive! Platinum [CT4760P]' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'EMU10K1 MPU-401 (UART)'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 17: 'Emu10k1 WaveTable' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Emu10k1 Port 0  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    1 'Emu10k1 Port 1  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    2 'Emu10k1 Port 2  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    3 'Emu10k1 Port 3  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 204, 204);"&gt;cliente 128: 'ZynAddSubFX' [tipo=usuario]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 204, 204);"&gt;    0 'ZynAddSubFX     '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 204, 204);"&gt;cliente 129: 'Virtual Keyboard' [tipo=usuario]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 204, 204);"&gt;    0 'Virtual Keyboard'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tengo en la lista los nuevos programas como clientes para hacer conexiones entre ellos. Mira los números que aparecen en cada cliente. Para conectar el teclado al sintetizador escribo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect 129:0 128:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora están conectados, puedes comprobarlo tocando den el virtual keyboard y viendo como suena el zynaddsubfx. Si quieres ver las conexiones puedes usar el siguiente comando&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect -lio&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;'l' lista las conexiones, en este caso dice:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 128: 'ZynAddSubFX' [tipo=usuario]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'ZynAddSubFX     '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 129: 'Virtual Keyboard' [tipo=usuario]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Virtual Keyboard'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 128:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para desconectar lo que has hecho con&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect -d 129:0 128:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;o desconectarlo todo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect -x&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instala el paquete pmidi&lt;br /&gt;&lt;br /&gt;sudo apt-get install pmidi&lt;br /&gt;&lt;br /&gt;Es un player de midi para alsa. Lanzamos por ejemplo el mismo sintetizador zynaddsubfx con&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;zynaddsubfx &amp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes usar el comando&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pmidi -p cliente:puerto archivitomidi.mid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;donde cliente:puerto lo sustituyes por los números que te da el listado acconect -lio como hacíamos en el ejemplo anterior.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pmidi -p 128:0 mozart.mid &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;tocará el archivo mozart.mid mediante el zynaddsubfx.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este ejemplo conectaremos rosegarden a un sintetizador de soundfonts usando aconnect. Dicho sintetizador será fluidsynth (mira aquí para saber lanzarlo).&lt;br /&gt;&lt;br /&gt;Lanzo ambos programas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;rosegarden &amp; fluidsynth -a alsa -R no -G no Chorium.SF2 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Miro la lista de conexiones abriendo otro terminal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect -lio&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 0: 'System' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Timer           '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    1 'Announce        '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 15:0, 129:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 14: 'Midi Through' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Midi Through Port-0'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 16: 'SBLive! Platinum [CT4760P]' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'EMU10K1 MPU-401 (UART)'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 17: 'Emu10k1 WaveTable' [tipo=kernel]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Emu10k1 Port 0  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    1 'Emu10k1 Port 1  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    2 'Emu10k1 Port 2  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    3 'Emu10k1 Port 3  '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 128: 'FLUID Synth (7414)' [tipo=usuario]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'Synth input port (7414:0)'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 129:3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cliente 129: 'rosegarden' [tipo=usuario]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    0 'record in       '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectado desde: 0:1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    1 'sync out        '&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    2 'external controller'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    3 'out 1 - General MIDI Device'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 128:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    4 'out 2 - MIDI soundcard synth'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 17:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    5 'out 3 - MIDI soundcard synth 2'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 17:1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    6 'out 4 - MIDI soundcard synth 3'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 17:2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    7 'out 5 - MIDI soundcard synth 4'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 17:3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    8 'out 6 - MIDI external device'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Conectando con: 16:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    9 'out 7 - MIDI output system device'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Conectaré el puerto 3 de rosegarden (out 1 -General MIDI Device), con el único puerto de entrada que aparece en fluidsynth.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;aconnect 129:3 128:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entonces oiremos los eventos MIDI generados por rosegarden mediante el soundfont que cargamos en fluidsynth.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;aconnectgui&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Una vez entiendes cómo va aconnect, puedes usar también aconnectgui, que es lo mismo pero con una sencilla interfaz gráfica. Se instala con&lt;br /&gt;&lt;br /&gt;sudo apt-get install aconnectgui&lt;br /&gt;&lt;br /&gt;Al lanzarlo verás una lista con los dispositivos midi disponibles. Pulsando en el botón de los conectores midi, y cliqueando en un dispositivo y arrastrando hasta otro, se creará la conexión:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/aconnectgui.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/aconnectgui.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;naconnect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nedko.arnaudov.name/soft/naconnect/naconnect-r85.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://nedko.arnaudov.name/soft/naconnect/naconnect-r85.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nedko.arnaudov.name/soft/naconnect/"&gt;http://nedko.arnaudov.name/soft/naconnect/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta utilidad utiliza la consola, pero es muy intuitiva.  Baja el archivo tar.bz2. Descomprímelo con&lt;br /&gt;&lt;span style="font-style: italic;"&gt;tar xvfj nombredearchivo&lt;/span&gt;&lt;br /&gt;entra en la carpeta recien creada y escribe&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No tendrás que hacer nada más, excepto poner el ejecutable aconnect en algún lugar cómodo para tí. Un buen sítio puede ser /usr/local/bin, así podrás acceder siempre que quieras lanzándolo con&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;naconnect&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La forma de funcionamiento se parece a acconectgui, pero esta vez se usan teclas. Para salir, pulsa q&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-96577787617867365?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/96577787617867365/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=96577787617867365' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/96577787617867365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/96577787617867365'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/midi-con-alsa-acconect.html' title='Midi con alsa (acconect)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1810558043201636808</id><published>2006-10-30T11:01:00.000Z</published><updated>2006-10-30T11:07:28.898Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Adición de osciladores (paso 3.3)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Inspirada en el resultado matemático conocido como teorema de Fourier, la síntesis aditiva trata de generar sonidos complejos apartiendo de la adición de ondas sencillas y con efectos predecibles. En Pure data es sencillo  sumar una serie de ondas simples generadas con [osc~].&lt;br /&gt;&lt;br /&gt;En el ejemplo siguiente&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.3-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.3-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Un oscilador simple tiene control de la frecuencia y de la amplitud. Para controlar la amplitud el deslizador vertical envía su valor a l1 (esto se configura pulsando botón derecho sobre el deslizador, luego propiedades, y escribiendo l1 en la casilla send-symbol). Además sólo toma valores entre 0 y 1. De esta forma podemos controlar la amplitud del oscilador desde el deslizador. Podíamos haberlo conectado simplemente con un cable, como ya sabrás.&lt;br /&gt;&lt;br /&gt;La salida, usa la abstracción output~. Mira el paso anterior para ver cómo se activa.&lt;br /&gt;&lt;br /&gt;Partiendo de este modelo, es fácil hacerlo crecer, para crear una serie de osciladores sumados antes de enviarlos a la salida. En el ejemplo siguiente se hace eso. Pero todas las frecuencias dependen de la fundamental, a la que vamos multiplicando por 2, 3, 4 y 5. En otras palabras, generamos una onda fundamental y sus cinco primeros armónicos. La amplitud de cada armónico, se controla con los deslizadores, que envía respectivamente l1, l2, l3, l4 y l5, además toman valores entre 0 y 1.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.3-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.3-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En los cálculos internos de pure data, la amplitud puede tener "cualquier valor", pero como sabes la salida debe ser una señal digital con valores entre -1 y 1, entonces es probable que al sumar varias ondas se produzca saturación  (lo valores mayores que 1 se dejan como 1). Ten cuidado al ir subiendo los decibélios. Llegará un punto en que ya no percibas el sonido  correctamente sino distorsionado, en ese punto empieza la saturación.&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/4908934190193877178-1810558043201636808?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1810558043201636808/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1810558043201636808' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1810558043201636808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1810558043201636808'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-adicin-de-osciladores-paso-33.html' title='Pd: Adición de osciladores (paso 3.3)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5820385553829486585</id><published>2006-10-29T18:26:00.000Z</published><updated>2007-03-19T17:15:36.187Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Conectar sin cables (paso 1.9)</title><content type='html'>Cuando más compliquemos los montajes más conexiones habrá, y más cables. Pero esto puede solucionarse, además de que necesitamos alguna forma de enviar datos entre objetos que quizás no están ni en la misma ventana. Hay dos básicos muy útiles:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;[send  &lt;nombre&gt;]&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;[receive &lt;nombre&gt;]&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;Por ejemplo:&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.9-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.9-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;La caja de números envía su valor a "aaa", un símbolo abstracto, que puede ser captado desde otro lugar. [receive aaa] lee el valor que se envió a aaa. Puedes verlo también como crear un cable virtual llamado aaa, que no se ve. Observa cómo al cambiar la primera caja de números se cambia la otra, como si efectívamente estuvieran conectadas. Send y receive, pueden abreviarse como s y r respectivamente.&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;Observa también los dos mensajes que pueden enviar directamente datos a "aaa". Esta forma de enviar mensajes directamente a un objeto, aun si conexión visible, la encontrarás muchas veces. Es posible incluso enviar datos al propio programa pure data.&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;También hay objetos, como los sliders o los number, number2, etc, que envían y reciben datos mediante un símbolo. Por ejemplo, en las propiedades de un slider, puedes configurar que envíe su valor al símbolo que hemos llamado "aaa", o el que tu eligieras:&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.9-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.9-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;/div&gt;&lt;nombre&gt;&lt;nombre&gt;&lt;br /&gt;&lt;/nombre&gt;&lt;/nombre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-5820385553829486585?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5820385553829486585/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5820385553829486585' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5820385553829486585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5820385553829486585'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-conectar-sin-cables-paso-19.html' title='Pd: Conectar sin cables (paso 1.9)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8830769273970023424</id><published>2006-10-29T18:08:00.000Z</published><updated>2006-10-29T18:24:25.237Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Trigger (paso 1.8)</title><content type='html'>&lt;div style="text-align: justify;"&gt;A veces, es conveniente saber en el orden en que se procesan una serie de operaciones, o bien quiere sincronizarse estas con un bang que ponga en marcha otro artefacto. Para eso existe [trigger], que toma la única entrada que tiene y la convierte al tipo de salida múltiple que deseemos. Por ejemplo [trigger float float] tomará una entrada numérica y la sacará por dos salidas numéricas (primero procesa la de la derecha y luego la de la izquierda). Para que lo veas en un ejemplo concreto:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.8-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.8-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En este caso se ha usado [trigger bang float float] La entrada numérica se convierte en un bang (b) y en dos salidas numéricas (f). El orden en que las procesa es de derecha a izquierda, entonces lo  último en procesar es el bang.&lt;br /&gt;&lt;br /&gt;En este otro ejemplo&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.8-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.8-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;se empaqueta en un mensaje las dos salidas del trigger, pero el concepto es similar al anterior. Más información sobre trigger puedes encontrarla pulsando sobre el objento y con el botón derecho del ratón elegir : help. Obtendrás una figura como esta:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.8-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.8-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Observa cómo distintas entradas producen salidas de muchos tipos, pero siempre procesadas de derecha a izquierda, es decir, se deja la salida caliente para el final.  También fíjate en las siglas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[t f b l s a]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;que es una forma abreviada de escribir:&lt;br /&gt;&lt;br /&gt;[trigger float bang list symbol anything]&lt;br /&gt;&lt;br /&gt;o, número, bang, lista, símbolo, cualquier cosa.&lt;br /&gt;&lt;br /&gt;Mira &lt;a href="http://oggro.blogspot.com/2006/10/pd-acordes-y-trigger-paso-22.html"&gt;aquí&lt;/a&gt;, para ver una más aplicación concreta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-8830769273970023424?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8830769273970023424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8830769273970023424' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8830769273970023424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8830769273970023424'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-trigger-paso-18.html' title='Pd: Trigger (paso 1.8)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-6696935397011210124</id><published>2006-10-27T11:49:00.000+01:00</published><updated>2006-10-27T17:42:30.671+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: amplitud (paso 3.2)</title><content type='html'>Pure data incorpora algunos objetos y trucos para manejar la amplitud del un oscilador. Veremos algunas de ellas.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Crea este montaje&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.2-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.2-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Se inicializa un oscilador (coseno) con el valor 440 Hz. Para controlar la amplitud multiplicamos la señal con un valor entre 0 y 1, con [*~]. Sin embargo sería útil poder introducir ese valor en decibélios. Para eso se usa el objeto [dbtorms]. Un acrónimo de "decibélio a rms", aunque debería llamarse "decibélio a amplitud lineal", pues es lo que hace. Convierte un valor en decibelios en su correspondiente de amplitud de la onda sinusoidal. De manera que 0 corresponde con 0, y 100 db  sería 1.&lt;br /&gt;&lt;br /&gt;También puede usarse un flujo de datos para controlar la amplitud, pudiendo variar progresívamente la amplitud entre un valor y otro. Sabes que el objeto que hace eso en pd es [line], aunque aquí usamos su versión de flujo sonoro [line~].&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.2-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.2-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Se lanzan mensajes sobre [line~] que contienen el valor a alcanzar y el tiempo en milisegundos para conseguirlo. Esta es una manera sencilla de crear envolventes lineales.&lt;br /&gt;&lt;br /&gt;Es posible también, usar una abstracción que incluyen muchos ejemplos que obtienes cuando instalas pd. Para poder acceder a ella, debes indicarle a pure data, que busque abstracciones y objetos en un sitio determinado. Para ello ve a File--&gt;Path... de la ventana general de Pd. Añade en una de las casillas:&lt;br /&gt;&lt;br /&gt;/usr/lib/pd/doc/3.audio.examples/&lt;br /&gt;&lt;br /&gt;que es donde estará la abstracción que buscamos (output~). Luego pulsa en "save all settings", aplicas y sales. Cuando abras un proyecto nuevo, si creas un objeto nuevo con el nombre [output~], debería aparece un pequeño panel, como el de la figura de más abajo. Si no aparece, tal vez no esté, o esté mal la dirección. Compruébalo escribiendo en un terminal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo updatedb &amp;&amp;amp; locate output~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y te dirá dónde está output~.pd .El siguiente ejemplo usa dicha abstracción que hemos instalado.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.2-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.2-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Como ves puedes controlar los decibelios de la salida, así como silenciarla repentinamente con "mute".&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/4908934190193877178-6696935397011210124?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/6696935397011210124/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=6696935397011210124' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6696935397011210124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/6696935397011210124'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-amplitud-paso-32.html' title='Pd: amplitud (paso 3.2)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5661250477637850240</id><published>2006-10-26T19:02:00.000+01:00</published><updated>2006-10-26T19:06:47.975+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Un oscilador (paso 3.1)</title><content type='html'>En pure data, se trata el sonido como un flujo de datos también, pero puesto que es un flujo con muchos requerimientos (a 44100Hz, son ese mismo número de datos por segundo). Entonces pd interactúa diréctamente con el hardware de la máquina, aunque el lenguaje sigue siendo el de objentos y cables. Para distinguir los objetos que producen sonido, se utiliza el símbolo ~, en el nombre. Por ejemplo [+ 1] sumará una unidad a todo lo que llegue por el inlet caliente. Sin embargo [+~ 1] funciona con sonido.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Crea el siguiente montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.1-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.1-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Lo primero, fíjate en los dos mensajes de la derecha. Son mensajes enviados directamente al programa pd. Activan y desactivan respectivamente el sistema de sonido. El mismo efecto podrías conseguirlo desde el menú "Media", y luego audio on o aundio off.&lt;br /&gt;&lt;br /&gt;El objento [osc~] es en realidad un generador de la función coseno para sonido. Por tanto, producirá un "tono puro", cuya frecuencia se indica como primer parámetro de inicialización, aunque también puedes cambiarla desde el inlet caliente como en este caso. La salida del coseno varía entre -1 y 1, y es enviada al objeto [dac~], que expresa el "conversor digital-analógico". En otras palabras, a tu tarjeta de sonido. [dac~] admite también valores entre -1 y 1. Por tanto todo valor que supere 1, será truncado. En este caso multiplicamos la señal por 0.5 (atención a *~, no es simplemente *).&lt;br /&gt;&lt;br /&gt;Fíjate que los cables por los que circula sonido, son ligeramente más gruesos.&lt;br /&gt;&lt;br /&gt;En este segundo ejemplo, encontramos casi lo mismo:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/3.1-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/3.1-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Sólo cambia la manera de alterar los parámetros. Los deslizadores envían su valor a la "variable" frec y amp, que son recogidas y canalizadas a los sitios correspondientes. En concreto, por ejemplo, se ha configurado el deslizador que controla la frecuencia (botón derecho sobre él y propiedades):&lt;br /&gt;&lt;br /&gt;output-range: botton-&gt; 100 top-&gt; 1000 &lt;span style="font-style: italic;"&gt;(pon lo que quieras)&lt;/span&gt;&lt;br /&gt;send-symbol: frec&lt;br /&gt;name: frec &lt;span style="font-style: italic;"&gt;(pon lo que quieras)&lt;/span&gt;&lt;br /&gt;cambia los colores, etc..&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/4908934190193877178-5661250477637850240?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5661250477637850240/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5661250477637850240' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5661250477637850240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5661250477637850240'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-un-oscilador-paso-31.html' title='Pd: Un oscilador (paso 3.1)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3753680966758316196</id><published>2006-10-26T12:02:00.000+01:00</published><updated>2006-10-26T23:27:08.974+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Ejemplo resumen (paso 4.5)</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.5-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.5-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;pulsa para agrandar&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En este ejemplo, se introduce una animación en tiempo real, en el que una esfera rota alrededor de otra. Las texturas están sacadas de aquí:&lt;br /&gt;http://maps.jpl.nasa.gov/&lt;br /&gt;&lt;br /&gt;Más que interés científico, que este ejemplo no tiene, se muestra lo sencillo que es crear una animación interactiva 3D, una vez conoces los rudimentos del lenguaje.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.5-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.5-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;En este otro ejemplo:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.5-3.0.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.5-3.0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;pulsa para agrandar&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Se aplica una fórmula sencilla para simular un oscilador, visualmente (una esfera). El número que obtenemos del contador, lo podemos considerar grados. Entonces pasamos a radianes, dividiendo entre 360 y multiplicando por 2pi. Finalmente se hace el seno. La salida enviada a "distancia", controlará el parámetro de la distancia al origen de una pequeña esfera.&lt;br /&gt;&lt;br /&gt;El deslizador vertial recibe también en valor de "distancia" (botón derecho-&gt;propiedades-&gt;receive-symbol), por tanto no tienes siquiera que activar gemwin para ver el efecto.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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/4908934190193877178-3753680966758316196?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3753680966758316196/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3753680966758316196' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3753680966758316196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3753680966758316196'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-ejemplo-resumen-paso-45.html' title='Pd: Ejemplo resumen (paso 4.5)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-74581852346567420</id><published>2006-10-26T11:16:00.000+01:00</published><updated>2006-10-26T11:20:31.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Luz (paso 4.4)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Crea este montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.4-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.4-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Verás dos nuevos mensajes sobre [gemwin], lighting 0 o 1, desactiva o activa la luz 3D en la escena. En concreto ves un nuevo objento [world-light] que es precísamente un punto de luz (no visible) en el infinito, es decir que todos los rayos son paralelos. Es una luz distinta a un foco.&lt;br /&gt;&lt;br /&gt;Sobre la esfela [sphere] se aplican varias transformaciónes. Una es [color], que a diferencia de [colorRGB] funciona enviando un mensaje con un vector que contiene los valores de rojo (R), verde (G), y azul (B). Otra transformación interactiva es [rotate], en cuyas entradas conectas el valor del ángulo de rotación, y un vector que indica el eje que gira, en este caso es eje y.&lt;br /&gt;&lt;br /&gt;Por último sphere, con un valor variable del número de líneas guía que la forman. Cámbialo para ver el efecto.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.4-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.4-2.png" alt="" border="0" /&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/4908934190193877178-74581852346567420?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/74581852346567420/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=74581852346567420' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/74581852346567420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/74581852346567420'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-luz-paso-44.html' title='Pd: Luz (paso 4.4)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-1699427351327544667</id><published>2006-10-25T16:56:00.000+01:00</published><updated>2006-10-25T17:02:23.476+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Acordes y trigger (paso 2.2)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Una manera sencilla de crear un acorde con eventos midi es así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.2-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.2-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El primer outlet de [notein] produce el valor de "nota MIDI". Le sumamos la cantidad necesaria del un intervalo de 3ª mayor (4 semitonos), otro de 5 justa (7 semitonos), y oiremos un acorde mayor con funamental, la nota que toquemos en el teclado.&lt;br /&gt;&lt;br /&gt;El mismo montaje se puede elaborar de la siguiente manera, pudiento elegir entre el tipo de acorde que queremos oir:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.2-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.2-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Atención al uso de unpack, que "desempaqueta" los mensajes que definen cada acorde en dos valores independientes, que luego simplemente se suman al de la nota que tocamos. Gracias a los objentos [send] (s) y [receive] (r) podemos organizar en bloques el programa general.&lt;br /&gt;&lt;br /&gt;Sin embargo, aunque oigamos un acorde, las notas se producen secuencialmente, ya que en pure data los distintos hilos o cables que salen de un objento se suelen procesar por orden de creación. Si queremos un acorde formados por tres notas realmente sincronizadas, podemos echar mano de [trigger]. En el siguiente ejemplo se usa trigger para sincronizar las tres notas.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.2-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.2-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Además un deslizador, que tiene cambiado su recorrido de 0 a 1 (en propiedades), servirá  para cambiar el volumen de las notas generadas.&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/4908934190193877178-1699427351327544667?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/1699427351327544667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=1699427351327544667' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1699427351327544667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/1699427351327544667'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-acordes-y-trigger-paso-22.html' title='Pd: Acordes y trigger (paso 2.2)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8073004924712324582</id><published>2006-10-25T11:53:00.000+01:00</published><updated>2006-11-02T20:46:50.510Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Textura sencilla (paso 4.3)</title><content type='html'>&lt;div style="text-align: justify;"&gt;A los objetos de dibujo (sphere, cube, square, circle,...) que vamos viendo, le puedes enviar mensajes según quieras que sean dibujados:&lt;br /&gt;&lt;br /&gt;draw line&lt;br /&gt;draw point&lt;br /&gt;draw fill&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.3-0.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.3-0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;según quieras respectivamente, que se dibujen linealmente, con puntos o con relleno de un color.&lt;br /&gt;&lt;br /&gt;También se pueden aplicar texturas sobre los objetos de dibujo. En el siguiente ejemplo se aplica como textura de un cubo, una foto jpg.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.3-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.3-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Se envía el mensaje "open dirección" sobre el objeto [pix_image]. El siguiente objeto [pix_texture] toma la imagen y la mapea sobre el objeto dibujado, un cubo, en este caso.&lt;br /&gt;&lt;br /&gt;La textura aplicada también podría ser un video grabado, o recibiéndose en tiempo real desde una cámara.&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/4908934190193877178-8073004924712324582?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8073004924712324582/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8073004924712324582' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8073004924712324582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8073004924712324582'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-textura-sencilla-paso-43.html' title='Pd: Textura sencilla (paso 4.3)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2740302612069622857</id><published>2006-10-24T10:22:00.000+01:00</published><updated>2006-10-24T10:35:05.313+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: transformaciones gráficas (paso 4.2)</title><content type='html'>&lt;div style="text-align: justify;"&gt;En la línea que une [gemhead] con un objeto gráfico, añadimos las transformaciones necesarias para conseguir el efecto que queramos. En el siguiente ejemplo, se ponen algunas transformaciones básicas.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.2-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.2-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Empezando desde arriba, inmediatamente después de [gemhead] viene la transformación del color [colorRGB] en cuyos cuatro últimos inlets (entradas) se controla el valor de rojo, el verde, el azul, y el valor alpha o transparencia.&lt;br /&gt;&lt;br /&gt;Para que la transparencia tenga efecto, añadimos el objento [alpha].&lt;br /&gt;&lt;br /&gt;Luego viene una rotación, mediante el objeto [rotateXYZ]. Lo que se rotan son los ejes x,y o z, sobre los que se dibuja el objento. Observa el efecto sobre la marcha.&lt;br /&gt;&lt;br /&gt;Finalmente una translación, usando [translateXYZ]. De nuevo, se translada el objento a lo largo de los ejes. Los límites de la pantalla, están determinados, por su tamaño y por la posición de la cámara que recoge la escena. Estos parámetros pueden cambiarse en forma de mensajes sobre [gemwin]. En este caso, te podrás mover alrededor de 3 unidades sobre x o y, antes de perder el objeto.&lt;br /&gt;&lt;br /&gt;La transformación que falta en el ejemplo anterior, y que por supuesto es posible realizar en pd, es [scaleXYZ] que como imaginarás escala los valores de los distintos ejes, o dicho de otra manera, los estira o encoge.&lt;br /&gt;&lt;br /&gt;En esta ocasión los mensajes 1 y 0 sobre [gemwin] los he sustituido por un interruptor:toggle.&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/4908934190193877178-2740302612069622857?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2740302612069622857/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2740302612069622857' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2740302612069622857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2740302612069622857'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-transformaciones-grficas-paso-42.html' title='Pd: transformaciones gráficas (paso 4.2)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7090619588614998997</id><published>2006-10-23T21:22:00.000+01:00</published><updated>2006-11-08T21:51:08.891Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: empaquetar, desempaquetar (paso 1.7)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Un mensaje puedes estar compuesto de varios símbolos, o de varios números, o una combinación de estos con aquellos. Hay una manera de definir qué tipo de mensaje estamos usando. Por ejemplo sin en un mensaje escribimos "float 43.45", estamos creando una mensaje con un valor en coma flotante, a saber, 43.35. Podríamos sin embargo referirnos a "43.45" como símbolo, como lo sería "casa" o "tumismo". En ese caso podríamos indicar dentro del mensaje "symbol 43.45". También podemos  abreviar "float" con "f", y "symbol" con "s". Esto es algo así como la declaración de mensajes, parecida a la declaración de variables  en otros  lenguajes.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Existe un objento que empaquete mensajes sencillos en uno en forma de lista. De igual manera existe otro objento que permite desempaquetar mensajes complejos en sencillos. Mira el siguiente montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.7-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.7-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Pack se encarga de empaquetar en un sólo mensaje esos tres mensajes independientes. Fíjate que después de pack indicamos de qué tipo son los componentes. "f f s" significa "float float symbol", de forma abreviada. A la derecha vemos el trabajo de [unpack], que como ya imaginarás desempaqueta. El uso es muy sencillo como ves, prueba a jugar con la sección de paquetería.&lt;br /&gt;&lt;br /&gt;Por poner un ejemplo de uso sencillo de pack, vamos a presentar una tabla de datos, que indica el tiempo, lo que recorre y cuerpo y su velocidad. Estas tres magnitudes están relacionadas en física con la expresión:&lt;br /&gt;&lt;br /&gt;espacio= velocidad*tiempo&lt;br /&gt;&lt;br /&gt;para el movimiento uniforme. Una posible expresión en pure data, podría ser esta:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.7-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.7-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Un contador, que hará la función de cronómetro, va haciendo incrementarse el valor del tiempo de 0.1 en 0.1 unidades. A esa secuencia la multiplicamos por el valor velocidad, y obtenemos el espacio recorrido. Presentamos los datos en un sólo mensaje compuesto, usando pack.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ejemplo de suma de vectores&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una operación típica en matemática es la suma de dos vectores, o más fácil aun, dada dos tríadas de números como (a,b,c) y (x,y,z) -suponiendo que a,b,c,x,y,z son números- se define la suma de las tríadas o vectores como  una nueva tríada, en la que hemos sumado el primer componente con el primer componente, el segundo, con el segundo, etc. Así la suma vectorial de las dos tríadas anteriores es&lt;br /&gt;&lt;br /&gt;(a+x, b+y, c+z)&lt;br /&gt;&lt;br /&gt;¿Cómo expresamos eso en pure data?, con pack y unpack es fácil. Esta es una solución.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/vectorsuma.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/vectorsuma.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;he usado los vectores (1, 0, 1) y (0, 1 , 0) , para que sea muy previsible lo que debe salir, es decir (1, 1, 1). Prueba a colocar otros vectores de entrada.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&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/4908934190193877178-7090619588614998997?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7090619588614998997/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7090619588614998997' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7090619588614998997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7090619588614998997'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-empaquetar-desempaquetar-paso-17.html' title='Pd: empaquetar, desempaquetar (paso 1.7)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3359307926209074108</id><published>2006-10-22T00:43:00.000+01:00</published><updated>2006-10-22T01:02:44.494+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>Corazón ártico</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/Paesaggio_al_Polo1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/Paesaggio_al_Polo1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote style="font-style: italic;"&gt;"Pero debes aprender una cosa, imprimirla en tu mente todavía maleable: el hombre tiene horror a la soledad. Y de todas las espécies de soledad, la soledad moral es la más terrible. Los primeros ermitaños vivían con Dios. Habitaban en el más poblado de los mundos: el mundo de los espíritus. El primer pensamiento del hombre, sea un leproso o un prisionero, un pecador o un inválido, es este: tener un compañero en su desgracia" (Los sufrimientos del inventor, Balzac)&lt;br /&gt;&lt;/blockquote&gt;Poco que decir, allá donde vayamos, habrá dioses y diablos, habrá vacío, perdición y nirvana. ¿Acaso puedes ir a algún sitio donde no estés, estando vivo?&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/4908934190193877178-3359307926209074108?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3359307926209074108/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3359307926209074108' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3359307926209074108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3359307926209074108'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/corazn-rtico.html' title='Corazón ártico'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-9190949839368012841</id><published>2006-10-21T22:58:00.000+01:00</published><updated>2007-06-23T19:08:03.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Un círculo (paso 4.1)</title><content type='html'>Una vez has entrado en pd, y se ha cargado correctamente Gem, verás que en la ventana principal de pd, aparece:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;GEM: Graphics Environment for Multimedia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM: ver: 0.90&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM: compiled: Jul  5 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM: maintained by IOhannes m zmoelnig&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM: Authors :    Mark Danks (original version on irix/windows)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM:         Chris Clepper (macOS-X)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM:         Daniel Heckenberg (windows)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM:         James Tittle (macOS-X)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GEM:         IOhannes m zmoelnig (linux/windows)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ese es el signo que indica que puedes usar GEM. Abre un proyecto en blanco y añadiremos un objeto llamado [gemwin]. Este objeto se encarga de configurar y crear una ventana en la que se desarrollarán los gráficos, así como el proceso de renderizado en tiempo real. El control de [gemwin], se hace enviándole mensajes. Esta podría ser una situación sencilla:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.1-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.1-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Para crear o destruir una ventana usamos respectivamente los mensajes "create" y "destroy". Puedes comprobarlo pulsando uno u otro. El proceso de renderizado se activa con 1 o 0. Esto es muy importante, pues si no lo activas no verás nada. También tienes que tener en cuenta que si no paras el proceso de renderizado, aunque cierres un proyectos (sin cerrar pd), sigue funcionando entonces podrías ver cómo se te mezclan dos proyectos distintos que abriste sucesivamente.&lt;br /&gt;&lt;br /&gt;En este caso, el mensaje dimen determina qué tamaño tendrá la pantalla de gráficos, entonces es un mensaje para enviar antes de que se cree la ventana. Si miras en la ayuda, verás que hay muchos mensajes de configuración para  [gemwim].&lt;br /&gt;&lt;br /&gt;Ya sabes crear la ventana gráfica, ahora hace falta dibujar algo. Al lado de lo anterior, añade esto:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rn1hCscWA3I/AAAAAAAAAIY/UroZ0VP9C68/s1600-h/4.2-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZIIUDghgB4E/Rn1hCscWA3I/AAAAAAAAAIY/UroZ0VP9C68/s320/4.2-2.png" alt="" id="BLOGGER_PHOTO_ID_5079322653661463410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El objeto [gemhead] (cabecera de objeto) crea las configuración básica para renderizar un objeto, además envía la señar de renderizado al objeto que se conecte en su salida. La situación más simple, es conectar la salida de [gemhead] directamente a un objeto, como en este caso es [circle] (un círculo), sin embargo, a menudo se interpondrán otros objetos, que lo que harán serán tranformar la información básica que envía [gemhead]. En este caso, damos color.&lt;br /&gt;&lt;br /&gt;En cuanto al color dado, puesto que [color] recibe mensajes por su inlet frío en forma de triadas, estamos enviando el color 1 0 0. Que en el lenguaje RGB -Red-Gren-Blue-, significa valor 1 al rojo y 0 al verde y azul. Prueba a hacer combinaciones entre los tres colores básicos, eligiendo un valor entre 0 y 1 para cada color.&lt;br /&gt;&lt;br /&gt;El círculo es inicializado con el valor de radio 1, aunque podríamos conectar un mensaje o caja de números en su segundo inlet, para variarlo en tiempo real.&lt;br /&gt;&lt;br /&gt;El proyecto completo quedó así:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.1-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.1-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/4.1-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/4.1-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Intenta cambiar el color y hacer variable el radio del círculo&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/4908934190193877178-9190949839368012841?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/9190949839368012841/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=9190949839368012841' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/9190949839368012841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/9190949839368012841'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-un-crculo-paso-41.html' title='Pd: Un círculo (paso 4.1)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZIIUDghgB4E/Rn1hCscWA3I/AAAAAAAAAIY/UroZ0VP9C68/s72-c/4.2-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2553864353226257123</id><published>2006-10-21T22:33:00.000+01:00</published><updated>2006-10-21T22:38:04.490+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: GEM (paso 4)</title><content type='html'>&lt;div style="text-align: justify;"&gt;El GEM, o "Entorno gráfico multimedia", permite añadir a Pure Data trabajo con gráficos, video y renderizado de objetos 3d con opengl. Se integra en el lenguaje de objentos y mensajes interconectados.&lt;br /&gt;&lt;br /&gt;Para  cargar la librería GEM, hay que indicarlo en la línea de comandos que lanza pure data. Algo así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pd -lib Gem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuidado con la G mayúscula. Cuando instalas Gem, incorpora documentación y ejemplos muy útiles para aprender. De cualquier forma, se presupone que conoces ya algo del manejos de Pure Data en general, para poder entrar en faena con los gráficos.&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/4908934190193877178-2553864353226257123?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2553864353226257123/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2553864353226257123' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2553864353226257123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2553864353226257123'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-gem-paso-4.html' title='Pd: GEM (paso 4)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2388658387057837605</id><published>2006-10-20T21:54:00.000+01:00</published><updated>2006-10-20T22:01:45.068+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: notein, noteout (paso 2.1)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Para instalar lo referente a la instalación de qjackctl mira aquí. Para empezar con linux voy a lanzar qjackctl, zynaddsubfx y vkeybd.&lt;br /&gt;&lt;br /&gt;-qjackctl hará de panel de conexiones&lt;br /&gt;-zynaddsubfx de módulo MIDI para escuchar las notas&lt;br /&gt;-vkeybd de teclado MIDI. Si tienes un teclado midi externo será parecido.&lt;br /&gt;&lt;br /&gt;Lanzo los tres programas (primero qjackctl), y final mente pd. En el panel de conexiones, hago esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.1-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.1-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En la pestaña MIDI encontramos lo anterior. Conecto la salida de MIDI de pure data con Zynaddsubfx, y la salida de vkeybd (virtual keyboard) con la puredata. Si tuviera un teclado MIDI externo conectaría este a Pure Data.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.1-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.1-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el menú media de Pure Data, hay que indicar jack, y alsa-midi.&lt;br /&gt;&lt;br /&gt;Abro un trabajo nuevo. Escribimos esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.1-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.1-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Al pulsar sobre el teclado, deberías oir a zynaddsubfx sonando. El objento [notein] lee los mensajes de nota que entren por donde hayamos indicado, en este caso vienen de vkeybd. Los tres outlet de [notein] son, de izquierda a derecha:&lt;br /&gt;&lt;br /&gt;-Nota, en formato MIDI, un número entero, de manera que el 60 es el do central de un piano, 61, el siguiente semitono, etc...&lt;br /&gt;-"Volumen", o parámetro velocity MIDI, es un entero de 0 a 127. El valor 0 es silencio, o nota apagada.&lt;br /&gt;- Canal, un número de 1 a 16 que indica el canal MIDI.&lt;br /&gt;&lt;br /&gt;Estos tres datos son idénticos en [noteout], sólo que esta vez se envían a la salida que hayamos indicado; en este caso el sintetizador zynaddsubfx.&lt;br /&gt;&lt;br /&gt;Crea ahora esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.1-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.1-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Es posible crear notas midi desde dentro del programa pure data. [makenote] hace ese trabajo. Los dos parámetros que en este caso lo acompañan, son respectivamente, el parámetro velócity, y la duración de la nota en milisegundos. Entonces, la nota anterior durará 200 milisegundos.&lt;br /&gt;&lt;br /&gt;Por último construye este montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/2.1-5.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/2.1-5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;En este caso se generan números aleatorios entre 0 y 11, uno cada medio segundo. El valor se suma a 60, entonces en valores de notas MIDI, estamos generando notas entre do4 y do5. Finalmente se crea la nota con velocity 100 y 200 milisegundos de duración.&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/4908934190193877178-2388658387057837605?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2388658387057837605/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2388658387057837605' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2388658387057837605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2388658387057837605'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-notein-noteout-paso-21.html' title='Pd: notein, noteout (paso 2.1)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-2852507649232978751</id><published>2006-10-20T13:45:00.001+01:00</published><updated>2008-11-05T11:06:28.156Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='índices'/><title type='text'>Pd: Índice</title><content type='html'>&lt;span style="font-style: italic; font-weight: bold;"&gt;Notas sobre Pure Data:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ÍNDICE&lt;br /&gt;&lt;br /&gt;PASO 0&lt;ul&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pure-data-paso-0.html"&gt;Instalación&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-puredyne.html"&gt;Puredyne&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/02/objentos-pd.html"&gt;Colección de objetos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/02/pd-video-tutoriales.html"&gt;Algunos videotutoriales&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;PASO 1&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-cosas-y-cables-paso-1.html"&gt;Cosas y Cables&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-mates-bsicas-paso-12.html"&gt;Mates Básicas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-deslizar-y-contar-paso-13.html"&gt;Delizar y contar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-metro.html"&gt;Metro&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-metrnomo-y-ms-paso-15.html"&gt;Metrónomo y más&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-flujos-paso-16.html"&gt;Flujos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-empaquetar-desempaquetar-paso-17.html"&gt;Empaquetar, desempaquetar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-trigger-paso-18.html"&gt;Trigger&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-conectar-sin-cables-paso-19.html"&gt;Conectar sin cables&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-creacin-de-un-tabla.html"&gt;Creación de una tabla&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-secuenciar-eventos-con-tabla.html"&gt;Secuenciar eventos con tabla&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-patch-subpatch-y-abstracciones-112.html"&gt;Patch, Subpatch y abstracciones&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/02/pd-operaciones-con-expr.html"&gt;Operaciones con expr&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/03/pd-interruptores-moses-y-spigotpaso-114.html"&gt;Interruptores moses y spigot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/05/pd-until.html"&gt;until&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;PASO 2 - MIDI&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entorno MIDI&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-notein-noteout-paso-21.html"&gt;notein y noteout&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-acordes-y-trigger-paso-22.html"&gt;Acordes y trigger&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-minisecuenciador-paso-23.html"&gt;Minisecuenciador&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/04/pd-polifona-con-poly.html"&gt;Polifonía con Poly&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;PASO 3 - Audio&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entorno Audio&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-un-oscilador-paso-31.html"&gt;Un oscilador&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-amplitud-paso-32.html"&gt;Amplitud&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-adicin-de-osciladores-paso-33.html"&gt;Adición de osciladores&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-tabla-de-ondas-paso-34.html"&gt;Tabla de ondas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-modulacin-mediante-tablas-paso-35.html"&gt;Modulación mediante tablas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/04/pd-grabar-un-wav-paso-36.html"&gt;Grabar un wav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/05/pd-ondas-famosas-con-phasor.html"&gt;Ondas famosas con phasor~&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/05/pd-samplers-paso-68.html"&gt;Samplers&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;PASO 4 - Gem&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-gem-paso-4.html"&gt;GEM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-un-crculo-paso-41.html"&gt;Un círculo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-transformaciones-grficas-paso-42.html"&gt;Transformaciones gráficas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-textura-sencilla-paso-43.html"&gt;Textura sencilla&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-luz-paso-44.html"&gt;Luz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/10/pd-ejemplo-resumen-paso-45.html"&gt;Ejemplo resumen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/04/pd-orden-en-las-transformaciones-paso.html"&gt;Orden en las transformaciones&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/04/pd-articulaciones-con-gemlists-paso-47.html"&gt;Articulaciones con gemlists&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/04/pd-separator-paso-48.html"&gt;Separadores&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;PASO 5 - PDP&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entorno de vídeo&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-ver-video-en-tiempo-real-paso-51.html"&gt;Ver vídeo en tiempo real&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2006/11/pd-transformaciones-bsicas-paso-52.html"&gt;Transformaciones básicas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/03/pd-espiral-de-ruido.html"&gt;Espiral de ruido (pdp_noise)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;MÁS EXTERNALS&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/03/pd-emitir-con-oggcast.html"&gt;emitir con oggcast&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/06/pd-osc.html"&gt;OSC con oscx&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/06/csound-pd-va-osc.html"&gt;csound---pd vía osc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oggro.blogspot.com/2007/06/python-pd-via-osc.html"&gt;python--pd vía osc&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-2852507649232978751?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/2852507649232978751/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=2852507649232978751' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2852507649232978751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/2852507649232978751'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-ndice.html' title='Pd: Índice'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-816883261937981433</id><published>2006-10-18T11:56:00.000+01:00</published><updated>2006-10-18T12:01:31.586+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Flujos  (paso 1.6)</title><content type='html'>Cuando se interactúa con una caja de números, arrastrando el ratón, se producen una secuencia de datos, podríamos decir un chorro de cambios, que afectarán al objeto al que esté conectada la caja. De igual manera al crear un objento [metro] creamos una secuencia de bangs ordenada en el tiempo. Hay otros objentos para generar datos en secuencias, uno de ellos es [line]&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.6-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.6-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el anterior montaje, vemos cómo al pulsar el mensaje de la izquierda, obtendremos una secuencia de números que van de 0 a 1000 en un segundo (1000 milisegundos). Pulsando el mensaje de la derecha volvemos a 0 en medio segundo (500 milisegundos). Añade lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.6-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.6-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;[pipe 1000], actua como un delay o retraso respecto a los datos que recibe, de manera que espera 1 segundo en este caso, para permitir "pasar" lo que venga por la entrada. El poder manejar flujos de datos, es lo que hace de pure data, bueno para generara, grabar, editar en tiempo real streams (flujos). Añadiendo los conocidos deslizadores es más visual lo que estamos diciendo (cambia el ouput-range de los deslizadores para que sea entre 0 y 1000):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.6-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.6-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Prueba ahora con este montaje&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.6-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.6-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El deslizador de la izquierda se mueve a la vista, continuamente, mientras que el de la derecha va a saltos. Por defecto [line] envía valor distinto cada 25 milisegundos, sin embargo ese número puede alterarse cuando creas el objento line. Añadiendo dos parámetros, hacemos tal cosa: el primero indica el valor inicial de line (por defecto 0), el segundo cada cuánto tiempo enviará un valor (lo denominado "grain rate"). En el anterior ejemplo la tasa (rate) es 500 milisegundos o medio segundo.&lt;br /&gt;&lt;br /&gt;Por último montaremos esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.6-5.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.6-5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;intenta averiguar lo que hace [pack float float]&lt;br /&gt;&lt;br /&gt;&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/4908934190193877178-816883261937981433?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/816883261937981433/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=816883261937981433' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/816883261937981433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/816883261937981433'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-flujos-paso-16.html' title='Pd: Flujos  (paso 1.6)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8874719812963536952</id><published>2006-10-15T18:53:00.000+01:00</published><updated>2006-10-15T19:01:07.213+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: metrónomo y más (paso 1.5)</title><content type='html'>&lt;span style="font-style: italic;"&gt;Nota: para entender este post correctamente se sugiere conocer la operación matemática "módulo", es decir, el resto de dividir un número entre otro. "2 módulo 2", es 0, mientras que "3 módulo 2" es 1. De manera  que n módulo 2, donde n es cualquier número natural es siempre 0 o 1. Esta operación es útil para hacer ritmos y ciclos.  &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Una vez conoces un montaje en pure data puedes usarlo para completarlo, adaptarlo, o conectarlo con otros, esto es similar a otros lenguajes. Recordando el contador&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-1.0.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-1.0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Se le podrían añadir un par de cosas como esta:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-2.0.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-2.0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora es un contador pero con algunas opciones extra, como contar en sentido creciente o decreciente, o elegir el número de partida. Se trata de aprender a adaptarlo a tus necesidades de la manera más efectiva. Otra aplicación sencilla de un contador es por ejemplo construir un metrónomo (por ahora) visual. Para eso, antes voy a presentar un par de cosas nuevas.&lt;br /&gt;&lt;br /&gt;Una es [select]. Permite seleccionar entre distintas salidas según sea la entrada, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si la entrada es 0, imprimirá "sí", si es 1, imprimirá "no", si es trés imprime "no sé",  y si no es ninguna de esta, devuelve el número de entrada por la última salida. No es el único objeto para seleccionar o routear flujos de datos, pero este es sencillo de aprender.&lt;br /&gt;&lt;br /&gt;Otra cosa que aprenderemos no es extrictamente necesaria de ver ahora, pero ayuda a ordenar la ideas. Sabes construir un contador, y por qué no aislarlo como cicuito independiente, y usarlo como un objeto llamado [contador] ?. Eso siempre puede hacerse: las abstracciones. Es como lo que en otros lenguajes de programación se hace con las funciones. Podemos crear un objeto nuevo con sus entradas y salidas. Para ello, crea un objento, y escribe en el: pd contador. Elegimos contador como nombre. Si haces click sobre él, se abrirá otra ventana. Pues es en esa ventana donde crearás el montaje para ese objento. ¿Y cómo crear las entradas y salidas para manejarlo?. Muy fácil, colocarás cajas con el nombre inlet colocadas de izquierda a derecha, esas, serán las entradas, y para las salidas es igual pero escribiendo outlet. En la ventana que se abrió al escribir pd contador, podrías escribir esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Por tanto ya puedes usar el nuevo objento creado por tí, con su entrada y salida, por ejemplo así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-5.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ya estás en condiciones de entender este montaje (suponiendo que comprendas módulo, que en pd se escribe %)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-6.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-6.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Al encender el interruptor, comienza a funcionar el contador, a la vez que se envía 4 a la operación módulo. Se hace el "n módulo 4" con los números que salen de contador, es decir que irán tomando valores 0, 1, 2, 3, 0, 1, 2, 3,...Es justo el resto de dividir ese número entre 4. Finalmente se usa un select para hacer funcionar distintos bangs.&lt;br /&gt;&lt;br /&gt;Añadiendo el siguiente montaje, además se puede seleccionar el número de pulsos por minutos, tal y como hacen los metrónomos musicales.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.5-7.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.5-7.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Un paso más y adornaríamos más el engendro, añadiendo tempos clásicos: allegretto, resto, etc, con mensajes. Esto te lo dejo a tí, contingente lector.&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/4908934190193877178-8874719812963536952?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8874719812963536952/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8874719812963536952' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8874719812963536952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8874719812963536952'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-metrnomo-y-ms-paso-15.html' title='Pd: metrónomo y más (paso 1.5)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8237519075298003652</id><published>2006-10-15T00:48:00.000+01:00</published><updated>2006-10-15T00:57:53.564+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Metro (paso 1.4)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Sin más crea el siguiente montaje&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.4-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.4-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Cuando pulsas en el bang de la izquierda, se produce en la salida standard (en la ventana principal de pd) el símbolo: bang. Cuando pulsas en el bang de la derecha, verás una secuencia de bang. El número que acompaña a [metro] es el número de milisegundos entre un bang y otro, por tanto, 1000 ms, son 1 segundo. Como imaginarás, puedes ajustar este número en la segunda entrada.&lt;br /&gt;&lt;br /&gt;Por poner un ejemplo con metro, el siguiente programa genera números aleatorios random, uno cada medio segundo, con rango entre 0 y 9. Además podemos ajustar la velocidad de producción de números:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.4-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.4-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Metro es un objeto muy importante, porque sirve para sincronizar la computación de algo con una pulsación constante. Por ejemplo, podría producirse la captura de una imágen de la cámara cada pocos milisegundos, o enviar un mensaje de control midi cada cierto intervalo de tiempo, o marcar el ritmo a la que se realiza un proceso de computación. [metro] es un metrónomo. Por otra parte[random] genera un número (pseudo)aleatorio entre 0 y n-1. Es decir que [random 100] generará números "al azar" entre 0 y 99.&lt;br /&gt;&lt;br /&gt;Un objeto básico muy útil para usar con procesos como metro, es el interruptor toggle (lo encuentras en el menú 'Put'). Este es el mismo ejemplo anterior, pero con un interruptor, prueba el efecto.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.4-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.4-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El interruptor toggle, envía un 1 cuando está activo, y un 0 cuando se despulsa.&lt;br /&gt;&lt;br /&gt;El siguiente ejemplo, envía una carta de amor cada 2 segundos, si toggle está pulsado claro:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.4-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.4-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Cada 2000 milisegundos se imprime el mensaje. Como curiosidad, mira cómo &lt;span style="font-style: italic;"&gt;set&lt;/span&gt; se puede "interceptar" y cambiar el contenido de un mensaje.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.4-5.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.4-5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Pero esto no está ligado a &lt;span style="font-style: italic;"&gt;metro&lt;/span&gt;, metro es un simple generador de eventos sincronizados. Podríamos asociarlo en el contador del tema anterior, para crear una secuencia temporal ordenada.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.4-6.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.4-6.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Avanza un número cada segundo. Intenta hacer que avance 2 unidades cada medio segundo.&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/4908934190193877178-8237519075298003652?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8237519075298003652/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8237519075298003652' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8237519075298003652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8237519075298003652'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-metro.html' title='Pd: Metro (paso 1.4)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-8607404306820530311</id><published>2006-10-14T20:48:00.000+01:00</published><updated>2006-10-27T17:38:25.443+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Deslizar y Contar (paso 1.3)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Pure data tiene un número básico de objetos que hay que conocer, luego, al instalar más librerías, aumenta el número de cosas interconectables, aunque siempre en el lenguaje de cajas con entradas y salidas, entrada caliente y frías, etc. El siguiente objeto es bastante gráfico, en realidad dos, el deslizador horizontal y vertical: hslider y vslider. Los encuentras en el menú 'Put'.&lt;br /&gt;&lt;br /&gt;Coloca un deslizador vertical, y a su alrededor, un bang, tres mensajes, con los valores respectivamente 1000, 4 y  60, y un objeto número, o como le hemos llamado, una caja de números. Todo esto lo conectas a la entrada (la parte superior), mientras que a la salida puedes conectar otra caja de números para visualizar, y un print -investiga siempre otras posibilidades. La cosa queda así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.3-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.3-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Al pulsar los mensajes, verás que cambian el deslizador, aunque al enviarle 1000, este toma el valor máximo que por defecto es 127. Mira cómo, al arrastrar el ratón desde la caja de números el deslizador se mueve continuamente. Efectivamente, también puedes operar directamente en el deslizador. Es un entorno muy expresivo como ves.&lt;br /&gt;&lt;br /&gt;Observa que si envías un &lt;span style="font-style: italic;"&gt;bang&lt;/span&gt; al deslizador, este devuelve el valor que tiene. Además, como cosa general para las cajas de números, si quieres un movimiento más fino, es decir que en vez de unidad a unidad, avance mediante decimales, pulsa MAYÚSCULA y mantenlo pulsado mientra interactuas. Si en vez esto, pulsas CONTROL el deslizador volverá a su valor 0.&lt;br /&gt;&lt;br /&gt;Pulsando el botón derecho, y en propierties (y esto vale para varios objetos básicos) puedes cambiar tanto el valor máximo y mínimo de los deslizadores (en output-range), como el color y tamaño. El comportamiento del deslizador horizontal es el mismo.&lt;br /&gt;&lt;br /&gt;Hablando de configuración visual, el objeto básico &lt;span style="font-style: italic;"&gt;Number2&lt;/span&gt;, que puedes encontrar en el menú 'Put' es igual que &lt;span style="font-style: italic;"&gt;Number&lt;/span&gt; pero más evolucionado, ya que puedes cambiar el color, la fuente, añadir  una etiqueta etc. Eso será importante para desarrollar interfaces amigables y/o claras.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;*Un contador&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Más cosas. Vamos a introducir un objeto nuevo. Crea uno, y escribe en su interior float. El objeto [float], guarda el número que reciba por una de sus entradas, y cuando recibe un bang por la entrada caliente, lo devuelve. Pruebalo en este montaje&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.3-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.3-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Float, que también puedes resumir escribiendo una f, tiene varios usos. Vamos a ver uno útil. La idea es hacer un artefacto que cuente: un contador. Realiza la siguiente disposición:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.3-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.3-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Añade estas conexiones:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.3-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.3-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La idea es que al hacer bang la salida de [&lt;span style="font-style: italic;"&gt;float]&lt;/span&gt;, es enviada a la suma, añadiendo su valor en 1, y este incremento es guardado en float. La próxima vez que se hace bang, se devuelve dicho valor, reenviándolo también a la suma...así sucesivamente. El resultado es un contador, un artefacto que cuenta de 1 en 1.&lt;br /&gt;&lt;br /&gt;Una versión ligeramente más completa, añade la posibilidad de resetear el contador, e incluso, determinar en qué número se incrementará el contador en cada paso. Algo así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.3-5.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.3-5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Como salida estoy usando un &lt;span style="font-style: italic;"&gt;Number2&lt;/span&gt;, para que quede más bonito, aunque obviamente esto no influye en el resultado numérico. Añádiendo un deslizador, para observar el progreso visualmente, la cosa queda así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.3-6.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.3-6.png" alt="" border="0" /&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/4908934190193877178-8607404306820530311?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/8607404306820530311/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=8607404306820530311' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8607404306820530311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/8607404306820530311'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-deslizar-y-contar-paso-13.html' title='Pd: Deslizar y Contar (paso 1.3)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-3809106203639643211</id><published>2006-10-13T22:00:00.000+01:00</published><updated>2006-10-13T22:04:55.509+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Mates básicas (paso 1.2)</title><content type='html'>&lt;div style="text-align: justify;"&gt;  Para conocer algo más el juego, vamos a hacer unas cuantas operaciones matemáticas; la base de toda programación. Crea un objeto, y escribe en el: + 2. Luego añade encima un mensajes que contenga por ejemplo un 5, y debajo una caja de números. La cosa debe quedar así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.2-1.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.2-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;  Conecta, la salida del mensaje con la entrada (rayitas superiores) de la izquierda. A menudo a esta entrada de la izquierda, se le llama entrada caliente, mientra que la o las otras son frías.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.2-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.2-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;  Cuando el mensaje llega al objeto suma, procede a realizar la suma de lo que le viene, y el resultado se recoge en la cája de números.&lt;br /&gt;&lt;br /&gt;  Añade ahora otro mensaje y conéctalo a la "entrada caliente" de la suma, borra el '+ 2' dejando sólo +. Prueba a jugar con eso. Por último crea este montaje:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1.2-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1.2-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Recuerda que la caja de números es como un rectángulo sin una esquina, mientras que el mensaje es como una caja a la que le han dado un muerdo a la derecha, o una especie de banderín. Recuerda también, que las cajas de números cambian su valor conforme arrastras el ratón, habiendo pulsado previamente sobre ellas.&lt;br /&gt;&lt;br /&gt;Observa que cualquier cambio que ocurra en la entrada caliente (izquierda) del objeto suma, se refleja instantaneamente en la salida, pero no ocurre lo mismo con la entrada fría (derecha). En realidad, la entrada fría, sirve para alacenar un número que se usa para realizar la operación con lo que "vaya pasando" en la entrada "caliente". También fíjate en que un bang sobre el objento suma, da como resultado, el valor de la última operación que se hizo.&lt;br /&gt;&lt;br /&gt;Finalmente añadir, que si pulsas con el botón derecho del ratón sobre el objeto suma, y seleccionas 'Help', obtendrás una pequeña explicación (en inglés) sobre operaciones básicas matemáticas.&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/4908934190193877178-3809106203639643211?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/3809106203639643211/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=3809106203639643211' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3809106203639643211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/3809106203639643211'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-mates-bsicas-paso-12.html' title='Pd: Mates básicas (paso 1.2)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7551030734231743664</id><published>2006-10-13T17:46:00.000+01:00</published><updated>2007-04-24T13:14:05.743+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vídeo'/><title type='text'>RecordMyDesktop</title><content type='html'>Había probado istanbul, y xvidcap, para capturar lo que estás haciendo en la pantalla, pero ninguno de ellos me convencía mucho. Recientemente he oído hablar de recordmydesktop&lt;br /&gt;&lt;br /&gt;&lt;a href="http://recordmydesktop.sourceforge.net/"&gt;http://recordmydesktop.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En el caso de ubuntu, para compilarlo necesitarás algunas dependencias. Escribo una línea que las instalaría todas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install libasound-dev libxext-dev libxfixes-dev libxdamage-dev libogg-dev libvorbis-dev libtheora-dev libjack0.100.0-dev&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez bajado el archivo:&lt;br /&gt;&lt;br /&gt;tar zxvf recordmydesktop-x.x.x.tar.gz&lt;br /&gt;cd recordmydesktop&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo install&lt;br /&gt;&lt;br /&gt;Y ya está. Un vídeo de ejemplo lo tienes aquí:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://recordmydesktop.sourceforge.net/videos/elive-unstable_beta-3.1_20060807.ogg"&gt;http://recordmydesktop.sourceforge.net/videos/elive-unstable_beta-3.1_20060807.ogg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lanzas el programa con líneas del tipo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;recordmydesktop  -width 500 -height 400 -fps 15 --nosound  -o aua.ogg&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;captura una pantalla de ancho 500 y alto 400, a 15 fotogramas por segundo, sin sonido, en un archivo llamado aua.ogg&lt;br /&gt;&lt;br /&gt;Obtienes más opciónes con &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;recordmydesktop --help&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;en la misma web se puede bajar gtk-recordmydesktop, un entorno gráfico que usa de fondo el este mismo programa. Para instalarlo he tenido que añadir dos paquetes más:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;sudo aptitude install automake python-gtk2-dev&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(el paquete python-gtk2-dev da problemas en algunas distribuciones)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Se baja el programa desde la web, y se sigue el mismo proceso que con el anterior. En este lanza con:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;gtk-recordmydesktop&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;creando un incono en la zona de notificación. Con el botón derecho del ratón sobre él, puedes seleccionar visualmente el trozo de pantalla que vas a capturar, o abrir un pequeño panel de control con todas las opciones:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/Pantallazo-recordMyDesktop.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/Pantallazo-recordMyDesktop.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&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/4908934190193877178-7551030734231743664?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7551030734231743664/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7551030734231743664' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7551030734231743664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7551030734231743664'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/recordmydesktop.html' title='RecordMyDesktop'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-279047789648954372</id><published>2006-10-12T19:01:00.000+01:00</published><updated>2006-10-12T19:09:56.039+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pd: Cosas y cables (paso 1)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Lanza Pure Data, desde un terminal, escribiendo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Empezamos directamente, abriendo un nuevo trabajo en File--&gt;New. Se abrirá una ventana en blanco con varios menús. Échale un vistazo al menú "Put". Incluso puedes pulsar en la línea discontínua de la parte superior, convirtiendo el menú en una ventana. Las cuatro primeras opciones son:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Objeto&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Mensaje&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Número&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Símbolo&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Comentario&lt;/span&gt;&lt;br /&gt;(todo esto en inglés)&lt;br /&gt;&lt;br /&gt;También se indica con qué teclas podemos acceder a las mismas opciones. CONTROL+x  donde x son los números del 1 al 5.&lt;br /&gt;&lt;br /&gt;Pulsa en mensaje, y verás un símbolo como este&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/mensaje.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/mensaje.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el interior escribimos: Hola. Creamos otro mensaje, pero esta vez escribimos: adios. Crearemos también un objeto (Put--&gt;Object), y en su interior escribimos: print saludo. Debes ver esto en la pantalla:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1-2.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El objeto print, imprimirá en la salida standar-en este caso será seguramente la pantalla que se abrió al lanzar pd- lo que se le envíe, y lo etiquetará con el nombre que aparece después de print. Pero para eso tenemos que conectar los mensajes con el objeto print. Lleva el ratón hacia la rayita inferior del mensaje hola, y cuando veas un círculo, sin soltar, arrastra, hasta la rayita superior del objeto print. Luego haz lo mismo para conectar el mensaje 'adios' al objeto print. La cosa queda así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1-3.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Por defecto estamos en el modo edición, para activar la interacción con el circuito que estamos creando, puedes pulsar CONTROL+e, o bien ve al menú edit y pulsa 'edit mode'. Pulsando sucesivamente sobre control+e puedes cambiar entre el modo de edición y el modo interactivo.&lt;br /&gt;&lt;br /&gt;Al pulsar sobre uno de los mensajes, se envía su contenido al objeto print, y este lo imprime. Las rayitas que hemos usado como conexión, son conocidos como inlets o outlets según estén respectivamente arriba o abajo. La entrada de datos ocurre por arriba y la salida por abajo, así de fácil.&lt;br /&gt;&lt;br /&gt;Los mensajes, como ves tiene posiblidad de entrada. Para utilizarla vamos a usar un objeto predefinido llamado 'bang' (menú put--&gt;bang). Coloca dos bang, uno encima de cada mensaje, y conecta la única salida de cada bang, con el mensaje que tiene debajo. Sal del modo edición (CONTROL+e) y verás como los botones bang, activan a su vez los mensajes, que al ser enviados al objeto print, se imprimen.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1-4.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1-4.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Añade ahora una caja de números (put--&gt;number). Conecta la única salida que tiene al objeto print. Al salir del modo edición, puedes cambiar el número que que contiene la 'caja de números', pulsando sobre ella con el ratón y arrastrando arriba o abajo. Observa cómo el objento print va respondiendo a cada número que recibe. La caja de números envía su valor cada vez que es cambiada. La cosa queda así (fíjate que ahora cambié 'saludo' por 'imprimo', esto no es relevante, sólo cuestión de forma):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/1-5.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/1-5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Prueba a ponerle un bang a la caja de números. Si quieres guardar el resultado, tal y como lo harías en otros programas: File --&gt; Save as...&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/4908934190193877178-279047789648954372?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/279047789648954372/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=279047789648954372' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/279047789648954372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/279047789648954372'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pd-cosas-y-cables-paso-1.html' title='Pd: Cosas y cables (paso 1)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-5482524192929603270</id><published>2006-10-10T21:11:00.000+01:00</published><updated>2008-01-30T14:14:27.140Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='puredata'/><title type='text'>Pure Data (paso 0)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Pure Data&lt;/span&gt; (o &lt;span style="font-weight: bold;"&gt;Pd&lt;/span&gt;) es un lenguaje de programación gráfica desarrollado por Miller Puckette durante los años 90 para la creación de música computerizada interactiva y obras de multimedia. Aunque Puckette es el principal autor del software, Pd es un proyecto de código abierto y tiene una gran base de desarroladores trabajando en nuevas extensiones al programa. &lt;/span&gt;&lt;br /&gt;http://es.wikipedia.org/wiki/Pure_data&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;INSTALAR DESDE LOS REPOSITORIOS DE UBUNTU/DEBIAN&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cómo instalar Pure Data de forma sencilla con gnu/linux. Lo explico para Ubuntu Linux/Debian etch, así que supongo que será parecido en otras distros.&lt;br /&gt;&lt;br /&gt;En los repositorios de Ubuntu/Debian se puede encontrar pure data. No es la última versión, pero te servirá para dar los primeros pasos. Es tan fácil como escribir en el terminal (Aplicaciones-&gt;accesorios-&gt;terminal):&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;apt-get install puredata gem pd-pdp pd-zexy&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;El programa lo lanzas con&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;pd&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;o si quieres cargar alguna librería, como por ejemplo Gem, usa:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;pd -lib Gem&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;si usas jack&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;pd -rt -jack -alsamidi&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;Si quisieras añadir siempre la misma línea de carga, por ejemplo, siempre escribes pd -lib Gem, puedes crear una archivo .pdrc en tu carpeta de usuario que contenga los parámetros de carga, en este caso: -lib Gem. Haciendo esto, sólo necesitas escribir pd.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;hay otras maneras más detalladas de instalarlo, o más adecuadas podríamos decir (más completas). Por ahora intenta esta. Desde el propio programa, también es posible ajustar la configuración.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;INSTALAR PUREDATA EXTENDED 0.39&lt;br /&gt;&lt;br /&gt;(actualizado)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Pure data extendido es el programa base junto con un montón de externals y librerías que aumentan notablemente las posibilidades del programa. Para ello necesitaremos bajar el paquete correspondiente desde aquí:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;http://puredata.info/downloads&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;NOTA: elige en función de tu distribución.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Tendremos entonces en alguna parte el paquete deb ya descargado. Por ejemplo para Ubuntu gusty, tendremos el archivo:&lt;br /&gt;&lt;br /&gt;&lt;span class="link-external"&gt;&lt;a href="http://downloads.sourceforge.net/pure-data/Pd-0.39.3-extended-debian-testing-i386.deb"&gt;&lt;/a&gt;&lt;/span&gt;Pd-0.39.3-extended-debian-testing-i386.deb&lt;br /&gt;&lt;br /&gt;Desde un terminal, nos movemos hasta donde esté dicho archivo (seguramente el escritorio):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cd ~/Desktop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y lo instalamos&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo dpkg -i Pd-*.deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Probablemente dará "errores" de dependencias que no están instaladas. Para resolverlo hacemos&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get -f install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;lo cual bajará las dependencias que necesitamos. Con esto debe estar instalado pd-extended.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;INSTALAR COMPILANDO LAS FUENTES PARA 0.4&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aquí hay una guía detallada:&lt;br /&gt;http://puredata.org/docs/developer/Debian&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-5482524192929603270?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/5482524192929603270/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=5482524192929603270' title='14 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5482524192929603270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/5482524192929603270'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/pure-data-paso-0.html' title='Pure Data (paso 0)'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4908934190193877178.post-7495930835072893089</id><published>2006-10-09T21:47:00.000+01:00</published><updated>2006-10-09T21:48:47.637+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oggro'/><title type='text'>Intro</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/186/599235130638901/1600/elogro.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/186/599235130638901/320/elogro.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;No puedes escapar, el oggro está dentro, eres tú.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4908934190193877178-7495930835072893089?l=oggro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oggro.blogspot.com/feeds/7495930835072893089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4908934190193877178&amp;postID=7495930835072893089' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7495930835072893089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4908934190193877178/posts/default/7495930835072893089'/><link rel='alternate' type='text/html' href='http://oggro.blogspot.com/2006/10/intro.html' title='Intro'/><author><name>oggro</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
