Sonic π ︰ 即時編程《一》

……黑傑克終於發現了咔嗎的『密室』,在多次的探訪後,找到一道『暗門』,不知通往何鄉何處?心中掂量著該退?最終發了一則『簡訊』,自此消逝於人世間……

1H ㄍㄞˋ 5W ㄉㄨㄟ一˙

1H 解?5W 追?

。黑傑克的言語駁雜,這則簡訊又太短,實在不容易『定論』,就妄說一通吧!『1H 解』當是說他已經了解了『Know How』;順著說『5W 追』自該是『Who?『Where?『When?『What?『Why?由於『誰地時事』大體已解,那可以『』的也只剩下『◎』──  Why 為什麼 ── 了。此處用◎是有原因的,英文的 Why 又說成 For What,這就是『為什麼』的翻譯由來因為見到黑傑克用了『追問』之追,頗感『學問之道』的不容易,故此特用◎,彰顯他的 Why not ── 追追追 ──精神!!

就讓我們開始『自己的旅程』吧!建造咔嗎衛星的人或許憂慮樹莓派的『運作效能』不夠,『即時』 real time 音樂,是需要強力的 CPU 心臟,所以用

ssh -XY ccrma@【咔嗎衛星 IP 地址】

,將視窗的繪製連上它 ── -XY 安全的轉送 forward X 視窗 ──的個人電腦來作,這使它反而更像個『雲端咔嗎』了。

─── 《黑傑克的咔嗎!!明暗之交

 

什麼是『即時編程』 Live Coding 呢?

About

TOPLAP is an organisation founded in 2004, to explore and promote live coding.

Live coding is a new direction in electronic music and video, and is getting somewhere interesting. Live coders expose and rewire the innards of software while it generates improvised music and/or visuals. All code manipulation is projected for your pleasure. Live coding works across musical genres, and has been seen in concert halls, late night jazz bars, as well as algoraves. There is also a strong movement of video-based live coders, writing code to make visuals, and many environments can do both sound and video, creating synaesthetic experiences.

Live coding is inclusive and accessible to all. Many live coding environments can be downloaded and used for free, with documentation and examples to get you started and friendly on-line communities to help when you get problems. Popular live coding software includes ChucK,  Cyrilextemporefluxusimpromptu, overtone and supercollider. Environments designed for fast exploration of musical pattern include ixi lang and TidalCycles. Sonic Pi is designed for teaching both music and computer science in classrooms, as well as performing in algoraves. There are also impressively capable web-based live coding environments like gibber and livecodelab. Live patching is live coding with graph-based languages such as the venerable pure-data. It’s also possible to livecode with a gamepad, e.g. with the robot oriented Al-Jazari.

There is a more complete and up-to-date directory of live coding environments and other things over here: All Things Livecoding.

Historical information about TOPLAP and live coding is available on our wiki and the latest developments in live coding can be seen on our blog. For an up-to-date list of  links to things live coding see here.

Video examples

The Show Us Your Screens documentary by Louis McCallum.

 

莫忘『純數據』 Pure Data 實為即時先驅也。

開出今日滿園『即興』『影』『音』之花朵!

Live coding

Live coding[1] (sometimes referred to as ‘on-the-fly programming’,[2] ‘just in time programming’ and ‘conversational programming’) makes programming an integral part of the running program.[3]

It is most prominent as a performing arts form and a creativity technique centred upon the writing of source code and the use of interactive programming in an improvised way. Live coding is often used to create sound and image based digital media, as well as light systems, improvised dance and poetry,[4][5] though is particularly prevalent in computer music usually as improvisation, although it could be combined with algorithmic composition.[6] Typically, the process of writing source code is made visible by projecting the computer screen in the audience space, with ways of visualising the code an area of active research.[7] Live coding techniques are also employed outside of performance, such as in producing sound for film[8] or audiovisual work for interactive art installations.[9] Also, the interconnection between computers makes possible to realize this practice networked in group.

