0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman.

Slides:



Advertisements
Similar presentations
Functional Image Synthesis. Pan An image synthesis “language” Images are functions Continuous and infinite Embedded in a functional host language Reusable.
Advertisements

8. Code Generation. Generate executable code for a target machine that is a faithful representation of the semantics of the source code Depends not only.
Department of Computer Science and Engineering University of Washington Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gun Sirer, Marc E. Fiuczynski,
Programming Basic Concepts © Juhani Välimäki 2003.
MotoHawk Training Model-Based Design of Embedded Systems.
The Path to Multi-core Tools Paul Petersen. Multi-coreToolsThePathTo 2 Outline Motivation Where are we now What is easy to do next What is missing.
CS 345 Computer System Overview
Distributed, parallel web service orchestration using XSLT Peter Kelly Paul Coddington Andrew Wendelborn.
Fine-Grain Parallelism MQPs for Hugh C. Lauer MQPs for Fine-Grain Parallelism1.
ChucK => A Concurrent, On-the-fly Audio Programming Language Ge Wang *Perry R. Cook Department of Computer Science (*Also Music) Princeton University ICMC.
CS533 Concepts of Operating Systems Class 20 Summary.
Representing programs Goals. Representing programs Primary goals –analysis is easy and effective just a few cases to handle directly link related things.
Behavioral Design Outline –Design Specification –Behavioral Design –Behavioral Specification –Hardware Description Languages –Behavioral Simulation –Behavioral.
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
Chapter 16 Programming and Languages: Telling the Computer What to Do.
HAS. Patterns The use of patterns is essentially the reuse of well established good ideas. A pattern is a named well understood good solution to a common.
February 21, 2008 Center for Hybrid and Embedded Software Systems Mapping A Timed Functional Specification to a Precision.
Describing Syntax and Semantics
End-to-End Design of Embedded Real-Time Systems Kang G. Shin Real-Time Computing Laboratory EECS Department The University of Michigan Ann Arbor, MI
–Streamline / organize Improve readability of code Decrease code volume/line count Simplify mechanisms Improve maintainability & clarity Decrease development.
Computer Software.
McGill University Proposal Exam School of Computer Science Ph.D. Candidate in the Modelling, Simulation and Design Lab Eugene Syriani.
Making Database Applications Perform Using Program Analysis Alvin Cheung Samuel Madden Armando Solar-Lezama MIT Owen Arden Andrew C. Myers Cornell.
Precision Going back to constant prop, in what cases would we lose precision?
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Introduction: Hello, World Below slide 1www.idc.ac.il/tecs Introduction:
February Semantion Privately owned, founded in 2000 First commercial implementation of OASIS ebXML Registry and Repository.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
University of Kansas Electrical Engineering Computer Science Jerry James and Douglas Niehaus Information and Telecommunication Technology Center Electrical.
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
NReduce: A Distributed Virtual Machine for Parallel Graph Reduction Peter Kelly Paul Coddington Andrew Wendelborn Distributed and High Performance Computing.
Introduction and Overview Questions answered in this lecture: What is an operating system? How have operating systems evolved? Why study operating systems?
Multithreading in Java Project of COCS 513 By Wei Li December, 2000.
Harvestworks Part 3 : Audio analysis & machine learning Rebecca Fiebrink Princeton University 1.
Python – Part 1 Python Programming Language 1. What is Python? High-level language Interpreted – easy to test and use interactively Object-oriented Open-source.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
 2004 Deitel & Associates, Inc. All rights reserved. 1 Chapter 4 – Thread Concepts Outline 4.1 Introduction 4.2Definition of Thread 4.3Motivation for.
About Me Microsoft MVP Intel Blogger TechEd Israel, TechEd Europe Expert C++ Book
Research Topics CSC Parallel Computing & Compilers CSC 3990.
Module 4 Part 2 Introduction To Software Development : Programming & Languages Introduction To Software Development : Programming & Languages.
Programming language. Definition Programming language is a formal language designed to communicate instructions to a computer. Programming languages can.
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Fortress John Burgess and Richard Chang CS691W University of Massachusetts Amherst.
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
Theory of Programming Languages Introduction. What is a Programming Language? John von Neumann (1940’s) –Stored program concept –CPU actions determined.
DrJava A lightweight pedagogic environment for Java Eric Allen, Robert Cartwright, and Brian Stoler Rice University
Overview of Operating Systems Introduction to Operating Systems: Module 0.
Chapter 1 Computers, Compilers, & Unix. Overview u Computer hardware u Unix u Computer Languages u Compilers.
ISE-575 Presentation 1 Designing Smule’s iPhone Ocarina By Ge Wang Huihui Cheng 3/20/2011.
 Programming - the process of creating computer programs.
Programming Languages
Lecture 7: Overview Microprocessors / microcontrollers.
Cooperative Task Management without Manual Stack management Hanyun Tao EECS 582 – W161.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
Harvestworks Part 1: ChucK basics Rebecca Fiebrink Princeton University 1.
Michael J. Voss and Rudolf Eigenmann PPoPP, ‘01 (Presented by Kanad Sinha)
JAVA TRAINING IN NOIDA. JAVA Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented and specifically.
Chapter 6 Testing and running a solution. Errors X Three types Syntax Logic Run-time.
Software Engineering Algorithms, Compilers, & Lifecycle.
Debuggers. Errors in Computer Code Errors in computer programs are commonly known as bugs. Three types of errors in computer programs –Syntax errors –Runtime.
CSCE 343 – Programming Language Concepts Welcome!.
1.1 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 1: Introduction What Operating Systems Do √ Computer-System Organization.
CompSci 143A1 1. Introduction 1.1 The Role of Operating Systems - Bridge the “Semantic Gap” between Hardware and Application - Three Views of Operating.
A Single Intermediate Language That Supports Multiple Implemtntation of Exceptions Delvin Defoe Washington University in Saint Louis Department of Computer.
Computer System Structures
Chapter 4 – Thread Concepts
SOFTWARE DESIGN AND ARCHITECTURE
Chapter 4 – Thread Concepts
Chapter 1 Reasons to study concepts of PLs Programming Domains
(Computer fundamental Lab)
Lecture 8 Programming Paradigm & Languages. Programming Languages The process of telling the computer what to do Also known as coding.
Dasar-Dasar Pemrograman 2: Java Basics
Presentation transcript:

0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

1

2 Motivation programming the passage of time –specifying / controlling –reasoning about time in code –flexible granularity concurrency –parallel –easy to program –precise + granular gain insight about audio programs make audio programming more accessible further enable rapid experimentation

3 Code == Musical instrument

4

5 ChucK Facts text-based, general-purpose programming tailored for real-time audio synthesis and analysis open-source, cross-platform designed from the “ground-up” high-level syntax, low-level control

6 Chistory-1

7 Chistory-2

8 Chistory-3

9 Flexibility, readability trumps performance

10 Core Language Features

11 =>

12 Controlling Time // infinite time loop while( true ) { // set the next sample 1.0 => i.next; // advance time 100::ms +=> now; } Impulse i => dac; demo

13 Advancing Time time stands still until you “advance” it two semantics for advancing time –chuck to now 1::second +=> now; –wait on event event => now; you are responsible for keeping up with time time == sound

14 Concurrency implemented using “shreds” –resemble non-preemptive threads automatically synchronized by time! can work at low and high level

15 “Strongly-timed” what it means: –programs have precise control over their own timing –sample-synchronous control may be asserted at any time for any unit generator transfer primary control over time… –from implicit scheduling to the language –program flow == time flow staying “in the language” –express more from within the language provide natural modularity for on-the-fly programs

16 ChucK Virtual Machine

17 ChucK Virtual Machine Code (“foo.ck”) On-the-fly compiler Process shred Shreduler ChucK Virtual Machine Audio Engine I/O Manager Execution Unit Code (“foo.ck”, “bar.ck”)

18 On-the-fly Programming (running with sonic scissors)

19 (n.) the act of modifying the logic and structure of a program during runtime, for the purpose of rapid experimentation, and exerting expressive control. (also live coding) on-the-fly programming:

20 The League of Automatic Composers (1974)

21 demo

22 The Audicle

23 Hmm-1 Editor Compiler VM Debugger Run-time Develop

24 Hmm-2 Editor Compiler VM Debugger Develop Run-time

25 demo

26 Language Design Solutions make time itself computable –time and duration native types –allow a program to be “self-aware” in time –allow code to schedule itself synchronize concurrency by time or by events –automatically (by time) –manually (using events, also sample-synchronous) hide the mundane, expose true control. do it on-the-fly!

27

28 =^