åœãããžã§ã¯ã㯠vnctst-audio4 ãžãšç§»è¡ããŸããã
ãã¡ãã¯ä»åŸæŽæ°ãããªãäºå®ã§ãã
html5ç°å¢ã®çºã®ãã²ãŒã åãé³é¿ãã¡ã€ã«åçã©ã€ãã©ãª
- åæžã
- ç¹åŸŽ
- ãªã³ã©ã€ã³ãã¢
- cljsçã®äœ¿ãæ¹
- jsçã®äœ¿ãæ¹
- å¶çŽ / æäŸããªãæ©èœ / FAQ
- å¿ é ç¥è
- TODO
- Specifications
- Development
- License
- ChangeLog
é³é¿ãã¡ã€ã«ãåçããjsã©ã€ãã©ãªã¯æ¢åã®ãã®ãå€æ°ãããã®ã®ããã²ãŒã åãããšããŠã¯ã©ããåŸè¿°ã®æ©èœã足ããŠããªãã£ããã ããããã®vnctst-audio3
ãäœã£ãã
ãã²ãŒã åãé³é¿ãã¡ã€ã«åçã©ã€ãã©ãªããšããŠå¿ èŠãšãããèŠä»¶ã¯ä»¥äžã®éãã
-
SEç³»ã®ç®¡çãšBGMç³»ã®ç®¡çãåãããŠããäº(ããããã§æ±ããããèŠä»¶ãããªãéã)
- SEç³»
- åäžSEã®å€éåçãžã®å¯Ÿå¿
- éãSEã®å€éåçã«ã¯å¯Ÿå¿ããŠããŠããåäžSEã®å€éåçã«å¯Ÿå¿ããŠããªãã©ã€ãã©ãªãæå€ãšå€ã
- ã²ãŒã ã§ã¯åŒŸäžžã®å°åºé³ãççºé³ãªã©ãåäžã®SEãã¿ã€ãã³ã°ãããããŠå€éã«åçãããäºã«ãªãã±ãŒã¹ãå€ã
- åäžSEã®å€éåçãžã®å¯Ÿå¿
- BGMç³»
- æ²å€æŽã«äŒŽãèªåçãã€é©åã«è¡ããããã§ãŒãã¢ãŠã/ãã§ãŒãã€ã³åŠç
- ãã§ãŒãèªäœããµããŒãããŠããªãã©ã€ãã©ãªãå€ãããŸããã§ãŒãããµããŒãããŠããŠãæ±ããäžå®å
šã ã£ãããããã®ãããªã
- 次ã®æ²ãåçããæã«ãçŸåšã®æ²ããã§ãŒãã¢ãŠãããŠããåçããããã«ãã¥ãŒã€ã³ã°ããŠã»ãããåæã«ããã®ãã§ãŒãã¢ãŠãã®éäžã§ã®ãã£ã³ã»ã«åŠç/æŽã«éãæ²ãžã®å·®ãæ¿ãããµããŒãããŠã»ãã
- ãã§ãŒãã®ãã£ã³ã»ã«åŠçã¯ããã§ãŒãã¢ãŠãäžãªããã§ãŒãã€ã³ããŠæ»ãããã§ãŒãã€ã³äžãªããã§ãŒãã¢ãŠãããŠæ»ãåŠçãæãŸãã
- ãã§ãŒãèªäœããµããŒãããŠããªãã©ã€ãã©ãªãå€ãããŸããã§ãŒãããµããŒãããŠããŠãæ±ããäžå®å
šã ã£ãããããã®ãããªã
- æ²å€æŽã«äŒŽãèªåçãã€é©åã«è¡ããããã§ãŒãã¢ãŠã/ãã§ãŒãã€ã³åŠç
- SEç³»
-
éã«æ±ããäº
- BGMãSEãåç/å€æŽ/åæ¢ããæäœã¯ãã²ãŒã ã§ã¯é »åºã®æäœã§ãããæ¯ãããããã«æ軜ã«ã§ããªããŠã¯ãªããªãã
- åè¿°ã®ãã§ãŒãã¢ãŠãã®ä»¶ã«ããéããæ¢ã«åçäžã®BGMãå€æŽããããšããéã«ããã§ãŒãã¢ãŠãâ次ã®æ²ãåçããšããåŠçã«ãããäºã¯ãããããããããã®åŠçã¯éåæãšãªããããã§ãŒãã¢ãŠãäžã«ãŸãå¥ã®æ²ãåçããããšãããã©ããªãããããã®ãã§ãŒãã¢ãŠãèªäœããã£ã³ã»ã«ããŠãã§ãŒãã€ã³åŸ©åž°ããããªã£ããã©ãããããçã«å¯Ÿå¿ãããããšãããšéåžžã«è€éãªç¶æ é·ç§»ãæã€ããã®ç¶æ é·ç§»ãæ°ã«ããã«æ°è»œã«åç/å€æŽ/åæ¢ãè¡ããªããŠã¯ãªããªãã
-
äžèšã®ãã²ãŒã åããã®èŠä»¶ãäžéãæºãããŠãã
-
æ¶ããéã®å°ãªããå¿ èŠæå°éã®ã€ã³ã¿ãŒãã§ãŒã¹
- åè¿°ã®ãè€éãªç¶æ é·ç§»ããå éšã«é ãã€ã€ãåºæ¬ãšãªãã€ã³ã¿ãŒãã§ãŒã¹ããåçããåæ¢ãé¢é£ã«çµããã·ã³ãã«ã«æ±ããããã«ãã
-
åçç°å¢ã«å¿ãããé©åãªåçã¡ãœãã(WebAudio, HtmlAudio, etc...)ã®èªåéžæ
-
RPGãã¯ãŒã«ãåèãšããã BGM, ME, BGS, SE å¥ã®åçåé¡
- BGMã¯ãã«ãŒãåçããé³æºãBGMã¯åæã«äžã€ã®ã¿ãåçå¯èœã
- MEã¯ãã«ãŒãåçãããªãé³æºãåçæã«çŸåšåçäžã®BGMãåæ¢ãã(ã€ãŸãBGMãšæä»)ããžã³ã°ã«çã«äœ¿ãã
- ã·ã¹ãã å éšã§ã¯ãBGMã®äžçš®ããšããŠæ±ããã(ããªã¥ãŒã èšå®çãå ±é)ã
- ãã¯ãŒã«ç³»ã§ã®ä»æ§ãšéãç¹ãšããŠãMEã®åçå®äºæã¯ç¡é³ãšãªã(ãã¯ãŒã«ç³»ã§ã¯å ã®BGMãžãšãã§ãŒãã€ã³æ»ããè¡ã)ã
- BGSã¯ãBGMãšåæã«åçå¯èœãªãã«ãŒãåçããé³æºããããããéšé³çã®ç°å¢é³ã(BGMãšåæã«)åçãããããªçšéã«äœ¿ãã
- ã·ã¹ãã å éšã§ã¯ãBGMã®äžçš®ããšããŠæ±ããã(ããªã¥ãŒã èšå®çãå ±é)ã
- SEã¯ãã«ãŒãåçããªãé³æºããããããå¹æé³ãçšãåæã«å€æ°ãåçå¯èœã
-
ããã¯ã°ã©ãŠã³ãæã®èªåæ¶é³ããã³åŸ©åž°æ©èœ(èšå®ã«ããç¡å¹åå¯èœ)
-
ããªããŒã察象ãã¡ã€ã«äžèŠ§ã®èªåååŸæ©èœ
-
html5ç°å¢ç¹æã®æ§ã ãªãããããŠããŠå¯Ÿå¿ãå å
- â»ãã ãçŸç¶ã§ã¯äžéšã®ã¢ãã€ã«ç«¯æ«ãžã®å¯Ÿå¿ãäžå®å š
-
cljsç°å¢åãããããå®éšçã«jsåããããã€ãè¡ã£ãŠãã
-
ã©ã€ã»ã³ã¹ã«zlib颚ã©ã€ã»ã³ã¹ãæ¡çšãåœã©ã€ãã©ãªå©çšæã«ã©ã€ã»ã³ã¹æ¡æçã衚瀺ãããããå¿ èŠã¯ãªã
- åäœç¢ºèªãã¢ããŒãž http://vnctst.tir.jp/vnctst-audio3-demo/
- BGMå€æŽã®ãã§ãŒãã¢ãŠãããã³ãã§ãŒãã¢ãŠãäžããåãæ²ã«æ»ãéã®ãã§ãŒãã€ã³å¯Ÿå¿ã®èŸºããç®çã§ããéã«æ±ã£ãŠãããã®èŸºããé©åã«å¯Ÿå¿ããŠãããŸã
- åŸè¿°ã®jsçã€ã³ã¿ãŒãã§ãŒã¹ãå å ããŠããçºããããã°ã³ã³ãœãŒã«ããã®ãã¹ãå®è¡ãå¯èœã§ã
jsçã®äœ¿ãæ¹ã¯ãã¡ãã
ããã®ã»ã¯ã·ã§ã³ã¯cljsç°å¢åãã®ãã®ãªã®ã§ãjsçã®ã¿äœ¿ãããæ¹ã¯é£ã°ããŠããŸã£ãŠåé¡ãããŸãã(jsåãã®ã»ãŒåäžã®å 容ããjsçã®äœ¿ãæ¹ãã«ãæžããŠãããŸã)ã
project.clj
ã®:dependencies
ã«[jp.ne.tir/vnctst-audio3 "X.Y.Z"]
ãè¿œå ãã- å©çšãããåå空éã«ãŠ
(:require [vnctst.audio3 :as audio3])
ã¿ãããªæã㧠require ããŠãã (audio3/init!)
ãå®è¡ããŠãã- â»ãããå®è¡ãå¿ããŠãããšãé³æºãã¡ã€ã«ãåçããããšããŠãã
vnctst.audio3 is not initialized !!!
ããšãããã°ãã³ã³ãœãŒã«ã«åºåããã ãã§äœãè¡ããŸãããå¿ããå®è¡ããŠãã ããã - 以äžã®ããŒã¯ãŒãåŒæ°ãäžããäºã«ãããæåãã«ã¹ã¿ãã€ãºããäºãå¯èœ(ãããå
šçç¥ã§ãåé¡ãªã)
:fallback-ext "æ¡åŒµå"
- ããªã»ããé³æº(åŸè¿°)ã¯oggãåªå
ããŸãããoggãåçã§ããªãå Žåã®æ¡åŒµåãæå®ããŸããçç¥æã¯
"mp3"
ã§ãããã¯ãŒã«MVæºæ ã«ãããå Žåã¯"m4a"
ã«ãããšããã§ãããã
- ããªã»ããé³æº(åŸè¿°)ã¯oggãåªå
ããŸãããoggãåçã§ããªãå Žåã®æ¡åŒµåãæå®ããŸããçç¥æã¯
:url-prefix "path/to/audio/"
- ããªã»ããé³æº(åŸè¿°)ã®é
眮urlã®prefixãæå®ããŸããçç¥æã¯
"audio/"
ã§ããéåžžçšéã§ã¯ãæ«å°Ÿã®ã¹ã©ãã·ã¥ã¯å¿ é ã§ããéåžžã¯ãããå€æŽããäºã¯ãããŸããã
- ããªã»ããé³æº(åŸè¿°)ã®é
眮urlã®prefixãæå®ããŸããçç¥æã¯
:dont-stop-on-background? çåœå€
- ããã©ã«ãã§ã¯ãããŒãžã®ã¿ããããã¯ã°ã©ãŠã³ãã«ãªã£ãå Žåã«èªåçã«BGMãäžæåæ¢ããŸã(äžéšã察å¿ããŠããªããã©ãŠã¶ããããŸã)ãçå€ãæå®ããäºã§ãã®æåãç¡å¹åã§ããŸãã
:always-mute-at-mobile? çåœå€
- çå€ãæå®ããäºã§ã
User-Agent
ããããã¢ãã€ã«ç°å¢ã£ãœãå Žåã«é³é¿åçãåžžæãã¥ãŒãç¶æ ã«ããŸããçŸæç¹ã§ã¯ã¢ãã€ã«å¯Ÿå¿ã«äžå®å šãªéšåããããããäžå®å šãªå¯Ÿå¿ã蚱容ã§ããªãå Žåã¯çå€ãæå®ããŠãã ããã
- çå€ãæå®ããäºã§ã
:debug? çåœå€
- çå€ãæå®ããäºã§ãåçåäœã®åŒã³åºããããã¡ã€ã«ã®ããŒããšã©ãŒçã®åçš®æ å ±ãã³ã³ãœãŒã«ã«åºåããããã«ãªããŸããåœã©ã€ãã©ãªã¯åºæ¬çã«ãšã©ãŒããã£ãŠãäŸå€ã¯æããªãããªã·ãŒãšããŠããçºããšã©ãŒã®æ€ç¥ã«ã¯ãã®ãªãã·ã§ã³ã®èšå®ãå¿ é ã§ãããããã°ãã«ãã§ã¯çã«ããªãªãŒã¹ãã«ãã§ã¯åœã«ãªãããã«äžæãèšå®ãããšããã§ãããã
:never-use-webaudio? çåœå€
- WebAudioãåžžã«ç¡å¹åããã(ã€ãŸãHtmlAudioã®ã¿äœ¿ãããã«ããã)æã«çå€ãæå®ããŸããããã¯åºæ¬çã«ã¯åœã©ã€ãã©ãªã®éçºè åãã®æ©èœã§ãã
:never-use-htmlaudio-at-mobile? çåœå€
- http://ch.nicovideo.jp/indies-game/blomaga/ar1147258 ãžã®å¯ŸçãšããŠãã¢ãã€ã«ç°å¢ã£ãœãå Žåã§ã®HtmlAudioã®äœ¿çšãçŠæ¢ããŸã(WebAudioã®äœ¿ããªãç°å¢ã§ã¯åžžæãã¥ãŒãç¶æ ãšãªããŸã)ã
- ãã®
init!
ãè€æ°åå®è¡ããå Žåãäºåç®ä»¥éã®å®è¡ã¯ç¡èŠãããŸã(ã€ãŸãåŸããäžèšãã©ã¡ãŒã¿ãåèšå®ããäºã¯ã§ããŸãã)
- â»ãããå®è¡ãå¿ããŠãããšãé³æºãã¡ã€ã«ãåçããããšããŠãã
-
BGMã鳎ãã(åæ¢ããããŸã§ã«ãŒãåçãç¶ãã)
(audio3/bgm! "path/to/hoge.ogg")
- urlãæå®å¯èœã ãããã®å Žåã¯CORSèšå®ãå¿ èŠãšãªãã±ãŒã¹ãããäºã«æ³šæã
- ãã©ãŠã¶ããããŒã«ã«htmlãã¡ã€ã«ãçŽã«éããå Žåã¯äžæãåçã§ããªã(ããã¯ã©ã®åçã©ã€ãã©ãªã§ãåã)ãäœããã®httpãµãŒãè¶ãã«ã¢ã¯ã»ã¹ããäºã
-
ME(éã«ãŒãæ²)ãåçãã(æ²ã®æåŸã«å°éããããã®ãŸãŸåçãçµäºãã)
(audio3/me! "path/to/fuga.ogg")
-
ä»é³ŽãããŠããBGM/MEããã§ãŒãã¢ãŠããããŠ(ãããã¯å³åº§ã«)åæ¢ãã
(audio3/stop-bgm!)
ãã§ãŒãã¢ãŠã1ç§(ããã©ã«ãå€)ãããŠåæ¢(audio3/stop-bgm! 3)
ãã§ãŒãã¢ãŠã3ç§ãããŠåæ¢(audio3/stop-bgm! 0)
å³åº§ã«åæ¢- æ¢ã«BGMãåæ¢ç¶æ ã®æã¯äœãèµ·ãããªã
- æ¢ã«BGMããã§ãŒãäžã®æãåºæ¬çã«ã¯äœãèµ·ãããªããããæå®ç§æ°ãéãæã®ã¿èšå®ãäžæžãããã(é©åã«ããã§ãŒãã®ãŸã æ®ã£ãŠããéšåãæ°ãããã§ãŒãé床ãžãšå€æŽããã)
-
ä»é³Žã£ãŠããBGMããã§ãŒãã¢ãŠãçµäºãããŠãã次ã®æ²ãåçãã
(audio3/bgm! "path/to/foo.ogg")
- ããã¯äžã®ãBGMã鳎ãããã®ãšå šãåãã³ãŒãã ããããã§ãçŸåšã®æ²ããã§ãŒãã¢ãŠãçµäºãããŠãã次ã®æ²ãåçããããšããæåãšãªã
- çŸåšé³ŽãããŠããæ²ãšå šãåäžã®æ²ãæå®ãããå Žåã¯äœãèµ·ãããªã
- ãã§ãŒãã¢ãŠãäžã«å¥ã®æ²ãåäžæ²ã®åçèŠæ±ãè¡ãããå Žåã¯ãå éšã§é©åã«åŠçãããäºãä¿èšŒããã(åäžæ²ã ã£ãå Žåã¯ãã§ãŒãã€ã³ããŠå ã«æ»ã)ããã®èŸºãã¯å éšã§ã¯è€éãªç¶æ é·ç§»ãæã€ããå€ããå©çšããéã«ãããæ°ã«ããå¿ èŠã¯ãªããéã«æ±ã£ãŠããã
-
SE(å¹æé³)ã鳎ãã(è€æ°çš®é¡ãããã¯åäžã®é³æºãã¡ã€ã«ãå€éåçããäºãå¯èœ)
(audio3/se! "path/to/fuga.ogg")
- SEã¯ã€ãã³ãæ¯ã«é³Žããã±ãŒã¹ãå€ãããè€æ°ã®ã€ãã³ããåæçºç«ããŠåãå¹æé³ãåæã«é³ŽãããŠããŸããšããããéãªã£ãŠçµæãšããŠé³éã®å¢å¹ ãèµ·ãããé³å²ããèµ·ããäºãããããããé²ãçºã«ãéåžžã«è¿ãã¿ã€ã ã¹ã©ã€ã¹(ããã©ã«ãã§ã¯50msec以å )ã§ã®åãå¹æé³ã®åçã¯æå¶ããããã«ããŠããã
äžèšã®ãæãåçŽãªäœ¿ãæ¹ãã§ã¯ãçŽã«pathãæå®ããŠããã
ãããå®éã®åçç°å¢ã§ã¯ãoggãåçå¯èœã§ãªãç°å¢ã§ã¯ã代ããã«mp3ãm4açã®å¥ã®é³æºãã¡ã€ã«ãåçãããå¿ èŠããã(äœæ ããšãããšãoggãmp3ãm4aãããããã䜿ã£ãŠããã°ãã©ã®ãã©ãŠã¶ç°å¢ã§ãåçå¯èœã ããšããèš³ã«ã¯ãããªãçº)ã
ããã§ã以äžã®ãããªæå®æ¹æ³ãå¯èœãšããã以åŸããã§ã¯ããã®æå®æ¹æ³ããããªã»ããæå®ããšåŒã¶ã
-
(audio3/play! :bgm/hoge)
- ããã¯
(audio3/bgm! "audio/bgm/hoge.ogg")
ãããã¯(audio3/bgm! "audio/bgm/hoge.mp3")
ãšããŠå®è¡ããã- ã©ã¡ãã«ãªããã¯ãoggãåçå¯èœãªãåè ãããã§ãªããã°åŸè ãšãªã
- ããã§å®éã«å±éãããpathäœçœ®ãoggåçäžå¯æã®æ¡åŒµåçã¯ãåè¿°ã®
init!
ã®ãªãã·ã§ã³å€ã«ãã£ãŠå€æŽå¯èœ - ãã¡ããã
"audio/bgm/hoge.ogg"
ãš"audio/bgm/hoge.mp3"
ã®äž¡æ¹ã®ãã¡ã€ã«ãäºåã«èšçœ®ããŠããå¿ èŠããã(çæ¹ã ãã§ã¯é§ç®ããã ãåŸè¿°ã®cordovaçã§åçãã©ãŠã¶ç°å¢ãåºå®ã§ããå Žåãoggã®ã¿ã«ããäºã¯å¯èœ)ã
- ããªã»ããã®ããŒã®
namespace
éš(ããŒã¯ãŒãã®ã¹ã©ãã·ã¥ä»¥åã®éšå)ã«æå®ã§ããã®ã¯bgm
se
bgs
me
ã®åçš®é¡ã ããã€ãŸã"audio/bgm/"
"audio/se/"
"audio/bgs/"
"audio/me/"
ã®äžã«èšçœ®ããé³æºãã¡ã€ã«ã®ã¿ãããªã»ããæå®ããäºãå¯èœãšãªã(ãã以å€ã«èšçœ®ãããã¡ã€ã«ã¯æååã§ã®pathæå®ã«ãããããªã)
- ããã¯
-
(audio3/play! :se/fuga)
- äžèšåæ§ã«
(audio3/se! "audio/se/fuga.ogg")
ãããã¯(audio3/se! "audio/se/fuga.mp3")
ãšããŠå®è¡ããã
- äžèšåæ§ã«
-
(audio3/me! :se/fuga)
(audio3/me! "audio/se/fuga.ogg")
ãããã¯(audio3/me! "audio/se/fuga.mp3")
ãšããŠå®è¡ããã"audio/se/"
é äžã«çœ®ãããã¡ã€ã«ã§ãã£ãŠããSE以å€ã®çš®å¥(BGM/BGS/ME)ãšããŠåçãããäºã¯å¯èœããšãããµã³ãã«äŸ(ãã ããéåžžã«åããã¥ãã)ã
ãšããããããããŸã§ã§ãé©åœã«audio/
é
äžã«é
眮ããé³æºãã¡ã€ã«ãBGMãSEãšããŠäžçºã§åçã§ãããããBGMãã§ãŒãã¢ãŠãåŠçãåäžSEå€éåç管çãé©åã«è¡ã£ãŠãããããã®ãšããŠå©çšã§ããã
- é³éèšå®ãå€æŽ/ååŸãã
- é³éèšå®å€ã¯å šãŠ0.0ïœ1.0ã®æ°å€ã§è¡šçŸãããã
(audio3/set-volume-master! 0.5)
- ãã¹ã¿ãŒããªã¥ãŒã ãèšå®ãããåæå€ã¯0.5ã
- ãã¹ã¿ãŒããªã¥ãŒã ã¯å šäœã«åœ±é¿ããé³éãåæç¶æ ã®å Žåããã¹ã¿ãŒã¯0.5ãåå¥ããªã¥ãŒã ã0.5ãªã®ã§ãçµæãšããŠãäœãèšå®ããªãå Žåã¯æ倧é³éã®25%ã§åçãããäºã«ãªãã
(audio3/set-volume-bgm! 0.5)
- BGM/BGS/MEã®åºæ¬ããªã¥ãŒã ãèšå®ãã(SE以å€ã¯å ±é)ãåæå€ã¯0.5ã
(audio3/set-volume-se! 0.5)
- SEã®åºæ¬ããªã¥ãŒã ãèšå®ãããåæå€ã¯0.5ã
(audio3/get-volume-master)
=>
0.0ïœ1.0- ãã¹ã¿ãŒããªã¥ãŒã ãååŸãã
(audio3/get-volume-bgm)
=>
0.0ïœ1.0- BGM/BGS/MEã®åºæ¬ããªã¥ãŒã ãååŸãã
(audio3/get-volume-se)
=>
0.0ïœ1.0- SEã®åºæ¬ããªã¥ãŒã ãååŸãã
-
ãã®ç°å¢ã«ãŠãç¹å®çš®å¥ã®é³æºãã¡ã€ã«ãåçå¯èœãã調ã¹ã
(audio3/can-play-ogg?)
=>
true or false
(audio3/can-play-mp3?)
=>
true or false
(audio3/can-play-m4a?)
=>
true or false
(audio3/can-play? "audio/ogg")
=>
true or false
- ãã®ãã§ãã¯ãè¡ããã«çŽã«åçããããšããŠå€±æããŠãå¥ã«ãšã©ãŒã¯æããããªã(ãããã°ãã©ã°ããªã³ã«ããŠããã°ã³ã³ãœãŒã«ã«ãšã©ãŒæ å ±ã¯åºåããã)ã®ã§ããã©ãããŠãåçãããªããšå°ãããããªç¶æ³ã§ãªããªãããã®ãã§ãã¯ãè¡ããªããŠãå¥ã«åé¡ã¯ãªãããŸãåè¿°ã®ããªã»ããæå®ãè¡ãã°ãå éšã§é©åã«ãã®å€å®ãè¡ã£ãŠããã
-
åçéå§æã«ãåå¥ã«volume(é³é), pitch(åçé床ã¬ãŒã), pan(å·Šå³ã®ãã©ã³ã¹)ãæå®ãã
(audio3/play! :bgm/hoge 1.5 1.2 -1.0)
(audio3/play! :se/fuga 0.15 0.8 1.0)
(audio3/bgm! "path/to/hoge.ogg" 1.5 1.2 -1.0)
(audio3/se! "path/to/fuga.ogg" 0.15 0.8 1.0)
play!
bgm!
se!
çã«å¯ŸããŠãæŽã«è¿œå ã®åŒæ°ãšããŠvolume
pitch
pan
ã®äžã€ã®æ°å€ãæå®å¯èœ- volumeã¯0以äžã®å°æ°å€ãæå®ãããçç¥æ㯠1.0 ãæå®ããããã®ãšããŠæ±ãããã
- ããã«ã¯1.0以äžã®å€ãæå®ããäºãå¯èœããã ãåè¿°ã®ãã¹ã¿ãŒããªã¥ãŒã ããã³åããªã¥ãŒã èšå®ãä¹ç®ããæçµçµæã1.0以äžã«ãªãå Žåã¯1.0ã«ãªãç¶æ ã§é æã¡ãšãªã(ã€ãŸãåæç¶æ ã®ãŸãŸãªããvolumeã«4.0以äžãæå®ããŠãã4.0ãæå®ããæãšåãåçé³éãšãªããããããã倧ããããäºã¯ã§ããªã)
- pitch㯠0.1 ïœ 10.0 ã®å°æ°å€ãæå®ãããçç¥æ㯠1.0 ãšããŠæ±ããããå°ãããããšãã£ããããåçãšãªãã倧ãããããšå éããåçãšãªã
- pan㯠-1.0 ïœ 1.0 ã®å°æ°å€ãæå®ãããçç¥æ㯠0 ãšããŠæ±ãããã -1.0 ãæãå·Šå¯ãã 1.0 ãæãå³å¯ããšãªã
- pitchããã³panã«ã€ããŠã¯ãåæ ãããªãå®è¡ç°å¢ãããäºã«æ³šæ(WebAudioã§ãã£ãŠãé察å¿ãªãã©ãŠã¶ãæ®éã«ãã)
- volumeã¯0以äžã®å°æ°å€ãæå®ãããçç¥æ㯠1.0 ãæå®ããããã®ãšããŠæ±ãããã
-
å¹æé³ãéäžã§åæ¢ããã
(go (let [se-ch (audio3/se! "path/to/fuga.ogg")] (<! (cljs.core.async/timeout 1000)) (audio3/stop-se! se-ch)))
audio3/se!
(ããã³audio3/play!
ã«ãŠ:se/*
ç³»ãæå®ããå Žå)ã¯åçããšã®ãã£ã³ãã«ãè¿ããaudio3/stop-se!
ã«ã¯ããã®åçãã£ã³ãã«ãåŒæ°ãšããŠæž¡ãå¿ èŠããã- æ¢ã«åçå®äºãããã£ã³ãã«ã
audio3/stop-se!
ã«æž¡ããŠããäœãèµ·ãããªã - éäžã§åæ¢ãããå¿
èŠããªããã°ã
se!
ã®è¿ããã£ã³ãã«ã¯ç¡èŠããŠãåé¡ãªã(åççµäºåŸã«é©åã«GCããã)
-
BGMãåçäžãã©ããã調ã¹ã
(audio3/playing-bgm?)
- BGM, MEãåçäžãªãçå€ãè¿ã
-
BGSãåç/åæ¢ãã
- BGSãšã¯ãBGMãšäžŠè¡ããŠåçã§ããã«ãŒãé³æºã人ãã¿ã®é³ã颚ã®é³ãéšé³ããšãã£ãç°å¢é³ããBGMãšåæã«åçããäºãæ³å®ããŠãã
(audio3/bgs! "path/to/foo.ogg")
(audio3/play! :bgs/foo)
(audio3/stop-bgs!)
- è¿œå ã®åŒæ°ã«ã€ããŠã¯BGMãšåã
-
BGSãåçäžãã©ããã調ã¹ã
(audio3/playing-bgs?)
- BGSãåçäžãªãçå€ãè¿ã
-
SEã®ããªããŒããè¡ã
(audio3/preload-se! "path/to/fuga.ogg")
(audio3/preload-se! :se/fuga)
- äºåã«ããªããŒããè¡ãäºã§ãåååçæã«å éšã§é³æºãã¡ã€ã«ã®ããŒãã£ã³ã°ãè¡ããã«ãã¿ãåååçæã§ãé 延ãªãå³åº§ã«SEãåçã§ããããã«ãªãã
- ããªããŒãã¯éåæå®è¡ãããã
-
SEã®ããªããŒããå®äºããŠãããã調æ»ãã
(audio3/loaded-se? "path/to/fuga.ogg")
(audio3/loaded-se? :se/fuga)
- ããªããŒããå®äºããŠãããªãçå€ãè¿ãã
se!
(ããã³play!
ã«:se/*
ç³»ã®ããŒãæå®ããå Žå)ãå éšã§ããªããŒããè¡ã£ãŠããçºãpreload-se!
ãå®è¡ããŠããªããŠããäžåºŠã§ã鳎ãããäºã®ããSEã¯ãããã«ãã£ãŠçå€ãè¿ãã- 泚æç¹ãšããŠãããŒãæã«äœããã®ãšã©ãŒ(ãã¡ã€ã«ããªãç)ãçºçããã±ãŒã¹ã§ãçå€ãè¿ã(ããšã©ãŒãèµ·ãã£ãããããŒãèªäœã¯å®äºããããšããæ±ã)ããšã©ãŒãæ€åºãããå Žåã¯åŸè¿°ã®
succeeded-to-load-se?
ã䜿ãäºã
(audio3/succeeded-to-load-se? "path/to/fuga.ogg")
(audio3/succeeded-to-load-se? :se/fuga)
- ããªããŒããå®äºããåçãå¯èœãªç¶æ ã«ãªã£ãŠããã°çå€ãè¿ãã
loaded-se?
ãšã®éãã¯ããŒããšã©ãŒã®æ±ãããšã©ãŒæã¯åœå€ã«ãªãã- ããåäœã§ã¯ããŒãå®äºåŸ
ã¡ã«ã¯äœ¿ããªãäºã«æ³šæãããŒãå®äºåŸ
ã¡ãããã«ã¯åè¿°ã®
loaded-se?
ã®æ¹ãé©åã
- ããªããŒãäžã«
se!
ãå®è¡ãããå ŽåãããªããŒããå®äºãããŸã§åçã¯é 延ãã(éåžžã®ããªããŒããªãåååçã®æãšåãæå)ã
-
SEã®ã¢ã³ããŒããè¡ã
(audio3/unload-se! "path/to/fuga.ogg")
(audio3/unload-se! :se/fuga)
- å šãŠã®SEã¯ããªããŒããããã¯åçã®éã«å éšçã«ãã£ãã·ã¥ãããããã£ãŠããäžåºŠé³ŽããããããäºåºŠãšé³ŽãããªãããããªSEãã©ãã©ã倧éã«é³Žãããããªã±ãŒã¹ã§ã¯ãã¢ã³ããŒããè¡ããªããšã¡ã¢ãªãªãŒã¯ããŠããŸãã
- ã¢ã³ããŒãåŸã¯ãåè¿°ã®
loaded-se?
ãšsucceeded-to-load-se?
ã¯åœå€ãè¿ãããã«ãªãã - ã¢ã³ããŒãåŸã«ãã¢ã³ããŒãããSEãåçããããšããå ŽåããŸãããªããŒãããŠå éšãã£ãã·ã¥ããŠããã®åçãšãªãã
- ããªããŒãäžã«ã¢ã³ããŒããè¡ã£ãå ŽåãããªããŒãèªäœãåãæ¶ãããã
-
BGMç³»ã®ããªããŒããè¡ã
(audio3/preload-bgm! "path/to/hoge.ogg")
(audio3/preload-bgm! :bgm/hoge)
- BGM/BGS/MEã¯ã©ãããBGMç³»ããšããŠãããªããŒãæã«ã¯å šãŠåãæ±ããšãªã
- 泚æç¹ãšããŠãBGMç³»ã¯SEãšã¯éããåã«
bgm!
çãå®è¡ããã ãã§ã¯å éšãã£ãã·ã¥ç¶æ ãšã¯ãªããªãããªããªãBGMç³»ã¯ãå³åº§ã«åçããªããšãããªãããšããèŠä»¶ãããã±ãŒã¹ãããŸããªãããŸãäžæ²ã®ã¡ã¢ãªæ¶è²»ã倧ããå Žåãå€ãããã§ãããæ瀺çã«preload-bgm!
ãå®è¡ããæã®ã¿ãããªããŒãç¶æ ã«ãªãã
-
BGMç³»ã®ããªããŒããå®äºããŠãããã調æ»ãã
(audio3/preloaded-bgm? "path/to/hoge.ogg")
(audio3/preloaded-bgm? :bgm/hoge)
(audio3/succeeded-to-preload-bgm? "path/to/hoge.ogg")
(audio3/succeeded-to-preload-bgm? :bgm/hoge)
- ãããã«ã€ããŠã¯SEã®ãã®ãšã»ãŒåæ§ã
- æ瀺çã«ããªããŒãå®äºãåŸ
ããªããŠã
bgm!
ç³»ã®å®è¡ã¯è¡ãã(ãã¡ããããŒãå®äºåŸ ã¡ã¯çºçããã)ã
-
BGMç³»ã®ã¢ã³ããŒããè¡ã
(audio3/unload-bgm! "path/to/hoge.ogg")
(audio3/unload-bgm! :bgm/hoge)
- ãããSEã®ãã®ãšã»ãŒåæ§ã
ããªã»ããé³æºã®ã¿ããŸãšããŠ(åå¥ã«ãã¡ã€ã«ãæå®ããã«)ããªããŒããè¡ãäºãã§ããã
(ããªããŒããè¡ããªããŠãããªã»ããã¯å©çšå¯èœã ãããã®å Žåã¯ååå®è¡æã«ããŒãã«ããåçé 延ãçºçãã)
- cljsãããžã§ã¯ãã®
resources/public/audio/
é äžã®bgm/
bgs/
me/
se/
ãã£ã¬ã¯ããªããããªã»ããé³æºã®åãã£ã¬ã¯ããªãšããŠæ±ããããããã«åé³æºãã¡ã€ã«ãå ¥ããŠãã
以äžã®å®è¡ã«ãããBGM/BGS/ME/SEå¥ã«ãå šããªã»ããã®ããªããŒããè¡ãã
(audio3/preload-all-bgm-preset!)
(audio3/preload-all-bgs-preset!)
(audio3/preload-all-me-preset!)
(audio3/preload-all-se-preset!)
以äžã®å®è¡ã«ãããå šããªã»ããã®ããªããŒããè¡ãã
(audio3/preload-all-preset!)
- ãã ããBGMã¯ããªããŒãããªãæ¹ãããå Žåãå€ããäœæ
ãªããBGMã倧éã«ããå Žåã«å
šBGMããªã³ã¡ã¢ãªãä¿æããã®ã¯ã¡ã¢ãªã³ã¹ããé«ãçºããªã®ã§éåžžã¯
(audio3/preload-all-se-preset!)
çãåå¥ã«å®è¡ããäºãæ€èšããæ¹ãããã
- ãã ããBGMã¯ããªããŒãããªãæ¹ãããå Žåãå€ããäœæ
ãªããBGMã倧éã«ããå Žåã«å
šBGMããªã³ã¡ã¢ãªãä¿æããã®ã¯ã¡ã¢ãªã³ã¹ããé«ãçºããªã®ã§éåžžã¯
ããããªã»ããåŽã«äœããã®äžå(oggãšmp3ã®äž¡æ¹ãæã£ãŠããªãç)ãããå Žåãäžèšã®ããªããŒãå®è¡æã«alertã衚瀺ãããã
- node-webkitãcordovaçã®ç°å¢ã§ãããã©ãŠã¶ç°å¢ãåºå®ãããŠããããoggã ãã®æäŸã§ããããšããå Žåã¯ããããã®é¢æ°ã®åŒæ°ã«
true
ãæž¡ãäºã§ããã®alertãæå¶ã§ããã
äžèšã®ããªããŒã察象ãã¡ã€ã«ã®äžèŠ§ã®ååŸã¯ãã³ã³ãã€ã«ãã§ãŒãºã«è¡ãããã
ãã®äžèŠ§ã¯ããªã»ããããŒã¯ãŒãåãããŠã以äžã®å€æ°ã«ä¿æãããŠããã
audio3/preset-bgm-keys
audio3/preset-bgs-keys
audio3/preset-me-keys
audio3/preset-se-keys
ãã®ããªããŒãåŠçã¯éåæ(ããã¯ã°ã©ãŠã³ã)ã§è¡ãããçºããæåã«ããŒãã£ã³ã°ç»é¢ãåºããŠãããªããŒããå®äºããã®ãåŸ
ã€ããããªæåãè¡ãããå Žåã¯ãäžèšã®ããªã»ããããŒã¯ãŒãäžèŠ§ãä¿æããŠããå€æ°ãããå®æçã« preloaded-bgm?
ããã³ loaded-se?
ãå®è¡ããå
šãŠã®ããŒãçå€ãè¿ãã®ãåŸ
ã€ããã«ããã°ãããçå€ã®åæ°ãæ°ããäºã«ãã£ãŠããã°ã¬ã¹è¡šç€ºãè¡ãäºãå¯èœã
-
å éšã§å©çšããŠãããåçç°å¢çš®å¥ãååŸãã
audio3/terminal-type
#{:tablet :mobile :android :ios :chrome :firefox}
ã®ãããªããŒã¯ãŒãã®å ¥ã£ãset:tablet
ã¯ã¿ãã¬ããã£ãœã端æ«å šè¬(iPad, android tablet, windows tablet):mobile
ã¯æºåž¯ã£ãœã端æ«å šè¬(iPhone, android, windows phone):android
ã¯androidå šè¬:ios
ã¯iOSå šè¬:chrome
ã¯chromeå šè¬(PC/ã¢ãã€ã«åãã®äž¡æ¹å«ã):firefox
ã¯firefoxå šè¬(PC/ã¢ãã€ã«åãã®äž¡æ¹å«ã)
- äžèšã®å€å®ã¯
User-Agent
ããããå ã«å€å®ããŠããçºãå®éã®åçç°å¢ãšã¯ç°ãªãå Žåãæ®éã«ããã
-
ããã¯ã°ã©ãŠã³ãæã«ã匷å¶çã«SEã鳎ãã
(audio3/alarm! "path/to/fuga.ogg")
(audio3/alarm! :se/fuga)
- ååã®éããã¢ã©ãŒã éç¥çšé
- è¿œå åŒæ°çã¯
se!
ãšåæ§
-
ããªã¥ãŒã å€å€æãŠãŒãã£ãªãã£
(audio3/float->percent f)
=>
0ïœ100- vnctst-audio3ã§ã®ããªã¥ãŒã å€(0.0ïœ1.0)ããããŒã»ã³ã衚瀺ããçºã®0ïœ100ã®æŽæ°å€ã«å€æãããŠãŒãã£ãªãã£ã
(audio3/percent->float p)
=>
0.0ïœ1.0float->percent
ã®éå€æãè¡ãã
(ns hoge.fuga
;; å®äºåŸ
ã¡ã®èª¬æã®çºã« core.async ãå©çšãã
(:require-macros [cljs.core.async.macros :refer [go go-loop alt!]])
(:require [vnctst.audio3 :as audio3]
[cljs.core.async :as async :refer [>! <!]]))
;; æåã«ãããå®è¡ãåŒæ°ã¯çç¥å¯èœ
(audio3/init! :fallback-ext "mp3"
:url-prefix "audio/"
:dont-stop-on-background? false
:always-mute-at-mobile? true
:debug? true
:never-use-webaudio? false
:never-use-htmlaudio-at-mobile? false
)
;; ããŒã¹é³éã®èšå®ããã³ååŸ
(audio3/set-volume-master! 0.5)
(audio3/set-volume-bgm! 0.5)
(audio3/set-volume-se! 0.5)
(audio3/get-volume-master)
(audio3/get-volume-bgm)
(audio3/get-volume-se)
;; ããªã»ããã®ããŒããéå§
(audio3/preload-all-preset!)
;; oggã®ã¿çšæããå Žåã¯åŒæ°ã«trueãæž¡ã(ãšã©ãŒæ€åºæå¶)
;; (audio3/preload-all-preset! true)
;; ãããã¯ãåå¥ã«ä»¥äžãå®è¡
;; (audio3/preload-all-bgm-preset!)
;; (audio3/preload-all-bgs-preset!)
;; (audio3/preload-all-me-preset!)
;; (audio3/preload-all-se-preset!)
;; å
šããªã»ããã®ããªããŒãã®å®äºåŸ
ã¡äŸ
(doseq [[ks bgm?] [[audio3/preset-bgm-keys true]
[audio3/preset-bgs-keys true]
[audio3/preset-me-keys true]
[audio3/preset-se-keys false]]]
(let [loaded? (if bgm? audio3/preloaded-bgm? audio3/loaded-se?)
succeeded? (if bgm?
audio3/succeeded-to-preload-bgm?
audio3/succeeded-to-load-se?)]
(go-loop []
(<! (async/timeout 1000))
(if-not (empty? (remove loaded? ks))
(recur)
(let [errors (remove succeeded? ks)]
(js/console.log "Completed to load all presets")
(when-not (empty? errors)
(js/console.log (str "But failed to load "
(pr-str errors)))))))))
;; åç
(audio3/play! :bgm/bach)
(audio3/play! :bgs/wind)
(audio3/play! :me/jingle)
(audio3/play! :se/beep)
(audio3/bgm! "path/to/bach.ogg")
(audio3/bgs! "path/to/wind.ogg")
(audio3/me! "path/to/jingle.ogg")
(audio3/se! "path/to/beep.ogg")
;; pathæå®ã®å Žåã¯ãåçå¯èœã¡ãã£ã¢çš®å¥ã®å€å®ãè¡ã£ãæ¹ãããè¯ã
(if (audio3/can-play-ogg?)
(audio3/play-se! "path/to/hoge.ogg")
(audio3/play-se! "path/to/hoge.mp3"))
(audio3/can-play-mp3?)
(audio3/can-play-m4a?)
(audio3/can-play? "audio/ogg")
;; volume, pitch, pan ãæå®ããŠåç
(audio3/play! :bgm/bach 1.5 1.2 -1)
;; ããã¯ã°ã©ãŠã³ãæ¶é³ãç¡èŠããŠSEåç
(audio3/alarm! :se/beep)
;; åæ¢
(audio3/stop-bgm!) ; ãã§ãŒãã¢ãŠã1ç§ã§åæ¢
(audio3/stop-bgm! 3) ; ãã§ãŒãã¢ãŠã3ç§ã§åæ¢
(audio3/stop-bgm! 0) ; ãã§ãŒãã¢ãŠããªãã§å³åº§ã«åæ¢
(audio3/stop-bgs!) ; BGSã®åæ¢ã¯å¥æ±ã(BGMãšMEã¯å
±é)
;; SEã®åæ¢ã«ã¯SEã®åçãã£ã³ãã«ãæå®ããå¿
èŠããã
(go
(let [ch (audio3/play! :se/siren)]
(<! (async/timeout 500))
(audio3/stop-se! ch)))
;; åå¥ããªããŒã/ã¢ã³ããŒã
(go
(audio3/preload-bgm! "path/to/hoge.ogg")
(audio3/preload-se! :se/beep)
(<! (async/timeout 10000))
;; å
ã«ããªããŒãããŠããã°ãåååçæã§ãããŒãåŸ
ã¡ç¡ãã«åçå¯èœ
(audio3/bgm! "path/to/hoge.ogg")
(audio3/play! :se/beep)
(<! (async/timeout 10000))
;; ä»åŸããåçããªããªããã¢ã³ããŒãããŠã¡ã¢ãªã解æŸããŠãã
(audio3/unload-bgm! "path/to/hoge.ogg")
(audio3/unload-se! :se/beep)
)
;; MEåçãçµãããŸã§åŸ
ã€ãµã³ãã«
(do
(audio3/play! :me/jingle)
(go-loop []
(<! (async/timeout 1000))
(if (audio3/playing-bgm?)
(recur)
(js/console.log "Done to play BGM"))))
;; ãã®ä»ã®ãŠãŒãã£ãªãã£
(when-not (:mobile audio3/terminal-type)
(audio3/play! :se/beep))
cljsçã®äœ¿ãæ¹ã¯ãã¡ã
ããã¯æ¬æ¥cljsåãã®ãã®ãªã®ã§ãjsçã§ã¯ä»¥äžã®å¶çŽãããã
- ãã¡ã€ã«ãµã€ãºã倧ãããããŒãã«æéãããã
- ä»ã®cljsããŒã¹ã®jsã©ã€ãã©ãªãšåæã«å©çšã§ããªã(ã»ãšãã©ãªããšã¯æãã)
- ã³ã³ãã€ã«ãã§ãŒãºããªãçºãããªã»ããã®ãŸãšãããªããŒããã§ããªã(åå¥ããªããŒãã¯å¯èœ)
ãã¡ã€ã«ãµã€ãºåé¡ã«ã€ããŠã¯ãvnctst-audio3ã®ä»æ§ãSpecificationsã»ã¯ã·ã§ã³ã«ãŠå ¬éããŠããã®ã§ãããæ°ã®ããæ¹ã¯jsãtsã«ç§»æ€ããŠãããã§ãããã
- å梱ã®
vnctst-audio3.js
ãã¡ã€ã«ãé©åãªå Žæã«é 眮ããvnctst-audio3.js
㯠https://github.com/ayamada/vnctst-audio3/releases ãããããŠã³ããŒãã§ããŸã
- htmlãã¡ã€ã«ã«
<script src="vnctst-audio3.js" type="text/javascript"></script>
ã¿ã°ãå ¥ããvnctst-audio3.js
ãã¡ã€ã«ãããŒããã- åè¿°ã®éããã¡ã€ã«ãµã€ãºã倧ããçºããã®scriptã¿ã°ãå ¥ããã®ã¯bodyã®æåŸã«ããŠãããŒããå®äºãããŸã§ã¯LOADING衚瀺ãåºãçã®å¯Ÿå¿ãããæ¹ãããè¯ã
- äœããã®httpãµãŒããçšæããããçµç±ã§htmlãã¡ã€ã«ãéã
- ããŒã«ã«htmlãã¡ã€ã«ããã®ãŸãŸãã©ãŠã¶ã§éããšãé³é¿ãã¡ã€ã«ã®ããŒãã«å€±æããçº(ããã¯ã©ã®åçã©ã€ãã©ãªã§ãåã)
- httpãµãŒããçšæããã®ãé¢åãªå Žåã¯ãDropboxã®publicãã©ã«ãå ã®ã©ããã«htmlãã¡ã€ã«ãé 眮ãããã®å ¬éãªã³ã¯ã®æ¹ããã©ãŠã¶ã§éãã°æ軜ã«ç¢ºèªã§ãããããããã
vnctst.audio3.js.init()
ãå®è¡ãã- â»ãããå®è¡ãå¿ããŠãããšãé³æºãã¡ã€ã«ãåçããããšããŠãã
vnctst.audio3 is not initialized !!!
ããšãããã°ãã³ã³ãœãŒã«ã«åºåããã ãã§äœãè¡ããŸãããå¿ããå®è¡ããŠãã ããã vnctst.audio3.js.init({...})
ã®ããã«åŒæ°ãäžããäºã§æåãã«ã¹ã¿ãã€ãºå¯èœ(çç¥å¯)ããã©ã¡ãŒã¿ã¯ä»¥äžã®éã"fallback-ext": "æ¡åŒµå"
- ããªã»ããé³æº(åŸè¿°)ã¯oggãåªå
ããŸãããoggãåçã§ããªãå Žåã®æ¡åŒµåãæå®ããŸããçç¥æã¯
"mp3"
ã§ãããã¯ãŒã«MVæºæ ã«ãããå Žåã¯"m4a"
ã«ãããšããã§ãããã
- ããªã»ããé³æº(åŸè¿°)ã¯oggãåªå
ããŸãããoggãåçã§ããªãå Žåã®æ¡åŒµåãæå®ããŸããçç¥æã¯
"url-prefix": "path/to/audio/"
- ããªã»ããé³æº(åŸè¿°)ã®é
眮urlã®prefixãæå®ããŸããçç¥æã¯
"audio/"
ã§ããéåžžçšéã§ã¯ãæ«å°Ÿã®ã¹ã©ãã·ã¥ã¯å¿ é ã§ããéåžžã¯ãããå€æŽããäºã¯ãããŸããã
- ããªã»ããé³æº(åŸè¿°)ã®é
眮urlã®prefixãæå®ããŸããçç¥æã¯
"dont-stop-on-background?": çåœå€
- ããã©ã«ãã§ã¯ãããŒãžã®ã¿ããããã¯ã°ã©ãŠã³ãã«ãªã£ãå Žåã«èªåçã«BGMãäžæåæ¢ããŸã(äžéšã察å¿ããŠããªããã©ãŠã¶ããããŸã)ãçå€ãæå®ããäºã§ãã®æåãç¡å¹åã§ããŸãã
"always-mute-at-mobile?": çåœå€
- çå€ãæå®ããäºã§ã
User-Agent
ããããã¢ãã€ã«ç°å¢ã£ãœãå Žåã«é³é¿åçãåžžæãã¥ãŒãç¶æ ã«ããŸããçŸæç¹ã§ã¯ã¢ãã€ã«å¯Ÿå¿ã«äžå®å šãªéšåããããããäžå®å šãªå¯Ÿå¿ã蚱容ã§ããªãå Žåã¯çå€ãæå®ããŠãã ããã
- çå€ãæå®ããäºã§ã
"debug?": çåœå€
- çå€ãæå®ããäºã§ãåçåäœã®åŒã³åºããããã¡ã€ã«ã®ããŒããšã©ãŒçã®åçš®æ å ±ãã³ã³ãœãŒã«ã«åºåããããã«ãªããŸããåœã©ã€ãã©ãªã¯åºæ¬çã«ãšã©ãŒããã£ãŠãäŸå€ã¯æããªãããªã·ãŒãšããŠããçºããšã©ãŒã®æ€ç¥ã«ã¯ãã®ãªãã·ã§ã³ã®èšå®ãå¿ é ã§ãããããã°ãã«ãã§ã¯çã«ããªãªãŒã¹ãã«ãã§ã¯åœã«ãªãããã«äžæãèšå®ãããšããã§ãããã
"never-use-webaudio?": çåœå€
- WebAudioãåžžã«ç¡å¹åããã(ã€ãŸãHtmlAudioã®ã¿äœ¿ãããã«ããã)æã«çå€ãæå®ããŸããããã¯åºæ¬çã«ã¯åœã©ã€ãã©ãªã®éçºè åãã®æ©èœã§ãã
"never-use-htmlaudio-at-mobile": çåœå€
- http://ch.nicovideo.jp/indies-game/blomaga/ar1147258 ãžã®å¯ŸçãšããŠãã¢ãã€ã«ç°å¢ã£ãœãå Žåã§ã®HtmlAudioã®äœ¿çšãçŠæ¢ããŸã(WebAudioã®äœ¿ããªãç°å¢ã§ã¯åžžæãã¥ãŒãç¶æ ãšãªããŸã)ã
- ãã®
init()
ãè€æ°åå®è¡ããå Žåãäºåç®ä»¥éã®å®è¡ã¯ç¡èŠãããŸã(ã€ãŸãåŸããäžèšãã©ã¡ãŒã¿ãåèšå®ããäºã¯ã§ããŸãã)
- â»ãããå®è¡ãå¿ããŠãããšãé³æºãã¡ã€ã«ãåçããããšããŠãã
ãªã vnctst.audio3.js.init()
ãé·ããŠå«ãªå Žå㯠var va3 = vnctst.audio3.js
ãå®è¡ããŠããã° va3.init()
ã§å®è¡ã§ããŸããããã¯init()
以å€ã§ãåæ§ã§ãã
-
BGMã鳎ãã(åæ¢ããããŸã§ã«ãŒãåçãç¶ãã)
vnctst.audio3.js.bgm("path/to/hoge.ogg")
- urlãæå®å¯èœã ãããã®å Žåã¯CORSèšå®ãå¿ èŠãšãªãã±ãŒã¹ãããäºã«æ³šæã
- ãã©ãŠã¶ããããŒã«ã«htmlãã¡ã€ã«ãçŽã«éããå Žåã¯äžæãåçã§ããªã(ããã¯ã©ã®åçã©ã€ãã©ãªã§ãåã)ãäœããã®httpãµãŒãè¶ãã«ã¢ã¯ã»ã¹ããäºã
-
ME(éã«ãŒãæ²)ãåçãã(æ²ã®æåŸã«å°éããããã®ãŸãŸåçãçµäºãã)
vnctst.audio3.js.me("path/to/fuga.ogg")
-
ä»é³ŽãããŠããBGM/MEããã§ãŒãã¢ãŠããããŠ(ãããã¯å³åº§ã«)åæ¢ãã
vnctst.audio3.js.stopBgm()
ãã§ãŒãã¢ãŠã1ç§(ããã©ã«ãå€)ãããŠåæ¢vnctst.audio3.js.stopBgm(3)
ãã§ãŒãã¢ãŠã3ç§ãããŠåæ¢vnctst.audio3.js.stopBgm(0)
å³åº§ã«åæ¢- æ¢ã«BGMãåæ¢ç¶æ ã®æã¯äœãèµ·ãããªã
- æ¢ã«BGMããã§ãŒãäžã®æãåºæ¬çã«ã¯äœãèµ·ãããªããããæå®ç§æ°ãéãæã®ã¿èšå®ãäžæžãããã(é©åã«ããã§ãŒãã®ãŸã æ®ã£ãŠããéšåãæ°ãããã§ãŒãé床ãžãšå€æŽããã)
-
ä»é³Žã£ãŠããBGMããã§ãŒãã¢ãŠãçµäºãããŠãã次ã®æ²ãåçãã
vnctst.audio3.js.bgm("path/to/foo.ogg")
- ããã¯äžã®ãBGMã鳎ãããã®ãšå šãåãã³ãŒãã ããããã§ãçŸåšã®æ²ããã§ãŒãã¢ãŠãçµäºãããŠãã次ã®æ²ãåçããããšããæåãšãªã
- çŸåšé³ŽãããŠããæ²ãšå šãåäžã®æ²ãæå®ãããå Žåã¯äœãèµ·ãããªã
- ãã§ãŒãã¢ãŠãäžã«å¥ã®æ²ãåäžæ²ã®åçèŠæ±ãè¡ãããå Žåã¯ãå éšã§é©åã«åŠçãããäºãä¿èšŒããã(åäžæ²ã ã£ãå Žåã¯ãã§ãŒãã€ã³ããŠå ã«æ»ã)ããã®èŸºãã¯å éšã§ã¯è€éãªç¶æ é·ç§»ãæã€ããå€ããå©çšããéã«ãããæ°ã«ããå¿ èŠã¯ãªããéã«æ±ã£ãŠããã
-
SE(å¹æé³)ã鳎ãã(è€æ°çš®é¡ãããã¯åäžã®é³æºãã¡ã€ã«ãå€éåçããäºãå¯èœ)
vnctst.audio3.js.se("path/to/fuga.ogg")
- SEã¯ã€ãã³ãæ¯ã«é³Žããã±ãŒã¹ãå€ãããè€æ°ã®ã€ãã³ããåæçºç«ããŠåãå¹æé³ãåæã«é³ŽãããŠããŸããšããããéãªã£ãŠçµæãšããŠé³éã®å¢å¹ ãèµ·ãããé³å²ããèµ·ããäºãããããããé²ãçºã«ãéåžžã«è¿ãã¿ã€ã ã¹ã©ã€ã¹(ããã©ã«ãã§ã¯50msec以å )ã§ã®åãå¹æé³ã®åçã¯æå¶ããããã«ããŠããã
äžèšã®ãæãåçŽãªäœ¿ãæ¹ãã§ã¯ãçŽã«pathãæå®ããŠããã
ãããå®éã®åçç°å¢ã§ã¯ãoggãåçå¯èœã§ãªãç°å¢ã§ã¯ã代ããã«mp3ãm4açã®å¥ã®é³æºãã¡ã€ã«ãåçãããå¿ èŠããã(äœæ ããšãããšãoggãmp3ãm4aãããããã䜿ã£ãŠããã°ãã©ã®ãã©ãŠã¶ç°å¢ã§ãåçå¯èœã ããšããèš³ã«ã¯ãããªãçº)ã
ããã§ã以äžã®ãããªæå®æ¹æ³ãå¯èœãšããã以åŸããã§ã¯ããã®æå®æ¹æ³ããããªã»ããæå®ããšåŒã¶ã
-
vnctst.audio3.js.play({bgm:"hoge"})
- ããã¯
vnctst.audio3.js.bgm("audio/bgm/hoge.ogg")
ãããã¯vnctst.audio3.js.bgm("audio/bgm/hoge.mp3")
ãšããŠå®è¡ããã- ã©ã¡ãã«ãªããã¯ãoggãåçå¯èœãªãåè ãããã§ãªããã°åŸè ãšãªã
- ããã§å®éã«å±éãããpathäœçœ®ãoggåçäžå¯æã®æ¡åŒµåçã¯ãåè¿°ã®
init()
ã®ãªãã·ã§ã³å€ã«ãã£ãŠå€æŽå¯èœ - ãã¡ããã
"audio/bgm/hoge.ogg"
ãš"audio/bgm/hoge.mp3"
ã®äž¡æ¹ã®ãã¡ã€ã«ãäºåã«èšçœ®ããŠããå¿ èŠããã(çæ¹ã ãã§ã¯é§ç®ããã ãåŸè¿°ã®cordovaçã§åçãã©ãŠã¶ç°å¢ãåºå®ã§ããå Žåãoggã®ã¿ã«ããäºã¯å¯èœ)ã
- ããªã»ããã®keyéšã«æå®ã§ããã®ã¯
bgm
se
bgs
me
ã®åçš®é¡ã ããã€ãŸã"audio/bgm/"
"audio/se/"
"audio/bgs/"
"audio/me/"
ã®äžã«èšçœ®ããé³æºãã¡ã€ã«ã®ã¿ãããªã»ããæå®ããäºãå¯èœãšãªã(ãã以å€ã«èšçœ®ãããã¡ã€ã«ã¯æååã§ã®pathæå®ã«ãããããªã)
- ããã¯
-
vnctst.audio3.js.play({se:"fuga"})
- äžèšåæ§ã«
vnctst.audio3.js.se("audio/se/fuga.ogg")
ãããã¯vnctst.audio3.js.se({"audio/se/fuga.mp3")
ãšããŠå®è¡ããã
- äžèšåæ§ã«
-
vnctst.audio3.js.me({se:"fuga"})
vnctst.audio3.js.me("audio/se/fuga.ogg")
ãããã¯vnctst.audio3.js.me("audio/se/fuga.mp3")
ãšããŠå®è¡ããã"audio/se/"
é äžã«çœ®ãããã¡ã€ã«ã§ãã£ãŠããSE以å€ã®çš®å¥(BGM/BGS/ME)ãšããŠåçãããäºã¯å¯èœããšãããµã³ãã«äŸ(ãã ããéåžžã«åããã¥ãã)ã
ãšããããããããŸã§ã§ãé©åœã«audio/
é
äžã«é
眮ããé³æºãã¡ã€ã«ãBGMãSEãšããŠäžçºã§åçã§ãããããBGMãã§ãŒãã¢ãŠãåŠçãåäžSEå€éåç管çãé©åã«è¡ã£ãŠãããããã®ãšããŠå©çšã§ããã
- é³éèšå®ãå€æŽ/ååŸãã
- é³éèšå®å€ã¯å šãŠ0.0ïœ1.0ã®æ°å€ã§è¡šçŸãããã
vnctst.audio3.js.setVolumeMaster(0.5)
- ãã¹ã¿ãŒããªã¥ãŒã ãèšå®ãããåæå€ã¯0.5ã
- ãã¹ã¿ãŒããªã¥ãŒã ã¯å šäœã«åœ±é¿ããé³éãåæç¶æ ã®å Žåããã¹ã¿ãŒã¯0.5ãåå¥ããªã¥ãŒã ã0.5ãªã®ã§ãçµæãšããŠãäœãèšå®ããªãå Žåã¯æ倧é³éã®25%ã§åçãããäºã«ãªãã
vnctst.audio3.js.setVolumeBgm(0.5)
- BGM/BGS/MEã®åºæ¬ããªã¥ãŒã ãèšå®ãã(SE以å€ã¯å ±é)ãåæå€ã¯0.5ã
vnctst.audio3.js.setVolumeSe(0.5)
- SEã®åºæ¬ããªã¥ãŒã ãèšå®ãããåæå€ã¯0.5ã
vnctst.audio3.js.getVolumeMaster()
=>
0.0ïœ1.0- ãã¹ã¿ãŒããªã¥ãŒã ãååŸãã
vnctst.audio3.js.getVolumeBgm()
=>
0.0ïœ1.0- BGM/BGS/MEã®åºæ¬ããªã¥ãŒã ãååŸãã
vnctst.audio3.js.getVolumeSe()
=>
0.0ïœ1.0- SEã®åºæ¬ããªã¥ãŒã ãååŸãã
-
ãã®ç°å¢ã«ãŠãç¹å®çš®å¥ã®é³æºãã¡ã€ã«ãåçå¯èœãã調ã¹ã
vnctst.audio3.js.canPlayOgg()
=>
true or false
vnctst.audio3.js.canPlayMp3()
=>
true or false
vnctst.audio3.js.canPlayM4a()
=>
true or false
vnctst.audio3.js.canPlay("audio/ogg")
=>
true or false
- ãã®ãã§ãã¯ãè¡ããã«çŽã«åçããããšããŠå€±æããŠãå¥ã«ãšã©ãŒã¯æããããªã(ãããã°ãã©ã°ããªã³ã«ããŠããã°ã³ã³ãœãŒã«ã«ãšã©ãŒæ å ±ã¯åºåããã)ã®ã§ããã©ãããŠãåçãããªããšå°ãããããªç¶æ³ã§ãªããªãããã®ãã§ãã¯ãè¡ããªããŠãå¥ã«åé¡ã¯ãªãããŸãåè¿°ã®ããªã»ããæå®ãè¡ãã°ãå éšã§é©åã«ãã®å€å®ãè¡ã£ãŠããã
-
åçéå§æã«ãåå¥ã«volume(é³é), pitch(åçé床ã¬ãŒã), pan(å·Šå³ã®ãã©ã³ã¹)ãæå®ãã
vnctst.audio3.js.play({bgm:"hoge"}, 1.5, 1.2, -1.0)
vnctst.audio3.js.play({se:"fuga"}, 0.15, 0.8, 1.0)
vnctst.audio3.js.bgm("path/to/hoge.ogg", 1.5, 1.2, -1.0)
vnctst.audio3.js.se("path/to/fuga.ogg", 0.15, 0.8, 1.0)
play
bgm
se
çã«å¯ŸããŠãæŽã«è¿œå ã®åŒæ°ãšããŠvolume
pitch
pan
ã®äžã€ã®æ°å€ãæå®å¯èœ- volumeã¯0以äžã®å°æ°å€ãæå®ãããçç¥æ㯠1.0 ãæå®ããããã®ãšããŠæ±ãããã
- ããã«ã¯1.0以äžã®å€ãæå®ããäºãå¯èœããã ãåè¿°ã®ãã¹ã¿ãŒããªã¥ãŒã ããã³åããªã¥ãŒã èšå®ãä¹ç®ããæçµçµæã1.0以äžã«ãªãå Žåã¯1.0ã«ãªãç¶æ ã§é æã¡ãšãªã(ã€ãŸãåæç¶æ ã®ãŸãŸãªããvolumeã«4.0以äžãæå®ããŠãã4.0ãæå®ããæãšåãåçé³éãšãªããããããã倧ããããäºã¯ã§ããªã)
- pitch㯠0.1 ïœ 10.0 ã®å°æ°å€ãæå®ãããçç¥æ㯠1.0 ãšããŠæ±ããããå°ãããããšãã£ããããåçãšãªãã倧ãããããšå éããåçãšãªã
- pan㯠-1.0 ïœ 1.0 ã®å°æ°å€ãæå®ãããçç¥æ㯠0 ãšããŠæ±ãããã -1.0 ãæãå·Šå¯ãã 1.0 ãæãå³å¯ããšãªã
- pitchããã³panã«ã€ããŠã¯ãåæ ãããªãå®è¡ç°å¢ãããäºã«æ³šæ(WebAudioã§ãã£ãŠãé察å¿ãªãã©ãŠã¶ãæ®éã«ãã)
- volumeã¯0以äžã®å°æ°å€ãæå®ãããçç¥æ㯠1.0 ãæå®ããããã®ãšããŠæ±ãããã
-
å¹æé³ãéäžã§åæ¢ããã
var seCh = vnctst.audio3.js.se("path/to/fuga.ogg");
setTimeout(function () { vnctst.audio3.js.stopSe(seCh) }, 1000);
vnctst.audio3.js.se()
(ããã³vnctst.audio3.js.play()
ã«ãŠ{se:"..."}
ç³»ãæå®ããå Žå)ã¯åçããšã®ãã£ã³ãã«ãè¿ããvnctst.audio3.js.stopSe()
ã«ã¯ããã®åçãã£ã³ãã«ãåŒæ°ãšããŠæž¡ãå¿ èŠããã- æ¢ã«åçå®äºãããã£ã³ãã«ã
vnctst.audio3.js.stopSe()
ã«æž¡ããŠããäœãèµ·ãããªã - éäžã§åæ¢ãããå¿
èŠããªããã°ã
se()
ã®è¿ããã£ã³ãã«ã¯ç¡èŠããŠãåé¡ãªã(åççµäºåŸã«é©åã«GCããã)
-
BGMãåçäžãã©ããã調ã¹ã
vnctst.audio3.js.isPlayingBgm()
- BGM, MEãåçäžãªãçå€ãè¿ã
-
BGSãåç/åæ¢ãã
- BGSãšã¯ãBGMãšäžŠè¡ããŠåçã§ããã«ãŒãé³æºã人ãã¿ã®é³ã颚ã®é³ãéšé³ããšãã£ãç°å¢é³ããBGMãšåæã«åçããäºãæ³å®ããŠãã
vnctst.audio3.js.bgs("path/to/foo.ogg")
vnctst.audio3.js.play({bgs:"foo"})
vnctst.audio3.js.stopBgs()
- è¿œå ã®åŒæ°ã«ã€ããŠã¯BGMãšåã
-
BGSãåçäžãã©ããã調ã¹ã
vnctst.audio3.js.isPlayingBgs()
- BGSãåçäžãªãçå€ãè¿ã
-
SEã®ããªããŒããè¡ã
vnctst.audio3.js.preloadSe("path/to/fuga.ogg")
vnctst.audio3.js.preloadSe({se:"fuga"})
- äºåã«ããªããŒããè¡ãäºã§ãåååçæã«å éšã§é³æºãã¡ã€ã«ã®ããŒãã£ã³ã°ãè¡ããã«ãã¿ãåååçæã§ãé 延ãªãå³åº§ã«SEãåçã§ããããã«ãªãã
- ããªããŒãã¯éåæå®è¡ãããã
-
SEã®ããªããŒããå®äºããŠãããã調æ»ãã
vnctst.audio3.js.isLoadedSe("path/to/fuga.ogg")
vnctst.audio3.js.isLoadedSe({se:"fuga"})
- ããªããŒããå®äºããŠãããªãçå€ãè¿ãã
se()
(ããã³play()
ã«{se:"..."}
ç³»ã®ããŒãæå®ããå Žå)ãå éšã§ããªããŒããè¡ã£ãŠããçºãpreloadSe()
ãå®è¡ããŠããªããŠããäžåºŠã§ã鳎ãããäºã®ããSEã¯ãããã«ãã£ãŠçå€ãè¿ãã- 泚æç¹ãšããŠãããŒãæã«äœããã®ãšã©ãŒ(ãã¡ã€ã«ããªãç)ãçºçããã±ãŒã¹ã§ãçå€ãè¿ã(ããšã©ãŒãèµ·ãã£ãããããŒãèªäœã¯å®äºããããšããæ±ã)ããšã©ãŒãæ€åºãããå Žåã¯åŸè¿°ã®
isSucceededToLoadSe()
ã䜿ãäºã
vnctst.audio3.js.isSucceededToLoadSe("path/to/fuga.ogg")
vnctst.audio3.js.isSucceededToLoadSe({se:"fuga"})
- ããªããŒããå®äºããåçãå¯èœãªç¶æ ã«ãªã£ãŠããã°çå€ãè¿ãã
isLoadedSe()
ãšã®éãã¯ããŒããšã©ãŒã®æ±ãããšã©ãŒæã¯åœå€ã«ãªãã- ããåäœã§ã¯ããŒãå®äºåŸ
ã¡ã«ã¯äœ¿ããªãäºã«æ³šæãããŒãå®äºåŸ
ã¡ãããã«ã¯åè¿°ã®
isLoadedSe()
ã®æ¹ãé©åã
- ããªããŒãäžã«
se()
ãå®è¡ãããå ŽåãããªããŒããå®äºãããŸã§åçã¯é 延ãã(éåžžã®ããªããŒããªãåååçã®æãšåãæå)ã
-
SEã®ã¢ã³ããŒããè¡ã
vnctst.audio3.js.unloadSe("path/to/fuga.ogg")
vnctst.audio3.js.unloadSe({se:"fuga"})
- å šãŠã®SEã¯ããªããŒããããã¯åçã®éã«å éšçã«ãã£ãã·ã¥ãããããã£ãŠããäžåºŠé³ŽããããããäºåºŠãšé³ŽãããªãããããªSEãã©ãã©ã倧éã«é³Žãããããªã±ãŒã¹ã§ã¯ãã¢ã³ããŒããè¡ããªããšã¡ã¢ãªãªãŒã¯ããŠããŸãã
- ã¢ã³ããŒãåŸã¯ãåè¿°ã®
isLoadedSe()
ãšisSucceededToLoadSe()
ã¯åœå€ãè¿ãããã«ãªãã - ã¢ã³ããŒãåŸã«ãã¢ã³ããŒãããSEãåçããããšããå ŽåããŸãããªããŒãããŠå éšãã£ãã·ã¥ããŠããã®åçãšãªãã
- ããªããŒãäžã«ã¢ã³ããŒããè¡ã£ãå ŽåãããªããŒãèªäœãåãæ¶ãããã
-
BGMç³»ã®ããªããŒããè¡ã
vnctst.audio3.js.preloadBgm("path/to/hoge.ogg")
vnctst.audio3.js.preloadBgm({bgm:"hoge"})
- BGM/BGS/MEã¯ã©ãããBGMç³»ããšããŠãããªããŒãæã«ã¯å šãŠåãæ±ããšãªã
- 泚æç¹ãšããŠãBGMç³»ã¯SEãšã¯éããåã«
bgm()
çãå®è¡ããã ãã§ã¯å éšãã£ãã·ã¥ç¶æ ãšã¯ãªããªãããªããªãBGMç³»ã¯ãå³åº§ã«åçããªããšãããªãããšããèŠä»¶ãããã±ãŒã¹ãããŸããªãããŸãäžæ²ã®ã¡ã¢ãªæ¶è²»ã倧ããå Žåãå€ãããã§ãããæ瀺çã«preloadBgm()
ãå®è¡ããæã®ã¿ãããªããŒãç¶æ ã«ãªãã
-
BGMç³»ã®ããªããŒããå®äºããŠãããã調æ»ãã
vnctst.audio3.js.isPreloadedBgm("path/to/hoge.ogg")
vnctst.audio3.js.isPreloadedBgm({bgm:"hoge"})
vnctst.audio3.js.isSucceededToPreloadBgm("path/to/hoge.ogg")
vnctst.audio3.js.isSucceededToPreloadBgm({bgm:"hoge"})
- ãããã«ã€ããŠã¯SEã®ãã®ãšã»ãŒåæ§ã
- æ瀺çã«ããªããŒãå®äºãåŸ
ããªããŠã
bgm()
ç³»ã®å®è¡ã¯è¡ãã(ãã¡ããããŒãå®äºåŸ ã¡ã¯çºçããã)ã
-
BGMç³»ã®ã¢ã³ããŒããè¡ã
vnctst.audio3.js.unloadBgm("path/to/hoge.ogg")
vnctst.audio3.js.unloadBgm({bgm:"hoge"})
- ãããSEã®ãã®ãšã»ãŒåæ§ã
jsçã§ã¯ãããªã»ããã®ãŸãšãããªããŒãã«ã¯é察å¿ã
äžèšã®åå¥æå®ã§ã®ããªããŒããè¡ã£ãŠãã ããã
-
ããŒãžã§ã³æååãååŸãã
vnctst.audio3.js.version
=>
"0.1.0"
-
å éšã§å©çšããŠãããåçç°å¢çš®å¥ãååŸãã
- ä»ã®ãšããjsçã§ã¯æªå¯Ÿå¿ãæéã®ããæã«å¯Ÿå¿ããŸã
-
ããã¯ã°ã©ãŠã³ãæã«ã匷å¶çã«SEã鳎ãã
vnctst.audio3.js.alarm("path/to/fuga.ogg")
vnctst.audio3.js.alarm({se:"fuga"})
- ååã®éããã¢ã©ãŒã éç¥çšé
- è¿œå åŒæ°çã¯
se()
ãšåæ§
-
ããªã¥ãŒã å€å€æãŠãŒãã£ãªãã£
vnctst.audio3.js.floatToPercent(f)
=>
0ïœ100- vnctst-audio3ã§ã®ããªã¥ãŒã å€(0.0ïœ1.0)ããããŒã»ã³ã衚瀺ããçºã®0ïœ100ã®æŽæ°å€ã«å€æãããŠãŒãã£ãªãã£ã
vnctst.audio3.js.percentToFloat(p)
=>
0.0ïœ1.0floatToPercent
ã®éå€æãè¡ãã
var va3 = vnctst.audio3.js;
// æåã«ãããå®è¡ãåŒæ°ã¯çç¥å¯èœ
va3.init({"fallback-ext": "mp3",
"url-prefix": "audio/",
"dont-stop-on-background?": false,
"always-mute-at-mobile?": true,
"debug?": true,
"never-use-webaudio?": false,
"never-use-htmlaudio-at-mobile?": false});
// ããŒã¹é³éã®èšå®ããã³ååŸ
va3.setVolumeMaster(0.5);
va3.setVolumeBgm(0.5);
va3.setVolumeSe(0.5);
console.log(va3.getVolumeMaster());
console.log(va3.getVolumeBgm());
console.log(va3.getVolumeSe());
// åç
va3.play({bgm:"bach"});
va3.play({bgs:"wind"});
va3.play({me:"jingle"});
va3.play({se:"beep"});
va3.bgm("path/to/bach.ogg");
va3.bgs("path/to/wind.ogg");
va3.me("path/to/jingle.ogg");
va3.se("path/to/beep.ogg");
// pathæå®ã®å Žåã¯ãåçå¯èœã¡ãã£ã¢çš®å¥ã®å€å®ãè¡ã£ãæ¹ãããè¯ã
if (va3.canPlayOgg()) {
va3.se("path/to/hoge.ogg");
}
else {
va3.se("path/to/hoge.mp3");
}
console.log(va3.canPlayMp3());
console.log(va3.canPlayM4a());
console.log(va3.canPlay("audio/ogg"));
// volume, pitch, pan ãæå®ããŠåç
va3.play({bgm:"bach"}, 1.5, 1.2, -1);
// ããã¯ã°ã©ãŠã³ãæ¶é³ãç¡èŠããŠSEåç
va3.alarm({se:"beep"});
// åæ¢
va3.stopBgm(); // ãã§ãŒãã¢ãŠã1ç§ã§åæ¢
va3.stopBgm(3); // ãã§ãŒãã¢ãŠã3ç§ã§åæ¢
va3.stopBgm(0); // ãã§ãŒãã¢ãŠããªãã§å³åº§ã«åæ¢
va3.stopBgs(); // BGSã®åæ¢ã¯å¥æ±ã(BGMãšMEã¯å
±é)
// SEã®åæ¢ã«ã¯SEã®åçãã£ã³ãã«ãæå®ããå¿
èŠããã
var ch = va3.play({se:"siren"});
setTimeout(function () { va3.stopSe(ch) }, 500);
// åå¥ããªããŒã/ã¢ã³ããŒã
va3.preloadBgm("path/to/hoge.ogg");
va3.preloadSe({se:"beep"});
...
// å
ã«ããªããŒãããŠããã°ãåååçæã§ãããŒãåŸ
ã¡ç¡ãã«åçå¯èœ
va3.bgm("path/to/hoge.ogg");
va3.play({se:"beep"});
...
// ä»åŸããåçããªããªããã¢ã³ããŒãããŠã¡ã¢ãªã解æŸããŠãã
va3.unloadBgm("path/to/hoge.ogg");
va3.unloadSe({se:"beep"});
// MEåçãçµãããŸã§åŸ
ã€ãµã³ãã«
va3.play({me:"jingle"});
function supervise() {
if (va3.isPlayingBgm()) {
setTimeout(supervise, 1000);
}
else {
console.log("Done to play BGM");
}
}
supervise();
// ãã®ä»ã®ãŠãŒãã£ãªãã£
console.log(va3.version);
-
çŸåšã®ãšãããã¢ãã€ã«å¯Ÿå¿ã«äžå®å šãªéšåããã
- å®å šãªå¯Ÿå¿ãè¡ãããšããå Žåã https://outcloud.blogspot.jp/2015/11/htmlaudio.html ãå šãŠæºããå¿ èŠãããâŠ
- å°æ¥ã«ã¯å¯Ÿå¿ãããããšããã ãããã€ã«ãªããã¯æªå®
-
RPGãã¯ãŒã«ã§ã¯ãMEã®åçå®äºæã«ã¯ãå ã®bgmã«ãã§ãŒãã€ã³ããŠæ»ããŸãããvnctst-audioã§ã¯ãMEã®åçå®äºæã¯ãã®ãŸãŸç¡é³ã«ãªãä»æ§ã§ãã
- ã©ãããŠMEã®ä»æ§ããã¯ãŒã«ãšéãä»æ§ã«ããã®ããšãããšãã²ãŒã é²è¡ãšMEãåæããåæãªããã¯ãŒã«ã®ä»æ§ã®æ¹ãèªç¶ãªã®ã§ãããéåæã«ãªãå Žå(BGMãMEãéåžžã«é »ç¹ã«å€åããå Žå)ã¯ãã®ãããäžèªç¶ã«èãããã±ãŒã¹ãããã®ã§ãã©ã¡ãã®å Žåã§ããŸããŸãèªç¶ã«äœ¿ããçŸä»æ§ãšããŸããã
-
ä»ã®ã©ã€ãã©ãªã§æäŸãããŠãããããªãµãŠã³ãã¹ãã©ã€ã/ãªãŒãã£ãªã¹ãã©ã€ãæ©èœã¯æäŸããŸãã
- HtmlAudioäžã§ããã¯ã°ã©ãŠã³ãç¶æ ã«ããéã«ã¿ã€ããŒç²ŸåºŠãå€§å¹ ã«æªããªãåãåºãå€å®ãéåžžã«å€§éæã«ãªã£ãŠããŸãåé¡ãããäºãã¹ãã©ã€ãèšå®ãç ©éã«ãªããã¡ãªäºãé³æºãã¡ã€ã«ã®äºåçµåãéåžžã«é¢åãªäºãåå¥ããªããŒããè¡ãåæã®å Žåã¯äžã€ã®ãã¡ã€ã«ã«çµåããã¡ãªãããèãäºãããããéã¿ãçµæãšããŠããªãæ¹ãã·ã³ãã«ã§äœ¿ããããããšããçµè«ã«ãªããŸãã
-
ogg, m4aã®å éšã¿ã°ã«ããã«ãŒãäœçœ®æå®ã«ã¯å¯Ÿå¿ããªã
- é察å¿ç°å¢ã§ã®å¯Ÿå¿ã埮åŠãããäºã«ãªãçº
-
ãåçå®äºæã«æå®ãããã³ãã«ãå®è¡ãããæ©èœã¯ãæšæºã§ã¯æäŸããŸãã
- äœæ æäŸããŠããªãã®ããšãããšãç°å¢ã«ãã£ãŠã¯ãåçèªäœè¡ãããªããã±ãŒã¹ãæ®éã«ããããã®å Žåã«ãã©ã®ã¿ã€ãã³ã°ã§å®äºãã³ãã«ãå®è¡ããã®ããã¹ãããã¯äžæã«ã¯æ±ºãŸããªãããã§ã(å³åº§å®è¡ïŒæ²ã®é·ãã ãåŸ ã£ãŠå®è¡ïŒ)ã
- ã©ãããŠããã®ãããªåŠçãå¿
èŠãªå Žåã¯ãå®æçã«
playing-bgm?
ãå®è¡ããcore.asyncã¹ã¬ãããèµ·åããŠç£èŠããŠãã ãã(äžèšããŒãã·ãŒãå ã®ãœãŒã¹åç §)ã- ãªãããã®å Žåã¯ãéãªåŠçãžã®å¯Ÿå¿å€ããšãªãçºãä»ã®ã¹ã¬ããããã«ãŒãåçèŠæ±ããããå Žåã®åŠçããæ²ã®çµäºåŸ ã¡ã®ãã£ã³ã»ã«çãžã®å¯Ÿå¿ãèªèº«ã§èããªããšãããªãäºã«æ³šæããŠãã ããã
-
vnctst-audio3
ã®ã3ãã£ãŠäœïŒ- ãVNCTST gamesã®å
éšé³æºã©ã€ãã©ãªã®äžä»£ç®ããšãããšããããæ¥ãŠããŸãã
- å代(
vnctst-audio
)ã¯ããã€ã¹éšã« boombox ãå©çšããŠããŸãã - äºä»£ç®(
vnctst-audio2
)ã¯SEã®ã¿ã®ãµããŒãã§ãå代ãšçµã¿åãããŠäœ¿ã£ãŠããŸãã(boomboxã§ã¯åäžé³æºã®å€éåçããµããŒããããŠããªãåé¡ãžã®å¯ŸåŠãšããŠ)
- å代(
- ä»åã®ãªãªãŒã¹ã«ããã£ãŠããã®ã3ããåã£ãŠ
vnctst-audio
ãšããäºãæ€èšããã®ã§ãããæ¢åã®èªäœã²ãŒã å ã«ãŠåå空éãè¡çªããã®ãå«ãªã®ãšãä»åŸã«æ°ããã³ãŒãããŒã¹ã§ã4ããäœãå¯èœæ§ãããçºãæ¢ããŠã3ããæ®ãäºãšããŸããã
- ãVNCTST gamesã®å
éšé³æºã©ã€ãã©ãªã®äžä»£ç®ããšãããšããããæ¥ãŠããŸãã
html5äžã®é³é¿ã·ã¹ãã åºæã®ãç¥ã£ãŠããã¹ãå 容ã®ã¡ã¢
-
é³ãåºãªãç°å¢ã®äºãåžžã«èæ ®ããå¿ èŠããã
- 以äžã®äºç¹ã«æ³šæããã°ãšããããok
- ãŠãŒã¶ã«ã¬ã¹ãã³ã¹ãè¿ãã®ã«é³ã ãã®è¡šçŸã«ã¯ããªã(å¿ ãããžã¥ã¢ã«ã§ã®ãšãã§ã¯ããä»ãããå ·äœçã«ã¯ãã¿ã³ãæŒããæã®åå¿ç)
- åçç°å¢ã«ãã£ãŠã¯åçãäžç¬ã§å®äºãã(æ±ãã«ãªã)ã®ã§ãé³æºã®åçå®äºãããªã¬ãŒãšããŠäœããè¡ããããªäºã¯é¿ããæ¹ããã(代ããã«
setTimeout()
çã§å®éã«åŸ ã€ç§æ°ãæå®ããç)
- 以äžã®äºç¹ã«æ³šæããã°ãšããããok
-
äžå¿ããoggãšmp3ããããã¯ãoggãšm4aãã§ãåºæ¬çãªãã©ãŠã¶ç°å¢(PCããã³ã¢ãã€ã«)ã§ã®åçã¯ã«ããŒã§ããããšããäºã«ãªã£ãŠãã
- ãoggããmp3ããm4aãã®ããããäžã€ã ãã ãšãåçã§ããªãç°å¢ãåºãŠããŸãããã£ãŠãoggãšmp3ããoggãšm4aãã®ã©ã¡ããã®ã»ãããéžã¶äºã«ãªã
-
éããã¡ã€ã³ã«ãããã¡ã€ã«ãåçããå Žåã¯CORSèšå®ãå¿ èŠ
-
ãã©ãŠã¶ããããŒã«ã«ãã¡ã€ã«ãçŽã«éããå Žåã¯ãŸãšãã«æ©èœããªã(ããã¯ã©ã®é³æºã©ã€ãã©ãªã§ãåã)ãããŒã«ã«ã§ç¢ºèªããéã§ãäœããã®httpãµãŒããå¿ èŠã«ãªã
-
ãã©ãŠã¶äžã®ããŒãžãããã¯ã°ã©ãŠã³ãã«ãªã£ãéã«ãjsã®ã¿ã€ããŒç²ŸåºŠã1ç§ãããã«æªããªã(å ·äœçã«ã¯ãjsã§
setTimeout(xxx, 10)
ãšãæå®ããŠãxxxãå®è¡ãããã®ã¯1000msecåŸãšãã«ãªãå Žåããã)- ãããé²æ¢ããäºã¯åºæ¬çã«ã¯ã§ããªã
- WebAudioä»å±ã®ã¿ã€ããŒãWebWorkersçã®å¥ã®æ©æ§ã䜿ã£ãŠåé¿ããäºã¯äžå¿å¯èœ(ããããè²ã ãšããã©ããç°å¢ã«äŸåãã)
- ãªã®ã§ããããèµ·ãã£ãŠã倧äžå€«ãªããã«è²ã ãšèããæ¹ããã
- ãããé²æ¢ããäºã¯åºæ¬çã«ã¯ã§ããªã
TODO: ãã£ãšãã£ãçãªã®ã§ãæãåºã次第ãããšã§è¿œèšãã
以äžã®TODOã¯æéã®ããæã«å¯Ÿå¿ãè¡ãäºå®ã§ãã
-
vnctst.audio3/terminal-type
ã®jsçã§ã®å¯Ÿå¿ -
BGMãã§ãŒãã®ããã©ã«ãå€ãå€æŽããæ©èœ
-
SEã®çæéã§ã®é£æçŠæ¢ã®éŸå€ãå€æŽããæ©èœ
-
SEãåæ¢ãããéã®ãã§ãŒãã¢ãŠãç§æ°æå®
- çŸç¶ã§ã¯ãåžžã«0ãæå®ãããæåã«ãªã£ãŠãã
- ã²ãŒã ãã£ã©ã®å°è©ãé³å£°åçãããããªçšéã«ã¯MEã§ã¯ãªãSEã䜿ãäºã«ãªãããã®éã«ãã§ãŒãã¢ãŠããããã±ãŒã¹ãããããã®ã§ãããã¯æéã®ããæã«ãã¡ããšå¯Ÿå¿ãããã
-
å€ãandroidã®chromeã§ã®ã¿ããã€ãã³ãã¢ã³ããã¯ãäžæãåããŠãªã
- è©ŠããŠã¿ããšãããã¿ããç³»ãã³ãã«å ã§ã¯åçãããããããã§ãªãå Žæã§ã¯åçãããŠããªããiOSç³»ãšã¯éããã¢ã³ããã¯ããšããæŠå¿µèªäœããªãã®ãããããšãã€ã³ã¹ã¿ã³ã¹çæçã®äœçœ®ã«åœ±é¿ãããã®ãïŒ
- ããã¯å¯èœãªããã¡ããšå¯Ÿå¿ãããããããšã§èª¿ã¹ãã
-
BGMç³»ã®ããªããŒãé¢é£ã®é¢æ°åã«ããŸãã¡åããã¥ããç¹ããã
preload-bgm!
preloaded-bgm?
succeeded-to-preload-bgm?
unload-bgm!
ã¯ãBGM/BGS/MEå ±çšãšããã®ãåããã¥ãã- ãã®äžæ¹ã
playing-bgm?
ãšplaying-bgs?
ã¯åãããŠãã - ããã«ã€ããŠã¯ãããã¡ãã£ãšè¯ãåãæ¹ããªããã©ããèãããããããããã¯åã«ãåããã¥ããããšããã ãã§ãå©çšäžã®åé¡ã¯ãªãã®ã§ä¿®æ£ãããã¯æªå®
- ãRPGãã¯ãŒã«é¢šã®åçåé¡ãæ¡çšãããã®ããããããã®ééãã ã£ãå¯èœæ§ã¯ããâŠããããããã¯ããã§æ±ãããããšã¯æãã®ã ã
以äžã®TODOã¯åºæ¬çã«éæãããŸãããpull-reqçãåãä»ããçºã®é ç®ã§ãã
-
è±èªçããã¥ã¡ã³ãã®äœæ
- 誰ãä»ã®äººã«ãã£ãŠããã(@ayamadaã«ã¯äžèŠãªçº)
-
js/tsçã®äœæ
- 誰ãä»ã®äººã«ãã£ãŠããã(@ayamadaã«ã¯äžèŠãªçº)
-
ããªããŒãåãã®æœè±¡åãäžå®å š(ãã¿æžãã«ãªã£ãŠãã)ãªã®ãçŽã
- ãšããããçŸç¶ã§åããŠããã®ã§ãä»ã¯çŽããªãæ¹éãšãã
-
MEãçµäºçŽåã®ã¿ã€ãã³ã°ã§å¥ã®æ²ãplayããŠããã§ãŒãã¢ãŠãäžã«MEãçµäºããå Žåããã§ãŒãã¢ãŠãã«ãããæ®ãç§æ°ã ãã次ã®æ²ã®åçãåŸ ãããã
- ãããªã«èŽåœçãªåé¡ã§ã¯ãªãã®ã§ããããããåé¡ã«ãªãã±ãŒã¹ãåºãŠãã段éã«æ¹ããŠå¯Ÿå¿ãã
äžèšä»¥å€ã®äžå ·åãçºèŠããå Žåã¯ãgithubã®issueããå ±åããäºãã§ããŸã(æ¥æ¬èªã§okã§ã)ã ãã ãããã»ã©éèŠãªåé¡ã§ãªããã°åºæ¬çã«å¯Ÿå¿ã¯ããªãäºå®ã§ã(@ayamadaã«å¯Ÿå¿ããæéãããã®ãªãããã®æéãã²ãŒã äœæã«å²ãåœãŠããçº)ã ãšã¯èšããããšã察å¿ãè¡ããªããšããŠããããããäžå ·åãããããšããæ å ±èªäœã¯å®éæçšã§ãã®ã§ãissueãžã®å ±åãæè¿ããŸãã
SPEC.md ã«ãŠã vnctst-audio3
ã®å
éšä»æ§æžãå
¬éããŠããŸãã
åæ§ã®ã©ã€ãã©ãªãäœãããæ¹ã¯åèã«ã§ãããããããŸããã
vnctst-audio3
èªäœã®éçºæé ã«ã€ããŠã¯ DEVEL.md ãåç
§ããŠãã ããã
cljséçºã®ç¥èãããäºãåæã§ãã
zlib颚ã©ã€ã»ã³ã¹ãšããŸãã
- ã©ã€ã»ã³ã¹ã®æ¡é å šæ㯠LICENSE ã«ãããŸã(è±èª)ã
- åœã©ã€ãã©ãªã®å©çšæã«copyrightæçã衚瀺ãããå¿ èŠã¯ãããŸããã
- zlibã©ã€ã»ã³ã¹ã®è©³çŽ°ã¯ https://ja.wikipedia.org/wiki/Zlib_License çã§ç¢ºèªããŠãã ããã
-
0.1.2 (2016-12-09)
- dependenciesã®ããŒãžã§ã³äžã
- ããã¥ã¡ã³ãã®ä¿®æ£ãšè¿œå
- http://ch.nicovideo.jp/indies-game/blomaga/ar1147258 ãžã®å¯Ÿå¿ãšããŠã
:never-use-htmlaudio-at-mobile?
ãªãã·ã§ã³ãè¿œå play-bgm!
play-bgs!
play-me!
play-se!
ãbgm!
bgs!
me!
se!
ãžãšrename (ãã ãå€ãæ¹ã®ååã obsoleted aliases ãšããŠæ®ãã)- WebAudioç°å¢ã«ãŠã
play!
çã®åçæå®ãšåæã«ããã¯ã°ã©ãŠã³ãåããéã« race conditionã«ãã£ãŠããã¯ã°ã©ãŠã³ãç¶æ ã®å€å®ãã¹ãçºçããåé¡ãä¿®æ£ (bgm! nil)
(bgs! nil)
(me! nil)
ã®å®è¡æã¯(stop-bgm!)
çžåœã®åäœãããããã«å€æŽ
-
0.1.1 (2016-07-02)
- ããã¥ã¡ã³ãã®ä¿®æ£ãšè¿œå
all-bgm-keys
all-bgs-keys
all-me-keys
all-se-keys
ã¯ãvec
ã§ã¯ãªãset
ãšããŠä¿æããããã«ãã (ããã«ãã(:se/hoge vnctst.audio3/all-se-keys)
ã¿ãããªæãã§ããŒååšãã§ãã¯ã楜ã«ã§ãã)init!
å®è¡åã«play!
çãè¡ã£ãŠãäŸå€ãæããªãããã«ãã (åççã®æ¬æ¥ã®æ©èœãäœãè¡ããã«ãã³ã³ãœãŒã«ã« ãvnctst.audio3 is not initialized !!!
ããšåºåããã ãã®æåãšãã)can-play-ogg?
can-play-mp3?
can-play-m4a?
can-play?
ã®å®è¡çµæã memoizeããããã«ãã- ãªã³ã©ã€ã³ãã¢ã«ç°¡åãªèª¬ææãè¿œå
- travis-ciã§ã®èªåãã«ãè©Šéšãè¿œå
-
0.1.0 (2016-06-29)
- äžéãåäœç¢ºèªãè¡ã£ãã®ã§ããããå ¬åŒãªååãªãªãŒã¹ãšãã
- ãªã³ã©ã€ã³ãã¢ã®èª¬ææã«å°ãè¿œèš
- éçºåãããã¥ã¡ã³ãã«å°ãè¿œå
-
0.1.0-rc2 (2016-06-29)
- jsçšã¢ãžã¥ãŒã«ã®é¢æ°åã
snake_case
ããcamelCase
ãžãšå€æŽ - ããã¥ã¡ã³ãã®ä¿®æ£ãšè¿œå
- dependenciesã®ããŒãžã§ã³äžã
- MEçµäºåŸã«ããã¯ã°ã©ãŠã³ãæäœããŠåŸ©åž°ãããšã ãŸãæåããMEãåçãããŠããŸãäžå ·åãä¿®æ£
play-bgm!
ç³»ãè¿ãå€ãšããŠäžèŠãªå éšãªããžã§ã¯ããè¿ããŠããã®ã§ã 代ããã«trueãè¿ãããã«å€æŽ- åé·ãªäžéšã®ãããã°ãã°åºåãæå¶
- ãã©ãŠã¶ã²ãŒã ã§å©çšããããããã«ãã©ã€ã»ã³ã¹ãzlibã«å€æŽ
- ãªã³ã©ã€ã³ãã¢ãå€§å¹ æ¹å
- ãã¢æ²ãæ°èŠã«äœæãè¿œå
- jsçšã¢ãžã¥ãŒã«ã®é¢æ°åã
-
0.1.0-rc1 (2016-05-21)
- 京éœClojureã®çºã«ããã¬ãã¥ãŒçãäœæ
- ããã¥ã¡ã³ãããŸã äœæéäžã®ãŸãŸ
-
X.X.X (2016-04-XX éå ¬é)
- ã³ã¢éšåã¯å®æ
- ããã¥ã¡ã³ããªã