AVSynthesis Composition Tool

Last update: 01 September 2009.

Current Version: 31_05_10. 

Please see the release notes for changes.


If you are using a version older than 25_05_10, then it is better to use the whole package in place of the previous version (just copying the new jar file won't work). User data has just to be copied in this new package

 

This version requires the 5.10 version of Csound, double-precision version. 



Introduction 

AVSynthesis is a composition tool that combines the power of Csound and GLSL shaders in an easy to use User Interface. Sound synthesis and image transformations are intimately linked by the composition process to produce cinematic landscapes, evolving graphical abstractions...

Its goal is not to be another general purpose editor. It is better to see it as a software instrument with specific capabilities.

Installation

AVSynthesis is delivered as a zip file, just unzip it in any directory you like, and launch AVSynthesis.cmd (window mode) or AVSynthesisf.cmd (full screen mode).
The zip file can be download here .

The code only (jar file) is here for upgrading version older than 25_05_10.

Requirements

AVSynthesis is a Windows program (Vista is supported), and requires the following software to be installed:

GLSL shaders require the use of a capable graphic card. For reference, AVSynthesis is running correctly (full-screen) with ATI x1600 graphic card.

The JOGL version requires the latest graphic device driver.

Customization

To tailor AVSynthesis to your own environment, edit the file config.xml in the data directory. Here is a content example:
<?xml version="1.0" encoding="UTF-8"?>
<config csound="-d -m0 -g -f -odac6 -M0 -b1024 temp.orc temp.sco" ksmps="16" width="800" height="600" fullscreen="false" FPS="30"/>


Change the string enclosed by quotes to launch AVSynthesis with different settings.


csound is what goes in the <CsOptions> directive of a CSD file.

ksmps is the ksmps parameter of Csound

width is the width of the AVSynthesis window

height is the height of the AVSynthesis window

fullscreen is for launching AVSynthesis in fullscreen mode. It is also possible to launch AVSynthesis in fullscreen mode using a specific command line parameter (fullscreen). A convenient command file has been added to the package for running AVSynthesis in full screen (AVSynthesisof.cmd).

FPS sets the display refresh rate. 30 is enough for a smooth real time rendering, but you may test other higher values.

MIDICtrl sets the beginning MIDI Controller value, when the composition is rendered for MIDI controlled performance.
fontName sets the font to use. It must be a valid installed font in your Operating system.
fontSize sets the size of the font. This is a very rudimentary support. No screen widgets resizing is done for now.
linux set the OS environment. When linux="true" is specified, then the alt key used to set a parameter value to its maximum is replace by the shift key.
videoWidth set the width of the TGA files generated for movie creation.
videoHeight set the height of the TGA files generated for movie creation.
sr set the csound sr value for all real time rendering modes.
srRecorder set the csound sr value for the Recorder.
gcRecorder set the frequency (in number of frames) with which the garbage collector is called during the pitcures generation. The Recoder is consuming a lot of memory, and depending of the PC memory and its performance (CPU, disk), it might be necessary to more often call the Java Garbage Collector.
FPSRecorder set the number of frames per second generated by the Recorder. This value can be a on integer number, but accurate results are only available when srRecorder divided by FPSRecorder is an integer. For example: 44100 and 30.
OSCHost set the host name of the computer where AVSynthesis runs. The default value is localhost.
OSCPort set the port to use. The default value is 7770.
OSCBundle set the OSC message format. If true messages are grouped together, if false message are individually sent The default value is false.



Images used by a layer and transformed by the shaders are stored in the \data\textures directory.  Any PNG or JPG pictures may be put in this directory for use in AVSynthesis. Picture width and height must be a power of two.


Sound files used by the WaveLoop generator are in \data\loops directory. Stereo files can be added to this directory.


AVSynthesis lists these resources when it is launched. There is no scrolling or pagination capabilities. One way to bypass these limitations is to work by projects, having AVSynthesis in different directories.


Adaptation to other platforms

AVSynthesis has been designed to be portable (Win, Mac OS and Linux). You may try to adapt the delivered package.


AVSynthesis on Linux (by Dave Phillips)

Last edited: 22 August 2009

Linux users will need a recent version of Java and a video card with support for OpenGL and hardware-accelerated 3D graphics. I currently use Sun's JDK 1.6 and an nVidia 7600 GS video card (with nVidia's proprietary driver). I also run AVSynthesis on a notebook with an on-board nVidia 8200M chipset. I recommend at least 2 GB physical memory, a large fast hard-disk, and a fast CPU (at least 2 GHz).

