Crea Chiptunes con 32 bytes de RAM

Ah, virutas. Uno de los pocos esfuerzos humanos restantes en el que menos RAM, menos espacio de almacenamiento y menos capacidad se considera en realidad una mejora. [dop3joe] en el espacio de hackeo de Stuttgart, Shackspace envió a un pequeño circuito de juego con chips con el esqueleto más desnudo que jamás hayamos visto.

El Noiseplug, como [dop3joe] llámelo, basado en un ATtiny9 de 6 pines muy, muy pequeño. Con 1 kB de memoria Flash y solo 32 bytes de RAM [dop3joe] fue capaz de crear un pequeño dispositivo dentro de un conector RCA que reproduce chips siempre que sea alimentado por una batería.

Si desea crear su propio ruido, [dop3j0e] ingrese todo el código en su Git. Hay dos programas relevantes para esta compilación: un programa de Windows para crear las piezas y el propio firmware ATtiny9. Por supuesto, para programar al pequeño, tendrás que lidiar con el Atmel TPI, así que aquí tienes la nota de aplicación (PDF).

Ho, [dop3joe] ganó el tercer lugar en la fiesta de la escena de demostración de Evoke la semana pasada con Noiseplug. Mojosa.

  • mio flotador dice:

    ¿Por qué no lo conduces fantasma?

    • einballimwasser dice:

      ¿Cómo insertarías un convertidor CC / CC en ese pequeño enchufe? 🙂

      • jarfil dice:

        Con un consumo de energía de 200uA para el Attiny, supongo que debería ser bastante fácil instalar un “convertidor CC / CC” genérico;)

  • Tjoppen dice:

    Corre un poco por su dinero 🙂
    Estuve en Evoke y esto fue muy emocionante en la composición. Bien merecido 3er lugar. Entré también, pero, como era de esperar, solo ocupé el noveno lugar (un código un poco borracho).
    Para ver las entradas restantes, vaya a http://www.pouet.net/party.php?which=18&when=2012

  • Juan dice:

    Muy bonito, me hace pensar en generadores de claves con música y animación de acompañamiento y el .exe es solo unos pocos kb.

  • sucio dice:

    Me recuerda a Bit Banger

    • Rana spork dice:

      También del cisne

  • Chewie RFC dice:

    ¿Demoscene para fanáticos del hardware? Me gusta.

  • Nate dice:

    ¿Plataforma virgen? Creo que nunca antes había visto una demostración de ATTiny, ¡felicitaciones!

    Pixelj.am (que ocurre en Notacon cada primavera) ha visto varias plataformas vírgenes rotas este año, incluido el Vectrex. Hace unos años vi por primera vez Milkymist, otra plataforma de demostración de hardware, pero casi el polo opuesto en términos de potencia bruta. 😉

    • bhtooefr dice:

      Vectrex no era una plataforma virgen (aunque fue un espectáculo genial).

  • riney dice:

    3 voces en 32 bytes? Flippin ‘Timinda.

    • dop3j0e dice:

      Y todavía quedan unos 8 bytes de RAM;) Podría coincidir con otra o dos voces, pero carecía de ideas.

  • casa anonima dice:

    ¿Qué tan difícil sería agregar un controlador midi al programa y tener un sintetizador medio súper desnudo?

    • dop3j0e dice:

      Este microcontrolador específico no tiene UART, lo que dificulta un poco el MIDI; debería obtener datos MIDI en los programas. Tampoco estoy seguro de si el código necesario cabría en Flash junto con la generación de sonido. Además, probablemente necesitará piezas adicionales para que sean compatibles eléctricamente con el cable MIDI.

      En pocas palabras, podría funcionar, y un conector MIDI probablemente tenga suficiente espacio para las partes adicionales. Con un controlador un poco más grande (como ATtiny25), estoy seguro de que será posible.

      • casa anonima dice:

        Gracias por la respuesta. Intentaré hacerlo, pero mi codificación probablemente todavía no funcione (ahora estoy tratando de trabajar en picaxe)
        PD; en relación con el uso para otra o dos voces, ¿qué pasa con la percusión?

      • dop3j0e dice:

        Correcto, la percusión era la principal en mi lista de características “serían buenas”, así que elimine “no hay ideas”, de hecho, y reemplácelas con “sin tiempo”. Terminé el código ASM una hora antes de la fecha límite del concurso;)

  • rtjure dice:

    • rtjure dice:

      Muy agradable:

  • Forkboy dice:

    ¡Qué gran publicación! Para el programa de ventana, puede suavizar la reproducción cargando el búfer mientras espera que se reproduzca el búfer anterior. Algo como eso:


    while (!(GetAsyncKeyState(VK_ESCAPE) & 1))
    {

    waveOutPrepareHeader (externo y bufs[i], tamaño de (WAVEHDR));
    waveOutWrite (salida y bufs[i], tamaño de (WAVEHDR));

    i ^ = 1;

    j = 0;
    máximo = 0;
    datos = (uint8_t *) bufs[i].lpData;

    while (waveOutUnprepareHeader (out, & bufs[i], tamaño de (WAVEHDR)) == WAVERR_STILLPLAYING)
    {
    se (j max)
    {
    max = datos[j];
    // printf (“% x n”, max);
    }
    j ++;
    }
    }

    }

    • dop3j0e dice:

      Es suave para mí; entonces uso dos búferes. Espero a que termine de reproducirse un búfer, luego lo lleno mientras se reproduce el otro búfer y comienzo a esperar ese búfer.

  • mur1010 dice:

    Schön!

  • madact dice:

    Me sorprende que Tristan Perich no reciba una mención aquí … dado, este tiene algunas voces suaves y él está arriba (o, 2 pines abajo) en una sinfonía de 1 bit … todavía.

    http://www.1bitsymphony.com/ http://www.1bitmusic.com/

  • Alan dice:

    Miré el programa actual y tengo problemas para averiguar cómo cambiar la canción. Creo que puedo obtener la canción en la ventana del programa, pero ¿es solo copiar y pegar en el programa? Gracias por tu tiempo y buen día,

    -Alan

    • dop3j0e dice:

      Los formatos de datos son prácticamente los mismos entre las versiones win y avr; yo mismo copié la mayoría de los datos.
      darthrake ha creado una versión para Unix del programa ganador que tiene algunos detalles sobre la decodificación y codificación de la melodía, tal vez eso también ayude: https://github.com/darthrake/noiseplug/tree/master/unix

    • dop3j0e dice:

      Ah, y hay algunas constantes en la duración de la canción, el punto de bucle, el ritmo del bajo y otras en el código. Estos podrían ser más difíciles de cambiar.

Victoria Prieto
Victoria Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *