Wednesday, December 26, 2012

Pseudo HDR effect using Pixilang

Here is my version of Pseudo HDR filter (tone mapping) for Pixilang. You can use it freely in any Pixilang applications.


    Copyright (c) 2012, Alexander Zolotov

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to 
    deal in the Software without restriction, including without limitation the 
    rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
    sell copies of the Software, and to permit persons to whom the Software is 
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in 
    all copies or substantial portions of the Software.


scr = get_screen()
xsize = get_xsize( scr )
ysize = get_ysize( scr )

//$src - source image (container of PIXEL type)
//$filter_radius (in percent)
fn apply_hdr_effect( $src, $filter_radius, $intensity )
    $src_xsize = get_xsize( $src )
    $src_ysize = get_ysize( $src )

    //Make grayscale copy:
    $img2 = clone( $src )
    $c = new( $src_xsize, $src_ysize, FLOAT32 )
    split_rgb( 0, $src, -1, $c ) //Get red channel
    split_rgb( 1, $img2, $c, $c, $c )

    //Blur grayscale image:
    $scr = get_screen()
    set_screen( $img2 )
    $size = ( $src_xsize * $filter_radius ) / 100
    effector( EFF_HBLUR, $size )
    effector( EFF_VBLUR, $size )
    set_screen( $scr )

    //Invert it:
    op_cn( OP_XOR, $img2, WHITE )

    //Do normalization:
    split_rgb( 0, $img2, $c )
    op_cc( OP_MUL, $c, $c ) //Add contrast
    op_cc( OP_MUL, $c, $c ) //Add contrast
    if $intensity != 1
op_cn( OP_MUL, $c, $intensity )
    op_cn( OP_ADD, $c, 1 ) //Add base level
    $r = clone( $c ) 
    $g = clone( $c ) 
    $b = clone( $c )
    split_rgb( 0, $src, $r, $g, $b )
    op_cc( OP_MUL, $r, $c )
    op_cc( OP_MUL, $g, $c )
    op_cc( OP_MUL, $b, $c )
    split_rgb( 1, $src, $r, $g, $b )
    remove( $r )
    remove( $g )
    remove( $b )
    remove( $c )
    remove( $img2 )

//Load image:
img = load( "images/dark.jpg" )
set_flags( img, CFLAG_INTERP )
img_xsize = get_xsize( img )
img_ysize = get_ysize( img )
s = 1
if img_xsize > xsize || img_ysize >= ysize
    s1 = xsize / img_xsize
    s2 = ysize / img_ysize
    if s1 < s2 { s = s1 } else { s = s2 }
pixi( img, 0, 0, WHITE, s, s )
frame( 500 )

apply_hdr_effect( img, 3, 2 )
set_flags( img, CFLAG_INTERP )
save( img, "hdr.jpg", FORMAT_JPEG, 95 )

start_timer( 0 )
while 1
    t = get_timer( 0 )
    transp( t / 64 )
    pixi( img, 0, 0, WHITE, s, s )
    while get_event() { if EVT[ EVT_TYPE ] == EVT_QUIT { halt } }

The main function is apply_hdr_effect( $img, $radius, $intensity ) will apply Pseudo HDR effect to the selected image.
Parameters: $img - container with the image; $radius - blur-filter radius; $intensity - effect intensity.

Now let's see how it works.





You can always get the latest version of this program from the Pixilang distribution. Folder - examples/graphics. File - hdr_simulation.pixi
Follow me on Twitter:

Tuesday, December 25, 2012

SunVox Dynamic Library v1.7.3

SunVox Dynamic Library for developers has been updated to v1.7.3.
You can use this library to play SunVox songs in your Windows/Linux/OSX/Android applications.

What is new:
  • added Android version (but now only tested with Pixilang applications); 
  • new functions: sv_lock_slot(), sv_unlock_slot(), sv_pattern_mute(); 
  • some bugs fixed.

Monday, December 24, 2012

Pixilang v3.4.3

Pixilang updated to version 3.4.3

What is new:
  • license changed from New BSD to MIT;
  • Android: support of x86 and ARMv7-A;
  • added Android native library (.so) support;
  • new folder with examples - native_library;
  • new data processing operations for op_cn(): OP_COLOR_SUB2, OP_DIV2; use them if you need N/C[i] instead of C[i]/N;
  • new transformation functions: t_push_matrix() and t_pop_matrix(); use them to save and restore current transformation state;
  • new graphics examples: labyrinth, clock, save_gif_anim2, hdr_simulation, tiny_generator1-5;
  • bugs fixed.

Early Sunrise by Zephemeros

