Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Survey of programming languages for sound and music

Survey of programming languages for sound and music

2021/03/19 SIGPX #8

24b82e535177c6be997ca4ec43d8df6b?s=128

Tomoya Matsuura

March 19, 2021
Tweet

Transcript

  1. 2021-03-19 SIGPX #8 Tomoya Matsuura/দӜ஌໵ 
 https://matsuuratomoya.com me@matsuuratomoya.com ԻͱԻָͷͨΊͷ
 ϓϩάϥϛϯάݴޠͷ


    αʔϕΠ 1
  2. • ਆಸ઒ݝכϲ࡚ࢢग़਎(1994) • ਆಸ઒૯߹ߴߍଔ(2013) • ౦ژܳज़େֶԻָ؀ڥ૑଄Պଔ(2017) • ۝भେֶେֶӃܳज़޻ֶ෎ 
 म࢜/ത࢜ޙظ՝ఔ(2017,2019~)

    • ࿇পࣥଠϑϧϑΟϧ(2018~) • YCAM(Intern,2015),teamlab(2015~2017),
 School for Poetic Computation(2018) ࣗݾ঺հ 2 photo: Takehiro Goto
  3. 3 minimal musical medium / a programming language as an

    Infrastructure for sound & music. https://github.com/mimium-org/mimium 3
  4. • Իָϓϩάϥϛϯάݴޠͷ֓೦త੔ཧɺൺֱΛͨ͠ࢿྉ͕গͳ͍ • ಛʹ࣮૷ऀ͔Βݟͨڞ௨ͷޠኮɺඞཁͳ஌͕ࣝڞ༗͞Ε͓ͯΒ ͣɺԻָͷͨΊͷݴޠΛ࡞Δϋʔυϧ͕ߴ͍ɺධՁ͢Δͷ͕೉͠ ͍ • ۩ମతࣄྫͷࡉ͔͍঺հ͸աڈͷαʔϕΠʹͳΔ΂͘೚ͤͯཧ࿦ త੔ཧΛ͍ͨ͠ •

    ࠓճ͸ಛʹϦΞϧλΠϜ৴߸ॲཧͰ͖ΔݴޠΛத৺ʹ࿩͠·͢ ൃදࣗମͷ໨త 4
  5. • ԻָϓϩάϥϛϯάݴޠΛ࡞Δ໨త • ԻָϓϩάϥϛϯάݴޠͷաڈͷαʔϕΠ • ୅දతͳ؀ڥͷ঺հ • 2000೥Ҏޙͷݴޠઃܭʹ͓͚Δओཁͳ՝୊ • ݴޠͷ࣮૷ύλʔϯͱΞʔΩςΫνϟ

    • ݴޠΛಛ௃͚ͮΔཁૉͱಛ௃ͷ෼ྨ • ·ͱΊɺະདྷͷԻָݴޠͷ͋Γํ ߏ੒ 5
  6. ԻָʹίϯϐϡʔλʔΛ༻͍ΔϞνϕʔγϣϯ ԻָϓϩάϥϛϯάݴޠΛ࡞ΔϞνϕʔγϣϯ • ϋʔυ΢ΣΞૢ࡞ʢϝϞϦɺεϨουɺεέδϡʔϦϯάʣ
 ͷӅṭʢԻָՈ͸ϝϞϦͷ͜ͱΛؾʹͨ͘͠ͳ͍ʣ • ԋ૗/࡞ۂΠϯλʔϑΣʔεͱͯ͠ͷϓϩάϥϛϯάʢLive Codingʣ • ϝσΟ΢Ϝͱͯ͠ͷιʔείʔυʢ#SC140ɺMML΍ςΩετԻָαΫϥͳͲʣ

    • ϓϩάϥϛϯάڭҭͷπʔϧͱͯ͠(EarSketch,Sonic Pi) Իָϓϩάϥϛϯάݴޠͷ໨త 6 • ίϯϐϡʔλʔͰͳ͚Ε͹ෆՄೳͳදݱɺ৽͍͠දݱʢmicrosoundͳͲʣ • ݱ࣮ͷָثɺ؀ڥͷγϛϡϨʔτ(VSTɺ෺ཧϞσϦϯά߹੒)
  7. • "Languages for Computer Music”,Frontiers in Digital Humanities(2018), Roger B.

    Dannenberg • ԻָݴޠΛಛ௃͚ͮΔ6ཁૉͷఏҊɺԻָݴޠҰൠʹڞ௨͢Δ՝୊ͷ੔ཧ • “Computer Music Languages and Systems: The Synergy Between Technology and Creativity”,pp 1-49 in Handbook of Digital Games and Entertainment Technologies(2016),Hiroki Nishino and Ryohei Nakatsu • “The Development of Computer Music Programming Systems”, Journal of New Music research,42(1), pp97-100(2013) Victor Lazzrini • ↑2ͭ͸ओʹྺ࢙త؍఺ͷ੔ཧ • “Idiomatic Patterns and Aesthetic Influence in Computer Music Languages”, Organized Sound,25(1),pp53-63(2020),Andrew Mcpherson and Koray Tahlroǧlu • Իָϓϩάϥϛϯά؀ڥ͕ͲͷΑ͏ʹͦͷݴޠݻ༗ͷදݱΛੜΈग़͢ͷ͔ΛΠϯλϏϡʔ͔Β ԻָϓϩάϥϛϯάݴޠͷαʔϕΠ 7
  8. ԻָϓϩάϥϛϯάݴޠҰཡ 8 l-BOHVBHFTGPS$PNQVUFS.VTJD 3PHFS#%BOOFOCFSHz 'SPOUJFSTJO%JHJUBM)VNBOJUJFT /PW Ճච͸দӜ

  9. ԻָϓϩάϥϛϯάݴޠҰཡ 9 l-BOHVBHFTGPS$PNQVUFS.VTJD 3PHFS#%BOOFOCFSHz 'SPOUJFSTJO%JHJUBM)VNBOJUJFT /PW Ճච͸দӜ Overtone Sam Aaron

    (2011?) Sonic PI Sam Aaron (2012) TidalCycles Alex Mclean (2006~) Chronic Eli Blandt (2002) Kronos Versa Norilo (2015) LC Hiroki Nishino (2013) ixi lang Thor Magnusson (2012) Gibber Charlie Roberts (2012) FoxDot Jean-François Parent (2015) Extempore Andrew Sorensen (2012) impromptu Andrew Sorensen (2010) Common Lisp Music Bill Schottstaedt (1989) SuperCollider- Clients SOUL ROLI (2018) Vult Leonardo Laguna Ruiz (2016) mimium Tomoya Matsuura (2020) Gwion Jérémie Astor (2017) ଞɺmidiϨϕϧΛϝΠϯͷର৅ʹͨ͠؀ڥʹAlda(2012)΍Takt(2014)ɺORCΛ(2017)ͳͲ
  10. 10 ΦʔσΟΦϓϩάϥϛϯάݴޠAdvent Calender 2020 by aike͞Μ ͋ΒΏΔݴޠͰαΠϯ೾+σΟϨΠΛ࡞ͬͯΈΔ https://qiita.com/advent-calendar/2020/audiolang

  11. ྺུ࢙֓ 11 50s~80s DSPϋʔυ΢ΣΞʹର͢Δ໋ྩ 90s~ All CPUɺ൚༻OS্ͰͷϦΞϧλΠϜॲཧ(Max,Pd,SC,CSound) 00s~ ৴߸ॲཧͷJITίϯύΠϧ/τϥϯεύΠϧ(Faust,Soul,Vult) ಛఆͷදݱʹಛԽͨ͠DSL

    in DSL(Sonic Pi,TidalCycles) Πϕϯτॲཧͷਖ਼֬ͳεέδϡʔϦϯά(ChucK,Extempore)
  12. Pd,SuperColliderҎޙͷओཁ՝୊ 12 2.௿ϨΠϠͷ֦ுੑ ৴߸ॲཧͷϓϦϛςΟϒ(UGen)Λ૿΍ͨ͢ΊʹC΍C++Λॻ͔ͳ͖Ό͍͚ͳ͍ ৴߸ॲཧͱΠϕϯτॲཧͰผͷܕͷಉ͡ॲཧ(+ͱ+~ͱ͔)Λ࢖͍෼͚ͳ͖Ό͍͚ͳ͍ 3.ߴϨΠϠͷ֦ுੑ
 ݴޠͦͷ΋ͷͷ֦ுੑɺࣗݾ൓өੑʹݶ౓͕͋Δ ಛఆͷԻָྖҬʹ͞ΒʹಛԽͨ͠ݴޠ/ϥΠϒϥϦΛ࡞Γ͍ͨ 1.ਖ਼֬ͳΠϕϯτεέδϡʔϦϯά
 ϓϦΤϯϓςΟϒϚϧνλεΫʢϢʔβϓϩάϥϜ͕OSͷλεΫεέδϡʔϦϯάʹ

    ؔ༩Ͱ͖ͳ͍ʣ؀ڥԼͰͲ͏΍ͬͯαϯϓϧϨϕϧͰਖ਼֬ͳΠϕϯτॲཧΛ͢Δ͔ʁ
  13. 1.ΠϕϯτεέδϡʔϦϯά໰୊ 13 ΦʔσΟΦόοϑΝʢྫ:256αϯϓϧʣຖʹΠϕϯτΩϡʔΛফԽ PuredataɺSuperColliderͳͲ ಉظ(Synchronous) ࿦ཧ࣌ؒʢLogical TimeʣͰॱংΛอূ ChucK,Gwion,mimiumͳͲ w ࣮૷͸ΘΓͱ؆୯ɺಈ࡞ܰྔ

    w .*%*΍6%1ͳͲ*0བྷΈͷ͕࣌ؒਖ਼֬Ͱ͸ͳ͍ w $PODVSSFOUͳॲཧʹ࠷దԽ͠Α͏ͱࢥ͏ͱେม w *0ؔ࿈΋ൺֱతਖ਼֬ʹॲཧͰ͖Δ w εϨου҆શͳ࣮૷ͭΒ͍ w ཁݸผ04ຖͷରԠɺ૊ΈࠐΈͱ͔ʹ͸Ҡ২ͮ͠Β͍ ඇಉظ(Asynchronous) εϨου෼͚ͯϦΞϧλΠϜεέδϡʔϧ Max※,ExtemporeͳͲ ※ਖ਼֬ʹ͸Max͸ΦʔσΟΦͱεϨουΛ෼͚͍ͯΔ͕ΦʔσΟΦͱผϨʔτ(ඪ४ 20msຖ)ͰΠϕϯτΩϡʔΛpoll͍ͯ͠Δɻ
 Extempore͸λεΫ଴ͪ࣌ؒΛܭࢉͯ͠λεΫ͕͋Δ࣌ͷΈىಈ ϋΠϒϦου Ϣʔβʔ͕໌ࣔͯ͠ಉظ/ඇಉظΛ੾Γସ͑ LC(Nishino2013)ͳͲ ྫɿͽͬͨΓαϯϓϧຖʹม਺Λมߋ͍ͨ͠ʜ ͚Ͳຖαϯϓϧॲཧ͢Δͷ͸ա৒ ྫɿͽͬͨΓαϯϓϧຖʹม਺Λมߋ͍ͨ͠ʜ ͚Ͳຖαϯϓϧॲཧ͢Δͷ͸ա৒
  14. • Pd΍SCͰ͸༻ҙ͞ΕͨجຊϞδϡʔϧɿUnit GeneratorʢUGenɺΦγϨʔλ΍ ϑΟϧλͷ͜ͱʣΛ૊Έ߹ΘͤΔ͜ͱͰ৴߸ॲཧΛهड़Ͱ͖Δ • ৽͍͠جຊϞδϡʔϧΛ࡞Γͨ͘ͳͬͨΒͲ͏͢Δʁ
 →C or C++ͰϓϥάΠϯ࡞ͬͯͶʢͭΒ͍ʣ •

    JITίϯύΠϧ͢Ε͹ύϑΥʔϚϯεΛଛͳΘͣ௚઀৴߸ॲཧΛهड़Ͱ͖ΔͷͰ͸ʁ • DSPܥݴޠɿFaust,Soul,Vult,Kronos • JITͷόοΫΤϯυ͸͍͍ͩͨLLVMɺC΍C++ίʔυͱͯ͠τϥϯεύΠϧͰ͖Δ ΋ͷ΋ଟ͍ɻWebAssemblyհͯ͠ϒϥ΢βͰಈ࡞͢Δ΋ͷ΋ • ໰୊ɿDSPݴޠࣗମ͸εέδϡʔϦϯάͷSemanticsΛ࣋ͨͳ͍ͷ͕΄ͱΜͲ 2.௿ϨΠϠͷ֦ுੑ 14
  15. • ϦζϜύλʔϯ/Ի֊/࿨Իͱ͍ͬͨߴ࣍ͷύϥϝʔλΛϓϩάϥϜ͢Δʹ ͸ݴޠͷந৅Խೳྗʢಛʹܕ·ΘΓʣ͕଍Γͳ͍ • ྫ͑͹PdͩͱϓϦϛςΟϒͱϓϦϛςΟϒ͔Β੒ΔϦετ͔͠ѻ͑ͳ͍ • ϙϐϡϥʔͳղܾࡦɿSuperColliderΛωοτϫʔΫίϚϯυͰૢ࡞Ͱ͖Δ γϯηαΠβʔͱͯ͠࢖͍ɺ৽͍͠DSLΛ࡞Δ • SC͸v3ΑΓૄ݁߹ͳαʔόʔɾΫϥΠΞϯτϞσϧΛ࠾༻ɺ৽͍͠γϯηͷఆٛ(SynthDef)Ҏ֎

    ͸΄΅ͳΜͰ΋OSC(UDP্ͷ؆қϓϩτίϧ)Ͱૢ࡞Մೳ • Sonic Pi(Ruby+Erlang)ɺixi(Ruby)ɺFoxDot(Python)ɺTidalCycles(Haskell)ɺOvertone(Clojure)ͳͲ • ໰୊ɿωοτϫʔΫίϚϯυͷਖ਼֬ͳεέδϡʔϦϯάΛ…(σδϟϰ) 3.ߴϨΠϠͷ֦ுੑ 15 DSL on DSLͷϗετͷબ୒ࢶ͸࣮࣭SuperColliderҰ୒ͳͷ͕ݱঢ়
  16. • ࣈ۟ղੳ • ݴޠ֦ு • ݴޠಛघԽ • ύΠϓϥΠϯ • ιʔεtoιʔεม׵

    SpinellisʹΑΔDSL࣮૷ͷσβΠϯύλʔϯΑΓൈਮ Ͳ͏΍࣮ͬͯ૷͢Δʁ 16 Diomidis Spinellis. Notable design patterns for domain specific languages. Journal of Systems and Software, 56(1):91–99, February 2001. (doi:10.1016/S0164-1212(00)00089-3) Ұ൪ετϨʔτͳΞϓϩʔνɺࣗ༝౓ߴ͍͕࣮૷େม ԋࢉࢠΦʔόʔϩʔυ΍ϚΫϩͳͲɺࣗ༝౓͸ϗετݴޠ࣍ୈ ϘΠϥʔϓϨʔτͱ૊Έ߹ΘͤͨΓɺҰ෦ͷػೳ͚ͩ࢖͏ Cͷιʔεʹม׵ͨ͠Γ͢Δ͜ͱͰόοΫΤϯυ؆ུԽ SuperColliderʹ৴߸ॲཧ෦෼͸͓೚ͤ
  17. SuperColliderʹΑΔه๏ 17 { var noise = PinkNoise.ar(0.2); noise = Mix.new(Array.fill(10,

    {arg i; Resonz.ar(noise, i * 800 + 200, 0.05)})); noise = (noise * 0.2 + noise * Decay.kr(Dust.kr(0.5),10)); noise = RHPF.ar(noise, LFNoise0.kr(0.5).range(220, 880), rq:0.001); CombL.ar(noise, delaytime:0.5, decaytime:25).dup() * 0.5 }.play; (-> noise = PinkNoise.ar(0.2) noise = Mix Array.fill 10, (i)-> Resonz.ar(noise, i * 800 + 200, 0.05) noise = (noise * 0.2 + noise * Decay.kr(Dust.kr(0.5), 10)) noise = RHPF.ar(noise, LFNoise0.kr(0.5).range(220, 880), rq:0.001) CombL.ar(noise, delaytime:0.5, decaytime:25).dup() * 0.5 ).play() CoffeColliderʹΑΔه๏ CoffeeScriptͷԋࢉࢠΦʔόʔϩʔυ͚ͩͰՄೳͳݶΓه๏Λࣅ͍ͤͯΔ http://mohayonao.github.io/CoffeeCollider/#noise.coffee
  18. • $΍#͸ϗετݴޠͰ͋ΔHaskellʹ͓͚Δதஔԋࢉࢠ(ݴޠ֦ு) • sound΍gainɺeveryͳͲ͸Haskell্ͰϥΠϒϥϦͱͯ͠ఆٛ͞Εͨؔ਺ • “”Ͱғ·Εͨ෦෼͸Haskell্Ͱ͸ͨͩͷจࣈྻ • Parsecͱ͍͏Haskellͷࣈ۟ղੳϥΠϒϥϦͰ಺෦తʹύʔε͍ͯ͠Δ • Ϣʔβʔ͸Haskellͷؔ਺ఆٛ΍ܕએݴͳͲߴ౓ͳจ๏Λ஌Δඞཁ͸ͳ͍

    ʢݴޠಛघԽʣ • TidalCycles͸SuperColliderʹରͯ͠OSCΛૹΓԻΛग़͢(ύΠϓϥΠϯ) HybridͳྫɿTidalCycles 18 d1 $ sound "bd*4" # gain (every 3 (rev) $ "1 0.8 0.5 0.7") ಉ༷ͳྫͱͯ͠͸FoxDot(ϗετݴޠ:Python)ͳͲ
  19. ԻָݴޠͷΞʔΩςΫνϟ 19 ίϯύΠϥ/ ΠϯλϓϦλ ϥϯλΠϜ ιʔείʔυ (ςΩετσʔλ) தؒදݱ UGenάϥϑߏ଄ VM໋ྩྻ

    Ϛγϯίʔυ ϨΠϠʔ ߴ ௿ ϥΠϒϥϦ ҙຯ֦ு • தؒදݱͷཻ౓ʹΑͬͯදݱͷ෯΍ಈతมߋͷ͠΍͕͢͞มΘͬͯ͘Δ 50~80sɿ DSPϋʔυ΢ΣΞ 00s: UGen
  20. ϏδϡΞϧݴޠͷ৔߹ 20 ίϯύΠϥ/ ΠϯλϓϦλ ϥϯλΠϜ ιʔείʔυ (ςΩετ/όΠφϦσʔλ) தؒදݱ UGenάϥϑߏ଄ VM໋ྩྻ

    Ϛγϯίʔυ ϨΠϠʔ ߴ ௿ ϏδϡΞϥΠβ ʢIDEʣ ஌֮/ฤू Մೳͳදݱ ϥΠϒϥϦ ҙຯ֦ு • ͋Δҙຯී௨ͷݴޠ΋UTF-8ͳͲܾ·ͬͨόΠφϦσʔλΛɺςΩετͱ͍͏ਓؒʹೝࣝՄ ೳͳදݱʹม׵͍ͯ͠ΔͷͰ͜ͷਤʹ౰ͯ͸ΊΔ͜ͱ΋Ͱ͖Δ
  21. தؒදݱ͸ͻͱͭͱ͸ݶΒͳ͍ 21 ϥϯλΠϜ ιʔείʔυ (ςΩετ/όΠφϦσʔλ) ϏδϡΞϥΠβ ʢIDEʣ ஌֮/ฤू Մೳͳදݱ ίϯύΠϥ/

    ΠϯλϓϦλ தؒදݱ ϥΠϒϥϦ ίϯύΠϥ/ ΠϯλϓϦλ தؒදݱ ϥΠϒϥϦ ίϯύΠϥ/ ΠϯλϓϦλ தؒදݱ ϥΠϒϥϦ
  22. TidalCyclesͷྫ 22 HaskellΠϯλϓϦλ(GHCI) TidalCycles BP ύʔα ύλʔϯ
 ϥΠϒϥϦ ιʔείʔυ (ςΩετσʔλ)

    ҙຯ֦ு SC ΫϥΠΞϯτ OSC ϝοηʔδ SCSynth Pattern σʔλ • ʢ͍·͍ͪ͏·͘ਤࣔͰ͖ͳ͍ʣ
  23. • Syntax(౷ޠ࿦) • Semantics(ҙຯ࿦) • Runtime • Libraries • Programming

    Environments(IDE) • Community&Resources Dannenbergʢ2018ʣʹΑΔ ԻָݴޠΛಛ௃͚ͮΔཁૉ 23
  24. • ͜͜ͰͷExpressivenessͱ͸“ಡΈ΍͘͢ॻ͖΍͍͢”ɺ
 Generalͱ͸“Մೳͳදݱͷൣғ͕޿͍”ͱ͍͏ҙຯ Expressive vs General 24 E. Brandt, “Temporal

    type constructors for computer music programming,” School of Computer Science, Carnegie Mellon University, 2002. ࣮ࡍʹ͸࣮ߦ࣌ύϑΥʔϚϯε͕ ѱ͘ͳΔͱ͍͏৽ͨͳτϨʔυΦ ϑ͕ൃੜ͍ͯ͠Δ
  25. Իָϓϩάϥϛϯάʹ͓͍ͯଟݴޠΞϓϩʔνΛऔΔͱɺ Ϣʔβ͸൚༻ੑ (FOFSBMJUZ ͱޮ཰ੑ &GpDJFODZ ͷόϥϯεΛऔΓ΍͘͢ͳΔɻ λεΫʹԠͯ͡ϓϩάϥϚ͸ҟͳΔෳࡶ౓ͷΤϯτϦʔϙΠϯτΛબ୒͢Δ͜ͱ ͕ՄೳʹͳΔɻΑΓ௿͘൚༻తͳϨϕϧͰ͸ΑΓෳࡶͳίʔυͷઃܭ͕ඞཁ͕ͩ ෯޿͍݁ՌΛಘΒΕΔɻҰํɺΑΓߴ͍ɺಛघԽɺ۩ମԽ͞ΕͨϨϕϧͰ͸ϓϩ άϥϛϯάʹඞཁͳ࿑ྗͱ͍͏؍఺͔Βϓϩηε͸ΑΓޮ཰తʹͳΔͩΖ͏ɻ

    Lazzarini(2013)ΑΓ Efficient vs General 25
  26. 3ͭͷہॴԽͱ3ͭͷޮ཰ੑ ཁૉ͕༩͑Δಛ௃ͷ෼ྨʢͷҊʣ 26 6ͭΛશ෦৳͹͢ͷ͸ݫ͘͠ɺτϨʔυΦϑ͕͋Δ Expression Generality දݱͷہॴੑ Platform Independency ؀ڥͷہॴੑ

    Dynamic Modification ܧଓత࣮ߦͷہॴੑ Runtime Efficiency ࣮ߦ࣌ͷܭࢉίετ Learning Efficiency Ϣʔβʔͷֶशίετ Development Efficiency ։ൃίετ গͳ͘ͱ΋ɺ“͋ΒΏΔ؀ڥͰ͋ΒΏΔදݱ͕Ͱ͖ɺಈతมߋ΋͠·͘Εͯ௚ײతʹ࢖͍΍͢ ࣮͘ߦ଎౓΋ωΠςΟϒฒΈ”ͷݴޠΛ࡞Ζ͏ͱ͢Δͱ։ൃίετ͕ͱΜͰ΋ͳ͍͜ͱʹͳΔ
  27. 27 Syntax Semantics Runtime Libraries Programming Environment Community Resources Development

    Efficiency Runtime Efficiency Learning Efficiency Expression Generality Dynamic Modification ֤ཁૉͱಛ௃ͷؔ܎ Platform Independency …ຊ౰ʹ͜ΕΒͷཁૉ͚ͩͰݴޠΛධՁͰ͖ΔͷͩΖ͏͔ʁ
  28. Idiomaticity ྔతධՁͰ͖ͳ͍ಛ௃ 28 • ཁ໿ɿݴޠʹ͓͚Δཧ࿦తʹՄೳͳදݱͰ͖Δൣғ͕ಉͩͬͨ͡ ͱͯ͠΋ɺͦΕͧΕͷݴޠ͕༠ൃ͢Δදݱͷ࣭ɿIdiomacticity͸ ҟͳΔ • ݴΘΕͯΈΔͱ͋ͨΓ·͑ l*EJPNBUJD1BUUFSOTBOE"FTUIFUJD*OqVFODFJO$PNQVUFS.VTJD-BOHVBHFTz

    0SHBOJ[FE 4PVOE   QQ  "OESFX.DQIFSTPOBOE,PSBZ5BIMSPǧMV
  29. ϝλΫϦΤʔγϣϯͱͯ͠ͷݴޠઃܭ 29 զʑͷݚڀ݁Ռ͸ʢ༁஫ɿݴޠ͕༩͑ΔʣಛఆͷඒతӨڹͷূ໌Λҙਤͨ͠ ΋ͷͰ͸ͳ͍͠ɺݸʑͷ࣮ફऀͷ૑଄ੑ͕ৗʹୈҰͰ͋Δ͜ͱʹมΘΓ͸ͳ ͍΋ͷͷɺσδλϧָثͷσβΠϯ͸ɺݴޠ࡞੒ऀͱָثσβΠφʔŠ࠷ऴ తʹͦͷݴޠͷϦιʔεʢͦͯͦ͠Εͱͱ΋ʹɺӅ͞ΕͨεΫϦϓτʣΛࣗ ਎ͷ૑଄త໨ඪʹ߹Θͤͯঌש͢ΔऀŠͱͷɺ࣌ؒͱڑ཭Λ௒͑ͨର࿩Ͱ͋ Δͱݟͳ͢͜ͱ͕Ͱ͖ΔɺͱఏҊͰ͖Α͏ɻͦ͏ͯ͠ɺݴޠઃܭ͸Ұछͷϝ λΫϦΤʔγϣϯߦҝͱͳΓɺ࠷ऴతʹ͸Կे೥ʹ΋ΘͨͬͯඒతͳӨڹΛ ༩͑Δ͜ͱʹͳΔɻ

    l*EJPNBUJD1BUUFSOTBOE"FTUIFUJD*OqVFODFJO$PNQVUFS.VTJD-BOHVBHFTz 0SHBOJ[FE 4PVOE   QQ  "OESFX.DQIFSTPOBOE,PSBZ5BIMSPǧMV චऀ༁ɺڧௐ͸චऀ
  30. • 2000೥Ҏޙͷओཁͳ3՝୊ • ࣮૷ํ๏͔ΒݟΔԻָݴޠ • ཉ͍͠จ๏ͷࣗ༝౓ʹΑͬͯݴޠ֦ுͰରԠͨ͠Γߏจղੳͨ͠Γ • தؒදݱͷཻ౓ͱ࣮ߦ࣌ύϑΥʔϚϯεɺಈతมߋͷ͠΍͕͢͞มΘΔ • ԻָݴޠΛಛ௃͚ͮΔ6ཁૉʹରͯ͠ɺ࣮ࡍʹݱΕΔ3ͭͷہॴ

    ੑɺ3ͭͷޮ཰ੑͱ͍͏ࢦඪΛఏҊ ·ͱΊ 30 ௿ϨΠϠͷ֦ு(JIT DSP) ߴϨΠϠͷ֦ு (DSL in DSL) ਖ਼֬ͳεέδϡʔϦϯά
  31. • ԻϓϩάϥϛϯάʹඞཁͳυϝΠϯ஌ࣝͱݴޠॲཧܥʹඞཁͳυ ϝΠϯ஌͕ࣝ྆ํඞཁ͚ͩͲ྆ํϔϏʔ • DSPΛJITॲཧͰ͖ΔΑ͏ʹ͠Α͏ͱࢥ͏ͱ࣮૷ͷ95ˋ͸Իͱ͔ ؔ܎ͳ͘ͳͬͯ͘Δ • ݴޠઃܭ͕Α͘Ͱ͖ͯΔ≠࢖ͬͯ΋Β͍΍͍͢ʢύοέʔδϯ άɺCIɺγϯλοΫεϋΠϥΠτɺυΩϡϝϯςʔγϣϯ…ʣ ࣮૷ऀͱͯ͠ײ͡Δࠔ೉

    31
  32. • ΠϕϯτεέδϡʔϧͱJIT DSP͕1ͭͷݴޠମܥͰ׬݁͢Δݴޠ • ࣗݾ൓өੑΛڧΊͨݴޠ಺DSLΛ࡞Γ΍͍͢ݴޠ • ςΩετɺඇςΩετΛ૊Έ߹Θͤ/૒ํ޲ධՁͰ͖Δݴޠ • ෳ਺ͷݴޠʹ·͕ͨͬͯ࢖͑ΔLanguage Server/IDEج൫

    ະདྷͷԻָϓϩάϥϛϯά 32 Language Oriented Programming(Racket)ͷΑ͏ͳੈք؍ʁ ↓↑DAWʢԻ੍ָ࡞ιϑτ΢ΣΞʣͱͷΑΓࠜຊతͳ࿈ܞʁ →mimiumͰϝΠϯͰ࣮ݱ͍ͨ͜͠ͱ ໺ྑϓϩάϥϛϯάݴޠͷϦϙδτϦ͕਺ඦݸGithubʹస͕ͬͯΔΑ͏ʹɺ਺ඦݸͷԻָݴޠ͔Β޷͖ ͳͷΛϑϨΩγϒϧʹ૊Έ߹ΘͤΒΕΔΑ͏ͳੈք͕དྷͯཉ͍͠ʢເʣ