Save 37% off PRO during our Black Friday Sale! »

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

24b82e535177c6be997ca4ec43d8df6b?s=128

Tomoya Matsuura

February 16, 2020
Tweet

Transcript

  1. minimal musical medium / a programming language as an Infrastructure

    for sound & music. ԻָϓϩάϥϛϯάݴޠlNJNJVNzͷ։ൃ ۝भେֶେֶӃܳज़޻ֶ෎দӜ஌໵ ະ౿*5ਓࡐൃ۷ɾҭ੒ࣄۀ੒Ռใࠂձ
  2. ԻָՈͷͨΊͷ Ի/ԻָΛ؆ܿʹهड़Ͱ͖ ߴ͍࣮ߦੑೳΛ࣋ͪ ଟ༷ͳϓϥοτϑΥʔϜͰಈ࡞͢Δ ϓϩάϥϛϯάݴޠΛ࡞Γ·ͨ͠ɻ

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

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

    w ΞϧΰϦζϛοΫ࡞ۂ w Ի৭ͷૢ࡞ͦͷ΋ͷΛ࡞ۂͷཁૉʹ͢Δ w ݴޠࣗମ͕ಛఆͷදݱʹಛԽ w ϥΠϒύϑΥʔϚϯεͷΠϯλʔϑΣʔεͱͯ͠ ͍Ζ͍Ζ͋Δ͚Ͳɾɾɾ ྫϦζϜύλʔϯهड़ʹಛԽͨ͠5ZEBM$ZDMFT ˠԻָͷ৽͍͠ந৅Խͱڞ༗ͷํ๏ΛੜΈग़͢
  6. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ͱ΋͔͘ɹɹɹɹΛ͢Δ σϞ

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

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

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

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

  11. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ TFMGʹΑΔϑΟʔυόοΫͷදݱ phasor(freq) = +(freq/48000) ~

    %(1); • selfのメモリ確保や読み書きはコンパイラが⾃動でやってくれる fn phasor(freq:float){ return (self+freq/48000)%1 } NJNJVN 'BVTU “フィードバック接続演算⼦”(何やってるのか読みにくい) その関数が最後に出⼒した値を呼び出せる予約語
  12. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ΄ͱΜͲͷ৴߸ॲཧ͸σΟϨΠ ஗Ԇ ͱग़ྗͷ ϑΟʔυόοΫ͕͋Ε͹಺෦ঢ়ଶΛදݱͰ͖Δ TFMGʹΑΔϑΟʔυόοΫͷදݱ

    ˠݴޠϨϕϧͰαϙʔτ͢Δͱ͍ΖΜͳදݱ͕ ؔ਺ͷύΠϓͱͯ͠ॻ͚Δ
  13. MPBEXBW ͰΦʔσΟΦϑΝΠϧͷಡΈࠐΈ ഑ྻΞΫηεͷࣗಈઢܗิ׬

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

     ͜ͷΦϒδΣΫτ͸$ Ͱॻ͔Ε͍ͯΔ ϒϥοΫϘοΫε .BY
  15. "UUBDL %FDBZ 3FMFBTF 4VTUBJO  ͜ͷΦϒδΣΫτ͸$ Ͱॻ͔Ε͍ͯΔ ͦΕɺϑϧεΫϥονͰॻ͚·͢Αʂ

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

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

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

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

  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
  21. NJEJϊʔτ൪߸ υϨϛ ͔Βप೾਺ʹม׵

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

  23. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ػೳൺֱ .BY 4VQFS$PMMJEFS &YUFNQPSF 'BVTU

    $IVD, NJNJVN ৴߸ ଎͍ ॲཧ ˓ .BY ˓ IPHFBS ˓ YUMBOH ˓ ˓ ˓ ϑϧεΫϥον ৴߸ॲཧ ˚ (FO º ˓ ˓ ˚ ֦ு ˓ ੍ޚ ஗͍ ॲཧ ˓ .41 ˓ IPHFLS ˓ 4DIFNF º ˓ ˓
  24. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ϥϯλΠϜ ϞδϡϥʔΞʔΩςΫνϟ ιʔείʔυ ந৅ߏจ໦ தؒදݱ

    LLVM IR ΦʔσΟΦυϥΠό 3U"VEJP λεΫϦετ [{100ɿ&fn1},
 {200:&fn2}…] --7.࣮ߦΤϯδϯ ίϯύΠϥ λεΫΩϡʔ [{100:&fn1},
 {200:&fn2}…] εέδϡʔϥʔ UJDL5JNF ETQ BEE5BTL FYFDVUF5BTL
  25. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ϥϯλΠϜ ιʔείʔυ ந৅ߏจ໦ தؒදݱ LLVM

    IR ΦʔσΟΦυϥΠό 3U"VEJP λεΫϦετ [{100ɿ&fn1},
 {200:&fn2}…] --7.࣮ߦΤϯδϯ ίϯύΠϥ εέδϡʔϥʔ UJDL5JNF ETQ BEE5BTL FYFDVUF5BTL NZETQMM ෼཭ͯ͠ӡ༻ ϞδϡϥʔΞʔΩςΫνϟ λεΫΩϡʔ [{100:&fn1},
 {200:&fn2}…]
  26. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ϥϯλΠϜ ιʔείʔυ ந৅ߏจ໦ தؒදݱ LLVM

    IR ΦʔσΟΦυϥΠό 3U"VEJP λεΫϦετ [{100ɿ&fn1},
 {200:&fn2}…] ίϯύΠϥ εέδϡʔϥʔ UJDL5JNF ETQ BEE5BTL FYFDVUF5BTL ωΠςΟϒόΠφϦ ωΠςΟϒόΠφϦ --7.ඇґଘʢ௒ܰྔʣ ϞδϡϥʔΞʔΩςΫνϟ λεΫΩϡʔ [{100:&fn1},
 {200:&fn2}…] 'VUVSF8PSL
  27. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ϥϯλΠϜ ιʔείʔυ ந৅ߏจ໦ தؒදݱ LLVM

    IR ΦʔσΟΦυϥΠό -JC4OE'JMF λεΫϦετ [{100ɿ&fn1},
 {200:&fn2}…] --7.࣮ߦΤϯδϯ ίϯύΠϥ εέδϡʔϥʔ UJDL5JNF ETQ BEE5BTL FYFDVUF5BTL ϑΝΠϧੜ੒ಛԽ ϞδϡϥʔΞʔΩςΫνϟ λεΫΩϡʔ [{100:&fn1},
 {200:&fn2}…] 'VUVSF8PSL
  28. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ΦʔσΟΦυϥΠό -JC4OE'JMF ϥϯλΠϜ ιʔείʔυ ந৅ߏจ໦

    தؒදݱ LLVM IR λεΫϦετ [{100ɿ&fn1},
 {200:&fn2}…] ίϯύΠϥ εέδϡʔϥʔ UJDL5JNF ETQ BEE5BTL FYFDVUF5BTL 745ϓϥάΠϯ ωΠςΟϒόΠφϦ ωΠςΟϒόΠφϦ ϞδϡϥʔΞʔΩςΫνϟ λεΫΩϡʔ [{100:&fn1},
 {200:&fn2}…] 'VUVSF8PSL
  29. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ϥϯλΠϜ ιʔείʔυ ந৅ߏจ໦ தؒදݱ LLVM

    IR λεΫϦετ [{100ɿ&fn1},
 {200:&fn2}…] --7.࣮ߦΤϯδϯ ίϯύΠϥ εέδϡʔϥʔ UJDL5JNF ETQ BEE5BTL FYFDVUF5BTL 745ϓϥάΠϯ ϞδϡϥʔΞʔΩςΫνϟ λεΫΩϡʔ [{100:&fn1},
 {200:&fn2}…] 'VUVSF8PSL
  30. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ w ָේϨϕϧͷॲཧͱ৴߸ॲཧ͕ҰͭͷݴޠͰॻ͘͜ͱ͕Ͱ͖Δ w ৴߸ॲཧ͕$΍$ Ͱॻ͔Εͯͳ͍㲈ϒϥοΫϘοΫε͕গͳ͍

    w ίϯύΠϥͱϥϯλΠϜͷॊೈͳӡ༻ NJNJVNͷಛ௃·ͱΊ ˢɾɾɾ͜ͷ͕࣮ͭݱͰ͖ΔͱԿ͕͍͍ͷʁ
  31. minimal musical medium / a programming language as an Infrastructure

    for sound & music. Πϯϑϥͱͯ͠ͷԻָϓϩάϥϛϯάݴޠ
  32. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ NJNJVNͷ࠷ऴ໨ඪ w ೥ޙʹ͸ɺ ͕౰ͨΓલʹͳͬͯཉ͍͠ Իָʹίʔυ

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

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

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

    ࣮͸΋͏౰ͨΓલʹͳͬͯΔ͔΋ʁ
  36. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ Իָ͕ϓϩάϥϜͱͯ͠ྲྀ௨͢Δະདྷ w ԻָϓϨʔϠʔͱ͍͏഑ྻΛಡΈࠐΉػೳ͔͠ͳ͍ΠϯλϓϦλͰ͸ ໾ෆ଍ w

    ΞϓϦͱ͔ͰϓϥοτϑΥʔϜʹґଘ͢Δͷ΋໪ମͳ͍ w ιʔείʔυʢָේʣΛૹΕ͹ྑ͍ͷͰ͸ʁ
  37. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ Իָ͕ιʔείʔυͱͯ͠ྲྀ௨͢Δະདྷ w Իָͷʮ׬੒ʯ͸ফ໓͢Δ w ഑෍͞ΕͨԻָͷ࠶ฤूɿϦϛοΫεͱO࣍૑࡞

    w ίʔυͷ࣮ߦ͸ԋ૗Ͱ΋͋Δɿl࡞Γखzͱlฉ͖खzͷڥքΛᐆດʹ͢Δ
  38. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ 7FSTJPO3FMFBTF https://github.com/mimium-org/mimium • 対応OS:macOS(数ヶ⽉以内にWin,Linux対応予定) •

    ライセンス:Mozilla Public License 2.0 • VSCode⽤シンタックスハイライトもあります • コントリビューター、スポンサー募集中!
  39. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ༧ఆ ഑ྻߏ଄ମ   

    Ϟδϡʔϧػೳ Ϋϩε ϓϥοτϑΥʔϜ WϦϦʔε -BOHVBHF4FSWFS *%& ࣮૷ ύοέʔδϚωʔδϟ։ൃ ૒ํ޲ϓϩάϥϛϯά ϏδϡΞϧΤσΟλʔ ϚϧνεϨοσΟϯά ίʔυ Իָ ڞ༗αʔϏε ඪ४ϥΠϒϥϦ੔උ
  40. ԻָՈͷͨΊͷ Ի/ԻָΛ؆ܿʹهड़Ͱ͖ ߴ͍࣮ߦੑೳΛ࣋ͪ ଟ༷ͳϓϥοτϑΥʔϜͰಈ࡞͢Δ ϓϩάϥϛϯάݴޠΛ࡞Γ·ͨ͠ɻ

  41. minimal musical medium / a programming language as an Infrastructure

    for sound & music. ԻָϓϩάϥϛϯάݴޠlNJNJVNzͷ։ൃ ۝भେֶେֶӃܳज़޻ֶ෎দӜ஌໵ɹɹNF!NBUTVVSBUPNPZBDPN ະ౿*5ਓࡐൃ۷ɾҭ੒ࣄۀ੒Ռใࠂձ
  42. ·ͱΊ ໨ࢦ͢ະདྷ ػೳ·ͱΊ σϞػೳղઆ എܠ ݴޠ࢓༷ w ύϥμΠϜɿखଓ͖ܕʴ'31  w

    ੩తܕ෇͚ɺ)JOEMFZ.JMOFS୯૬ܕਪ࿦ όάͬͯΔ  w ։ൃݴޠɿ$   w ґଘϥΠϒϥϦ#JTPO 'MFY --7.