Saturday, December 8, 2012

SunVox song optimization for slow devices

The CPU of your device is too slow for some SunVox project? Here are some tips to avoid this.
  • Use monophonic modes (Mono, HQmono or LQmono) for the modules. For example Analog Generator has a Mode (12) controller; set it to the HQmono (High Quality Mono) value. Another example - Mono (04) controller of the EQ module.
  • Use low quality modes (LQ or LQmono) for the modules.
  • Use reduced polyphony for generators.
  • Don't use the Reverb, or use it in LQ (Low Quality) mode and with All-pass filter disabled.
  • Use the Sampler without interpolation (Sample interpolation = OFF; Volume interpolation = OFF).
  • Use the Generator without Attack and Release (Attack = 0; Release = 0; Sustain = ON).

Sunday, December 2, 2012

Saturday, November 17, 2012

Pixilang updated to version 3.4.2!
Pixilang is a simple programming language for small graphics/sound applications and experiments. Originally created by Alexander Zolotov (NightRadio) and Mik Razuvaev (Goglus) for non-programmers, demosceners and designers. It is cross-platform and open source (New BSD License).

Thursday, November 1, 2012

Saturday, October 13, 2012

Pixilang 3.4.1

Pixilang updated to version 3.4.1.
What is new:
  • new key code - KEY_MENU;
  • added address checking; now you can't call undefined functions;
  • new container flag: CFLAG_INTERP - enable linear image interpolation (software mode);
  • new constant - OPENGL (1 - if OpenGL available);
  • new function: get_real_path() - convert Pixilang-style path (e.g. 1:/img.png) to the real filesystem path;
  • new functions for working with file list: new_flist(), remove_flist(), get_flist_name(), get_flist_type(), flist_next();
  • new graphics examples: interpolation, tornado, file_list_sorted;
  • new console examples: get_real_path, file_list, file_list_sorted;
  • bugs fixed.

Happy birthday, Tangerine (Mac OS X and Windows intro).

Code by NightRadio (made with Pixilang), music was tracked by Manwe in SunVox (remake of "Early Fall" tune composed by Tangerine in Scream Tracker 3). Download app/exe:

SunVox library

SunVox Dynamic Library for developers has been updated to v1.7.2b. You can use this library to play SunVox songs in your Windows/Linux/OSX applications.

Monday, October 1, 2012

Thursday, September 27, 2012

Music of Little Canning People

Music of Little Canning People - My new micro-album created with LG E510 Android smartphone and PixiTracker. All samples recorded from internal microphone.
Listen it online

Forgotten Pages

My old ambient album Forgotten Pages is now available on Bandcamp.
Listen it online
Almost all tracks has been created without sequencers. Live recording only.
Software used: ardour, audacity, zynaddsubfx and seq24 (for track with guitars).

Wednesday, September 26, 2012

Pixilang v3.4

Pixilang v3.4 is released! Now available for Android and iOS (sources only).
Pixilang is a simple programming language for small graphics/sound applications and experiments. Originally created by Alexander Zolotov (NightRadio) and Mik Razuvaev (Goglus) for non-programmers, demosceners and graphics/sound designers. It is cross-platform and open source (New BSD License).

  • Android port (sources + Google Play app);
  • iOS port (only sources are available);
  • new experimental feature - OpenGL acceleration (not available for Windows Mobile);
  • new effect for effector() function: EFF_COLOR;
  • new data processing operations for op_cn() function: OP_LIMIT_TOP, OP_LIMIT_BOTTOM, OP_ABS;
  • new data processing operations for op_cn() and op_cc() functions: OP_EQUAL, OP_LESS, OP_GREATER, OP_SMUL (multiplication with saturation);
  • new command line function - bytecode export; how to use: type "pixilang -c source_name.pixi" and source_name.pixicode file will be produced; warning: *.pixicode file is less cross-platrorm than its text
  • new format of access to the container elements: container[ X, Y ]; example: pixels[ 3, 4 ] = WHITE;
  • new operators to control the while loop: break, break2, break3, break4, breakall, continue;
  • new OpenGL functions: set_gl_callback(), remove_gl_data();
  • new system functions: get_file_size(), printf();
  • new graphics function: clear_zbuf();
  • new functions for containers: set_flags(), reset_flags();
  • new combination of parameters (dest,dest_offset,src,src_offset) for functions strcat(), strcmp(), strstr();
  • new combination of parameters (string,string_offset) for function strlen();
  • new graphics examples: fractal_julia_multithread;
  • new console examples: printf, string_append, string_compare, string_length, while_loop;
  • new sound examples: pixitracker_player;
  • graphics_opengl examples has been added;
  • bugs fixed.

Saturday, September 22, 2012

SunVox v1.7.2b

SunVox has been updated to v1.7.2b with the following changes:
  • sampler freeze bug fixed;
  • changes in WinCE file functions;
  • Android: ability to install on external SD card;
  • Android: added confirmation dialog for BACK button;
  • some bugs fixed.

Wednesday, September 5, 2012

SunVox v1.7.2 update

SunVox v1.7.2 (versions for Windows and Windows Mobile) has been updated. Bug with "Delete File" button is fixed now.
Please redownload

Tuesday, September 4, 2012

SunVox DLL

SunVox Dynamic Library for developers has been updated. You can use this library to play SunVox songs in your Windows/Linux/OSX applications.

Monday, September 3, 2012

SunVox music. Best of August 2012

Want to listen to songs made with SunVox?
Want to share your own songs?
It's all here: SunVox group on SoundCloud!

SunVox v1.7.2

SunVox v1.7.2 is out!
With a lot of new features and changes:

  • for Android users: if your display flickers sometimes, put option_glnoretain.txt file (with any content) to the following directory: device SD card/Android/data/nightradio.sunvox/files/;
  • now XM and MOD files (formats of old trackers) can be loaded without the converter, through the Main Menu -> Load Song; you can find hundreds of these files on this site:;
  • extended list of effects for XM/MOD to SunVox conversion;
  • new std. pattern effect 30 - use it to stop playing the song;
  • new controller in the Reverb module - "All-pass filter"; use it to enable/disable output all-pass filter;
  • new controller in the Reverb module - "Room size";
  • added autorepeat mode for the following buttons: HLD (clear current note), OFF (insert Note OFF), INS (insert), BCK (backspace);
  • added eight layers for the modules; for example you can place some complicated drum chain on the first layer, and all other synths - on the second layer; layers can be visible together or separately;
  • new function "Scale" in the Module menu: use it if you want a smaller or bigger module size for the current project;
  • changing the size of the modules by mouse wheel (scroll wheel);
  • new module - WaveShaper;
  • new module - MetaModule; with this module you can include some external .sunvox song to your project and use this song as synth or effect; Not available for PalmOS;
  • new options in the Preferences->Recording: Pattern fit to grid, Note quantization, Controller quantization;
  • new option in the Preferences->MIDI: Ignore velocity;
  • new option in the Preferences->Audio Ouput: Audio buffer size;
  • empty parameter of the vibrato effect 04 is now treated as "use previous parameter value"; works only for songs created in SunVox 1.7.2 and higher;
  • new option "Smooth frequency change" in the Analog Generator; enabled by default; disable it if you want to use arpeggio effect 08;
  • velocity map in the MultiSynth module;
  • improved CPU Usage Monitor with scrolling and module selection;
  • maximum number of pattern tracks has been increased from 8 to 16;
  • maximum Echo delay length increased to 4 seconds (except for PalmOS, where still the maximum is 1 second);
  • new controller in the Echo module - "Delay units" with different available modes (ms, Hz, ticks, lines);
  • new controller in the Filter module - "LFO frequency units" with different available modes (ms, Hz, ticks, lines);
  • new controller in the Flanger module - "Vibrato speed units" with different available modes (ms, Hz, ticks, lines);
  • new controller in the LFO module - "Frequency units" with different available modes (ms, Hz, ticks, lines);
  • new controller in the Vibrato module - "Frequency units" with different available modes (ms, Hz, ticks, lines);
  • new controller in the Vibrato module - "Set phase";
  • new simple examples: MIDI_out, waveshaper, velocity_map, reverb2, reverb3;
  • new instrument in instruments/bass directory: analog_bass;
  • new instrument in instruments/pads directory: synth_violin;
  • new instruments in instruments/keyboard directory: piano14, piano15, space, space2;
  • new instruments in instruments/various directory: electric_guitar, noise_slide_up, electro_drum_loop;
  • keyboard instruments piano04.wav, piano05.wav has been replaced by piano04.sunsynth, piano05.sunsynth;
  • sound engine optimization;
  • many bugs fixed.
Available for Windows, Linux, Mac OS X, PalmOS, Windows Mobile, Maemo and Android.
Meego and iOS versions are coming soon...

Sunday, September 2, 2012

Thursday, August 30, 2012


HastyCompo is an oldschool (it/xm/s3m) tracking compo with interesting samples, fuzzy rules, and an irregular schedule. And now it is accepting SunVox entries too!
Round 10 just got started and the submission deadline is September 14.

Sunday, August 5, 2012

