Celluloid An interactive media sequencing language.

Slides:



Advertisements
Similar presentations
Debugging Natural Semantics Specifications Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information Science.
Advertisements

Component Oriented Programming 1 Chapter 2 Theory of Components.
INTRODUCTION Chapter 1 1. Java CPSC 1100 University of Tennessee at Chattanooga 2  Difference between Visual Logic & Java  Lots  Visual Logic Flowcharts.
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
MULTIMEDIA DEVELOPMENT 4.3 : AUTHORING TOOLS. At the end of the lesson, students should be able to: 1. Describe different types of authoring tools Learning.
Implementation of an Android Phone Based Video Streamer 2010 IEEE/ACM International Conference on Green Computing and Communications 2010 IEEE/ACM International.
 2005 Pearson Education, Inc. All rights reserved Introduction.
2008/03/25 Unified Modeling Lanauage 1 Introduction to Unified Modeling Language (UML) – Part One Ku-Yaw Chang Assistant Professor.
Quicktime Howell Istance School of Computing De Montfort University.
Software Development B.Sc. (Hons) Multimedia ComputingMultimedia Authoring.
Andreas Bauer, Viorica Botea, Mark Brown, Matt Gray, Daniel Harabor & John Slaney CP 2010, 522—536 Presented by Heath Roehr.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Course Instructor: Aisha Azeem
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
Process-oriented System Automation Executable Process Modeling & Process Automation.
COMP Computer Basics Yi Hong May 13, 2015.
COM 205 Multimedia Applications
Getting Started Example ICS2O curriculum
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Java Programs COMP 102 #3.
Chapter 11-Multimedia Authoring Tools. Overview Introduction to multimedia authoring tools. Types of authoring tools. Cross-platform authoring notes.
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
(C) 2009 J. M. Garrido1 Object Oriented Simulation with Java.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Copyright© Jeffrey Jongko, Ateneo de Manila University Android.
Parser-Driven Games Tool programming © Allan C. Milne Abertay University v
1 Chapter 2 First Java Programs Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
GEOREMINDERS ANDROID APPLICATION BY: ADRIENNE KECK.
Programming in C#. I. Introduction C# (or C-Sharp) is a programming language. C# is used to write software that runs on the.NET Framework. Although C#
Jaeki Song ISQS6337 JAVA Lecture 03 Introduction to Java -The First Java Application-
Introduce to Java. Outline History of Java History of Java Something about Java Something about Java Brief introduction to Java programming Brief introduction.
 JAVA Compilation and Interpretation  JAVA Platform Independence  Building First JAVA Program  Escapes Sequences  Display text with printf  Data.
D. M. Akbar Hussain: Department of Software & Media Technology 1 Compiler is tool: which translate notations from one system to another, usually from source.
 Pearson Education, Inc. All rights reserved Introduction to Java Applications.
What Is Java? According to Sun in a white paper: Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture-neutral, portable,
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
JAVA Programming “When you are willing to make sacrifices for a great cause, you will never be alone.” Instructor: รัฐภูมิ เถื่อนถนอม
Weaving a Debugging Aspect into Domain-Specific Language Grammars SAC ’05 PSC Track Santa Fe, New Mexico USA March 17, 2005 Hui Wu, Jeff Gray, Marjan Mernik,
Migrating Desktop Bartek Palak Bartek Palak Poznan Supercomputing and Networking Center The Graphical Framework.
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Software Testing Mehwish Shafiq. Testing Testing is carried out to validate and verify the piece developed in order to give user a confidence to use reliable.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Lecture1 Instructor: Amal Hussain ALshardy. Introduce students to the basics of writing software programs including variables, types, arrays, control.
Chapter – 8 Software Tools.
Java How to Program, 9/e Presented by: José M. Reyes Álamo © by Pearson Education, Inc. All Rights Reserved.
© Peter Andreae Java Programs COMP 102 # T1 Peter Andreae Computer Science Victoria University of Wellington.
Execution ways of program References: www. en.wikipedia.org/wiki/Integrated_development_environment  You can execute or run a simple java program with.
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
丁建文 國立高雄應用科大資管系副教授 兼任計網中心軟體發展組組長 跨平台行動應用軟體開發技術 : HTML5 & Mobile JavaScript Framework 暨南大學.
Garage Band For MAC. What is it? A digital audio workstation that can record and play back multiple tracks of audio. Is a software application for OS.
Chapter 27 Network Management Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Your Interactive Guide to the Digital World Discovering Computers 2012 Chapter 13 Computer Programs and Programming Languages.
Computer System Structures
Features of Authoring Tools
Introduction to Compiler Construction
John D. McGregor Session 9 Testing Vocabulary
User Interface Design The Golden Rules: Place the user in control.
CHAPTER 8 Multimedia Authoring Tools
John D. McGregor Session 9 Testing Vocabulary
CMPE419 Mobile Application Development
John D. McGregor Session 9 Testing Vocabulary
Resources and Schedule
Chapter 7 –Implementation Issues
Presentation transcript:

Celluloid An interactive media sequencing language

Today Overview of Celluloid Sample Code Syntax and Semantics Translator Architecture Framework Architecture Development Environment Testing Conclusion

Overview Interactive Media sequencing language Designed to allow users to easily construct their own media systems and allow for real time interaction with the programmer to dynamically change programs on the fly allowing programming to be elevated to a performance art Programs are translated into Java SE which can then be compiled into Java bytecode and run on any JVM

Motivation Celluloid was motivated by the growing role interactive media plays in our daily lives We’ve focused on trying to build a language that targets a wide audience and remains simple and intuitive With Celluloid, you can build the technical and artistic developments that will power the future of the media age

Important Properties Reactive programming allows modified primitives to affect later primitives defined with them Celluloid is designed to be very human readable Provides facilities for abstracting away the hardware details of underlying input and output devices to increase portability

Visualizing a Celluloid System Multiple devices are connected and abstracted through the device type. Enables software mixing that was previously not possible.

Type System Primitive Types: number, boolean, string, time. Timelines: Controls the playback of inputs in the order specified in the source program Devices: Encapsulate IO abstractions. Devices are responsible for providing the interface between external media and internal components Constraints: Enforce a set of allowed operationson a device as well as share this definition across devices. Events: Allows for simple message passing between devices and timelines.

Language Properties Compiled statically typed language. Compiled into Java code built on a custom framework. Allows for user defined functions and user defined types. Custom device, constraint, and event types are allowed.

Sample Program timeline audio input audio1 = new AudioFile(“audiofile1.mp3”) input audio2 = new AudioFile(“audiofile2.mp3”) input audio3 = new AudioFile(“audiofile3.mp3”) output main = new AudioOutput(“Audio”) in audio do play play play end in main do play end

Translator Architecture celluloid.g celluloidLexer.g celluloidParser.g celluloid.java.stg source_code.cld target_code.java org.celluloidLang.*

Framework Architecture Java Media Framework Implementation of Timelines Implementation of Devices Implementation of Constraints Announcements and Events Reactive Programming

Java Media Framework (JMF) Designed to manipulate “audio, video and other time-based media” Cross platform support Supports many popular formats ▫ Plugins available to support additional formats ▫ FOBS for JMF

Implementation of Timelines Controls the playback of inputs in the order specified in the source program Timer object keeps track of time and executes the appropriate action at the appropriate time System utilitzes 100 millisecond time-slices HashMap containing when-based events and the corresponding action to execute when the event’s condition(s) is satisfied

Implementation of Devices Two built-in devices for reading audio and video files are provided out-of-box: JMFVideo and JMFAudio Framework provides the ability to implement real- time and static media Examples of real-time media: midi devices, streaming media, instruments

Implementation of Constraints Constraint interfaces ▫ Enforce allowed operations on device classes in the framework Constraint functions ▫ Keeps track of what should be executed and when it should be executed ▫ Anonymous inner class keeps track of what is executed

Sample Constraint Translation in timelineOne do play end... would translate to... ConstraintFunction cf = new ConstraintFunction (inputOne, 0) { public void execute() { input.play(); //where (input == inputOne) } timelineOne.addConstraintFunction(cf);

Reactive Programming Reactive programming involves the propagation of change among assignment expressions. Example: ▫ A=4; ▫ B=9; ▫ C = A + B ▫ Print C //displays 13 ▫ A=10 ▫ Print C //displays 19

Announcements and Events Announcements and events allow for simple message passing between devices and timelines. Implemented as a global event broker (i.e. event listener) available to relevant types in the framework Example: when Audio5 audioGain > 7 do play Video4 end

Development Environment IDE Devolopment ▫ IntelliJ ▫ Eclipse ▫ ANTLRWorks Unit Testing JUnit Repository ▫ Git ▫ GitHub

Testing Goal: Find faults and determine whether those faults are translation faults or target framework faults. Black Box White Box Unit Tests ▫ Full unit test suite for both the parser and the framework Integration Tests ▫ Testing hand of off parser to the framework

Conclusion What we learned: ▫ Learned tools for developing language ▫ Implement language Worked well: ▫ Repository, issue tracking, Google docs What to do different: Start earlier Future development ▫ REPL- Read eval print loop

Questions?