Double-precision Csound creates excellent audio output, so I recommend a high-quality sound system. My primary system includes an M-Audio Delta 66 digital audio card, a Yamaha DMP11 mixer, an Alesis RM100 power amplifier, and a pair of studio reference monitor speakers. I also test AVSynthesis with a simple 5.1 system running on a Creative Labs SBLive Value soundcard. Of course the primary sound system is preferred, but the consumer-grade system is acceptable. Csound produces high-resolution audio through the entire audible range, with dynamics from the softest to the loudest levels. The optimal realization of Csound's audio output depends upon the capabilities of your sound hardware.

Installation & Configuration

To run AVSynthesis on Linux you'll need the following files in the libo directory:

    csnd.jar
    gluegen-rt.jar
    jogl.jar
    lib_jcsound.so
    libgluegen-rt.so
    libjogl.so
    libjogl_awt.so
    libjogl_cg.so
    javaosc.jar (required only for OSC operations, this jar is in the AVSynthesis package)

The csnd.jar and lib_jcsound.so files come from Csound built with at least the following options:

    scons useDouble=1 install=1 buildInterfaces=1 buildJavaWrapper=1 dynamicCsoundLibrary=1

Add the Word64=1 option if you're building for a 64-bit system.

After installing Csound you should find the csnd.jar file in the /usr/lib/csound/java directory or in /usr/local/lib/csound/java. The lib_jcsound.so library should be found in /usr/lib or /usr/local/lib.

The remaining files in libo come from the JOGL package for Linux. As of the Summer of 2009 JOGL 2.0 is now available, but it has not been verified to work with AVSynthesis. The new version has been completely reorganized and is not so straightforward to implement in AVSynthesis. For now I advise using a pre-2.0 version of JOGL.

Your data/config.xml should look something like this one:

    <config csound="-+rtmidi=alsa -Mhw:0,0 -+rtaudio=jack -odac:alsa_pcm:playback_ -iadc:alsa_pcm:capture_ -b128 -d -m0 -g -f --expression-opt temp.orc temp.sco" sr="44100" ksmps="64" width="1280" height="1024" videoWidth="640" videoHeight="480" srRecorder="44100" fullscreen="false" linux="true" FPS="30" MIDICtrl="85"/>

This configuration will autoconnect Csound's audio input/output to JACK. Newer versions of JACK may require -odac:system:playback_ and -iadc:system:capture_ instead of the parameter terms shown above. Make sure that JACK and config.xml agree on the sampling rate. For best results JACK's frame/period size should agree with the value for Csound's buffer (-b128 in the example above). (NB: I'm not sure about the optimal buffer setting.)

