情報処理推進機構(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
minimal musical medium / a programming language as an Infrastructure for sound & music.ԻָϓϩάϥϛϯάݴޠlNJNJVNzͷ։ൃभେֶେֶӃܳज़ֶদӜະ౿*5ਓࡐൃ۷ɾҭࣄۀՌใࠂձ
View Slide
ԻָՈͷͨΊͷԻ/ԻָΛ؆ܿʹهड़Ͱ͖ߴ͍࣮ߦੑೳΛ࣋ͪଟ༷ͳϓϥοτϑΥʔϜͰಈ࡞͢ΔϓϩάϥϛϯάݴޠΛ࡞Γ·ͨ͠ɻ
দӜ (भେֶ େֶӃܳज़ֶ)Photo by Takehiro Goto
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠԻָϓϩάϥϛϯάݴޠ-BOHVBHFTGPS$PNQVUFS.VTJD 3PHFS#%BOOFOCFSH 'SPOUJFSTJO%JHJUBM)VNBOJUJFT /PW ՃචদӜOvertoneSam Aaron(2011?)Sonic PISam Aaron(2012)TidalCyclesAlex Mclean(2006~)ChronicEli Blandt(2002)KronosVersa Norilo(2015)LCHiroki Nishino(2013)ixi langThor Magnusson(2012)GibberCharlie Roberts(2014)FoxDotJean-François Parent(2015)ExtemporeAndrew Sorensen(2012)impromptuAndrew Sorensen(2010)Common Lisp MusicBill Schottstaedt(1989)SuperCollider-ClientsSOULROLI(2018)
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠԻָϓϩάϥϛϯάݴޠͷతw ָේσʔλΛίϯϐϡʔλ্ͰޮΑ͘ཧ ϚʔΫΞοϓw ΞϧΰϦζϛοΫ࡞ۂw Ի৭ͷૢ࡞ͦͷͷΛ࡞ۂͷཁૉʹ͢Δw ݴޠࣗମ͕ಛఆͷදݱʹಛԽw ϥΠϒύϑΥʔϚϯεͷΠϯλʔϑΣʔεͱ͍ͯ͠Ζ͍Ζ͋Δ͚ͲɾɾɾྫϦζϜύλʔϯهड़ʹಛԽͨ͠5ZEBM$ZDMFTˠԻָͷ৽͍͠நԽͱڞ༗ͷํ๏ΛੜΈग़͢
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠͱ͔͘ɹɹɹɹΛ͢ΔσϞ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ৴߸ॲཧσϞ
ETQؔΛ࡞ΔͱԻ͕ग़ͤΔSBOEPN Ͱdͷཚ͕ग़Δ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠd·Ͱ্͕ͬͯΔΛ܁Γฦ͢ϊίΪϦ
ؔͰTFMGͱ͍͏มΛ͏ͱɺͦͷ͕ؔ࠷ޙʹग़ྗͨ͠ΛऔಘͰ͖Δ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠTFMGʹΑΔϑΟʔυόοΫͷදݱphasor(freq) = +(freq/48000) ~ %(1);• selfのメモリ確保や読み書きはコンパイラが⾃動でやってくれるfn phasor(freq:float){return (self+freq/48000)%1}NJNJVN'BVTU “フィードバック接続演算⼦”(何やってるのか読みにくい)その関数が最後に出⼒した値を呼び出せる予約語
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ΄ͱΜͲͷ৴߸ॲཧσΟϨΠ Ԇͱग़ྗͷϑΟʔυόοΫ͕͋Ε෦ঢ়ଶΛදݱͰ͖ΔTFMGʹΑΔϑΟʔυόοΫͷදݱˠݴޠϨϕϧͰαϙʔτ͢Δͱ͍ΖΜͳදݱ͕ؔͷύΠϓͱͯ͠ॻ͚Δ
MPBEXBW ͰΦʔσΟΦϑΝΠϧͷಡΈࠐΈྻΞΫηεͷࣗಈઢܗิ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ"%43ʢԻྔมԽͷΧʔϒʣΛ࡞Δ"UUBDL %FDBZ 3FMFBTF4VTUBJO͜ͷΦϒδΣΫτ$Ͱॻ͔Ε͍ͯΔ ϒϥοΫϘοΫε.BY
"UUBDL %FDBZ 3FMFBTF4VTUBJO͜ͷΦϒδΣΫτ$Ͱॻ͔Ε͍ͯΔͦΕɺϑϧεΫϥονͰॻ͚·͢Αʂ
͜ͷΦϒδΣΫτ$Ͱॻ͔Ε͍ͯΔ2εΫϥονͰॻ͍ͯύϑΥʔϚϯεམͪͳ͍ͷʁ"--7. ˠΛͬͯωΠςΟϒίʔυʹίϯύΠϧ͍ͯ͠ΔͷͰ΄΅$ॻ͖ͱಉ͡
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ੍ޚॲཧσϞ
ؔΛ!Ͱ࣌ؒࢦఆ࣮ͯ͠ߦOPXͰݱࡏ࣌ؒͷऔಘ࣌ؒΛލ͍ͩ࠶ؼ UFNQPSBMSFDVSTJPO
JGͱSBOEPN Ͱ࣌ؒࢦఆΛϥϯμϚΠζ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠؔͷ࣌ؒࢦఆ࣮ߦ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
NJEJϊʔτ൪߸ υϨϛ͔Βपʹม
͍Ζ͍ΖͬͯΈͨ ܭߦ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠػೳൺֱ.BY 4VQFS$PMMJEFS &YUFNQPSF 'BVTU $IVD, NJNJVN৴߸ ͍ॲཧ ˓ .BY ˓ IPHFBS ˓ YUMBOH ˓ ˓ ˓ϑϧεΫϥον৴߸ॲཧ˚ (FO º ˓ ˓ ˚ ֦ு ˓੍ޚ ͍ॲཧ ˓ .41 ˓ IPHFLS ˓ 4DIFNF º ˓ ˓
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠϥϯλΠϜϞδϡϥʔΞʔΩςΫνϟιʔείʔυநߏจதؒදݱLLVM IRΦʔσΟΦυϥΠό3U"VEJPλεΫϦετ[{100ɿ&fn1}, {200:&fn2}…]--7.࣮ߦΤϯδϯίϯύΠϥλεΫΩϡʔ[{100:&fn1}, {200:&fn2}…]εέδϡʔϥʔUJDL5JNF ETQ BEE5BTL FYFDVUF5BTL
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠϥϯλΠϜιʔείʔυநߏจதؒදݱLLVM IRΦʔσΟΦυϥΠό3U"VEJPλεΫϦετ[{100ɿ&fn1}, {200:&fn2}…]--7.࣮ߦΤϯδϯίϯύΠϥεέδϡʔϥʔUJDL5JNF ETQ BEE5BTL FYFDVUF5BTL NZETQMMͯ͠ӡ༻ϞδϡϥʔΞʔΩςΫνϟλεΫΩϡʔ[{100:&fn1}, {200:&fn2}…]
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠϥϯλΠϜιʔείʔυநߏจதؒදݱLLVM IRΦʔσΟΦυϥΠό3U"VEJPλεΫϦετ[{100ɿ&fn1}, {200:&fn2}…]ίϯύΠϥεέδϡʔϥʔUJDL5JNF ETQ BEE5BTL FYFDVUF5BTL ωΠςΟϒόΠφϦωΠςΟϒόΠφϦ--7.ඇґଘʢܰྔʣϞδϡϥʔΞʔΩςΫνϟλεΫΩϡʔ[{100:&fn1}, {200:&fn2}…]'VUVSF8PSL
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠϥϯλΠϜιʔείʔυநߏจதؒදݱLLVM IRΦʔσΟΦυϥΠό-JC4OE'JMFλεΫϦετ[{100ɿ&fn1}, {200:&fn2}…]--7.࣮ߦΤϯδϯίϯύΠϥεέδϡʔϥʔUJDL5JNF ETQ BEE5BTL FYFDVUF5BTL ϑΝΠϧੜಛԽϞδϡϥʔΞʔΩςΫνϟλεΫΩϡʔ[{100:&fn1}, {200:&fn2}…]'VUVSF8PSL
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠΦʔσΟΦυϥΠό-JC4OE'JMFϥϯλΠϜιʔείʔυநߏจதؒදݱLLVM IRλεΫϦετ[{100ɿ&fn1}, {200:&fn2}…]ίϯύΠϥεέδϡʔϥʔUJDL5JNF ETQ BEE5BTL FYFDVUF5BTL 745ϓϥάΠϯωΠςΟϒόΠφϦωΠςΟϒόΠφϦϞδϡϥʔΞʔΩςΫνϟλεΫΩϡʔ[{100:&fn1}, {200:&fn2}…]'VUVSF8PSL
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠϥϯλΠϜιʔείʔυநߏจதؒදݱLLVM IRλεΫϦετ[{100ɿ&fn1}, {200:&fn2}…]--7.࣮ߦΤϯδϯίϯύΠϥεέδϡʔϥʔUJDL5JNF ETQ BEE5BTL FYFDVUF5BTL 745ϓϥάΠϯϞδϡϥʔΞʔΩςΫνϟλεΫΩϡʔ[{100:&fn1}, {200:&fn2}…]'VUVSF8PSL
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠw ָේϨϕϧͷॲཧͱ৴߸ॲཧ͕ҰͭͷݴޠͰॻ͘͜ͱ͕Ͱ͖Δw ৴߸ॲཧ͕$$Ͱॻ͔Εͯͳ͍㲈ϒϥοΫϘοΫε͕গͳ͍w ίϯύΠϥͱϥϯλΠϜͷॊೈͳӡ༻NJNJVNͷಛ·ͱΊˢɾɾɾ͜ͷ͕࣮ͭݱͰ͖ΔͱԿ͕͍͍ͷʁ
minimal musical medium / a programming language as an Infrastructure for sound & music.Πϯϑϥͱͯ͠ͷԻָϓϩάϥϛϯάݴޠ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠNJNJVNͷ࠷ऴඪw ޙʹɺ͕ͨΓલʹͳͬͯཉ͍͠Իָʹίʔυ$ P E F
ԻϑΝΠϧͱɺɹɹɹɹɹͰ͋Δ͘͠ԻָϓϨʔϠʔͱɺྻಡΈࠐΈػೳ͔࣋ͬͯ͠ͳ͍ΠϯλϓϦλΩϟογϡ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ4DSFFOTIPUGSPNHFOFSBUJWFNVTJDDPNʹͨΓલʹͳͬͯཉ͍͠Իָ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠGSPNʮθϧμͷઆ#PU8ʯɺϋΠϥϧͷ࣮ࡏײΛߴΊΔͨΊͷαϯυσβΠϯz*(/+BQBO ӾཡIUUQTKQJHODPNUIFMFHFOEPG[FMEBIEOFXTCPUX࣮͏ͨΓલʹͳͬͯΔ͔ʁ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠԻָ͕ϓϩάϥϜͱͯ͠ྲྀ௨͢Δະདྷw ԻָϓϨʔϠʔͱ͍͏ྻΛಡΈࠐΉػೳ͔͠ͳ͍ΠϯλϓϦλͰෆw ΞϓϦͱ͔ͰϓϥοτϑΥʔϜʹґଘ͢Δͷମͳ͍w ιʔείʔυʢָේʣΛૹΕྑ͍ͷͰʁ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠԻָ͕ιʔείʔυͱͯ͠ྲྀ௨͢Δະདྷw Իָͷʮʯফ໓͢Δw ͞ΕͨԻָͷ࠶ฤूɿϦϛοΫεͱO࣍࡞w ίʔυͷ࣮ߦԋͰ͋Δɿl࡞Γखzͱlฉ͖खzͷڥքΛᐆດʹ͢Δ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ7FSTJPO3FMFBTFhttps://github.com/mimium-org/mimium• 対応OS:macOS(数ヶ⽉以内にWin,Linux対応予定)• ライセンス:Mozilla Public License 2.0• VSCode⽤シンタックスハイライトもあります• コントリビューター、スポンサー募集中!
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠ༧ఆྻߏମ ϞδϡʔϧػೳΫϩεϓϥοτϑΥʔϜWϦϦʔε-BOHVBHF4FSWFS *%&࣮ύοέʔδϚωʔδϟ։ൃํϓϩάϥϛϯά ϏδϡΞϧΤσΟλʔϚϧνεϨοσΟϯάίʔυ Իָڞ༗αʔϏεඪ४ϥΠϒϥϦඋ
minimal musical medium / a programming language as an Infrastructure for sound & music.ԻָϓϩάϥϛϯάݴޠlNJNJVNzͷ։ൃभେֶେֶӃܳज़ֶদӜɹɹNF!NBUTVVSBUPNPZBDPNະ౿*5ਓࡐൃ۷ɾҭࣄۀՌใࠂձ
·ͱΊࢦ͢ະདྷػೳ·ͱΊσϞػೳղઆഎܠݴޠ༷w ύϥμΠϜɿखଓ͖ܕʴ'31 w ੩తܕ͚ɺ)JOEMFZ.JMOFS୯૬ܕਪ όάͬͯΔw ։ൃݴޠɿ$ w ґଘϥΠϒϥϦ#JTPO 'MFY --7.