
2026/5/30 draw(tokyo); #4 VJæ¯ãè¿ã
draw(tokyo);ïŒ4ã«VJåºæŒããã
ãéå¬ãŸã§æ®ã6æ¥âŒïžã
â draw(); (@function_draw) May 24, 2026
ãžã§ãç³»VJãã³ã³ã»ããã®ã¯ã©ãã€ãã³ã
draw(tokyo); #4 | #function_draw
ðïž2026/5/30 (å) 14:00~20:30
ðCIRCUS TOKYO (æžè°·)
ðïžå売ãÂ¥3,500+1D
â ïžå売ããã±ããã®è²©å£²ã¯5/29 (é) 23:59ãŸã§ã§ãïŒ
âŒå売ãã±ãã&詳现ã¯ãã¡ãâŒhttps://t.co/Umza1JFKph pic.twitter.com/TyAAKzZooj
ãã€ãžã§ã¹ãã¯ãããªæãã
æ¿ãã亀é¯ããäºäººã®èŠç¹ã
â hacha (@hacha) May 31, 2026
ã¢ãããã³ããªBPMã«ãã€ã³ã³ãã©ã¹ãã»ãã€ãµãã¥ã¬ãŒã·ã§ã³ãªæ åã
ã©ã€ãäžã«å¹ŸåºŠãšãªã亀ããããã·ã§ããã®ä¹Ÿæ¯ã@nadeco x @hacha #function_draw pic.twitter.com/hTAy6WPOZv
ãã«å°ºã¯ãã¡ãã
éäžã§å€å°ã®æ©æãã©ãã«ããã£ããã®ã®ãæŠãæ³å®éãã®ããã©ãŒãã³ã¹ãã§ããããªã
draw(tokyo);ã«ã¯ç¬¬ïŒåã«ãåºæŒããã ãã®æã®èšäºã¯ãã¡ãã
ååã¯çŽ ã®hydraã®ã¿ã§ããŒãããå®å
šå³èã®LiveCodingããã£ãã
ããããææ¥ãæµããä»ã§ã¯èªåçšã«ã«ã¹ã¿ã ããŸãã£ãhacha/hydraã䜿ã£ãŠããã
ãŸãä»åãLiveCodingãããããšã«ã¯ãªãããå
容ãéãã©ãåãããšããã£ãã®ã§ã¯ã¡ãã£ãšã€ã³ãã¯ãã匱ããïŒãšèããã
draw(tokyo);ã¯ãã¯ãã«ã«ãªããšãããæŒè
ãå€ãã®ã§ããã¯ãèªåãäœãããæ°ãããã®ãèŠããŠè¡ããã°ã
ãããŠã§ãããã£ãã®ã
èœå(ã·ã¹ãã )ã"俺ã®å·Šç®ãåã®å³ç®<ããžã§ã³ ããªããž>"
DJ/VJäž¡è
ãHMD(MetaQuest3)ã被ããããããã®èŠç¹ã®æ åãLiveCodingã§ã¬ãã£ã¬ãã£ãšä»äžãããšããå
容ã®ãã®ã ã
ããã«ã€ããŠã®çްããæè¡è§£èª¬ãèŠåŽããç¹ã«ã€ããŠã¯åŸæ¥AudioVisualå匷äŒã§çºè¡šäºå®ã
ã¯ã©ãã€ãã³ããªãã ããåãŸãªããå§ãŸãããŒã
ããã©ãŒãã³ã¹äžã«ãäœåºŠãšãªã亀ããããã·ã§ããã°ã©ã¹ã®ä¹Ÿæ¯ïŒ
äœãªãïŒäººããŠããŒã«ã³åã§ä¹Ÿæ¯ããŠãŠãããŒã¹ãç¡äººã«ãªãç¬éãããããšããæãæ§ã
â»çè
ã¯ç¹æ®ãªèšç·Žã«ããé
ã£æããªããã§ãLiveCodingãã§ããã®ã§ããã
DJãšVJãé é Œã¿ã«è¡ã£ãŠã#function_draw pic.twitter.com/i9hKuzDG17
â ð (@narumodoki) May 30, 2026
2人ãšãããŒã«ã³è¡ããªãã§ãã ããw#function_draw https://t.co/2uczNsMqBv pic.twitter.com/e2WGbhRwJw
â Sauth (@s4uth) May 30, 2026
#function_draw
â ãŠãã£ã (@TEl3ck) May 30, 2026
ðnadeco
ð¡hacha
ããŒã«ã³ãã£ããã£ã£ãŠãããªã«ãããããã®ã pic.twitter.com/hNoQBjHyCj
ãã£ã±ã¯ã©ããšããç°å¢ããã£ãŠãããã§æã
ã¯æŽ»åã§ããããã§ã
ãšãªããšãã¬ã€ã€ãŒãšããŠã¯ãã èªåã®è¡šçŸãèããã ããããªããåŠäœã«ç®±ã®å£²äžã«è²¢ç®ã§ãããã£ãŠèгç¹ã¯å€§äºã ããªãããšæ¹ããŠæã£ãã
é
ãåã¿ãããªããããªç±æ°ã»çãäžãããã©ãäœãäžããããçãªã
ããããæå³ã§ã¯ä»åäžç·ã«ããã©ãŒãã³ã¹ããDJ nadecoããã¯æµç³è§£ã£ãŠãã£ããããããã©ã³ã ãIV AKIHABARAã®ãªãŒããŒã ããã
ããããå
·äœçãªã€ã¡ãŒãžã¯ãªããã©ãªããã®æ©äŒã«ãããŒã©ãªã¢ã¯ãã£ãVJã¿ãããªã¢ãã¿ãããªæ©æ§ãäœã£ãŠã¿ãããªïœ
äžéšã®å±€ã«ã¯ãŠã±ãã ãïœ
ã³ãŒãæ¯ãè¿ã
现ãã説æã¯çãããhydraã®s0, s1ã«2å°ã®HMDããã®æ åéä¿¡ãå
¥ãããã«ãè³ç«ãŠããŠãããããããå
ã¯æ®éã«ãã€ãéãhydraã§ã®LiveCodingã
æçµã³ãŒãã¯ãããªæãã
ã¡ãªã¿ã«ççž®åã ããã ã£ããæ¬å®¶ã«ãªãarrayæ¡åŒµã䜿ã£ãŠããããã®ã§ã詳现ã¯hacha/hydra-synthã確èªããããã
// 俺ã®å·Šç®ãåã®å³ç®<ããžã§ã³ ããªããž>
src(s0)
.bri(.18)
.cont([1.4,1.6].f(4))
.sat(1.3)
// .thr(.2,.0)
//.mul(s0)
.inv([0,0,0,1].f(1))
//.mul(osc(20,-.3).kaleid(2).rot(PI/2).thr(.2))
.add(src(o0).mod(noi(2,.2),.05).sat(1.012).hue(.13), .75)
.diff(src(o0).scrY([.01, 0,0,0].lin(.5).s()).sca([.985,1.01].sin().h(4)).kaleid(6))
.out(o0)
src(s1)
.bri([.12,.18].f(2))
.cont([1.06,1.3].f(4))
.sat([4.8,0].lin(.25).s())
.hue(()=>time*.5)
.colama(-.01)
//.scrX(0,.25)
//.sca(1,2)
//.rep(3,1)
//.diff(src(o1).scrY(-.00001).hue([-.03,.02,-.01].sin(.01)).sat(1.01))
.out(o1)
src(s1)
.bri(.2)
.cont(1.3)
.colama([.9,0,0,0].lin(4).s())
//.scrY(0,.2)
//.rot(0,.4)
// .kaleid(4)
//.ble(src(o2).sat(1.1).hue(-.02).modSca(noi(3), .015), [1,0,0].f(1))
.out(o2)
src(o2)
.ble(src(o1), [0,0,0,1].f(.25))
.ble(src(o0), [1,0].sin(2).h(4))
//.add(src(o0).luma(), [1,0,0].lin(1).s())
.mul(noi1(16).thr(.009), [0,1].f(4))
.diff(src(o3).sca(1.01).pstr(8))
.ble(src(o3), 1)
.out(o3)
render(o3)
bpm=175/2æ®æ®µãšå€§ããåæãéãç¹ããããšããã°ãç»é¢ãHMDã®ãã¹ã¹ã«ãŒã«ã¡ã©è¶ãã«èŠãŠãããšãããšããã
äžå¿ç»é¢åºåãHMDã«ãéã£ãŠãç®ã®åã«çœ®ããQuadã«è²Œãä»ããŠç¢ºèªã§ããããã«ã¯äœã£ãããã©ãã«ãéä¿¡ç°å¢ãå®å®ããã³ãŒããèªãã«ã¯å³ããã£ãã
ãŸãHMDã®ã«ã¡ã©è¶ãã§ãäœãšãLaptopã®ã³ãŒããèªããã®ã¯äºåã«ç¢ºèªæžã¿ã§ã¯ãã£ãããæµç³ã«å°é£ããåŠçãä»èŸŒãã®ã¯ã¡ãã£ãšå³ããã
ãããŸã§ãäœåºŠãåºå®ããWebã«ã¡ã©ã®å
¥åã䜿ã£ãVJã¯ãã£ãŠããããä»åã¯HMDãªã®ã§èŠç¹ãåºå®ãããåãã
ã€ãŸãäœãããªããŠãç»é¢ã«ã¯å€å°ã®åããåºãã
ãããªãæ¯èŒçã·ã³ãã«ãªå å·¥ãšæãå·®ãã®ãªãºã ã§ïŒæéãããã¯äœè£æãããããã ããããšããç®æ®µã
ç¹ã«ä»åã¯ã³ã³ã»ãããšããŠDJãšVJã®èŠç¹ãæ··ããåã£ãŠãããšããããšãåããããå¿
èŠãããã®ã§ãç»é¢å
šäœãkaleid()ãããããŠãããããããšäœãè¡ãããŠããã®ããåããã¥ãããªãããã
ãããªããã§æŠãã®æ§æãšããŠã¯ãs0(VJã®å·Šç®æ å)ãšs1(DJã®å³ç®æ å)ão0,o1,o2ã§å å·¥ããŠãããŠão3ã§ããããã¬ãã£ã¬ãã£åãæ¿ãã€ã€åºåããã
ã«ã¡ã©æ åã䜿ãæã«ãã€ãçŽé¢ããåé¡ãšããŠãå®éã«ã©ããããã®æããã®ç°å¢ã«ãªãã®ãèªããããããŠå€§æµã®å Žåã¯æã£ã以äžã«æãã
ä»åãæ³å®ä»¥äžã«ã«ã¡ã©æ åãæãã£ãã®ã§
src(s0)
.bri(.18)
.cont([1.4,1.6].f(4))
.sat(1.3)
ã£ãŠæãã§.brightness()ã§æã¡äžããŠãå
šäœãçœããªã£ã¡ããã®ã.contrast()ã§ç¡çããã¯ã£ãããããŠã.saturate()ã§åœ©åºŠäžããŠå
šäœãšããŠå°ãªãæããéšåã匷調ããã
ãªããããã¡ãã£ãšäžæãããæ¹ããããšããã®ã ãã
ããŒã³ã«ãŒãçãªoperationã远å å®è£
ããã䟿å©ã ãããã
åçš®ãã©ã¡ãŒã¿ã¯æéã®é²è¡ã«åãããã¡ãã£ãšç»é¢å
šäœã®å€åéãå¢ãããããªã£ãéã«arrayã§å€ãåããããã«ã䜿ãã
ã远èšã.gamma()ã远å ãããcommit
ã䟿å©ã ãããããšå¿ã®äžã§æã£ããªãã!
ãã®æã¹ãã«å®è£
ã¯çµãã£ãŠãããã ã!
å°ãªãææ°ã§çµµçãªå€åãçã¿ããå Žåã«ããããã®ã.thresh()ã§ããããšäºå€åã
ãã®ãŸãŸã¢ãã¯ãã§åºããŠããããã.color()ã§è²ä»ãããããosc()ãä»ã®ã«ã¡ã©æ åã.mult()ã§æããœãŒã¹ã«äœ¿ã£ããã.luma()ãããã®ã.layer()ã§äžäœã¬ã€ã€ãŒã«äœ¿ã£ãããšãããããèããããæŽŸçæãè²ã
æãã€ãã
ããããæå³ã§ã.thresh()ã絡ããå å·¥ãã¿ãŒã³ãæ®æ®µããç ç©¶ããŠãããšåœ¹ã«ç«ã€ã
ããšã¯ãããã.diff(src(o0)).out(o0)ã§ã®feedbackåŠçã ããä»åã¯å
šäœçã«æããŠããŸãã¯ã£ããããªãã®ã§ãããŸã§é¢çœããåŒãåºããæãã§ããªãã£ããªã
.add(src(o0), .9).out(o0)ãšãã§ã®delayãšãã§ã¯ãçãªãã®ã¯ããããšç¡é£ã«äœ¿ããã
ãããamountã.add(src(o0), [0,0,0,1])ã®ããã«ç¬éçã«æ¥µç«¯ãªå€ãã¶ã¡èŸŒãã ããããšé¢çœããªã£ãããªããªãã£ããããã
ä»åçµæ§æ°ã«å
¥ã£ãã®ã¯.colama([.9,0,0,0].lin(4).s())ã
.colorama()ã¯å°å³ããªçµµã§ãå
šäœãæ¿ããå€åãããããã
ãã ãã®ãŸãŸã ãšãã vividãªã ãã®çµµã«ãªãã®ã§ãããããã¯ãç¬éçã«ã²ãŒããéãæãã§é©çšãããã
[.9,0,0,0].lin(4).s()ã®éšåã¯å³å¯ã«æžããš[.9,0,0,0].ease('linear').fast(4).saw()ã§ããã
.ease('linear')ããã䜿ãå²ã«ã¿ã€ãéãå€ãã®ã§.lin()ãšæžããããã«ããäžã§ãã©ãã.fast()ã䜿ãã«æ±ºãŸã£ãŠãããspeedããã©ã¡ãŒã¿ã§æž¡ããããã«ããŠããã
.saw()ã¯æ¬å®¶ã«ã¯ãªããã®ã§ãarrayã®æ«å°Ÿããå
é ãžã¯å€ãç¹ãããªããªãã
å
ã®arrayæ¡åŒµã§ã¯äžè§æ³¢ãã衚çŸã§ããªãã£ããã®ããã³ã®ãªæ³¢ã衚çŸã§ããããã«æ¡åŒµããã
ããã§ãã£ãŠããããã䜿ããã.s()ãšæ¥µéãŸã§ççž®ã§ããããã«ããŠããã
ãããæ°ã
ã®ã«ã¹ã¿ã ãããã°ãããHMDè¶ãã§å€å°èŠã¥ãããŠãé«éã«LiveCodingã§ã®å±éãå¯èœãšãªãã
ããçšåºŠåœ¢ãã§ããŠããããs0ãšs1ãå
¥ãæ¿ããããè¡åäœã§å å·¥åŠçèªäœãã«ããïŒããŒã¹ãã§å¥ã®æµãã«çµã¿æ¿ãããã鳿¥œçå±éã«åãããŠå€åããç¶ããã ãã§éãæãããããã
Trouble
念ã®ããã§æã£ãŠãã£ãHDMIã±ãŒãã«ãããªãã§ç¹ãã§ã¿ããšäœ¿ããªãã£ãã
確ãå®¶ã§ã¯ãããžã§ã¯ã¿ãŒã«ç¹ãã§äœ¿ããŠããã¯ãã ããéã«ã¹ã€ããã£ãŒ(ATEM Mini Proããª)ãæãŸããšé§ç®ã ã£ãã
现ããåå ãŸã§ã¯åããããããŸã確ãã«ããããããšã¯ããããã
ä¿¡é Œæ§ã®é«ãã±ãŒãã«ãäžæ¬æã£ãŠãããšããã®ããã
æ¹é çhydraã§ã¯å
éšã§æé»çã«hydra-strudelãããŒãããŠããã
ããã¯[0,0,0,0,0,0,0,1]ãšå»ã¿ããå Žåã«èšè¿°ãåé·ã ãããstrudelã®ãã¿ãŒã³èšæ³ã䜿ã£ãŠP("0@7 1")ãšæžãããããã ãã«ããŒãããããã«ããŠããã
ããã以åã«ããã£ãã®ã ããã©ããããŸã«æžããŠã¿ããšP()ãundefinedã«ãªãããšãããã
ä»åãééããã®ã§äœ¿çšã諊ãããããŸãèªã¿èŸŒã¿ã¿ã€ãã³ã°åé¡ãªãã ãããšéãè
°ãäžããŠçŽããŠããããšã«ããã
çµå±äœ¿ãããã®ã¯P()ã ãã§ãªãŒãã£ãªç³»ã®æ©èœã¯ãªããŠãããã£ããããã®ã§ãå¿
èŠãªæ©èœã ãã«åãèœãšãããcommit
ããšã€ãã§ã«[0,1].fast(.5)ãšP("0 1".slow(2))ã®ãã³ããåãããã«ãããã
ããã§P("0 <1 [2 3]>")ã¿ãããªè€éãªãã©ã¡ãŒã¿ã·ãŒã±ã³ã¹ãçµã¿èŸŒã¿ããããªã£ãŠãå°ãªãã¿ã€ãéã§æ åã®è€é床ãäžãããããªã£ãã
å ±æŒè
@ChapaDidgeridoo x @funachunn #function_draw pic.twitter.com/CCCHCVOPoH
â hacha (@hacha) May 31, 2026
@kekeigo93_ x @__lim_1_na #function_draw pic.twitter.com/81FheR6NVj
â hacha (@hacha) May 31, 2026
@ybs303 x @komakinex #function_draw pic.twitter.com/KtQOfgaR7Z
â hacha (@hacha) May 31, 2026
@QZKeNja x @zyzyzy_vl #function_draw pic.twitter.com/kpDuRQn5n5
â hacha (@hacha) May 31, 2026
@yoxtellar x @butadiene121 #function_draw pic.twitter.com/TBKIYYX7AK
â hacha (@hacha) May 31, 2026
@kenjung_vrc x @msr_tainaka #function_draw pic.twitter.com/jupKf6I1wL
â hacha (@hacha) May 31, 2026
@xM4Ty x @Renard_VRC #function_draw pic.twitter.com/7Vj5xprNja
â hacha (@hacha) May 31, 2026
@_skz1 x @nimono_vr #function_draw pic.twitter.com/kObB5WMit5
â hacha (@hacha) May 31, 2026
@RIKUPI_vrc b2b @ymgmcmc x @SainaKey b2b @W0NYV #function_draw pic.twitter.com/pSyXVaNN5Z
â hacha (@hacha) May 31, 2026
Rei8bit x Rui8bit
â hacha (@hacha) May 31, 2026
0b5vr x gam0022
ã¯èªåã®åºæŒã®è£ã ã£ãã®ã§èгãããæ®å¿µã