Friday, July 27, 2012

PixiTracker 1Bit

Special version of the PixiTracker is released!
PixiTracker 1Bit - simple and fun tool for TRUE 1-BIT music experiments!
Version for Android
Version for iOS is coming soon...

Thursday, July 26, 2012

PixiTracker v1.2.2

PixiTracker has been updated to v1.2.2! Now with the new Pixel Music Visualizer!
Available for Android.
iOS version is on the way.


WarmPlace - First music album ever created and designed entirely on pocket computer Palm Tungsten|T. Composed by me in 2005. Used software: PsyTexx, GrayPaint.
Listen it online

Frosty Falls by geckojsc

Made with SunVox

Wednesday, July 25, 2012

PixiTracker v1.2.1 for iOS

PixiTracker v1.2.1 for iOS has several bugs: missing sound packs, missing some menu items. 
These bugs will be fixed in the next few days. 
Sorry for inconvenience.

Thursday, July 19, 2012

Want to listen to songs made with SunVox?
Want to share your own songs?
It's all here: SunVox group on SoundCloud!

Monday, July 16, 2012

PixiTracker v1.2.1

PixiTracker for Android has been updated to v1.2.1!
What is new:

  • Reverse function added to the sound editor (Load/Save -> Clear,Optimize,... -> Reverse);
  • Volume Fade function added to the sound editor (Load/Save -> Clear,Optimize,... -> Volume fade);
  • bugs fixed.

Tuesday, July 10, 2012

PixiTracker v1.2

PixiTracker for Android has been updated to v1.2!
iOS version coming soon.
What is new:

  • new sound pack pack09_bass;
  • improved "New Song" dialog; maximum number of steps and tracks: 64 steps, 12 tracks, even for devices with a small screen;
  • Zoom function added for the large patterns;
  • several bugs fixed.

Monday, July 9, 2012

Android License Check Error

For all Android users who get the License Check Error from my applications.
Be sure that "Background data" and "Auto sync" are enabled in "Accounts & Sync" settings of your device. These options are required for License Checking.
If still not working: delete the data of the app (Applications -> AppName -> Delete data).
And the last recipe - uninstall the app completely and reinstall it again.

Wednesday, July 4, 2012

Thursday, June 28, 2012

Monday, June 4, 2012

Tuesday, May 29, 2012

Soul Resonance

Let me introduce my new audio-visual album - Soul Resonance !
All tracks are created in SunVox modular studio. And the visual part is programmed in Pixilang.

Monday, May 28, 2012

Pixilang v3.3

Pixilang has been updated to version 3.3!
  • new functions: copy_file();
  • new functions for working with native dynamic libraries: dlopen(); dlclose(); dlsym(); dlcall();
  • new functions: triangles3d(); sort_triangles3d();
  • new data processing operations: OP_COLOR_ADD; OP_COLOR_SUB; OP_COLOR_MUL; OP_COLOR_DIV;
  • added GIF support (load/save);
  • added animation support (for example, you can load and save animated GIFs);
  • new examples: triangles_3d.pixi; save_gif.pixi; save_gif_anim.pixi; load_gif.pixi; fractal_julia_fast.pixi; data_processing3.pixi; data_processing4.pixi; animated_container.pixi;
  • many bugs fixed.

SunVox Dynamic Library update

SunVox Dynamic Library for developers is updated! Now with new functions and Pixilang support.

Wednesday, May 16, 2012

1950 early electronic synthesizer

ZX Spectrum best graphics

Autodesk Animator demo reel from 1990

Autodesk Animator was a 2D animation and painting program created in 1989 by Yost Group for Autodesk (makers of AutoCAD and 3D Studio) and ran on a PC under MS-DOS. The program was considered to be groundbreaking in the field of computer animation when it was initially released, and was very popular in the late 1980s and the early 1990s. Eventually development on the product ended and it became no longer supported by Autodesk.

Wednesday, May 2, 2012

PixelWave and SpectrumGen synthesizers are now available for Android! More info...

Tuesday, May 1, 2012

Tuesday, April 17, 2012

A bug found in the SunVox v1.7 for iOS. If you installed it the first time (no previous versions installed) - a set of predefined instruments, samples and synths will not be available. But the fixed version has been uploaded to App Store. So now waiting for Apple approval.
For Maemo/Meego users of the SunVox: if you have some problems with the current version, please re-download it from Several bugs has been fixed.

Monday, April 9, 2012

SunVox v1.7

