lubyk lua libraries for live arts Gaspard Bucher (Buma)! artist, musician, coder



Similar documents
Main Bullet #1 Main Bullet #2 Main Bullet #3

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

QML and JavaScript for Native App Development

In: Proceedings of RECPAD th Portuguese Conference on Pattern Recognition June 27th- 28th, 2002 Aveiro, Portugal

BogDan Vatra and Andy Gryc. Qt on Android: Is it right for you?

System Architecture V3.2. Last Update: August 2015

Cross Platform Mobile. -Vinod Doshi

Web development with Lua Programming Language

KIVY - A Framework for Natural User Interfaces

Tec: A Cross-Platform Game Engine

When you made a change just before you quit, junxion will still ask you if you want to save those changes.

CS 378: Computer Game Technology

GUI and Web Programming

Cross-Platform Software Considerations for Internet of Things

Mobile Development with Qt

Programming Mobile Apps with Python

App and Game Development with Corona SDK

XBMC Architecture Overview

Lecture 1 Introduction to Android

Mobile Game and App Development the Easy Way

Content Distribution Management

Android Development. Lecture AD 0 Android SDK & Development Environment. Università degli Studi di Parma. Mobile Application Development

ITG Software Engineering

PROFESSIONAL. Node.js BUILDING JAVASCRIPT-BASED SCALABLE SOFTWARE. Pedro Teixeira WILEY. John Wiley & Sons, Inc.

Extending Tizen Native Framework with Node.js

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Industrial Adoption of Automatically Extracted GUI Models for Testing

Introduction to Python

Cross-Platform Game Development Best practices learned from Marmalade, Unreal, Unity, etc.

Multithreading and Java Native Interface (JNI)!

Why Threads Are A Bad Idea (for most purposes)

CLOUD GAMING WITH NVIDIA GRID TECHNOLOGIES Franck DIARD, Ph.D., SW Chief Software Architect GDC 2014

Application Programming on the Mac COSC346

Efficiency Considerations of PERL and Python in Distributed Processing

Jordan Jozwiak November 13, 2011

file://d:\webs\touch-base.com\htdocs\documentation\androidplatformnotes52.htm

Professional Tizen Application Development

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

A little code goes a long way Cross-platform game development with Lua. Ivan Beliy, Software Engineer

Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON

Introduction to Android SDK Jordi Linares

MASTER THESIS. TITLE: Analysis and evaluation of high performance web servers

Integrated Open-Source Geophysical Processing and Visualization

MA-WA1920: Enterprise iphone and ipad Programming

Development Techniques for Native/Hybrid Tizen Apps. Presented by Kirill Kruchinkin

Game Programming with Groovy. James Sr. Software Engineer, BT/Ribbit

IT Peace of Mind. Powered by: Secure Backup and Collaboration for Enterprises

GR A universal framework for visualization applications

Driving the User Interface. Trends in Automotive GUIs

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

Research and Design of Universal and Open Software Development Platform for Digital Home

ios Application Development &

What's New in BarTender 2016

TREK GETTING STARTED GUIDE

Trends in HTML5. Matt Spencer UI & Browser Marketing Manager

Operating System Today s Operating Systems File Basics File Management Application Software

UForge 3.4 Release Notes

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Lua as a business logic language in high load application. Ilya Martynov ilya@iponweb.net CTO at IPONWEB

Audio networking. François Déchelle Patrice Tisserand Simon Schampijer

Graphical Environment Tool for Development versus Non Graphical Development Tool

Surface and Volumetric Data Rendering and Visualisation

01. Introduction of Android

Android Application Development. Daniel Switkin Senior Software Engineer, Google Inc.

Firewall Builder Architecture Overview

EFFICIENCY CONSIDERATIONS BETWEEN COMMON WEB APPLICATIONS USING THE SOAP PROTOCOL

IBrokers - Interactive Brokers and R

Windmill. Automated Testing for Web Applications

OPERATING SYSTEM SERVICES

Rich Internet Applications

Developing Applications for ios

Unity New Networking System (UNet) Unite Asia 2015

How to extend Puppet using Ruby

Real time vehicle tracking and driver behaviour monitoring using cellular handset based accelerometer and GPS data

WhiteWave's Integrated Managed File Transfer (MFT)

Multiprocess System for Virtual Instruments in Python

Some programming experience in a high-level structured programming language is recommended.

Visualizing Data: Scalable Interactivity

FreeFem++-cs, the FreeFem++ Graphical Interface

Installing Ubuntu. Obtaining files required

Automated penetration testing with Nmap s new scripting engine SCAN TIME

Porting VNC to Mobile Platforms

Mobile Application Development Android

REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-12: Real Time Linux

Frequently Asked Questions

Rcore Embedded Software Platform

