Computational Audiovisual Composition Using Lua

Cours computational Audiovisual Composition Using Lua, tutoriel & guide de travaux pratiques en pdf.

ImplementationStrategy

Background

The demand for tightly integrated modalities based upon immanent elements leads to the identification of two key design sites:
• Lower level components.
• Generic ‘meta-mechanisms’ rather than numerous features. Lowerlevelcomponentsmaybenecessarytosupporttightinteractionbetweenheterogeneousmodalities and also to encourage the exploration of computationalaudiovisual potential. For example, in the design of a computer game, spatializable sound file playback may be sufficient, however the elevated role of computation in algorithmic composition suggests a lower level approach in terms of signal processing. The meta-mechanism terminology is drawn from Lua itself. Lua’s authors avoid a language bloated by numerous specialized features by providing a small set of componentswithwhichausercanbuilddesiredfeaturesinthewayheorshewantsthem.For example, Lua offers no object-oriented class inheritance system, however many variations of object inheritance can be built upon its metatable construct. Meta-mechanisms avoid preconceived behavior through generality and thus encourages composers to explicitly specify the behavioral features of their works. Generalizing mechanism may also support cross-modality.

On the Choice of a Programming Language

The design of programming environments for audiovisual composition can be broadly divided into two camps: visual Graphical User Interface (GUI) environments and text-based environments utilizing domain specific languages. While generally more approachable for novice users, GUIbased environments such as Max/MSP/Jitter and Pd/GEM (Puckette, 2002) lack many of the formal notions a programming language embodies. Such environments more specificallyaddresstaskschedulingandmessagepassingratherthanthecomputational
1 Note that composition is intended to be equally applicable to real-time performance.
generality of our endeavor.
2 In contrast, a programming language as primary interface addresses the design sites listed above while making use of notions immanent to computation itself. Regarding composition, Roads (2001) identifies two key benefits of programming language representations: ”First, the compositional logic is made explicit, creating a system with a degree of formal consistency. Second, rather than abdicating decisionmaking to the computer, composers can use procedures to extend control over many more processes than they could manage with manual techniques.” Using a programming language as the primary artistic interface leads to a notion of composition-as-script. This notion is not new: a number of contemporary tools emphasizing the aesthetic role of computation such as SuperCollider (McCartney, 2002) andFluxus(Griffiths,2007)exemplifythesameconcernsforindependentlymusicalor spatiotemporal media. Furthermore we note that many of these tools build upon existing languages rather than invent new ones. This leads to a number of clear benefits:
• Documentation easing learning curves
• Potentially numerous extension libraries adding additional capability for free
• Code re-use: repositories and portability
• Revision,debuggingandprofilingminimizingerrorandimprovinguserexperience
• Facilities formally verified in the community, supporting future scalability
Given these advantages, writing a new language only seems appropriate if no existing language can satisfy the demands of a domain. A preferable solution is to use a flexible language that is clearly designed for extension to specific domains: a domain oriented language (Thomas and Barry, 2003).

Lua

The Lua programming language has been designed throughout as an ‘extensible extensionlanguage.’Extensiblereferstotheeasebywhichnewsemanticandfunctional features can be added within Lua or through underlying C functions, while extension refers to the ease by which Lua can be embedded within a host application as a higherlevel configuration and control language (Adobe Lightroom and World of Warcraft are notable examples (Ierusalimschy et al., 2007)). The author of SuperCollider states that an extensible language allows the programmer to “focus only on the problem and less onsatisfyingtheconstraintsandlimitationsofthelanguage’sabstractionsandthecomputer’s hardware” (McCartney, 2002). Typical use of Lua as an extension languages combines libraries of performance sensitive code and key data structures modeled in C/C++ with the dynamic aspects of the applicationsuchascontrolflowandinterfaceconfiguration written in Lua.Together withanumberofgenericbenefitssummarizedinTable1, thesefeaturesmakeLuaideal for the development of the domain-specific language in our project.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *