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

Development of Infrastructural Sound Programming Language "mimium"

Development of Infrastructural Sound Programming Language "mimium"

情報処理推進機構(IPA)2019年度未踏IT人材発掘・育成事業 成果発表会(MITOU Demo Day) 2020年2月16日 「音楽プログラミング言語mimiumの開発」

発表動画/Presentation Video(In Japanese)
https://www.youtube.com/watch?v=J-K4IWDHgdo&list=PLi57U_f9scIImQqBmvCuXwJqAbpWnyW6u&index=19

Tomoya Matsuura

February 16, 2020
Tweet

More Decks by Tomoya Matsuura

Other Decks in Programming

Transcript

  1. minimal musical medium / a programming language as an Infrastructure for sound & music.
    ԻָϓϩάϥϛϯάݴޠlNJNJVNzͷ։ൃ
    ۝भେֶେֶӃܳज़޻ֶ෎দӜ஌໵
    ະ౿*5ਓࡐൃ۷ɾҭ੒ࣄۀ੒Ռใࠂձ

    View Slide

  2. ԻָՈͷͨΊͷ
    Ի/ԻָΛ؆ܿʹهड़Ͱ͖
    ߴ͍࣮ߦੑೳΛ࣋ͪ
    ଟ༷ͳϓϥοτϑΥʔϜͰಈ࡞͢Δ
    ϓϩάϥϛϯάݴޠΛ࡞Γ·ͨ͠ɻ

    View Slide

  3. দӜ ஌໵ (۝भେֶ େֶӃܳज़޻ֶ෎)
    Photo by Takehiro Goto

    View Slide

  4. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    Իָϓϩάϥϛϯάݴޠ
    -BOHVBHFTGPS$PNQVUFS.VTJD 3PHFS#%BOOFOCFSH '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

    (2014)
    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)

    View Slide

  5. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    Իָϓϩάϥϛϯάݴޠͷ໨త
    w ָේσʔλΛίϯϐϡʔλ্Ͱޮ཰Α͘؅ཧ ϚʔΫΞοϓ

    w ΞϧΰϦζϛοΫ࡞ۂ
    w Ի৭ͷૢ࡞ͦͷ΋ͷΛ࡞ۂͷཁૉʹ͢Δ
    w ݴޠࣗମ͕ಛఆͷදݱʹಛԽ
    w ϥΠϒύϑΥʔϚϯεͷΠϯλʔϑΣʔεͱͯ͠
    ͍Ζ͍Ζ͋Δ͚Ͳɾɾɾ
    ྫϦζϜύλʔϯهड़ʹಛԽͨ͠5ZEBM$ZDMFT

    ˠԻָͷ৽͍͠ந৅Խͱڞ༗ͷํ๏ΛੜΈग़͢

    View Slide

  6. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ͱ΋͔͘ɹɹɹɹΛ͢Δ
    σϞ

    View Slide

  7. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ৴߸ॲཧ
    σϞ

    View Slide

  8. ETQؔ਺Λ࡞ΔͱԻ͕ग़ͤΔ
    SBOEPN
    Ͱdͷཚ਺͕ग़Δ

    View Slide

  9. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    d·Ͱ্͕ͬͯ໭ΔΛ܁Γฦ͢ϊίΪϦ೾

    View Slide

  10. ؔ਺಺ͰTFMGͱ͍͏ม਺Λ࢖͏ͱɺ
    ͦͷؔ਺͕࠷ޙʹग़ྗͨ͠਺ΛऔಘͰ͖Δ

    View Slide

  11. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    TFMGʹΑΔϑΟʔυόοΫͷදݱ
    phasor(freq) = +(freq/48000) ~ %(1);
    • selfのメモリ確保や読み書きはコンパイラが⾃動でやってくれる
    fn phasor(freq:float){
    return (self+freq/48000)%1
    }
    NJNJVN
    'BVTU “フィードバック接続演算⼦”(何やってるのか読みにくい)
    その関数が最後に出⼒した値を呼び出せる予約語

    View Slide

  12. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ΄ͱΜͲͷ৴߸ॲཧ͸σΟϨΠ ஗Ԇ
    ͱग़ྗͷ
    ϑΟʔυόοΫ͕͋Ε͹಺෦ঢ়ଶΛදݱͰ͖Δ
    TFMGʹΑΔϑΟʔυόοΫͷදݱ
    ˠݴޠϨϕϧͰαϙʔτ͢Δͱ͍ΖΜͳදݱ͕
    ؔ਺ͷύΠϓͱͯ͠ॻ͚Δ

    View Slide

  13. MPBEXBW
    ͰΦʔσΟΦϑΝΠϧͷಡΈࠐΈ
    ഑ྻΞΫηεͷࣗಈઢܗิ׬

    View Slide

  14. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    "%43ʢԻྔมԽͷΧʔϒʣΛ࡞Δ
    "UUBDL %FDBZ 3FMFBTF
    4VTUBJO

    ͜ͷΦϒδΣΫτ͸$Ͱॻ͔Ε͍ͯΔ ϒϥοΫϘοΫε

    .BY

    View Slide

  15. "UUBDL %FDBZ 3FMFBTF
    4VTUBJO

    ͜ͷΦϒδΣΫτ͸$Ͱॻ͔Ε͍ͯΔ
    ͦΕɺϑϧεΫϥονͰॻ͚·͢Αʂ

    View Slide

  16. ͜ͷΦϒδΣΫτ͸$Ͱॻ͔Ε͍ͯΔ
    2εΫϥονͰॻ͍ͯύϑΥʔϚϯε͸མͪͳ͍ͷʁ
    "--7. ˠ
    Λ࢖ͬͯωΠςΟϒίʔυʹ௚઀ίϯύΠϧ
    ͍ͯ͠ΔͷͰ΄΅$௚ॻ͖ͱಉ͡଎౓

    View Slide

  17. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ੍ޚॲཧ
    σϞ

    View Slide

  18. ؔ਺Λ!Ͱ࣌ؒࢦఆ࣮ͯ͠ߦ
    OPXͰݱࡏ࣌ؒͷऔಘ
    ࣌ؒΛލ͍ͩ࠶ؼ UFNQPSBMSFDVSTJPO

    View Slide

  19. JGͱSBOEPN
    Ͱ࣌ؒࢦఆΛϥϯμϚΠζ

    View Slide

  20. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ؔ਺ͷ࣌ؒࢦఆ࣮ߦ
    NJNJVN
    &YUFNQPSF
    (define foo
    (lambda ()
    (play-note (now) synth 60 80 *second*)
    (callback (+ (now) *second*) 'foo)))
    (foo)
    fn foo(pitch){
    noteOut(pitch,80, 1)
    foo(pitch)@(now+20000)
    }
    foo(pitch)@0

    View Slide

  21. NJEJϊʔτ൪߸ υϨϛ
    ͔Βप೾਺ʹม׵

    View Slide

  22. ͍Ζ͍Ζ΍ͬͯΈͨ ܭߦ

    View Slide

  23. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ػೳൺֱ
    .BY 4VQFS$PMMJEFS &YUFNQPSF 'BVTU $IVD, NJNJVN
    ৴߸ ଎͍
    ॲཧ ˓ .BY
    ˓ IPHFBS

    ˓ YUMBOH
    ˓ ˓ ˓
    ϑϧεΫϥον
    ৴߸ॲཧ
    ˚ (FO
    º ˓ ˓ ˚ ֦ு
    ˓
    ੍ޚ ஗͍
    ॲཧ ˓ .41
    ˓ IPHFLS

    ˓ 4DIFNF
    º ˓ ˓

    View Slide

  24. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ϥϯλΠϜ
    ϞδϡϥʔΞʔΩςΫνϟ
    ιʔείʔυ
    ந৅ߏจ໦
    தؒදݱ
    LLVM IR
    ΦʔσΟΦυϥΠό
    3U"VEJP

    λεΫϦετ
    [{100ɿ&fn1},

    {200:&fn2}…]
    --7.࣮ߦΤϯδϯ
    ίϯύΠϥ
    λεΫΩϡʔ
    [{100:&fn1},

    {200:&fn2}…]
    εέδϡʔϥʔ
    UJDL5JNF

    ETQ

    BEE5BTL
    FYFDVUF5BTL

    View Slide

  25. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ϥϯλΠϜ
    ιʔείʔυ
    ந৅ߏจ໦
    தؒදݱ
    LLVM IR
    ΦʔσΟΦυϥΠό
    3U"VEJP

    λεΫϦετ
    [{100ɿ&fn1},

    {200:&fn2}…]
    --7.࣮ߦΤϯδϯ
    ίϯύΠϥ
    εέδϡʔϥʔ
    UJDL5JNF

    ETQ

    BEE5BTL
    FYFDVUF5BTL

    NZETQMM
    ෼཭ͯ͠ӡ༻
    ϞδϡϥʔΞʔΩςΫνϟ
    λεΫΩϡʔ
    [{100:&fn1},

    {200:&fn2}…]

    View Slide

  26. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ϥϯλΠϜ
    ιʔείʔυ
    ந৅ߏจ໦
    தؒදݱ
    LLVM IR
    ΦʔσΟΦυϥΠό
    3U"VEJP

    λεΫϦετ
    [{100ɿ&fn1},

    {200:&fn2}…]
    ίϯύΠϥ
    εέδϡʔϥʔ
    UJDL5JNF

    ETQ

    BEE5BTL
    FYFDVUF5BTL

    ωΠςΟϒόΠφϦ
    ωΠςΟϒόΠφϦ
    --7.ඇґଘʢ௒ܰྔʣ
    ϞδϡϥʔΞʔΩςΫνϟ
    λεΫΩϡʔ
    [{100:&fn1},

    {200:&fn2}…]
    'VUVSF8PSL

    View Slide

  27. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ϥϯλΠϜ
    ιʔείʔυ
    ந৅ߏจ໦
    தؒදݱ
    LLVM IR
    ΦʔσΟΦυϥΠό
    -JC4OE'JMF

    λεΫϦετ
    [{100ɿ&fn1},

    {200:&fn2}…]
    --7.࣮ߦΤϯδϯ
    ίϯύΠϥ
    εέδϡʔϥʔ
    UJDL5JNF

    ETQ

    BEE5BTL
    FYFDVUF5BTL

    ϑΝΠϧੜ੒ಛԽ
    ϞδϡϥʔΞʔΩςΫνϟ
    λεΫΩϡʔ
    [{100:&fn1},

    {200:&fn2}…]
    'VUVSF8PSL

    View Slide

  28. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ΦʔσΟΦυϥΠό
    -JC4OE'JMF

    ϥϯλΠϜ
    ιʔείʔυ
    ந৅ߏจ໦
    தؒදݱ
    LLVM IR
    λεΫϦετ
    [{100ɿ&fn1},

    {200:&fn2}…]
    ίϯύΠϥ
    εέδϡʔϥʔ
    UJDL5JNF

    ETQ

    BEE5BTL
    FYFDVUF5BTL

    745ϓϥάΠϯ
    ωΠςΟϒόΠφϦ
    ωΠςΟϒόΠφϦ
    ϞδϡϥʔΞʔΩςΫνϟ
    λεΫΩϡʔ
    [{100:&fn1},

    {200:&fn2}…]
    'VUVSF8PSL

    View Slide

  29. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ϥϯλΠϜ
    ιʔείʔυ
    ந৅ߏจ໦
    தؒදݱ
    LLVM IR
    λεΫϦετ
    [{100ɿ&fn1},

    {200:&fn2}…]
    --7.࣮ߦΤϯδϯ
    ίϯύΠϥ
    εέδϡʔϥʔ
    UJDL5JNF

    ETQ

    BEE5BTL
    FYFDVUF5BTL

    745ϓϥάΠϯ
    ϞδϡϥʔΞʔΩςΫνϟ
    λεΫΩϡʔ
    [{100:&fn1},

    {200:&fn2}…]
    'VUVSF8PSL

    View Slide

  30. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    w ָේϨϕϧͷॲཧͱ৴߸ॲཧ͕ҰͭͷݴޠͰॻ͘͜ͱ͕Ͱ͖Δ
    w ৴߸ॲཧ͕$΍$Ͱॻ͔Εͯͳ͍㲈ϒϥοΫϘοΫε͕গͳ͍
    w ίϯύΠϥͱϥϯλΠϜͷॊೈͳӡ༻
    NJNJVNͷಛ௃·ͱΊ
    ˢɾɾɾ͜ͷ͕࣮ͭݱͰ͖ΔͱԿ͕͍͍ͷʁ

    View Slide

  31. minimal musical medium / a programming language as an Infrastructure for sound & music.
    Πϯϑϥͱͯ͠ͷԻָϓϩάϥϛϯάݴޠ

    View Slide

  32. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    NJNJVNͷ࠷ऴ໨ඪ
    w ೥ޙʹ͸ɺ
    ͕౰ͨΓલʹͳͬͯཉ͍͠
    Իָʹίʔυ
    $ P E F

    View Slide

  33. Ի੠ϑΝΠϧͱ͸ɺɹɹɹɹɹͰ͋Δ
    ΋͘͠͸
    ԻָϓϨʔϠʔͱ͸ɺ഑ྻಡΈࠐΈػೳ͔࣋ͬͯ͠ͳ͍ΠϯλϓϦλ
    Ωϟογϡ

    View Slide

  34. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    4DSFFOTIPUGSPNHFOFSBUJWFNVTJDDPN
    ೥୅ʹ౰ͨΓલʹͳͬͯཉ͍͠Իָ

    View Slide

  35. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    GSPNʮθϧμͷ఻આ#PU8ʯɺϋΠϥϧͷ࣮ࡏײΛߴΊΔͨΊͷα΢ϯυσβΠϯz
    *(/+BQBO Ӿཡ

    IUUQTKQJHODPNUIFMFHFOEPG[FMEBIEOFXTCPUX
    ࣮͸΋͏౰ͨΓલʹͳͬͯΔ͔΋ʁ

    View Slide

  36. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    Իָ͕ϓϩάϥϜͱͯ͠ྲྀ௨͢Δະདྷ
    w ԻָϓϨʔϠʔͱ͍͏഑ྻΛಡΈࠐΉػೳ͔͠ͳ͍ΠϯλϓϦλͰ͸
    ໾ෆ଍
    w ΞϓϦͱ͔ͰϓϥοτϑΥʔϜʹґଘ͢Δͷ΋໪ମͳ͍
    w ιʔείʔυʢָේʣΛૹΕ͹ྑ͍ͷͰ͸ʁ

    View Slide

  37. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    Իָ͕ιʔείʔυͱͯ͠ྲྀ௨͢Δະདྷ
    w Իָͷʮ׬੒ʯ͸ফ໓͢Δ
    w ഑෍͞ΕͨԻָͷ࠶ฤूɿϦϛοΫεͱO࣍૑࡞
    w ίʔυͷ࣮ߦ͸ԋ૗Ͱ΋͋Δɿl࡞Γखzͱlฉ͖खzͷڥքΛᐆດʹ͢Δ

    View Slide

  38. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    7FSTJPO3FMFBTF
    https://github.com/mimium-org/mimium
    • 対応OS:macOS(数ヶ⽉以内にWin,Linux対応予定)
    • ライセンス:Mozilla Public License 2.0
    • VSCode⽤シンタックスハイライトもあります
    • コントリビューター、スポンサー募集中!

    View Slide

  39. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ༧ఆ
    ഑ྻߏ଄ମ

    Ϟδϡʔϧػೳ
    Ϋϩε
    ϓϥοτϑΥʔϜ
    WϦϦʔε
    -BOHVBHF4FSWFS *%&
    ࣮૷
    ύοέʔδϚωʔδϟ։ൃ
    ૒ํ޲ϓϩάϥϛϯά ϏδϡΞϧΤσΟλʔ
    ϚϧνεϨοσΟϯά
    ίʔυ Իָ
    ڞ༗αʔϏε
    ඪ४ϥΠϒϥϦ੔උ

    View Slide

  40. ԻָՈͷͨΊͷ
    Ի/ԻָΛ؆ܿʹهड़Ͱ͖
    ߴ͍࣮ߦੑೳΛ࣋ͪ
    ଟ༷ͳϓϥοτϑΥʔϜͰಈ࡞͢Δ
    ϓϩάϥϛϯάݴޠΛ࡞Γ·ͨ͠ɻ

    View Slide

  41. minimal musical medium / a programming language as an Infrastructure for sound & music.
    ԻָϓϩάϥϛϯάݴޠlNJNJVNzͷ։ൃ
    ۝भେֶେֶӃܳज़޻ֶ෎দӜ஌໵ɹɹNF!NBUTVVSBUPNPZBDPN
    ະ౿*5ਓࡐൃ۷ɾҭ੒ࣄۀ੒Ռใࠂձ

    View Slide

  42. ·ͱΊ
    ໨ࢦ͢ະདྷ
    ػೳ·ͱΊ
    σϞػೳղઆ
    എܠ
    ݴޠ࢓༷
    w ύϥμΠϜɿखଓ͖ܕʴ'31
    w ੩తܕ෇͚ɺ)JOEMFZ.JMOFS୯૬ܕਪ࿦ όάͬͯΔ

    w ։ൃݴޠɿ$

    w ґଘϥΠϒϥϦ#JTPO 'MFY --7.

    View Slide