SunVox v1.7 is out!
iOS version coming soon (after Apple approval).
What is new:

  • Android port (Android 2.3 min.);
  • Meego port;
  • real-time recording of any types of sound events (notes, Touch Theremin, controllers changing); WARNING: recording is not available for PalmOS version;
  • if you want to enable/disable the metronome for recording - go to the Main Menu -> Preferences -> Recording -> Metronome = ON/OFF;
  • new module: Analog Generator with the following features: 32 double alias-free oscillators with internal 12/24dB filters; exponential envelopes; smooth parameters changing;
  • Bypass 'B' button has been added to the window with module's controllers;
  • View 'V' button has been added to the window with module's controllers: with this button you can change the view mode (one, two or four columns);
  • polyphony has been increased from 16 to 32 for the Sampler and the SpectraVoice;
  • number of sample slots has been increased from 16 to 128 for the Sampler;
  • "Roll-off" (dB per octave) controller has been added to the Filter module; available values: 12dB; 24dB; 36dB; 48dB;
  • now you can load samples through the "Load Module" file dialog; Sampler will be created automatically;
  • "Preview" button has been added to the "Load Module" file dialog;
  • mouse wheel is now enabled for any type of controllers and scrollbars;
  • mono mode has been added to the LFO module;
  • new features in the Main menu -> Edit: Shrink pattern and Expand pattern;
  • new standard pattern effects 40...5F - delay an event for selected fraction of the line (from 40 (0%) to 5F (100%));
  • new standard pattern effect 04 - vibrato with parameters FFAA, where the FF - frequency, AA - amplitude;
  • new standard pattern effect 22 - set the controller's value to the random number from 0 to PPPP (parameter);
  • new controller in the Filter module: "Exponential freq" for exponential frequency;
  • new function "Stereo to mono" added to the Sampler (sample editor);
  • new sunvox_config file option: pencontrol - force UI (User Interface) optimization for Pen/Mouse control;
  • new sunvox_config file option: ppi - pixels per inch; example: ppi 160;
  • new sunvox_config file option: scale - UI scale factor (normal=256); example: scale 128 //reduce the size of UI items in half;
  • new sunvox_config file option: synths_min_num - minimum number of modules on x-axis;
  • new parameters (Control Type and Scale) in the Preferences for the UI scale configuration; use it if you want larger or smaller interface elements;
  • Windows: now DirectSound is default sound system; but if you need ASIO output, just select it in the sunvox_config.ini file (audiodriver asio);
  • iOS: "Create Directory" feature added to the Wi-Fi file browser;
  • new examples: electrohouse, afternoon, pong, space_trip, 8bit_tales, sfields1, 1bit;
  • new instruments;
  • sound engine optimization;
  • many bugs fixed.
Video of the new features:

Wednesday, March 21, 2012

Want to listen more songs made with SunVox?
Want to share your own songs?
It's all here: SunVox group on SoundCloud!

Saturday, March 17, 2012

Friday, March 16, 2012

Cool SunVox tracks "Assembly Line" and "Phendrana Drifts" by The Handle were played on Printed Circuit CKUW 95.9FM on March 14!
Here is the archive: (listen March 14th, first hour).

Thursday, March 15, 2012

Local and Global controllers in SunVox

Each SunVox module has a set of global and local controllers. Choose the "Info about selected item" in the sound network menu, and you will see the list of supported local controllers. But what's the difference?

For example, i have a chord with two notes. Playing on Generator 01.
If i change the global controller Panning (03) - it affects all notes from my chord, and any sounds from Generator 01 at all.
If i change the local controller Panning (03) - it affects only one note (separate polyphonic channel) from my chord.

In other words, i need a chord with two notes. But the first note should be played in the left channel. And the second note - in the right channel.
How to do it?
Solution 1: use two Generators; Generator 01 with Panning 0000, and Generator 02 with Panning 8000.
Solution 2: use one Generator and local Panning controllers.

More info is here:

Saturday, March 10, 2012

New SunVox tracks

Want to listen more songs made with SunVox?
Want to share your own songs?
It's all here: SunVox group on SoundCloud!

Monday, March 5, 2012

Some points about mobile version of SunVox

Mobile version (ARM-based) of SunVox has fixed point integer audio engine (4.12 bits). This means that you hear the 13-bit sound on mobile devices. It is fast but with slightly audible quantization noise. Rendering to WAV also has this noise, but no more than that. For example, if you hear some glitches due to lack of CPU power, these glitches will not be present in the WAV-file after rendering. In other words, the result of WAV rendering will be the same on different devices with ARM CPU.
In spite of the mobile version noise, 32bit WAV export may be with better quality due to the absence of audio overflow.

Sunday, February 26, 2012

Saturday, February 18, 2012