Otro cuento Zen

by Jorge Machin on August 23, 2010 · 0 comments

in Personal

Un general estaba en su casa apreciando su colección de antigüedades que había obtenido como botines de guerra, cuando al estar viendo un grabado tropezó con una pequeña mesa en la que reposaba un preciosa y delicada valija que por un poco cae al suelo.

-¡Oh! ¡Qué susto! exclamó.

Entoces pensó: "Yo he dirigido millares de soldados, enfrentando diversas situaciones de vida o muerte y jamás me atemoricé. ¿Por qué será que hoy por causa de una vasija me asusté de esa manera?”.

Al comprender la causa de su miedo, arrojó la valiosa vasija al suelo y la quebró.

Anónimo

{ 0 comments }

Otro juego de fútbol multiusuario en el cual colaboré con la programación del lado del servidor. Lo interesante que tuvo este proyecto es que había bots que jugaban junto con el jugador y en su contra utilizando agentes y máquinas de estado.


Juego contra la computadora
Juego contra la computadoraLobby del juegoProgramé en mi laptop, pero con monitor y teclado

Otra cosa que me gustó de este proyecto es que apliqué "nuevas técnicas" que me permitieron desarrollarlo en tiempo récord desde cero.

{ 3 comments }

Programación Adobe Air 2.0 en Linux

by Jorge Machin on July 26, 2010 · 0 comments

in Adobe Flash, Linux

Al igual que las aplicaciones Flex, es posible desarrollar en Linux aplicaciones de escritorio en AIR. En este post pongo un ejemplo y una miniguía de instalación.

Instalación

Primero se necesita bajar e instalar la versión 4.1 de Flex, la cual se puede obtener de http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex4sdk en forma de un archivo zip llamado flex_sdk_4.1.zip

mkdir flex
cp flex_sdk_4.1.zip flex
cd flex
unzip flex_sdk_4.1.zip

Desafortunadamente la versión multiplataforma de Flex, aunque ya incluye una versión de Air, está rota y aparentemente sólo funciona para Windows y Mac. Pareciera que a los señores de Adobe se les olvidó Linux en el caso de Air; por lo que es necesario descargar el SDK de AIR y desempaquetarlo sobre el directorio donde instalamos Flex.

Entonces, bajamos Air 2.0 de http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk y sobre-escribimos el sdk de AIR que descargamos:

cp AdobeAIRSDK.tbz2 flex
cd flex
bunzip2 AdobeAIRSDK.tbz2
tar -xvf AdobeAIRSDK.tar

Sinceramente no sé si es el método correcto de arreglar los errores de Adobe, pero fue lo primero que se me ocurrió y me funcionó.

Escribiendo un programa de prueba

Como ejemplo de una aplicación creamos el programa mxml llamado Test.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication  xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        xmlns:mx="library://ns.adobe.com/flex/mx">

</s:WindowedApplication>

El cual compilamos con el comando:

bin/mxmlc -library-path+=frameworks/libs/air Test.mxml

Ahora creamos un archivo que nos describe la aplicación AIR, al cual llamamos Test-app.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/2.0">

<!-- Adobe AIR Application Descriptor File Template.

        Specifies parameters for identifying, installing, and launching AIR applications.

        xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/2.0
                        The last segment of the namespace specifies the version
                        of the AIR runtime required for this application to run.
                       
        minimumPatchLevel - The minimum patch level of the AIR runtime required to run
                        the application. Optional.
