====== Image Compositor Socket ======
{{:wiki:ardour2vis.png?250 }}
[[http://ardour.org|ardour]] - the new digital audio workstation - includes rudimentary support to display video-timelines. - For this to work the video-data needs to be supplied by a 3rd-party application via TCP-socket, hence the name: Image Compositor Socket.
Back in 2004/2005 ''aniComp'' from the CMT, Glasgow Animatics-server was supported in Ardour-0.99; but since then
ardour-2.X ICS code has been mostly unmaintained.
I took to code a [[oss:sodankyla:start|video-server]] that implements the ICS protocol to communicate with ardour and manages EDL video-sessions. This wiki page documents information regarding interoperability and interaction with ardour.
===== ICS and ardour 2.X =====
ardour-0.99.3 works //just fine//. However the 2.0-ongoing branch (currently ardour-2.5, svn rev. 3617) introduces video-display regressions that require patching: You can grab split-patches and follow discussion at
http://tracker.ardour.org/view.php?id=2364 or download a {{:wiki:ardour-r3617-video2.patch|combined patch}} from here.
===== Setup =====
ardour enables it's video-capabilities if it can find an executable ''aniComp'' in ''$PATH''. Probably the easiest way to accoplish this is to:
sudo ln -s /bin/true /usr/local/bin/aniComp
ardour2 will also need the an additional line in the ''ardour.menus'' configuration file:
I've added it below the "AddTrackBus" entry.
Launch the [[oss:sodankyla:start|socket-server]], ardour and activate ardour's "connect" menu-entry.
===== ICS Protocol =====
{{:wiki:ardourvis-doc.png?250 |handwritten ICS-ardourvis annontations}}
ICS communicates via TCP port 30000. The general syntax is in ASCII text: Every message but the raw-video-data is encoded as Text, integers are represented as decimal values.
NUMBER :=
TEXT :=
REPLY := "RT0" | "RT1"
COMMAND := <2-byte-command> [2-byte-id]* [TEXT]* [NUMBER]*
there are various 2-byte identifiers for commands, items and attributes (eg. ''IN'': insert, ''RM'': remove, ''IT'': imageframe time axis etc). for a full list see the ardour source:
gtk2_ardour/ardour_image_compositor_socket.h
gtk2_ardour/imageframe_socket_handler.cc
gtk2_ardour/imageframe_socket_handler.h
If you don't have aniComp and can't wait until [[oss:sodankyla:start|sodankyla]] is deployable, you can connect to ardour using the gnu-tool ''socket''. Here's an annotated example session:
#
# $ socket -v -ls 30000
#
# load session
SAOS019/tmp/a25/a25.ardour
#
# create new video-track "TTTT"
INIT004TTTT
# rename "TTTT" to "NAME"
MVIT004TTTT004NAME
# insert a new marker-track (just testing)
INMT005VNAME004NAME
# add a new video-scene/group to the video-track
INIG004NAME007myscene
# add an image to the video-scene
# Track Scene Chunk
# | | | start duration
# | + | + | + | |
INII004NAME007myscene004myID00000000000000048000
#
# ardour asks:
#
# "RQID004NAME007myscene004myID066"
# | + | + | + |
# | | | preferred height
# Track Scene Chunk
#
#
# reply - header
# Width
# | Height
# | | SPP
# | | | Data len
# | | | |
RDID00800600300000000000000000000000000000144
# expect "RT1" from ardour.
# now send image data - here: 144 bytes
000...000 (repeat)
Note: ardour-0.99.3 expects ''SPP=4'' and //RGBA// image data. The patched ardour2 can handle //RGB24// and //RGBA32//.
====== external resources ======
* http://subversion.ardour.org/svn/ardour2/branches/2.0-ongoing/gtk2_ardour/ardour_image_compositor_socket.h
* http://animix.sourceforge.net/anicomp/images/anicomp_preview_2.png
* http://sourceforge.net/projects/animix/
{{tag>FLOSS JACK Video Development}}