From e1ad33b7c82e9ccc8be06dafac50d52eab31b8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Mon, 30 Mar 2020 19:26:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=AD=E9=9F=B3=E6=92=AD?= =?UTF-8?q?=E6=94=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/jy4340132-aaa/adpcm.js | 61 ++++++++++ library/jy4340132-aaa/adpcm.wasm | Bin 0 -> 1697 bytes library/jy4340132-aaa/pcm_player.js | 80 +++++++++++++ library/jy4340132-aaa/std.js | 171 ++++++++++++++++++++++++++++ multi.html | 5 + script-universal_function.js | 69 +++++++++++ script.js | 35 +++--- solo.html | 5 + sound/voice/jp/padv001.wav | Bin 0 -> 49056 bytes sound/voice/jp/padv002.wav | Bin 0 -> 53574 bytes sound/voice/jp/padv003.wav | Bin 0 -> 20907 bytes sound/voice/jp/padv004.wav | Bin 0 -> 62528 bytes sound/voice/jp/padv005.wav | Bin 0 -> 50553 bytes sound/voice/jp/padv006.wav | Bin 0 -> 58496 bytes sound/voice/jp/padv007.wav | Bin 0 -> 58935 bytes sound/voice/jp/padv008.wav | Bin 0 -> 43974 bytes sound/voice/jp/padv009.wav | Bin 0 -> 53099 bytes sound/voice/jp/padv010.wav | Bin 0 -> 49446 bytes sound/voice/jp/padv011.wav | Bin 0 -> 51253 bytes sound/voice/jp/padv012.wav | Bin 0 -> 37665 bytes sound/voice/jp/padv013.wav | Bin 0 -> 35507 bytes sound/voice/jp/padv014.wav | Bin 0 -> 45418 bytes sound/voice/jp/padv015.wav | Bin 0 -> 52940 bytes sound/voice/jp/padv016.wav | Bin 0 -> 28889 bytes sound/voice/jp/padv017.wav | Bin 0 -> 31462 bytes sound/voice/jp/padv018.wav | Bin 0 -> 45490 bytes sound/voice/jp/padv019.wav | Bin 0 -> 33542 bytes sound/voice/jp/padv020.wav | Bin 0 -> 26466 bytes sound/voice/jp/padv021.wav | Bin 0 -> 36678 bytes sound/voice/jp/padv022.wav | Bin 0 -> 28528 bytes sound/voice/jp/padv023.wav | Bin 0 -> 31413 bytes sound/voice/jp/padv024.wav | Bin 0 -> 37319 bytes sound/voice/jp/padv025.wav | Bin 0 -> 42768 bytes sound/voice/jp/padv026.wav | Bin 0 -> 62686 bytes sound/voice/jp/padv027.wav | Bin 0 -> 39014 bytes sound/voice/jp/padv028.wav | Bin 0 -> 24865 bytes sound/voice/jp/padv029.wav | Bin 0 -> 16892 bytes sound/voice/jp/padv030.wav | Bin 0 -> 37270 bytes sound/voice/jp/padv031.wav | Bin 0 -> 36666 bytes sound/voice/jp/padv032.wav | Bin 0 -> 39403 bytes sound/voice/jp/padv033.wav | Bin 0 -> 43306 bytes sound/voice/jp/padv034.wav | Bin 0 -> 50637 bytes sound/voice/jp/padv035.wav | Bin 0 -> 34800 bytes sound/voice/jp/padv036.wav | Bin 0 -> 24727 bytes sound/voice/jp/padv037.wav | Bin 0 -> 27302 bytes sound/voice/jp/padv038.wav | Bin 0 -> 26258 bytes sound/voice/jp/padv039.wav | Bin 0 -> 39031 bytes sound/voice/jp/padv040.wav | Bin 0 -> 30718 bytes sound/voice/jp/padv041.wav | Bin 0 -> 24656 bytes sound/voice/jp/padv042.wav | Bin 0 -> 27160 bytes sound/voice/jp/padv043.wav | Bin 0 -> 14479 bytes sound/voice/jp/padv044.wav | Bin 0 -> 24832 bytes sound/voice/jp/padv045.wav | Bin 0 -> 69667 bytes sound/voice/jp/padv046.wav | Bin 0 -> 31181 bytes sound/voice/jp/padv047.wav | Bin 0 -> 48794 bytes sound/voice/jp/padv048.wav | Bin 0 -> 48098 bytes sound/voice/jp/padv049.wav | Bin 0 -> 46057 bytes sound/voice/jp/padv050.wav | Bin 0 -> 34916 bytes sound/voice/jp/padv051.wav | Bin 0 -> 44266 bytes sound/voice/jp/padv052.wav | Bin 0 -> 52451 bytes sound/voice/jp/padv053.wav | Bin 0 -> 39914 bytes sound/voice/jp/padv054.wav | Bin 0 -> 36739 bytes sound/voice/jp/padv055.wav | Bin 0 -> 31468 bytes sound/voice/jp/padv056.wav | Bin 0 -> 52288 bytes sound/voice/jp/padv057.wav | Bin 0 -> 65674 bytes sound/voice/jp/padv058.wav | Bin 0 -> 51151 bytes sound/voice/jp/padv059.wav | Bin 0 -> 13984 bytes sound/voice/jp/padv060.wav | Bin 0 -> 75523 bytes sound/voice/jp/padv061.wav | Bin 0 -> 52682 bytes sound/voice/jp/padv062.wav | Bin 0 -> 24668 bytes sound/voice/jp/padv063.wav | Bin 0 -> 33250 bytes sound/voice/jp/padv064.wav | Bin 0 -> 65498 bytes sound/voice/jp/padv065.wav | Bin 0 -> 57752 bytes sound/voice/jp/padv066.wav | Bin 0 -> 37634 bytes sound/voice/jp/padv067.wav | Bin 0 -> 42466 bytes sound/voice/jp/padv068.wav | Bin 0 -> 50368 bytes sound/voice/jp/padv069.wav | Bin 0 -> 51332 bytes sound/voice/jp/padv070.wav | Bin 0 -> 60865 bytes sound/voice/jp/padv071.wav | Bin 0 -> 41835 bytes sound/voice/jp/padv072.wav | Bin 0 -> 72855 bytes sound/voice/jp/padv073.wav | Bin 0 -> 67452 bytes sound/voice/jp/padv074.wav | Bin 0 -> 70946 bytes sound/voice/jp/padv075.wav | Bin 0 -> 51263 bytes sound/voice/jp/padv076.wav | Bin 0 -> 59362 bytes sound/voice/jp/padv077.wav | Bin 0 -> 60775 bytes sound/voice/jp/padv078.wav | Bin 0 -> 52233 bytes sound/voice/jp/padv079.wav | Bin 0 -> 62922 bytes sound/voice/jp/padv080.wav | Bin 0 -> 13100 bytes sound/voice/jp/padv081.wav | Bin 0 -> 53168 bytes sound/voice/jp/padv082.wav | Bin 0 -> 14853 bytes sound/voice/jp/padv083.wav | Bin 0 -> 20026 bytes sound/voice/jp/padv084.wav | Bin 0 -> 19984 bytes sound/voice/jp/padv085.wav | Bin 0 -> 89826 bytes sound/voice/jp/padv086.wav | Bin 0 -> 19046 bytes sound/voice/jp/padv087.wav | Bin 0 -> 51352 bytes sound/voice/jp/padv088.wav | Bin 0 -> 14159 bytes sound/voice/jp/padv089.wav | Bin 0 -> 29031 bytes sound/voice/jp/padv090.wav | Bin 0 -> 18985 bytes sound/voice/jp/padv091.wav | Bin 0 -> 23365 bytes sound/voice/jp/padv092.wav | Bin 0 -> 8565 bytes sound/voice/jp/padv093.wav | Bin 0 -> 26530 bytes sound/voice/jp/padv094.wav | Bin 0 -> 18512 bytes sound/voice/jp/padv095.wav | Bin 0 -> 27210 bytes sound/voice/jp/padv096.wav | Bin 0 -> 19050 bytes sound/voice/jp/padv097.wav | Bin 0 -> 20226 bytes sound/voice/jp/padv098.wav | Bin 0 -> 12691 bytes sound/voice/jp/padv099.wav | Bin 0 -> 27941 bytes sound/voice/jp/padv100.wav | Bin 0 -> 17241 bytes sound/voice/jp/padv101.wav | Bin 0 -> 12672 bytes sound/voice/jp/padv102.wav | Bin 0 -> 15098 bytes sound/voice/jp/padv103.wav | Bin 0 -> 35444 bytes sound/voice/jp/padv104.wav | Bin 0 -> 18845 bytes sound/voice/jp/padv105.wav | Bin 0 -> 45492 bytes sound/voice/jp/padv106.wav | Bin 0 -> 24766 bytes sound/voice/jp/padv107.wav | Bin 0 -> 45047 bytes sound/voice/jp/padv108.wav | Bin 0 -> 24656 bytes sound/voice/jp/padv109.wav | Bin 0 -> 39592 bytes sound/voice/jp/padv110.wav | Bin 0 -> 28176 bytes sound/voice/jp/padv111.wav | Bin 0 -> 29191 bytes sound/voice/jp/padv112.wav | Bin 0 -> 36206 bytes sound/voice/jp/padv113.wav | Bin 0 -> 52380 bytes sound/voice/jp/padv114.wav | Bin 0 -> 26695 bytes sound/voice/jp/padv115.wav | Bin 0 -> 32734 bytes sound/voice/jp/padv116.wav | Bin 0 -> 50537 bytes sound/voice/jp/padv117.wav | Bin 0 -> 32424 bytes sound/voice/jp/padv118.wav | Bin 0 -> 20309 bytes sound/voice/jp/padv119.wav | Bin 0 -> 33870 bytes sound/voice/jp/padv120.wav | Bin 0 -> 72211 bytes sound/voice/jp/padv121.wav | Bin 0 -> 65012 bytes sound/voice/jp/padv122.wav | Bin 0 -> 55128 bytes sound/voice/jp/padv123.wav | Bin 0 -> 60276 bytes sound/voice/jp/padv124.wav | Bin 0 -> 26439 bytes sound/voice/jp/padv125.wav | Bin 0 -> 76761 bytes sound/voice/jp/padv126.wav | Bin 0 -> 60985 bytes sound/voice/jp/padv127.wav | Bin 0 -> 83783 bytes sound/voice/jp/padv128.wav | Bin 0 -> 77786 bytes sound/voice/jp/padv129.wav | Bin 0 -> 26194 bytes sound/voice/jp/padv130.wav | Bin 0 -> 42635 bytes sound/voice/jp/padv131.wav | Bin 0 -> 19633 bytes sound/voice/jp/padv132.wav | Bin 0 -> 51883 bytes sound/voice/jp/padv133.wav | Bin 0 -> 18364 bytes sound/voice/jp/padv134.wav | Bin 0 -> 23828 bytes sound/voice/jp/padv135.wav | Bin 0 -> 36695 bytes sound/voice/jp/padv136.wav | Bin 0 -> 48387 bytes sound/voice/jp/padv137.wav | Bin 0 -> 15684 bytes sound/voice/jp/padv138.wav | Bin 0 -> 21794 bytes sound/voice/jp/padv139.wav | Bin 0 -> 19345 bytes sound/voice/jp/padv140.wav | Bin 0 -> 36237 bytes sound/voice/jp/padv141.wav | Bin 0 -> 18400 bytes sound/voice/jp/padv142.wav | Bin 0 -> 42700 bytes sound/voice/jp/padv143.wav | Bin 0 -> 36754 bytes sound/voice/jp/padv144.wav | Bin 0 -> 24865 bytes sound/voice/jp/padv145.wav | Bin 0 -> 37043 bytes sound/voice/jp/padv146.wav | Bin 0 -> 18382 bytes sound/voice/jp/padv147.wav | Bin 0 -> 14677 bytes sound/voice/jp/padv148.wav | Bin 0 -> 41717 bytes sound/voice/jp/padv149.wav | Bin 0 -> 55280 bytes sound/voice/jp/padv150.wav | Bin 0 -> 7697 bytes sound/voice/jp/padv151.wav | Bin 0 -> 28521 bytes sound/voice/jp/padv152.wav | Bin 0 -> 24003 bytes sound/voice/jp/padv153.wav | Bin 0 -> 68307 bytes sound/voice/jp/padv154.wav | Bin 0 -> 37682 bytes sound/voice/jp/padv155.wav | Bin 0 -> 17568 bytes sound/voice/jp/padv156.wav | Bin 0 -> 46967 bytes sound/voice/jp/padv157.wav | Bin 0 -> 23348 bytes sound/voice/jp/padv158.wav | Bin 0 -> 41420 bytes sound/voice/jp/padv159.wav | Bin 0 -> 45821 bytes sound/voice/jp/padv160.wav | Bin 0 -> 32677 bytes sound/voice/jp/padv161.wav | Bin 0 -> 24026 bytes sound/voice/jp/padv162.wav | Bin 0 -> 30528 bytes sound/voice/jp/padv163.wav | Bin 0 -> 22448 bytes sound/voice/jp/padv164.wav | Bin 0 -> 39595 bytes sound/voice/jp/padv165.wav | Bin 0 -> 93246 bytes sound/voice/jp/padv166.wav | Bin 0 -> 30092 bytes sound/voice/jp/padv167.wav | Bin 0 -> 15138 bytes sound/voice/jp/padv168.wav | Bin 0 -> 49892 bytes sound/voice/jp/padv169.wav | Bin 0 -> 37572 bytes sound/voice/jp/padv170.wav | Bin 0 -> 41677 bytes sound/voice/jp/padv171.wav | Bin 0 -> 66492 bytes sound/voice/jp/padv172.wav | Bin 0 -> 67736 bytes sound/voice/jp/padv173.wav | Bin 0 -> 24327 bytes sound/voice/jp/padv174.wav | Bin 0 -> 38306 bytes sound/voice/jp/padv175.wav | Bin 0 -> 48607 bytes sound/voice/jp/padv176.wav | Bin 0 -> 39042 bytes sound/voice/jp/padv177.wav | Bin 0 -> 23591 bytes sound/voice/jp/padv178.wav | Bin 0 -> 37641 bytes sound/voice/jp/padv179.wav | Bin 0 -> 35363 bytes sound/voice/jp/padv180.wav | Bin 0 -> 19177 bytes sound/voice/jp/padv181.wav | Bin 0 -> 46399 bytes sound/voice/jp/padv182.wav | Bin 0 -> 53021 bytes sound/voice/jp/padv183.wav | Bin 0 -> 55964 bytes sound/voice/jp/padv184.wav | Bin 0 -> 28006 bytes sound/voice/jp/padv185.wav | Bin 0 -> 46399 bytes sound/voice/jp/padv186.wav | Bin 0 -> 41250 bytes sound/voice/jp/padv187.wav | Bin 0 -> 48607 bytes sound/voice/jp/padv188.wav | Bin 0 -> 33892 bytes sound/voice/jp/padv189.wav | Bin 0 -> 35363 bytes triple.html | 5 + 198 files changed, 411 insertions(+), 20 deletions(-) create mode 100644 library/jy4340132-aaa/adpcm.js create mode 100644 library/jy4340132-aaa/adpcm.wasm create mode 100644 library/jy4340132-aaa/pcm_player.js create mode 100644 library/jy4340132-aaa/std.js create mode 100644 sound/voice/jp/padv001.wav create mode 100644 sound/voice/jp/padv002.wav create mode 100644 sound/voice/jp/padv003.wav create mode 100644 sound/voice/jp/padv004.wav create mode 100644 sound/voice/jp/padv005.wav create mode 100644 sound/voice/jp/padv006.wav create mode 100644 sound/voice/jp/padv007.wav create mode 100644 sound/voice/jp/padv008.wav create mode 100644 sound/voice/jp/padv009.wav create mode 100644 sound/voice/jp/padv010.wav create mode 100644 sound/voice/jp/padv011.wav create mode 100644 sound/voice/jp/padv012.wav create mode 100644 sound/voice/jp/padv013.wav create mode 100644 sound/voice/jp/padv014.wav create mode 100644 sound/voice/jp/padv015.wav create mode 100644 sound/voice/jp/padv016.wav create mode 100644 sound/voice/jp/padv017.wav create mode 100644 sound/voice/jp/padv018.wav create mode 100644 sound/voice/jp/padv019.wav create mode 100644 sound/voice/jp/padv020.wav create mode 100644 sound/voice/jp/padv021.wav create mode 100644 sound/voice/jp/padv022.wav create mode 100644 sound/voice/jp/padv023.wav create mode 100644 sound/voice/jp/padv024.wav create mode 100644 sound/voice/jp/padv025.wav create mode 100644 sound/voice/jp/padv026.wav create mode 100644 sound/voice/jp/padv027.wav create mode 100644 sound/voice/jp/padv028.wav create mode 100644 sound/voice/jp/padv029.wav create mode 100644 sound/voice/jp/padv030.wav create mode 100644 sound/voice/jp/padv031.wav create mode 100644 sound/voice/jp/padv032.wav create mode 100644 sound/voice/jp/padv033.wav create mode 100644 sound/voice/jp/padv034.wav create mode 100644 sound/voice/jp/padv035.wav create mode 100644 sound/voice/jp/padv036.wav create mode 100644 sound/voice/jp/padv037.wav create mode 100644 sound/voice/jp/padv038.wav create mode 100644 sound/voice/jp/padv039.wav create mode 100644 sound/voice/jp/padv040.wav create mode 100644 sound/voice/jp/padv041.wav create mode 100644 sound/voice/jp/padv042.wav create mode 100644 sound/voice/jp/padv043.wav create mode 100644 sound/voice/jp/padv044.wav create mode 100644 sound/voice/jp/padv045.wav create mode 100644 sound/voice/jp/padv046.wav create mode 100644 sound/voice/jp/padv047.wav create mode 100644 sound/voice/jp/padv048.wav create mode 100644 sound/voice/jp/padv049.wav create mode 100644 sound/voice/jp/padv050.wav create mode 100644 sound/voice/jp/padv051.wav create mode 100644 sound/voice/jp/padv052.wav create mode 100644 sound/voice/jp/padv053.wav create mode 100644 sound/voice/jp/padv054.wav create mode 100644 sound/voice/jp/padv055.wav create mode 100644 sound/voice/jp/padv056.wav create mode 100644 sound/voice/jp/padv057.wav create mode 100644 sound/voice/jp/padv058.wav create mode 100644 sound/voice/jp/padv059.wav create mode 100644 sound/voice/jp/padv060.wav create mode 100644 sound/voice/jp/padv061.wav create mode 100644 sound/voice/jp/padv062.wav create mode 100644 sound/voice/jp/padv063.wav create mode 100644 sound/voice/jp/padv064.wav create mode 100644 sound/voice/jp/padv065.wav create mode 100644 sound/voice/jp/padv066.wav create mode 100644 sound/voice/jp/padv067.wav create mode 100644 sound/voice/jp/padv068.wav create mode 100644 sound/voice/jp/padv069.wav create mode 100644 sound/voice/jp/padv070.wav create mode 100644 sound/voice/jp/padv071.wav create mode 100644 sound/voice/jp/padv072.wav create mode 100644 sound/voice/jp/padv073.wav create mode 100644 sound/voice/jp/padv074.wav create mode 100644 sound/voice/jp/padv075.wav create mode 100644 sound/voice/jp/padv076.wav create mode 100644 sound/voice/jp/padv077.wav create mode 100644 sound/voice/jp/padv078.wav create mode 100644 sound/voice/jp/padv079.wav create mode 100644 sound/voice/jp/padv080.wav create mode 100644 sound/voice/jp/padv081.wav create mode 100644 sound/voice/jp/padv082.wav create mode 100644 sound/voice/jp/padv083.wav create mode 100644 sound/voice/jp/padv084.wav create mode 100644 sound/voice/jp/padv085.wav create mode 100644 sound/voice/jp/padv086.wav create mode 100644 sound/voice/jp/padv087.wav create mode 100644 sound/voice/jp/padv088.wav create mode 100644 sound/voice/jp/padv089.wav create mode 100644 sound/voice/jp/padv090.wav create mode 100644 sound/voice/jp/padv091.wav create mode 100644 sound/voice/jp/padv092.wav create mode 100644 sound/voice/jp/padv093.wav create mode 100644 sound/voice/jp/padv094.wav create mode 100644 sound/voice/jp/padv095.wav create mode 100644 sound/voice/jp/padv096.wav create mode 100644 sound/voice/jp/padv097.wav create mode 100644 sound/voice/jp/padv098.wav create mode 100644 sound/voice/jp/padv099.wav create mode 100644 sound/voice/jp/padv100.wav create mode 100644 sound/voice/jp/padv101.wav create mode 100644 sound/voice/jp/padv102.wav create mode 100644 sound/voice/jp/padv103.wav create mode 100644 sound/voice/jp/padv104.wav create mode 100644 sound/voice/jp/padv105.wav create mode 100644 sound/voice/jp/padv106.wav create mode 100644 sound/voice/jp/padv107.wav create mode 100644 sound/voice/jp/padv108.wav create mode 100644 sound/voice/jp/padv109.wav create mode 100644 sound/voice/jp/padv110.wav create mode 100644 sound/voice/jp/padv111.wav create mode 100644 sound/voice/jp/padv112.wav create mode 100644 sound/voice/jp/padv113.wav create mode 100644 sound/voice/jp/padv114.wav create mode 100644 sound/voice/jp/padv115.wav create mode 100644 sound/voice/jp/padv116.wav create mode 100644 sound/voice/jp/padv117.wav create mode 100644 sound/voice/jp/padv118.wav create mode 100644 sound/voice/jp/padv119.wav create mode 100644 sound/voice/jp/padv120.wav create mode 100644 sound/voice/jp/padv121.wav create mode 100644 sound/voice/jp/padv122.wav create mode 100644 sound/voice/jp/padv123.wav create mode 100644 sound/voice/jp/padv124.wav create mode 100644 sound/voice/jp/padv125.wav create mode 100644 sound/voice/jp/padv126.wav create mode 100644 sound/voice/jp/padv127.wav create mode 100644 sound/voice/jp/padv128.wav create mode 100644 sound/voice/jp/padv129.wav create mode 100644 sound/voice/jp/padv130.wav create mode 100644 sound/voice/jp/padv131.wav create mode 100644 sound/voice/jp/padv132.wav create mode 100644 sound/voice/jp/padv133.wav create mode 100644 sound/voice/jp/padv134.wav create mode 100644 sound/voice/jp/padv135.wav create mode 100644 sound/voice/jp/padv136.wav create mode 100644 sound/voice/jp/padv137.wav create mode 100644 sound/voice/jp/padv138.wav create mode 100644 sound/voice/jp/padv139.wav create mode 100644 sound/voice/jp/padv140.wav create mode 100644 sound/voice/jp/padv141.wav create mode 100644 sound/voice/jp/padv142.wav create mode 100644 sound/voice/jp/padv143.wav create mode 100644 sound/voice/jp/padv144.wav create mode 100644 sound/voice/jp/padv145.wav create mode 100644 sound/voice/jp/padv146.wav create mode 100644 sound/voice/jp/padv147.wav create mode 100644 sound/voice/jp/padv148.wav create mode 100644 sound/voice/jp/padv149.wav create mode 100644 sound/voice/jp/padv150.wav create mode 100644 sound/voice/jp/padv151.wav create mode 100644 sound/voice/jp/padv152.wav create mode 100644 sound/voice/jp/padv153.wav create mode 100644 sound/voice/jp/padv154.wav create mode 100644 sound/voice/jp/padv155.wav create mode 100644 sound/voice/jp/padv156.wav create mode 100644 sound/voice/jp/padv157.wav create mode 100644 sound/voice/jp/padv158.wav create mode 100644 sound/voice/jp/padv159.wav create mode 100644 sound/voice/jp/padv160.wav create mode 100644 sound/voice/jp/padv161.wav create mode 100644 sound/voice/jp/padv162.wav create mode 100644 sound/voice/jp/padv163.wav create mode 100644 sound/voice/jp/padv164.wav create mode 100644 sound/voice/jp/padv165.wav create mode 100644 sound/voice/jp/padv166.wav create mode 100644 sound/voice/jp/padv167.wav create mode 100644 sound/voice/jp/padv168.wav create mode 100644 sound/voice/jp/padv169.wav create mode 100644 sound/voice/jp/padv170.wav create mode 100644 sound/voice/jp/padv171.wav create mode 100644 sound/voice/jp/padv172.wav create mode 100644 sound/voice/jp/padv173.wav create mode 100644 sound/voice/jp/padv174.wav create mode 100644 sound/voice/jp/padv175.wav create mode 100644 sound/voice/jp/padv176.wav create mode 100644 sound/voice/jp/padv177.wav create mode 100644 sound/voice/jp/padv178.wav create mode 100644 sound/voice/jp/padv179.wav create mode 100644 sound/voice/jp/padv180.wav create mode 100644 sound/voice/jp/padv181.wav create mode 100644 sound/voice/jp/padv182.wav create mode 100644 sound/voice/jp/padv183.wav create mode 100644 sound/voice/jp/padv184.wav create mode 100644 sound/voice/jp/padv185.wav create mode 100644 sound/voice/jp/padv186.wav create mode 100644 sound/voice/jp/padv187.wav create mode 100644 sound/voice/jp/padv188.wav create mode 100644 sound/voice/jp/padv189.wav diff --git a/library/jy4340132-aaa/adpcm.js b/library/jy4340132-aaa/adpcm.js new file mode 100644 index 00000000..cd2b0a10 --- /dev/null +++ b/library/jy4340132-aaa/adpcm.js @@ -0,0 +1,61 @@ + + +class Adpcm extends AudioCoder +{ + constructor(wasm, importObj) + { + super(wasm, importObj); + this._indexDe = Adpcm._currentIndex; + this._indexEn = Adpcm._currentIndex + 1; + Adpcm._currentIndex = (Adpcm._currentIndex + 2) & 0x3F; + this._wasm.instance.exports._initAdpcmState(this._indexDe); + this._wasm.instance.exports._initAdpcmState(this._indexEn); + } + + resetDecodeState(state) + { + this._wasm.instance.exports._resetAdpcmState(this._indexDe, state.valprev, state.index); + } + + resetEncodeState(state) + { + this._wasm.instance.exports._resetAdpcmState(this._indexEn, state.valprev, state.index); + } + + getDecodeState() + { + this._wasm.instance.exports._getAdpcmState(this._indexDe, 10236, 10238); + return new Adpcm.State(this._memory[10236] + (this._memory[10237] << 8), this._memory[10238]); + } + + getEncodeState() + { + this._wasm.instance.exports._getAdpcmState(this._indexEn, 10236, 10238); + return new Adpcm.State(this._memory[10236] + (this._memory[10237] << 8), this._memory[10238]); + } + + decode(data) + { + this._copyToMemory(data); + this._wasm.instance.exports._decodeAdpcm(this._indexDe, 0, 10240, data.byteLength << 1); + return new Int16Array(this._memory.buffer, 10240, data.byteLength << 1); + } + + encode(data) + { + this._copyToMemory(data); + this._wasm.instance.exports._encodeAdpcm(this._indexEn, 0, 10240, data.byteLength >>> 1); + return new Uint8Array(this._memory.buffer, 10240, data.byteLength >>> 2); + } +} + +Adpcm._currentIndex = 0; + +Adpcm.State = class +{ + constructor(valprev, index) + { + this.valprev = valprev; + this.index = index; + } +} diff --git a/library/jy4340132-aaa/adpcm.wasm b/library/jy4340132-aaa/adpcm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6591605ccb0c1211e5f0f6f3d638deab40d72b05 GIT binary patch literal 1697 zcmZ{j%ZnUU6voee)T8^>bay5RQ7V{oYepDBBPu8u7juK+%qXZtqTr%u%(ODq^Xf+$ zvPlmHw+gPZ5pf|1A`Dpw29!v4f}-Fe3qcp+GXH^$->DvPdc=a?sk*mroqNCYouakD zmLgn@c>UVu#&&oA{X5#Gq)yvaHKtWF9wS;r+=z6cO=o))Z*{hI`qwn=Rm1vZcyVpe zF=H|{e6BPu6VE4O7068j1?$EXA_+!~;@o$Y^zQKS8CXIQB(V*8u)Zh1pfiKHZ*&O2{LoiDQfI)8Z~oRR68kZ<7iQX@-tI~W%4!F-Wk*tPO$A36wY0R1P>c3 z_0(l)7pYdl@p943J#oU+EmA4fsK}OKAnf6clf1~fQm9eUTJ|YEjDs1KoT16M#c2+s zSVJUSlbxhKRb0v8DccfrQl%;`<<7&*iJbvIEjRPRiZ6X^#E9Z}P`!SExvEpdXgN1P z#kCkM0Y}&W7#;JBbW(&)g0DkgM~QKqdLMO#J7^{4*oh+v*Q6zC=#^?4KZAK#w1|S? zv~Vo(E>kc^k}0l>GZ9B#!#nh&;p(?&On#eFB4po`^J-2y0{`8-cJ6Z{f1~@g z8mI#YGB5)gpao8Vli)Ns10Dot!8uTXhruJ@G4LdK20RBYf@Sb3coVFFE*OFLz=z;t z@Fn;b{0#mCe}OZK=qd0T7=WALJ8&PcCb|qh0>6N>hG-Mq1@o5Z1E3?K8=w^veE}{* z=q!Z(4(>wiHxT<1#2!HG%Mg0Ii93WQ5PJU#q>?-XMB>mFUL}qPK_0KL*Dx9GP%L!m+B_AA5Z;_5N>X C|3*Im literal 0 HcmV?d00001 diff --git a/library/jy4340132-aaa/pcm_player.js b/library/jy4340132-aaa/pcm_player.js new file mode 100644 index 00000000..ebe152ed --- /dev/null +++ b/library/jy4340132-aaa/pcm_player.js @@ -0,0 +1,80 @@ + +class PCMPlayer +{ + constructor(channels, sampleRate) + { + this._samples = new Float32Array(); + this._flushingTime = 200; + this._channels = channels; + this._sampleRate = sampleRate; + this._flush = this._flush.bind(this); + this._audioCtx = new (window.AudioContext || window.webkitAudioContext)(); + this._gainNode = this._audioCtx.createGain(); + this._gainNode.gain.value = 1; + this._gainNode.connect(this._audioCtx.destination); + this._startTime = this._audioCtx.currentTime; + this._interval = setInterval(this._flush, this._flushingTime); + } + + setVolume(volume) + { + this._gainNode.gain.value = volume; + } + + close() + { + if(this._interval) + { + clearInterval(this._interval); + } + this._audioCtx.close(); + }; + + feed(data) + { + let tmp = new Float32Array(this._samples.length + data.length); + tmp.set(this._samples, 0); + tmp.set(data, this._samples.length); + this._samples = tmp; + }; + + _flush() + { + if(!this._channels || !this._sampleRate || !this._samples.length) + { + return; + } + let bufferSource = this._audioCtx.createBufferSource(); + let length = this._samples.length / this._channels; + let audioBuffer = this._audioCtx.createBuffer(this._channels, length, this._sampleRate); + for (let channel = 0; channel != this._channels; ++channel) + { + let audioData = audioBuffer.getChannelData(channel); + let offset = channel; + let decrement = 50; + for (let i = 0; i != length; ++i) + { + audioData[i] = this._samples[offset]; + if (i < 50) + { + audioData[i] = (audioData[i] * i) / 50; + } + if (i >= (length - 51)) + { + audioData[i] = (audioData[i] * decrement--) / 50; + } + offset += this._channels; + } + } + + if (this._startTime < this._audioCtx.currentTime) + { + this._startTime = this._audioCtx.currentTime; + } + bufferSource.buffer = audioBuffer; + bufferSource.connect(this._gainNode); + bufferSource.start(this._startTime); + this._startTime += audioBuffer.duration; + this._samples = new Float32Array(); + } +} diff --git a/library/jy4340132-aaa/std.js b/library/jy4340132-aaa/std.js new file mode 100644 index 00000000..1c1e3f23 --- /dev/null +++ b/library/jy4340132-aaa/std.js @@ -0,0 +1,171 @@ + +class Std +{ + constructor() + {} + + static memmem(data1, data1Offset, data2) + { + for (let i = 0; i <= data1.byteLength - data2.byteLength - data1Offset; ++i) + { + let j = 0; + for (; j != data2.byteLength; ++j) + { + if(data1[i + j + data1Offset] != data2[j]) + { + break; + } + } + if(j >= data2.byteLength) + { + return i + data1Offset; + } + } + return -1; + } + + static memcmp(data1, data1Offset, data2) + { + for(let i = 0; i != data2.byteLength; ++i) + { + if(data1[i + data1Offset] != data2[i]) + { + return -1; + } + } + return 0; + } + + static memcpy(data1, data1Offset, data2, data2Begin, data2End) + { + data1.set(data2.subarray(data2Begin, data2End), data1Offset); + } + + static milliSecondTime() + { + return new Date().getTime(); + } + + static shortToFloatData(input) + { + let inputSamples = input.length; + let output = new Float32Array(inputSamples); + for(let i = 0; i != inputSamples; ++i) + { + output[i] = input[i] / 32768; + } + return output; + } + + static floatToShortData(input) + { + let inputSamples = input.length; + let output = new Int16Array(inputSamples); + for(let i = 0; i != inputSamples; ++i) + { + output[i] = input[i] * 32768; + } + return output; + } + + static downsampleBuffer(buffer, rate, sampleRate) + { + if(rate == sampleRate) + { + return buffer; + } + else if(rate > sampleRate) + { + throw "rate > sampleRate error !!"; + } + let sampleRateRatio = sampleRate / rate; + let newLength = Math.ceil(buffer.length / sampleRateRatio) & 0xFFFC; + let result = new Float32Array(newLength); + let offsetResult = 0; + let offsetBuffer = 0; + while (offsetResult != result.length) + { + let nextOffsetBuffer = offsetBuffer + sampleRateRatio; + let accum = 0; + let count = 0; + let currentOffset = Math.ceil(offsetBuffer); + let currentNextOffset = Math.ceil(nextOffsetBuffer); + for (let i = currentOffset; i != currentNextOffset && i != buffer.length; ++i) + { + accum += buffer[i]; + ++count; + } + result[offsetResult] = accum / count; + ++offsetResult; + offsetBuffer = nextOffsetBuffer; + } + return result; + } +} + +class Result +{ + constructor(data, type, time, errorCode, duration = 20) + { + this.data = data; + this.type = type; + this.time = time; + this.duration = duration; + this.errorCode = errorCode; + } + + static makeErrorResult(errorCode) + { + return new Result(null, -1, -1, errorCode); + } +} + +Result.ErrorCode = class +{ + constructor() + {} +} + +Result.ErrorCode.SUCCESS = 0; +Result.ErrorCode.PARAM_ERROR = 1000; +Result.ErrorCode.PARAM_CHANGE = 2000; +Result.ErrorCode.FAIL = 3000; +Result.ErrorCode.NO_INIT_ERROR = Result.ErrorCode.FAIL + 1; +Result.ErrorCode.CACHE_MAX_ERROR = Result.ErrorCode.FAIL + 2; + +Result.Type = class +{ + constructor() + {} +} + +Result.Type.H264_I_FRAME = 0; +Result.Type.H264_P_FRAME = 1; +Result.Type.H264_B_FRAME = 2; +Result.Type.AUDIO = 3; +Result.Type.TRANS_DATA = 4; +Result.Type.FMP4_HEAD = 5; +Result.Type.FMP4_BODY = 6; + +class AudioCoder +{ + constructor(wasm, importObj) + { + if(importObj.memoryBase < 102400) + { + throw new Error("too small"); + } + this._importObj = importObj; + this._wasm = wasm; + this._memory = new Uint8Array(this._importObj.env.memory.buffer); + } + + _copyToMemory(data) + { + if(data.byteLength > (this._importObj.env.memoryBase >>> 6)) + { + throw new Error("overflow"); + } + this._memory.set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength)); + } +} diff --git a/multi.html b/multi.html index 22b2fc98..f42d8f95 100644 --- a/multi.html +++ b/multi.html @@ -14,6 +14,11 @@ + + + + + + + + + + + + + + +