Under Linux the -+rtmidi flag will be defined by either pm (for the PortMIDI module) or alsa (for the ALSA module). The -M flag determines the MIDI input source. The PortMIDI module needs only a device number, e.g. -M0, but the ALSA module requires the more complicated syntax seen in the example. The hw:0,0 designator may need changed for your particular system. For example, I use the ALSA virtual MIDI module (snd-virmidi) as the third card in one of my systems. If I want to employ the first virmidi port as my MIDI input source I need to specify hw:2,0. ALSA numbers the cards from 0, so the specification correctly indicates that the hardware (virtual hardware in this case) is my third card and that the connection will be to the first of the four ports made available by the virmidi module (hw:2,0 to hw:2,3). To connect to the real hardware on my SBLive (card #2) I specify hw:1,0 for my MIDI input source. My primary card (card #0) is an M-Audio Delta 66 that has no MIDI hardware, and specifying hw:0,0 for my MIDI input source will result in a Csound runtime error. You can safely omit the -+rtmidi and -M flags if you do not intend to use MIDI control for AVSynthesis.

Change the "false" to "true" for a true fullscreen display. If you intend to encode for eventual transfer to DVD you may want to set sr and srRecorder to "48000" and change the FPS rate to "60".

Using AVSynthesis

To start AVSynthesis, open an xterm, enter the installation directory (e.g. cd $HOME/AVSynthesis_22_5_09), then run this command :

    java -Xmx512m -Djava.library.path=./libo -cp AVSynthesiso.jar:./libo/* org.avs.AVSynthesis

When the program starts you should see the composition editor displayed below in the User Interface Guide.

AVSynthesis is resource-hungry. If you experience audio stuttering or if the video display freezes during performance you should scale back your use of CPU-intensive opcodes and video transforms. You may need to increase the Java memory allotment from 512 MB to 768 MB or higher. Check top or a similar utility to see where CPU usage begins to peak when operating the program. I strongly encourage the use of a Linux system optimized for low-latency audio performance to avoid audio dropouts. Further, I recommend systems such as 64 Studio or JAD because of their explicit support for 3D graphics chipsets. If you use an nVidia-based graphics board you may experience IRQ conflicts and other problems that may be difficult or impossible to debug, so I advise leaving such problems to be resolved by the experts.

Note (28 Sept 2008): Developer Steven Yi solved the instability problems that plagued the Linux operation of earlier versions of AVSynthesis and Steven's blue Csound development environment. For the greatest stability under Linux you should upgrade to Csound 5.10 and the latest AVSynthesis. Earlier versions of Csound might work, but they will not provide full support for the Csound-related features of AVSynthesis.

Making a Movie With AVSynthesis

To encode a movie you will need to create first a file with a sequentially-ordered list of the images in your data/render directory. I use this command:

    find *tga | sort -n > list

You can then process that file with mencoder to create a movie. I use the following command to make very high-quality AVI movies from my AVSynthesis images:

    mencoder -oac copy -audiofile ../render.wav -ovc lavc -lavcopts vcodec=huffyuv:pred=2:format=422P:vstrict=-1 -noskip -mf fps=30 -o master.avi mf://@list

This command will create a huge AVI, often multi-gigabytes in size for a movie only a few minutes long. A Google search will reveal other ways to make a smaller-sized movie with mencoder and similar utilities for Linux. Preparing videos for the various on-line video channels (YouTube, Vimeo, MySpace, etc.) is a non-trivial exercise for Linux users, and a full exposition of video conversion techniques is beyond the scope of this document. However, I recommend the WinFF program (it's for Linux too) for newcomers to this process. That program includes conversion presets for a variety of the most commonly encountered formats.

External Control

From version 17_05_08 AVSynthesis lets the user assign MIDI controllers to most synthesis and shader parameters. The MIDI input port is determined by the -M option for Csound in config.xml , and only one MIDI channel is currently supoprted. Each controller affects either the entire range of a slider or just the selected range. Each parameter may be assigned a discrete controller (there are 127 possible controllers), or a single controller may be assigned to a group of parameters for "ganged" effects. This facility gives the user more realtime control over an AVSynthesis performance via MIDI fader box, external sequencer, MIDI keyboard, or any other device that sends MIDI continuous controller messages.

More recent versions of AVSynthesis support the OSC protocol. See my article An Introduction To OSC for more information on using OSC with AVSynthesis.

Video presentation

You will find here a complete video tour of the editors available inside AVSynthesis.
This video has not been updated with the new features since version 17_05_08, but is nevertheless useful to understand how AVSynthesis works.

User Interface Guide

Composition Editor - Main view



A composition is made of 4 set of Layers, up to 14. Each layer combines a graphical part and a sound part. The maximum duration of a set is 300 seconds, which gives a total possible length of 20 minutes for a composition.

Sound volume is controlled by a curve that also sets the layer rendering activation or not. The layer visibility will follow the sound volume if this has been set in the visual parameters editor, and will be drawn on the screen in the order it appears in the Composition Editor (top of the list is drawn first).

The curve is made of line segments only. The points of these lines are quantized :
    the x axis represents the time, by increments of 5 seconds
    the y axis represent the volume/transparency values, 0 or 1

The buttons of the right of the volume curve are to make the graphical or sound parts of the layer active or not. When both are selected, the layer will be rendered entirely (visual and sound). If the graphical part (left button) is selected alone, no sound will be rendered. In this case, if the transparent parameter is controlled by the sound RMS, it will be controlled by the volume curve. If the sound part (right button) is selected alone, no visual will be rendered.

Each layer set has a start time that can be adjusted using the time line on top of the layer volume curves. The start time is displayed in orange. A layer set is selected by clicking on the buttons that are on top of the layer list.

Sliders on the top of the curves are the global volume slider and the reverb type slider (higher values are for large room type reverb).

The numbers at the bottom center of the screen are click-able buttons for loading a particular composition. Compositions are saved in the \data\save directory, and are named pXY.xml, where X is the upper number, and Y the lower number. For the  example, the current loaded composition is stored in the file p00.xml.

The composition editor is the central and unique view. The column of buttons on the left let navigate through the different layers, and the buttons at the top of the screen displays the different parameters for the layer, from left to right:
  • Audio Volume Control Curves for each layer
  • Sequencer Steps
  • Sequencer Settings
  • Sound Generator 1  
  • Sound Generator 2
  • Sound Generator 3
  • Effect 1
  • Effect 2
  • Effect 3
  • Audio signal mixing
  • Curves
  • Visual Shader parameter
  • Visual shader editor
  • Base texture
  • Blending texture
  • Optional texture (dependent of the shader type)

The lines indicate which layer and which set of parameters is being edited.

Sound Volume curve edition

The buttons on top of the time line select the edit mode. 


Editing is done by clicking an any cell. 


 If the "add" event button is selected, an event will be added at the time on the left of the cell. This event will have a value of 1 if the mouse is clicked on the upper half of the cell, 0 if on the lower part.


If the "del" event button is selected, the event at the time on the left of the cell will be deleted, if it exists, otherwise nothing will be done.



Composition Editor - Thumbnails/Button description
from left to right
These mini action icons are related to the currently edited composition. By clicking on these icons, the following actions will be executed:
  • delete the composition. No undo, no confirmation! take care
  • copy the composition to the next available slot
Select the set of Layers to edit.
 Section Buttons 
These mini action icons are related to the currently edited set of layer and to a selected layer (as indicated by a line). By clicking on these icons, the following actions will be executed:
from left to right, bottom to top
  • Del the layer. There is no undo, thus, copy it to the clipboard for keeping it
  • Move the layer up in the list. Layers are displayed from top to bottom during the composition rendering.
  • Move the layer down
  • Copy the Layer to the Clipboard
  • Set the layer active or not
  • Play the whole Set of Layers, with a start time of 0  
  • Play this layer only using a default volume curve, not the one associated in the editor

Click on this thumbnail to save the current composition. Any changes made must be saved using the button.

Close AVSynthesis.

Display the clipboard.

Switch to Performance mode. The layers are rendered in real time. The Performance will end when the last curve point is reached, or when clicking anywhere on the window area.
Switch to a combination of Performance mode and real time parameters edition through a GUI that is superposed on the graphical layers. See the description below in the section Real Time Editor.

Switch to MIDI controlled Performance mode. Each layer sound volume is controlled by a MIDI controller, the value of which begins at the value indicated in the config.xml file, and is incremented by one from top to bottom. Graphical and sound parameters may also be controlled by MIDI Control Change.
Switch to OSC controlled Performance mode. AVS will receive OSC messages by listening to the port specified in the field OSCPort of config.xml. Two modes are available that can be set in config.xml.

Individual message mode
The OSC message names are
  • /AVS/layer + layer pos = layer sound volume
  • /AVS/p + MIDI CC value = visual or sound parameter control

Bundle message mode
The OSC message names are
  • /AVS/layer + layer pos1 + ... + layer posN = layer sound volume for all the active layers in the performance
  • /AVS/p + MIDI CC value1 + ... + MIDI CC valueN = visual or sound parameter midi controls. They represent all the MIDI controlers used in the Composition, and are sorted by ascendant number value.

The MIDI CC value is the value specified in the AVSynthesis GUI when assigning MIDI controller to visual or sound parameters.

The OSC message must be a float value in the range 0 to 1.

The OSC control function keeps the same paradigm as a MIDI controller: any sound or visual parameters that have the same MIDI CC will be controlled by the same OSC message. 



Recorder


Export the composition as a set of images (one for each frame), and a sound file (wav format). The images are exported in the data\render directory and the sound file is created in the data directory. You can then produce a video file using VirtualDub for example.


The export algorithm has been designed for a frame rate of 30, and for a sample rate of 44100.


It is up to you to clean the render directory between each rendering. If the length of the composition stays the same, the number of frames will be the same, thus avoiding to clean the directory.



The size of the video can be set in config.xml file (videoWidth and videoHeight). The default resolution is 640x480.


Shader Editor


This editor lets customized the Shader
  • Light Model - Phong, PhongStrong, Sheen, Flash (kind of in fact!), Goosh
  • Contrast
  • Shader type. A grey rectangle is displayed when a Texture is missing or is not valid. Every shader type that requires an optional Texture will be displayed as a grey rectangle if the type is not the current one or, if it is the current, if the Texture is not valid (or not selected yet).

The selected states are displayed in orange. Click on any of the buttons to change the shader (light, contrast, type)

Base Texture Editor



This editor displays the picture files found in the textures directory. The first load is  slow, but as the textures are then kept in memory, any use of this texture will be fast in the different editors.

Picture can be added in the textures directory. The editor is not refreshed during a composition session. AVSynthesis must be stopped and started again to show the  new texture list.

At this stage of the project, there is no paging capability. The number of textures that can be used are limited to 96. Anyway, keep in mind that they are loaded in memory for fast editing.

Blending Texture Editor


The difference with the Base Texture editor is the presence of blended mode selection buttons.

The first button on the left lets activate or not the blending of the base texture with the one selected by this editor.

The other buttons at the right of the activation button lets choose the Blending mode: Multiply, Red, Green, Blue, Add, Screen, Lighten, Darken, Difference, Exclusion, Overlay.

The Picture buttons have the same function as in the Base Texture editor: select the picture.

Optional Texture Editor


This editor has the same look and feel that the Base texture Editor. It lets select a texture requires by some shaders:
  • BumpMapArt
  • Reflection
  • Warping

Shader Parameters Editor


This editor lets change the value of any of the shader parameters, or to affect a dynamic evolution (looping curves or sound volume, or MIDI Control Change).

The transparency parameter is set by default to follow the volume of the layer sound. This is one of the base concepts on which AVSynthesis is based: graphical layers overlay each other by following the sound volume. This behaviour can be changed to explore other paradigms in synchronizing sound to graphics. Curves are common to the sound and to the graphic parts of the layers, allowing the exploration of different synesthesias.  

Curves Editor


The eight curves attributes can be changed using this editor. The curve to edit is selected by clicking on the left thumbnail.

The slider sets the looping cycle. There are three curve types. When the "line" type is selected, the curve segments to use is chosen by clicking on the buttons representing different forms. 

Curves are used to control the values of graphical or sound parameters. See below on how to operate.

Sound Synthesizer Editors

The sound editors are made of:

An animated light indicates that the sound generator of the effect is active.

The structure of the sound synthesizer is simple: The sequencer controls the pitch and the amplitude of the sound generators, the output of the three sound generators is sent to the effects that are working serially to process the audio signal. The amount of sound generator audio signal processed by the effects can be set from total processing to none. The audio signal (generated or processed) is then sent to a global reverb or to the direct output.

Sequencer Editor

The Sequencer is either an Analog type sequencer,  16 steps sequencer in monophonic note or a 5 steps sequencer when in chord mode (3 notes chord), or a 64 Steps sequencer, 64 notes with random amplitude and scale quantification.



Each sequencer has its own clock or can be synchronized with a master clock.


Analog Steps Editor

The Step Sequencer Editor changes the amplitude and pitch of each step.

This editor displays only the steps that are in the range set in the Sequencer settings editor (image below).

The button next right the step number is a random behaviour toggle button. When on, the pitch or amplitude step will be set accordingly to the settings.

Pitch step values are set by clicking on the buttons. 24 semitone values are available. The selected pitch is in orange.


The Sequencer Settings Editor lets the user set the various runtime parameters, from top to bottom: 

  • Synchronize the sequencer to the master clock. Master clock frequency.

  • Sequencer set to its own clock frequency. This is not used if the sequencer is synchronized with the master clock.

  • Sequencer speed variation. Add a random variation whatever the clock mode is (master or local). A value of 1 gives no variation.

  • The Amplitude and Filter envelopes that are triggered by the sequencer. Each envelope is either an attack-decay envelope or a predefined exponential envelope. The duration is those of the step.

  • Sequencer type: two different sequencers are available, Analog and 64 steps. When selecting an other sequencer type, all the data entered are lost  

  • Settings for Analog

    • Base pitch frequency for step A, B, C

    • Number of steps in the sequence. This is not available in chord mode generation

    • Chord mode or not. 

    • Number of chords

    • Add a random value to the pitch

      • Random value

      • Random type. Scale will randomly select a note among the different steps

    • Add random variation to the amplitude

      • Random variation range

      • Random type

  • Settings for 64 Steps

    • Base pitch frequency 

    • Random amplitude

      • Random variation range

      • Random type

    • Scale. The step editor will only allow the input of notes of the selected scale. When selecting another scale, the actual note steps are modified to map to the new scale.




Sound Generator Editor

The Sound Generator editor displays the different synthesis parameters, activates the generator or not, and can change the sound generator type by clicking on the button at the left of the title.



An envelope can be applied to the sound generator amplitude in place of the sequencer one by selecting the button labelled Amplitude Envelope".

Each sound generator can be independently positioned in the stereo image. Keep in mind that if the sound generator is stereo, the effect processors will be doubled, with the same settings for each channel.



The available generators are:

  • Analog - based on the vco2 opcode, filtered with Moog-like filter

  • Analog2 - based on the vco2 opcode

  • FM3Random - FM oscillator with extensive modulations - based on fmoscili

  • Noise - noise generator

  • WaveLoop - play in loop a stereo or mono wave file

  • Pluck - based on the pluck opcode

  • WaveTable - draw your own waveform

  • CycleWave - use a single-cycle wave file (files are stored in /data/waves)

  • Vosim - generator based on the vosim opcode

  • AudioIn - read stereo audio signal from the device specified in the csound options file (config.xml) - Looper mode

  • Chant - voice generator based on fof opcode



Effect Processor Editor

Effects process the outputs of the sound generator serially. The order can be changed by clicking on the numbered button just beneath the title. The effect can be changed by clicking on the button at the left of the title.





Available Effects are:

  • PhaserConcret

  • Waveset

  • RingModulator

  • MoogFilter

  • PvsBlur

  • PvsScale

  • PvsShift

  • PvsSmooth

  • Chorus

  • GrainWild

  • Waveguide

  • SpectralArp

  • SpectralDrone

  • StateVariableFilter

  • AnalogDelay

  • Pan

  • Waveguide2

  • Rezzy, a loaw pass resonant filter





Volumes




This editor controls the different volume of the audio signal 



Individual volume of each sound generator



Amount of sound generator signal to send to the effects (dry/wet)



The amount of sound to send in direct or through the global reverb.





Other settings are controlled in this page 


Reverb type 


RMS adjustment. Csound opcodes are used to compute the sound volume value that is going to be used for controlling graphic parameters. It is necessary to set the maximum value of the sound volume for optimum conversion. By clicking on the Display RMS button, the RMS maximum value will be shown when rendering this layer in real time.

Parameter Edition




Slider

In this example, Texture Scale has two attributes: scale on the x axis and scale on the y axis. Sound parameters are edited using the same widget type.

The slider behaviour is the same whatever the parameter is (graphical or sound attributes).
  • Clicking on the slider will change the value. Click and drag the mouse will continuously change the  value. 
  • Clicking anywhere on the slider and pressing the CTRL key will force the value to its possible minimum value.
  • Clicking anywhere on the slider and pressing the ALT key (or the Shift key in Linux) will force the value to its possible maximum value.





Clicking on the button at the right of the parameter description will make this attribute value controlled by a curve or by the sound volume (the red button at the left).

They are height curves available for any layer. Their shape might be chosen from a list of predefined curves, and their cycle length might be changed.

The Sound Volume or the Curve will change the attribute value in a range defined by the light grey rectangle on the right of the curves buttons. Clicking on this range widget will change the min/max values.



Clicking on the button at the right on the button described above will make this attribute controlled by a MIDI Control Change. The MIDI Controller number is set by the slider, the value range by the light grey rectangle as seen above.


There is another sound parameter type that has a base value and a modulated value added to the base.

The modulation types are:
  • random hold (discontinuous values)
  • random interpolation (smooth values)
  • exponential curves ( 1- 9)
  • sequencer Amplitude envelope
  • sequencer Filter envelope

The speed of modulation is set by the modulation frequency attribute.

Value,modulation and modulation frequency attributes are editable as seen above. for any graphical attributes. In this example, the modulation value will be controlled by the Curve number 1 over a range set by the light grey rectangle portion.

Real Time Editor

When clicking on the button , the Real Time Editor is displayed while AVSynthesis is running in Performance mode. Every active layer can now be controlled by using a special GUI.

 



  







  


The active layers are listed on the right, followed by a slider that controls the layer sound volume. To activate and to render a layer, just move the slider. To deactivate a layer (and save resources), set the volume value to zero by using the combination of keyboard (CTRL) and mouse click. When clicking on the Layer button, the editable sound/visual parameters are displayed on the right. 

The buttons above the parameters list navigate through them: Sequencer Steps, Sequencer Settings, Sound Generators, Effects, Volumes, Curves, Visual.
Unique to this editor, it is is possible to change in real time the cycle time of the loop curves.


The button  at the top of the screen sets the visibility of all the GUI controls. By clicking on this button, the performance will be rendered without them. Then, to return to the editor from the performance, just click anywhere on the screen. The slider at the right of this button adjust the transparency of the editor. It might be useful if the layers colors are too white.

The button  displays the parameters or not.


The button 
   at the end of the line will end the Performance real time rendering, and will display the main Composition Editor.







  
In this view, the parameters of Effect pvsScale for the 4th layer are displayed. Only the parameters that are editable in real time are presented. 

A number at the right of a label indicates that this parameter is controlled by a curve (the number is those of the curve). In this case, the slider is assigned to the curve cycle.

Any modification to a sound or graphical parameter are kept when leaving the Real Time Editor. 























  


OSC Controller Application

With the introduction of OSC support, a companion application is introduced to send OSC message to AVSynthesis. 


 

  


The application displays the layers on the left, a slider volume for each of the layers, and a parameters panel displayed when clicking on a layer thumbnail. In this case, the thumbnail is moved at the center of the window.

The parameters panel displays a list of slider for each MIDI CC value defined in AVSynthesis for controlling sound or visual parameters.

Numbers at the bottom center of the screen have the same functionality than those in AVSynthesis: they load a composition. The OSC controller application shares the same composition (in the same directory), but is in read only mode. When the composition is changed in AVSynthesis, it must be reloaded again in the OSC Controller.

If the applications are on different machines, a mechanism must be provided for sharing the compositions. The OSC Controller application is accessing the remote machine by using the host name set in config.xml (OSCHost field). It can be set to the current ip addresse of the remote machine or to an ip host name if it exists. A host name of "localhost" is used when the two programs are on the same machine.

AVSynthesis will receive OSC message by listening to the port specified in the field OSCPort of config.xml. The OSC message name is
  • /AVS/layer + layer pos = layer sound volume
  • /AVS/p + MIDI CC value = visual or sound parameter control

The MIDI CC value is the value specified in the AVSynthesis GUI when assigning MIDI controller to visual or sound parameters.

The OSC messages must be float values in the range 0 to 1.

The configuration for the OSC host name and port is done in config.xml




The Java command to launch the OSC Controller is:


Windows:

java -Xmx512m -Djogl.GLContext.nofree=true -Dsun.java2d.noddraw=true -Djava.library.path=.\libo -cp AVSynthesiso.jar;.\libo\* org.avs.osc.OSCcontrolerApp


Linux:

java -Xmx512m -Djava.library.path=./libo -cp AVSynthesiso.jar:./libo/* org.avs.osc.OSCcontrolerApp


Release Notes

31_05_10

  • Change Event Editor mouse interaction
  • Fix individual envelope save function

30_05_10

  • New Event Editor
  • Volume enveloppe for Looper

29_05_10

  • Rezzy effect, based on csound opcode rezzy
  • Individual amplitude enveloppe for each sound generator
  • Real Time Editor: layer volume control set again to direct value 
  • Composition Editor increment set to 5 seconds
  • Looper feature added to AudioIn sound generator

28_05_10

  • Waveguide2 effect, based on csound opcode wguide2
  • Add labels to the sound structure
  • Bug fix: when in Recorder mode, stopping the rendering of a composition before the end will trap AVS

27_05_10

  • Bug correction in WaveLoop (mono mode)
  • Real Time Editor: new button to set the layer volume to a zero value, smooth variation for setting the layer volume
  • Section buttons look and feel change

26_05_10

25_05_10

24_05_09

23_05_09

22_05_09

21_05_09

  • Synchronized with csound 5.09
  • Enhanced ring modulator
  • New Sound Generator "CycleWave", oscilator using single cycle waveform sound files
  • New Sound Generator based on Vosim opcode (the vosim csound opcode is broken in the current csound package, a fix has been developped)
  • GUI cosmetic changes
  • The Real time Rendering size has the width and height of the AVSynthesis window (no more a 16/9 ratio) 
  • Fix for Linux stability issue.

20_05_08

19_05_08


18_05_08


17_05_08


16_05_08


15_05_08


14_05_08


13_05_08


12_05_08


11_05_08


10_05_08

9_05_08

8_05_08

7_05_08

6_05_08


5_05_08

4_05_08

3_05_08

1_05_08