-->

        <!-- A universally unique application identifier. Must be unique across all AIR applications.
             Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->

        <id>Test</id>

        <!-- Used as the filename for the application. Required. -->
        <filename>Test</filename>

        <!-- The name that is displayed in the AIR application installer.
             May have multiple values for each language. See samples or xsd schema file. Optional. -->

        <name>Test</name>

        <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
        <version>v1</version>

        <!-- Description, displayed in the AIR application installer.
             May have multiple values for each language. See samples or xsd schema file. Optional. -->

        <!-- <description></description> -->

        <!-- Copyright information. Optional -->
        <!-- <copyright></copyright> -->

        <!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
        <!-- <publisherID></publisherID> -->

        <!-- Settings for the application's initial window. Required. -->
        <initialWindow>
                <!-- The main SWF or HTML file of the application. Required. -->
                <!-- Note: In Flash Builder, the SWF reference is set automatically. -->
                <content>Test.swf</content>

                <!-- The title of the main window. Optional. -->
                <!-- <title></title> -->

                <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
                <!-- <systemChrome></systemChrome> -->

                <!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
                <!-- <transparent></transparent> -->
                <!-- Whether the window is initially visible. Optional. Default false. -->
                <!-- <visible></visible> -->

                <!-- Whether the user can minimize the window. Optional. Default true. -->
                <!-- <minimizable></minimizable> -->

                <!-- Whether the user can maximize the window. Optional. Default true. -->
                <!-- <maximizable></maximizable> -->

                <!-- Whether the user can resize the window. Optional. Default true. -->
                <!-- <resizable></resizable> -->

                <!-- The window's initial width in pixels. Optional. -->
                <!-- <width></width> -->

                <!-- The window's initial height in pixels. Optional. -->
                <!-- <height></height> -->

                <!-- The window's initial x position. Optional. -->
                <!-- <x></x> -->

                <!-- The window's initial y position. Optional. -->
                <!-- <y></y> -->

                <!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
                <!-- <minSize></minSize> -->

                <!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
                <!-- <maxSize></maxSize> -->
        </initialWindow>

    <!-- We recommend omitting the supportedProfiles element, -->
    <!-- which in turn permits your application to be deployed to all -->
    <!-- devices supported by AIR. If you wish to restrict deployment -->
    <!-- (i.e., to only mobile devices) then add this element and list -->
    <!-- only the profiles which your application does support. -->
    <!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->

        <!-- The subpath of the standard default installation location to use. Optional. -->
        <!-- <installFolder></installFolder> -->

        <!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
        <!-- <programMenuFolder></programMenuFolder> -->

        <!-- The icon the system uses for the application. For at least one resolution,
                 specify the path to a PNG file included in the AIR package. Optional. -->

        <!-- <icon>
                <image16x16></image16x16>
                <image32x32></image32x32>
                <image48x48></image48x48>
                <image128x128></image128x128>
        </icon> -->
       <!-- Whether the application handles the update when a user double-clicks an update version
        of the AIR file (true), or the default AIR application installer handles the update (false).
        Optional. Default false. -->

        <!-- <customUpdateUI></customUpdateUI> -->

        <!-- Whether the application can be launched when the user clicks a link in a web browser.
        Optional. Default false. -->

        <!-- <allowBrowserInvocation></allowBrowserInvocation> -->

        <!-- Listing of file types for which the application can register. Optional. -->
        <!-- <fileTypes> -->

                <!-- Defines one file type. Optional. -->
                <!-- <fileType> -->

                        <!-- The name that the system displays for the registered file type. Required. -->
                        <!-- <name></name> -->

                        <!-- The extension to register. Required. -->
                        <!-- <extension></extension> -->

                        <!-- The description of the file type. Optional. -->
                        <!-- <description></description> -->

                        <!-- The MIME content type. -->
                        <!-- <contentType></contentType> -->

                        <!-- The icon to display for the file type. Optional. -->
                        <!-- <icon>
                                <image16x16></image16x16>
                                <image32x32></image32x32>
                                <image48x48></image48x48>
                                <image128x128></image128x128>
                        </icon> -->

                <!-- </fileType> -->
        <!-- </fileTypes> -->

</application>

Finalmente ejecutamos la aplicación con:

adl test.mxml

Algunos detalles...

Para usar aplicaciones que tengan transparencia es necesario que el escritorio la soporte; por ejemplo usando compiz.

{ 0 comments }

Se que no se debe de hacer... pero por el momento este post contiene el borrador de la parte 3 de la construcción del sintetizador analógico que con el tiempo se irá completando. La verdad es que tengo más material en las otras partes y ya quiero publicarlos. Una disculpa.

Convertidor de MIDI a Control de Voltaje

El Convertidor de Midi a Control de Voltaje es el que convierte al Oscilador en un instrumento musical. Como es díficil que construya mi propop teclado, lo natural para mí sería controlarlo por una computadora que corra algún software secuenciador como el CakeWalk Home Studio.

Parado sobre hombros de gigantes

Este fue el primer modulo que recomendo mi hermano que hiciera. De inmediato pensé, creo que una muy buena solución sería usar un microcontrolador PIC y unos convertidores digitales a analógico como los DAC0830. Primero busque en Google para ver si alguien ya había realizado algo así. Creo que no es de sorprender que efectivamente hay varias alternativas en la inmensa web. A mi me gusto mucho la solución que plantea Marc Bareille en su MCV-628.

Comencé usando su modelo con el cual aprendí muchísimo y me permitió hacer mis primeras pruebas pero con el paso del tiempo empecé a diseñar desde cero uno nuevo con especificaciones de acuerdo a mis propias necesidades y gustos. Usando otro microcontrolador y una funcionalidad distinta. El modulo resultante es el que presento aquí.

Modos de funcionamiento

Demostración

{ 0 comments }

Esta melodia la interpretó mi hermano con la versión de prueba del sintetizador analógico. Adicionalmente usó los filtros del Andromeda A6 y envolventes para darle la forma a la señal y un MF 104z para los efectos del delay. El acompañamiento se tocó con el sonido de un Yamaha Motif XS.

{ 0 comments }