Impromptu (środowisko programistyczne)
Paradygmat | Funkcjonalny , wieloparadygmatyczny |
---|---|
Zaprojektowany przez | Andrzej Sorensen |
Po raz pierwszy pojawiły się | 2005 |
Wersja stabilna | 2.5 |
Dyscyplina pisania | Dynamiczne i statyczne |
system operacyjny | Mac OS X |
Strona internetowa | |
Wpływem | |
Pod wpływem | |
extempore |
Impromptu to środowisko programistyczne Mac OS X do kodowania na żywo . Impromptu jest zbudowany wokół Scheme , który jest członkiem rodziny języków Lisp . Kod źródłowy jego rdzenia został otwarty jako projekt Extempore .
Opis
Środowisko pozwala na wprowadzanie zmian w programie w czasie jego wykonywania , dzięki czemu zmienne i funkcje mogą być przedefiniowane, a zmiany zaczynają obowiązywać natychmiast. Programista może również tworzyć i planować kod do przyszłego wykonania, a także zdarzenia związane z danymi, takie jak notatki i obiekty graficzne. Po zaplanowaniu zdarzenia wykonywanie jest kontynuowane. Zapętlanie jest wykonywane przy użyciu idiomu zwanego „rekursją czasową”, który działa poprzez asynchroniczne planowanie przez funkcję przyszłego wywołania dla siebie jako ostatecznej akcji.
Biblioteka umożliwia komunikację z Audio Units do syntezy audio oraz z warstwami graficznymi takimi jak QuickTime , Quartz , Core Image , OpenGL do komponowania wideo . Kod napisany w Objective-C można wywołać z edytora, a także frameworki Objective-C mogą wykonywać wywołania interpretera schematu.
Interpreter Scheme firmy Impromptu został początkowo zbudowany na podstawie linii bazowej TinyScheme 1.35, ale od tego czasu został znacznie zmodyfikowany, aby lepiej pasował do kontekstu kodowania na żywo. Dodano moduł wyrzucania elementów bezużytecznych w czasie rzeczywistym oraz integrację z Objective-C . Z systemem zintegrowano również nowy język o typie statycznym, zwany Extempore Language . Ten język jest syntaktycznie podobny do schematu, ale semantycznie bliższy C i jest przeznaczony do syntezy dźwięku w czasie rzeczywistym i innych zadań wymagających dużej mocy obliczeniowej. Zapewnia wnioskowanie o typie i jest kompilowany język maszynowy przez LLVM .
Przykładowa wydajność
A Study in Keith to występ kodowania na żywo w Impromptu autorstwa Andrew Sorensena. Pierwsze dwie minuty (1:56) są ciche, podczas gdy wykonawca pisze program, który wytworzy wprowadzenie utworu. Od tego momentu modyfikuje kod w locie, aby ewoluować kompozycję.
Doraźny
Rdzeń Impromptu został wydany jako Extempore na licencji BSD. Działa zarówno pod Linuksem , jak i Mac OS X. Zawiera interpreter Scheme, kompilator języka Extempore i harmonogram. Nie ma powiązań z Apple , ale środowisko może współpracować z bibliotekami dynamicznymi.
Zobacz też
- dźwięk
- Porównanie środowisk syntezy dźwięku
- Superzderzak
- Przetwarzanie (język programowania)
- OpenFrameworks
- Cmokanie
- Lista oprogramowania muzycznego
- Maks. (oprogramowanie)
- Czyste dane
Artykuły akademickie
- Sorensen, A (2010) „ Rozproszona pamięć do występów w kodowaniu na żywo w sieci ” Międzynarodowa konferencja muzyki komputerowej 2010, Nowy Jork
- Sorensen, A & Brown, A (2008) „ A Computational Model For The Generation Of Orchestral Music In The Germanic Symphonic Tradition: A progress report ” referat przedstawiony na Australasian Computer Music Conference 2008, Sydney
- Sorensen, A & Brown, A (2007) artykuł „ aa-cell in Practice: An Approach to Musical Live Coding ” przedstawiony na Międzynarodowej Konferencji Muzyki Komputerowej 2007 w Kopenhadze
- Sorensen, A. (2005) „ Impromptu: interaktywne środowisko programistyczne do kompozycji i wykonania ”, artykuł przedstawiony na Australasian Computer Music Conference 2005, Brisbane: ACMA, s. 149–153. (Uwaga: omawiana improwizowana wersja jest przestarzała)
- Sorensen, A. „ ICR – Impromptu Compiler Runtime ”
- Thor Magnusson, „ Wyznania kodera na żywo ”, Proceedings of International Computer Music Conference, 2011.
Innych źródeł
- Peter Kirn, „ Myśl i wydajność, kodowanie muzyki na żywo, wyjaśnione każdemu - naprawdę ”, Create Digital Music, 2011
- Mitchell Whitelaw, „ Od podstaw – rozmowa z Andrew Sorensenem ”, 2007