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
-
compositions in the data/save directory,
-
textures in data/textures
-
loops in data/loops
-
waves in data/waves
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:
-
Java JRE or SDK Version 1.6 at least, it is recommended to install the last Java version
-
Csound version 5.10 (or later) double precision edition.
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.
-
Put in the native directory the correct DLL (.so, .jnilib) for your platform. They are available in the respective distribution of JOGL and Csound (double precision).
-
Normally the csnd.jar in the lib directory should be portable, but to be sure it is better to copy the one coming with your Csound distribution
-
Create a command file to launch Java with the parameters you find in AVSynthesis.cmd
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. |
|
|
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:
-
Step Sequencer pitch editor
-
Step Sequencer amplitude editor
-
Sound Generator 1
-
Sound Generator 2
-
Sound Generator 3
-
Sound Effect 1
-
Sound Effect 2
-
Sound Effect 3
-
Volumes, and routing
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 Settings for 64 Steps
|
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. |
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
-
-
New GUI
-
Real Time Editor enhancements
-
new GUI
-
Evolution curve cycle UI control
-
Direct and Reverb volume UI control
-
Individual sound generator volume UI control
-
start on the editor screen
-
Better visual rendering (changes in the texture opengl code)
-
Correct sound generator individual volume assignment (was done twice).
-
New Sequencer, 64 Steps
-
New Effect, Pan
-
New Sound Generator, Chant
-
CycleWave sound generator fix
-
New Curve type: ramdom interpolator and random hold
-
Change the csound code for WaveLoop generator. It is now using diskin2 in place of flooper2, which was too memory hungry.
24_05_09
-
-
Enhanced Sequencer. 16 steps, variable chord number, scale random mode. GUI modification.
-
OSC message bundle support.
-
Real Time Editor
-
AnlogDelay
-
Fix some bugs (performance copy...)
23_05_09
-
-
Effect amount added. If amount equals 1, the input signal is totally modified. At 0, it is not transformed by the effect
-
AudioIn generator. This generator reads the stereo input audio device, specified by -iadc in the csound field of config.xml
-
Preliminary OSC support.
22_05_09
-
-
Portability fix. AVSynthesis package is including some composition examples, created under windows, the texture paths are stored is a format that is not portable to linux. AVSynthesis will now check for this format and convert it to the Linux compatible one.
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
-
Fix a potential trap when csound rendering has finished: the main thread may try to read csound channels that are not valid anymore because csound has finished
19_05_08
-
Sequencer Master Clock implemented
-
Variable number of steps when non chord mode
18_05_08
-
MIDI Controler assignment display fixed
-
Change the minx and max labels length to 6
17_05_08
-
Parameter value can be controlled by MIDI Control Change.
-
Display min-max range values.
-
Change navigation structure (sound synthetizer structure shown on pair along the graphical navigation buttons).
-
Sound and graphical rendering can be individualy activated for each layer.
16_05_08
15_05_08
-
Add gcRecorder parameter to config.xml.
-
Add new Sound Generator WaveTable.
-
Add new parameters to Warping and BumpArt shaders.
-
GUI cosmetic changes.
14_05_08
-
Add sr and srRecorder parameters to config.xml.
-
Clean opengl code in the main display loop (source of erratic behavior).
-
Clean internal string variables handling.
-
Expose several Effect parameters that were used but not editable.
13_05_08
-
Change in csound handling to enhance stability (linux).
-
Add videoWidth and videoHeight
-
Fixes to the Recorder. Make it work correctly for a sample rate of 44100 and a FPS of 30. Wav file and number of generated frames will give the exact movie length.
12_05_08
-
For solving stability issue on Linux, the csound thread design has been changed to the use of normal Java thread, in place of the CsoundPerformanceThread class provided by csound.
-
Fix: refresh main frame window title after bact rendering (aka wav image recorder for creating movie).
-
Fix: calculate the correct rendering length when a layer has a volume curve with no points.
-
As the jogl version is stable, and performing well, the lwjgl version is removed from the package and the documentation.
11_05_08
-
Switch back to TGA file recorder. Memory consumption seems to be solved with latest device driver. Also the code based on bmp file generation was not working on some linux environment.
-
Fix bug in Frame by second for the recorder. It was accidentally fixed to 60 FPS. It is now using the value set in config.xml, which is 30 FPS, recommended value.
-
JOGL is at 1.1.1 level
10_05_08
-
Change the screen shot code for movie creation, as it was causing too much memory consumption. The picture file format is bitmap.
-
Add the possibility to use the shift key in place of the alt key for Linux environment.
-
Fix bug with the RMS max value display code.
9_05_08
-
fullscreen mode implementation for the jogl version
-
quit button for the jogl version
-
fix a weird behaviour in the OpenGL code
8_05_08
-
Logic design change in the csound rendering engine for better robustness
-
Minor UI change in the lwjgl version (sound parameter description label)
7_05_08
-
Save button visual feedback added to the JOGL version
6_05_08
-
Csound thread handling correction (JOGL version)
5_05_08
-
JOGL version added to the package.
-
better text look and feel
-
window resizing
-
no full-screen mode
-
launched by using avsynthesiso.cmd (using avsynthesiso.jar)
4_05_08
-
Cosmetic changes (dialog)
3_05_08
-
Remove the use of DEVIL in anticipation of LWJGL version 2.0. Texture loading is slower, batch image rendering is also slower and is using bmp format. Texture width and height must be a power of two.
-
Better checking of texture loading. If the texture is not present, or does not exist, the shader is invalid. A grey rectangle is displayed in place.
1_05_08
-
Based on csound 5.08, and LWJGL 1.1.4
-
Enhancement to the sound quality by using high precision envelopes. Compositions done with previous version might sound differently, and might require edition.
-
GUI changes
-
smaller font
-
a save dialog is displayed when loading a new composition and if the current one has changed.
-
cosmetic changes
-
Pluck based sound generator added
-
Panning capability added. Sound panning is individual for each of the three generators. The signal will be stereo in the Effect chain, thus, take care on the CPU performance...
-
New filter based on the statevar opcode