MoonGen. A Scriptable High-Speed Packet Generator Design and Implementation. Paul Emmerich. January 30th, 2016 FOSDEM 2016

Real-time Device Monitoring Using AWS

The MeeGo Multimedia Stack. Dr. Stefan Kost Nokia - The MeeGo Multimedia Stack - CELF Embedded Linux Conference Europe

Agent Languages. Overview. Requirements. Java. Tcl/Tk. Telescript. Evaluation. Artificial Intelligence Intelligent Agents

Android Tutorial. Larry Walters OOSE Fall 2011

Symfony2 and Drupal. Why to talk about Symfony2 framework?

Transcription:

lubyk lua libraries for live arts Gaspard Bucher (Buma)! artist, musician, coder

lubyk is not a framework

Why lubyk? Reuse code from project to project Accelerate development (live coding) Simple APIs Good documentation Stability (unit tests)

History! 2006 First prototype in Ruby Slow, inaccurate, rubato music 2008 Second pure C++ version, many threads, mutex. Lua scripting. Works when not crashing

2008 Home machine learning based movement recognition

History! 2006 First prototype in Ruby Slow, inaccurate, rubato music 2008 Second pure C++ version, many threads, mutex. Lua scripting. Works when not crashing 2011 Third version, pure lua, Qt GUI, multi-process, network distribution (mdns, zeromq, Msgpack).

2011 boats to nowhere

2011 All written in lua (dub made Qt bindings)

What was wrong? Did not scale well to larger projects Confusing interface Hard to work on different parts (shaders, physics, control, music integration, etc). Too complex, hard to share modules Complicated GUI takes too much dev time!!

less is more

History! 2006 First prototype in Ruby Slow, inaccurate, rubato music 2008 Second pure C++ version, many threads, mutex. Lua scripting. Works when not crashing 2011 Third version, pure lua, Qt GUI, multi-process, network distribution (mdns, zeromq, Msgpack). 2014 Fourth version, modules, tests, doc

Modules four lut lmidi lui media bt dub lens lug xml yaml osc lub

lub lut lmidi lui four media bt Class declaration Template {{moustache}} Directory traversal Algorithm (search) String, Array helpers etc dub lens lug xml yaml osc lub

Documentation, testing lut lmidi lui four media bt Inline documentation Literate programming Testing framework Coverage Module setup/build dub lens lug xml yaml osc lub

lut.doc Cross references Latex Math

lut.doc! literate programming

lut.doc! literate programming

Testing with lut.test

Libraries using lut four lut lmidi lui media bt dub lens lug xml yaml osc lub

lens lut lmidi lui four media bt Scheduling Socket (TCP, UDP) Thread Timer FileWatch dub lens lug xml yaml osc lub

encode / decode four lut lmidi lui media bt dub lens lug xml yaml osc lub

Core graphic types four lut lmidi lui media bt dub lens lug xml yaml osc lub

bulletphysics (3D physics) four lug integration lut lmidi lui media bt dub lens lug xml yaml osc lub

media (video, image) four Native (AVFoundation) Fast, asynchronous Multi-threaded lut lmidi lui media bt dub lens lug xml yaml osc lub

OpenGL 4 lut lmidi lui four media bt Shaders Geometry Etc dub lens lug xml yaml osc lub

Native UI lut lmidi lui four media bt Provides OpenGL context Event loop integration with lens View (window/view) Mouse, keyboard dub lens lug xml yaml osc lub

midi four Midi in/out Virtual ports, real ports Note handling (off event) lut lmidi lui media bt dub lens lug xml yaml osc lub

C++ binding generator lut lmidi lui four media bt Advanced type management GC protection Fast callbacks from C Cast, operators, etc Customizable Uses doxygen dub lens lug xml yaml osc lub

Libraries using dub four lut lmidi lui media bt dub lens lug xml yaml osc lub

OS Support four lut lmidi lui media bt dub lens lug xml yaml osc lub

Windows alpha beta released four lut lmidi lui media bt dub lens lug xml yaml osc lub

Linux alpha beta released four lut lmidi lui media bt dub lens lug xml yaml osc lub

Mac OS X alpha beta released four media = 10.9 lut lmidi lui media bt dub lens lug xml yaml osc lub

Future plans Simple multi-machine, multi-process support (mdns + zmq + dropbox) Parameter support (per effect, per object, etc). Makes code reuse and adaptation easy. Eventually, use a simple web app for this. Exploration needed, ideas welcome!

Immediate plans Finish Linux port, start Windows port, for fun RPi Extract lug from four and optimize data transfers Fix old lubyk libraries mdns (Zeroconf plug&play network) zmq (ZeroMQ messaging library) box2d (2D physics) Parameter handling Workshops!

using lubyk Stable modules: luarocks install Licence: MIT Documentation: doc.lubyk.org Source code: github.com/lubyk Twitter: @lubyk_