The figure of live coder is who performs the act of live coding, usually “artists who want to learn to code, and coders who want to express themselves”[10] or in terms of Wang & Cook the “programmer/performer/composer”.[11]

Live coding is also an increasingly popular technique in programming-related lectures and conference presentations, and has been described as a “best practice” for computer science lectures by Mark Guzdial.[12]

Live coding techniques

A range of techniques have been developed and appropriated for the purposes of live coding.

Representation and manipulation of time

The specific affordances of time-based media and live interaction with code has led to a number of novel developments and uses in programming language design. Through mutual embedding of imperative and declarative subsystems, the programming language SuperCollider[13] permitted to build a library that allows incomplete and provisional specifications which can be rewritten at runtime.[14]

The ChucK language introduced an approach to “strongly timed” programming in 2002, embedding precision timing into control flow through a concise syntax.

“Temporal recursion” was a term initially coined in relation to the Impromptu programming environment. Technical elements within a programming environment continue to locate compressors and recursion solutions, but timing had been a major issue. While the general form of a temporal recursion, being any asynchronous function recursion through time, is available to any event driven system, Impromptu has placed a special emphasis on this particular design pattern,[15] making it the centre piece of the concurrency architecture on that platform. Temporal recursion had repeatedly been used in SuperCollider and has since been implemented in the Fluxus environment.

Another functional approach to the representation of time is shown in the Tidal pattern DSL,[16] which represents patterns as combinators operating over functions of time, similar to techniques in functional reactive programming.[17]

Multi-user programming and shared memory

Multi-user programming has developed in the context of group music-making, through the long development of the Republic system developed and employed by members of the network band PowerBooks Unplugged.[18] Republic is built into the SuperCollider language, and allows participants to collaboratively write live code that is distributed across the network of computers. There are similar efforts in other languages, such as the distributed tuple space used in the Impromptu language.[19] Additionally Overtone, Impromptu and Extempore support multi-user sessions, in which any number of programmers can intervene across the network in a given runtime process.[20] More recently systems as Extramuros are used to live coding in group through the technique of shared buffers of code written in SuperCollider and TidalCycles languages. The practice of writing code in group can be done in the same room through a local network or from remote places accessing a common server. Terms like laptop band, laptop orchestra, collaborative live coding or collective live coding are used to frame a networked live coding practice both in a local or remote way.

 

現在樹莓派裡的『超級對撞機』環境或已成熟︰

sudo apt-get install supercollider-ide supercollider-language supercollider

【scide】

 

因沒有用過,不好亂講呦☻

還請讀者自己嘗試哩☺

/howto_co34pt_liveCode

A repository of readmes, techniques, notes and other materials about how i live code in SuperCollider. A (sorta) companion repository to co34pt_livecode

howto_co34pt_liveCode


About

howto_co34pt_liveCode is an attempt to extensively document my live-coding music practice. I live code as co¥ᄀpt, mostly making dance music (including for Algoraves), but I have also employed live coding as part of some other projects. This repo contains a number of articles and essays listed in this contents page which cover various aspects of my live coding practice from the ground up, and also contains a number of files to support your use of SuperCollider in the way that I use it. More info about this in ‘What This Repo Is’

This resource is hosted both on GitHub and on GitHub Pages (you will likely already be on one of these). I’d recommend browsing articles on GitHub pages, and if you want to use any of the examples, see any SuperCollider code and use my setup I’d recommend downloading the repo, this will be covered in ‘How To Use This Repo’. There is also e-book versions of the ‘first edition’ of this repo in the Documents folder in epub, pdf and pages format. Huge thanks to @shamansir for putting these together.

This repository is currently mostly finished, but does need proofreading, which I will be doing soon. It will be continually updated as my live coding practice develops.

I’m always keen to know the ways in which this has been helpful to anyone, or any comments you have at all. Drop me a line onTwitter, GitHub or via [Email](mailto:theseancotterill atsign live period com)