Archive for the ‘Uncategorized’ Category

Record window with letterbox/pillarbox on linux

Tuesday, May 1st, 2012

It is possible to get good video recording on linux using ffmpeg and the right options. I used some time to set up mine, and made a script to make it easier to use.
This script makes a letterbox or pillarbox (black stripes around the edge if the aspect ratios doesn’t match) as needed.
Save this file to record-desktop.sh, run chmod +x record-desktop.sh, then run ./record-desktop.sh output.flv. You then just need to click the window you want to record.

It is based on Tyler’s script, which also streams to justin.tv.

Revision – The possible next generation of demoscene 64k softsynths

Monday, April 9th, 2012

The possible next generation of demoscene 64k softsynths (Revision)

This is a transcription of this video from Revision 2012.

Requirements for a 64k synth

  • small
  • flexible
  • somewhat usable

The Idea: Runtime Code Generation

  • Theory
    • Write synths & effects, bear changes instantly
    • JIT compiler in editor, store compiled data in intro
    • your synth is no longer limited to your own dsp routines
    • host language independently (?)
  • Implementation Challenges

    • How to implement this in my synth?
    • How to make this usable for non-coders?
    • Instansing
    • When writing runtime code, you want to contentrate on the good parts
  • Implementation: Compiler (bero)

    • designed a language (aulan)
    • supports integer, boolean, float, arrays, structs, functions, procedures, pointers, inline asm
      • translates to assmebler/native code
    • special feature: instance variables
    • language features:
      • mixture of basic, pascal and c
      • newline = end of block statement
    • compile to native code and links during runtime (Editor)
    • in your intro:
      • use generated assembly files
      • use bero’s runtime linker code for object files as constant byte arrays etc.
      • use your normal linker if it supports COFF

Lets take a look at synth design

  • a (64k) synth has multiple layers
    • Voice layer
      • code that gets executed per active note
      • classic synth: fixed pipeline
      • most timecritical code
    • Channel Layer
      • code that processes the sum of all active notes of a single instrument
    • Global Layer
      • code that processes the output multiple instruments
      • e.g. sendto-effects, mastering chain
      • example: Buzz – generator & effect concept

Fixed Pipeline vs Dynamic Pipeline

  • Fixed Pipeline
    • A good fixed pipeline can be very versatile
    • It’s small
    • Drawback: you need a good fixed pipeline (ask your musician :-)
    • global hardcoded effect-chain / sendto-effects
  • Dynamic pipeline
    • not all “modular” synths provide modularity on each level (like Buzz)
    • if done on voice level:
      • allows more complex synth patches
      • more implementation
        • the more granular, the more complex
    • GUIs for modular synths either require a bit of work or they are slightly challenging to use
    • custom mastering/effect chain for free
  • Hybrid / Semi-Dynamic pipeline
    • Some parts static, some parts dynamic

Parameter Automation / Envelopes

  • WOBWOBWOBWOBWOBWOBWOBWOBWOBWOBWOBWOB
  • very important to make instruments sound “alive”
  • Different approaches:
    • Modulation matrix (fixed pipeline)
    • modular: e.g. node based, operator stacking
    • LFO with fixed targets as volume, filter, pitch
  • if you implement this wrong:
    • bad performance

The Synth

  • What is it?
    • Concept blatantly stolen from buzz
    • You create machines, write code for thm
    • machines can be assigned to a midi channel
    • variables can be exported as parameters
    • parameters can be bound to midi-controllers

Transcend JetFlash 500 16GB vs SanDisk Cruzer 16GB memory stick benchmark

Tuesday, January 4th, 2011

This is a small benchmark of Transcend JetFlash 500 16GB vs SanDisk Cruzer 16GB USB 2.0 (2009-edition) memory sticks.

vs

SanDisk 16GB: 4.6 MB/s write.
SanDisk 16GB: 18.5 MB/s read

Transcend JetFlash 500 16GB: 18.4 MB/s write
Transcend JetFlash 500 10GB: 34.1 MB/s read

As we can see the Transcend USB stick is 4 times faster writing, and 1.8 times faster reading than the SanDisk Cruzer.

The memory sticks were tested using the dd tool, and the cache was cleared between each run by unmouting and removing the memory sticks.