求サダメゴト无涯完整版百度云资源源完整版

字幕组 求能人列举年从没人翻译过的日本动画片名【冷番吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,969贴子:
字幕组 求能人列举年从没人翻译过的日本动画片名
字幕组 求 能人 列举年从没人翻译过的日本冷门动画 片名
不知道 店长×东方 算不算。
你需要骑士
1988となりのトトロ [日]火垂るの墓 [日]银河英雄伝说 [日]きまぐれオレンジ★ロード あの日にかえりたい [日]トップをねらえ! [日]银河英雄伝说: わが征くは星の大海 [日]シティーハンター2 [日]トランスフォーマー・超神マスターフォース [日]铠伝サムライトルーパー [日]アキラ [日]うる星やつら 完结篇 [日]うる星やつら 怒れシャーベット [日]うる星やつら 渚のフィアンセ [日]机甲猟兵メロウリンク [日]吸血姫美夕 OVA [日]クライング フリーマン [日]F-エフ [日]机动戦士ガンダム:逆袭のシャア [日]宇宙の戦士 [日]ドミニオン [日]竜世纪 [日]魔神英雄伝ワタル [日]マドンナ2 爱と青春のキック・オフ(1989) [日]机动警察パトレイバー [日]装甲骑兵ボトムズ レッドショルダードキュメント野望のルーツ [日]夏服の少女たち ~ヒロシマ・昭和20年8月6日~ [日]燃える!お兄さん [日]めぞん一刻 完结编 [日]バイオレンスジャック 地狱街 [日]圣闘士星矢 真红の少年伝说 [日]恐怖のバイオ人间 最终教师 [日]小助さま力丸さま コンペイ岛の竜 [日]名门!第三野球部 [日]新グリム名作剧场 [日]宇宙家族カールビンソン [日]森の伝说 [日]圣闘士星矢 神々の热き戦い [日]ハーバーライト物语 ファッションララより [日]美味しんぼ [日]ホワッツマイケル? (1988) [日]エスパー魔美 星空のダンシングドール [日]妖精王 [日]テンリトルガルフォース [日]ドラゴンズヘブン [日]トウキョウ・バイス [日]机动戦士SDガンダム [日]火の雨がふる世界名作剧场・完结版 小公子セディ [日]孔雀王 鬼还祭 [日]魁!!男塾 [日]摩诃不思议大冒険 [日]それいけ!アンパンマン [日]どんどんドメルとロン [日]远山桜宇宙帖 奴の名はゴールド [日]超音戦士 ボーグマン [日]阳あたり良好! KA・SU・MI 梦の中に君がいた [日]麻雀飞翔伝 哭きの竜 [日]めぞん一刻 移りゆく季节の中で [日]アンティーク ハートゲゲゲの鬼太郎 地狱编 [日]悪魔の花嫁 兰の组曲 [日]圣戦士ダンバイン New Story of AURA BATTLER Dunbine [日]キテレツ大百科 [日]风を抜け! [日]1ポンドの福音 [日]ハロー!レディリン [日]神州魑魅変 [日]风の又三郎 [日]ドラえもん のび太のパラレル西游记 [日]ワット・ポーとぼくらのお话 [日]つるピカハゲ丸くん [日]不射之射 [日]鉄拳チンミ [日]魁!!男熟 [日]セルフポートレート [日]自画像 [日]冥王计画ゼオライマー [日]アップル・シード [日]プロジェクトA子3 シンデレララプソディ [日]ガルフォース 3 [日]魔界都市<新宿> [日]ガイ 妖魔覚醒 [日]おそ松くん [日]はれときどきぶた (1988) [日] [日]现世守护神ぴーひょろ一家 OVA [日]かばのポトマス [日]宫沢贤治作品集 どんぐりと山猫 [日]ビデオアニメ絵本 [日]ビデオアニメ絵本馆 世界名作童话 [日]赤い光弾ジリオン 歌姫夜曲 [日]ひみつのアッコちゃん [日]エースをねらえ!2 [日]バルテュス ~ティアの辉き~ [日]白旗の少女 琉子 [日]六神合体ゴッドマーズ 十七歳の伝说 [日]闘将!!拉麺男 [日]レディレディ!! (1988) [日]ビックリマン 第一次圣魔大戦 [日]闘将!!拉麺男 (1988) [日]いきなりダゴン [日]ビリ犬 [日]世界名作童话シリーズ [日]トッポジージョ [日]梦见るトッポジージョ [日]ホワッツ マイケル?2 [日]XANADU~ドラゴンスレイヤー伝说 [日]レイナ剣狼伝说 [日]ハーイあっこです [日]现世守护神ぴーひょろ一家 [日]ウルトラB ブラックホールからの独裁者B・B!! [日]ナマケモノが见てた [日]新プロゴルファー猿 [日]ハイスクールAGENT渋谷ホンキィトンク [日]ドクター秩父山 [日]新まんが なるほど物语 [日]Classical Sex-Zone [日]艶笑日本昔ばなし [日]チョーク色のピープル [日]ビックリマン 无縁ゾーンの秘宝 [日]シニカル・ヒステリー・アワー [日]がんばれ!盲导犬サーブ [日]県立海空高校野球部员山下たろーくん [日]
夕夕酱???
1990コボちゃんスペシャル 秋がいっぱい [日]ふしぎの海のナディア [日]ドラゴンボールZ たったひとりの最终决戦~フリーザに挑んだZ戦士 孙悟空の父~ [日]THE八犬伝 [日]云のように风のように [日]ロードス岛戦记 [日]敌は海贼〜猫たちの飨宴〜 [日]世界名作剧场・完结版 私のあしながおじさん [日]デビルマン 妖鸟死丽濡编 [日]マッドブル34 [日]Nineteen19 [日]魔法使いサリー (1990) [日]らんま1/2 热闘歌合戦 [日]电脳都市OEDO808(Cyber City Oedo 808) [日]楽しいムーミン一家 [日]ダーティペア 谋略の005便 [日]アイドル天使 ようこそようこ [日]八神くんの家庭の事情 [日]シティーハンター 百万ドルの阴谋 [日]カラス天狗カブト [日]City Hunter Bay City Wars(シティーハンター ベイシティウォーズ) [日]変幻退魔夜行 カルラ舞う! 仙台小芥子怨歌 [日]ロビンフッドの大冒険 [日]毎日が日曜日 [日]宇宙皇子 天上篇 [日]Licca ふしぎな不思议なユーニア物语 [日]MAROKO 麿子 [日]ライトニングトラップ レイナ&ライカ(Lightning Trap - Leina & Laika) [日]チスト みどりのおやゆび [日]けろけろけろっぴの大冒険 ふしぎな豆の木 [日]押忍!!空手部 [日]新カラテ地狱変 血の黙示录 [日]アリーズ~神话の星座宫~ [日]ドラゴンボールZ 地球まるごと超决戦 [日]机动警察パトレイバー (1990) [日]魔神英雄伝ワタル2超激闘编(29~46话) [日]ちびまる子ちゃん (1990) [日]ちびまる子ちゃん [日]いばら姫またはねむり姫 [日]バイオレンスジャック ヘルスウィンド编(Violence Jack: Hell's Wind hen [日]たいまんぶるうず レディース编) [日]三つ目がとおる [日]江口寿史のNANTOKA NARUDESHO!(なんとかなるでショ!) [日]魔法のエンジェルスイートミント [日]エイジ [日]绿山高校 甲子园编 [日]ドラゴンボールZ この世で一番强いヤツ [日]キャッ党忍伝てやんでえ [日]冒険!イクサー3 [日]楳図かずおの呪い [日]暗黒神伝承 武神 ~十六夜情话~ [日]爱と剣のキャメロット まんが家マリナ タイムスリップ事件 [日]ADポリス [日]ガッデム [日]NG骑士ラムネ&40 [日]トランスフォーマーZ 新総司令官ダイアトラス登场! [日]风の名はアムネジア [日]CBキャラ 永井豪ワールド [日]亜人戦士 [日]PC新桃太郎伝说 [日]チンプイ エリさま活动大写真 [日]远近法の箱-博士のさがしもの- [日]ルパン三世 ヘミングウェイ・ペーパーの谜 [日]CAROL [日]A-Ko The VS <ヴァーサス> [日]魔神英雄伝ワタル 创界山英雄伝说 [日]超音戦士ボーグマン LOVERS RAIN [日]ベルサイユのばら 生命あるかぎり爱して [日]勇者エクスカイザー [日]力王2 「灭びの子」 [日]1+2=パラダイス [日]魔物ハンター妖子 [日]女戦士エフェ&ジーラ グーデの纹章 [日]ソルビアンカ [日]修罗之介斩魔剣・死镰纹の男 [日]ヴァンパイヤー戦争 [ウォーズ] [日]绿野原迷宫 [日]平成天才バカボン [日]からくり剣豪伝ムサシロード [日]エンジェル [日]圣ミカエラ学园漂流记 [日]もーれつア太郎 (1990) [日]藤子不二雄Aの梦魔子 [日]戦争が终わった夏に 1945・桦太 [からふと] [日]トミカ未来紧急队アースコマンダー [日]ドラえもん のび太とアニマル惑星(プラネット) [日]妖獣教室 [日]気ままにアイドル [日]太平洋にかける虹 [日]校内写生 [日]真・超神伝说うろつき童子 魔胎伝 [日]あにめラマ まなみの未知との遭入!? [日]机动戦士SDガンダム Mk-IV [日]悪魔くん ようこそ悪魔ランドへ!! [日]まじかる☆タルるートくん [日]魔动王グランゾート 最后のマジカル大戦 [日]けろけろけろっぴの [日]风魔の小次郎 圣剣戦争篇 [日]OL改造讲座 [日]おじさん改造讲座 [日]つる姫じゃ〜っ! [日]走れ!白いオオカミ [日]ガタピシ [日]机动戦士SDガンダム Mk-V [日]SDガンダム外伝 [日]ピグマリオ [日]ペリーヌ物语 (剧场版) [日]ハローキティーの亲指姫 [日]ぽこぽんのゆかいな西游记 [日]世界童话アニメ全集 [日]拳闘士 第1巻 [日]白鸟丽子でございます! [日]Shocking Pink Girl Momoko [日]本気! [日]江戸っ子ボーイ がってん太助 [日]Pink みずドロボウ あめドロボウ [日]ウルトラマングラフィティ おいでよ!ウルトラの国 (1990) [日]剣之介さま [日]クロがいた夏 [日]B・B BURNING BLOOD [日]魔獣戦线 THE APOCALYPSE [日]BE-BOP HIGHSCHOOL ビー・バップ・ハイスクール [日]绿山高校 甲子园编(剧场版) [日]となりのトコロ [日]八百八町表裏 化妆师 [日]ガデュリン [日]ミルキィ パッション 道玄坂・爱の城 [日]それいけ!アンパンマン ばいきんまんの逆袭 [日]キムの十字架 [日]まっ黒なおべんとう [日]海だ!船出だ!にこにこ,ぶん [日]サーキットの狼Ⅱ モデナの剣 [日]へヴィ [日]新カラテ地狱変 血戦の门 [日]スーパーリアル麻雀/麻雀バトルスクランブル(1990) [日]左のオクロック!! [日]フリテンくん (1990) [日]イケナイBOY(OVA) [日]イケナイBOY イカす(秘)ハンドパワー [日]NEW DREAM HUNTER 丽梦/梦の骑士达 [日]三丁目の夕日 [日]天上编 宇宙皇子(剧场版) [日]究极のシェフは美味しんぼパパ [日]100% [日]ふくやま剧场 なつのひみつ [日]杀人切符はハート色 [日]のたり松太郎 [日]鬼丸 戦场に駆ける五つの青春 [日]戦国武将列伝 爆风童子ヒッサツマン [日]ころがし凉太 [日]レモンエンジェル YJ版 [日]しあわせのかたち [日]RPG伝说ヘポイ [日]オバタリアン [日]せくしいあにめラマ [日]藤子・F・不二雄のSF(すこしふしぎ)短编シアター [日]男树(1990) [日]かれたい女 [日]英语であそぼ たんけんゴブリン岛 [日]れいけ! アンパンマン おむすびまん [日]それいけ!アンパンマン みなみの海をすくえ! [日]
1991コボちゃんスペシャル 梦いっぱい!! [日]おにいさまへ… [日]おもひでぽろぽろ [日]アルスラーン戦记 [日]おたくのビデオ [日]机动戦士ガンダム0083 STARDUST MEMORY 宇宙の蜉蝣 [日]创竜伝 [日]ここはグリーン・ウッド [日]月光のピアス ユメミと银のバラ骑士団 [日]シティーハンター'91 [日]人鱼の森 [日]忍者龙剣伝 [日]あさってDaNCE 2 [日]新世纪GPXサイバーフォーミュラ [日]人鱼姫マリーナの冒険 [日]井原西鹤 好色一代男 [日]カプリコン [日]スローステップ [日]うる星やつら いつだって・マイ・ダーリン [日]うる星やつら 乙女ばしかの恐怖 [日]うる星やつら 霊魂とデート [日]うる星やつら’87 [日]おざなりダンジョン [日]らんま½ ~中国寝昆仑大决戦!掟やぶりの激闘篇!!~ [日]横山光辉 三国志 [日]きんぎょ注意报! [日]アニメ 秘密の花园 [日]机动戦士ガンダムF91 [日]世界名作剧场・完结版 トラップ一家物语 [日]リカちゃん ふしぎな魔法のリング [日]きまぐれオレンジ★ロード 思いがけないシチュエーション [日]炎の闘球児 ドッジ弾平 [日]3x3 Eyes(サザンアイズ) [日]魔獣戦士ルナ・ヴァルガー [日]老人Z [日]Wizardry(ウィザードリィ) [日]うしろの正面だあれ [日]燃えろ!トップストライカー [日]一月にはChristmas [日]おちゃめな双子 -クレア学院物语- [日]机甲警察メタルジャック [日]ウルトラマンキッズ 母をたずねて3000万光年 [日]わたしとわたし -ふたりのロッテ- [日]チエちゃん奋戦记 じゃりン子チエ [日]レポーターブルース [日]ハイスクールミステリー 学园七不思议 [日]魔法のプリンセスミンキーモモ 梦を抱きしめて [日]超人ロック/新世界戦队 [日]红いハヤテ [日]绝対无敌ライジンオー [日]Kiss XXXX [日]星くずパラダイス [日]天空戦记シュラト 创世への暗闘 [日]デトネイターオーガン [日]ドラゴンボールZ とびっきりの最强対最强 [日]ねこねこ幻想曲 [日]リトルポーラベア しろくまくん、ふねにのる [日]ドラゴンボールZ 超サイヤ人だ孙悟空 [日]ルパン三世 ナポレオンの辞书を夺え [日]NG骑士ラムネ&40EX ビクビクトライアングル爱の岚大作戦 [日]エクスパーZENON [日]GALL FORCE 新世纪编 [日]モンキー・パンチの世界 アリス [日]暗の司法官ジャッジ [日]炎の転校生 [日]入院ボッキ物语 おだいじに! [日]エリアル [日]太阳の勇者ファイバード [日]R20 银河空港 [日]めぞん一刻 : 一刻岛ナンパ始末记 [日]バブルガムクラッシュ! [日]きまぐれオレンジ★ロード ルージュの伝言 [日]魔宫戦场 [日]ゲッターロボ号 [日]サイレントメビウス THE MOTION PICTURE [日]新堕糜泥の星 淫魔伝说 [日]モザイカ [日]あばしり一家 [日]バーンナップ [日]魍魉戦记マダラ MADARA [日]乙姫CONNECTION [日]圣伝-RG VEDA- [日]ふしぎの海のナディア 剧场用オリジナル版 [日]けっこう仮面 [日]ダークキャット [日]帝都物语 [日]おれは直角 [日]ちいさなおばけアッチ・コッチ・ソッチ [日]丸出だめ夫 [日]ドラゴンクエスト・ダイの大冒険 [日]とべ! くじらのピーク [日]しあわせってなあに [日]游人ブランド [日]ドラえもん のび太のドラビアンナイト [日]ドラゴンナイト [日]俺の空 刑事编 [日]21エモン [日]それいけ!アンパンマン とべ! とべ! ちびごん [日]楽しいムーミン一家冒険日记 [日]まじかるタルるートくん [日]まじかる★タルるートくん 燃えろ!友情の魔法大戦 [日]キン肉マン キン肉星王位争夺编 [日]ドラゴン・クエスト ダイの大冒険 [日]スケバン刑事 [日]铠伝サムライトルーパーMESSAGE [日]云にのる [日]安达が原 [日]ケロケロケロッピの三铳士 [日]ハローキティーの魔法の森のお姫様 [日]タアボーの龙宫星大探検 [日]ハックルベリィの冒険 [日]Anime art video collection 童话 [日]ガンバとカワウソの冒険 [日]アニメ交响诗 ジャングル大帝 [日]究极超人R [日]有闲倶楽部 [日]おばけのホーリー [日]柔道部物语 [日]いしいひさいちの大政界 [日]サムライダー 谜の転校生 [日]うっちゃれ五所瓦 [日]ジャンケンマン [日]超幕末少年世纪 タカマル [日]ゲンジ通信あげだま [日]少年アシベ [日]静かなるドン YAKUZA SIDE STORY [日]超神伝说うろつき童子 魔胎伝 [日]ファントム勇者伝说 [日]武者・骑士[ナイト]・コマンド SDガンダム紧急出撃[スクランブル] [日]インフェリウス惑星戦史外伝 Condition Green [日]心霊恐怖レポート うしろの百太郎 [日]江口寿史の寿五郎ショウ [日]満ちてくる时のむこうに [日]紧急発进セイバーキッズ [日]スイート・スポット [日]おカマ白书 [日]おカマ白书2 [日]捜獣戦士 サイキック・ウォーズ [日]ドラゴンフィスト [日]梦枕獏 とわいらいと剧场 [日]巴がゆく! [日]暴走戦国史 スペクター诞生 [日]暴走戦国史II 狼の镇魂歌 [日]ザ・学园超女队 [日]一本包丁満太郎 [日]一本包丁満太郎2 [日]IZUMO イズモ [日]JINGI 仁义 [日]ジャングルウォーズ [日]硬派银次郎 [日]恐怖新闻 [日]迷走王ボーダー [日]マネーウォーズ 狙われたウォーターフロント计画 [日]シャコタン★ブギ あの娘とスキャンダル [日]シャコタン★ブギ2 骑崎クンからの手纸 [日]シャコタン★ブギ3 参上!セブンのマユミ [日]月がのぼるまでに [日]横浜名物 男片山组! [日]ZIGGY それゆけ! R&R BAND [日]ふしぎなエレベーター [日]あげまんと福ちん [日]テレクラの秘密 [日]Dr.タイフーン [日]OH!MYコンブ [日]ASUKA日本の歴史 [日]どろろんぱっ! [日]BE-BOP 海贼版 [日]それいけ! アンパンマン ドキンちゃんのドキドキカレンダー [日]アニメ・V・コミック レンタマン [日]装甲巨神Zナイト [日]小学生の诱拐防止 ユミちゃんあぶないよ! [日]ドラミちゃん アララ・少年山贼団! [日]
最近看到的 超级麻将狂 Super Zugan ,没有字幕
装甲巨神Z骑士,银河女战士 ETERNAL STORY——想看,好像没字幕
除了第三集好像没字幕
几点说明:1,只列举了年间一些无外流字幕的动画。2,有些字幕我知道是有的,不过仅限于内部交流,是不外流的,所以一起列举出来了,也不用问是那些了。3,另外这些我也只是稍微扫了一遍,肯定有遗漏。4,有些片子是有在线字幕的,然后目前还没有人抄(或者有人抄,不过也限于内部交流,不外流,所以也一起列举出来了)这部分字幕没有技术含量,出点苦力就行了。5,只列举到2000年是因为2001年以后知名点的基本都有人做字幕了,而且资源普遍烂大街,就不多说了。闘将!!拉麺男 宇宙伝说ユリシーズ31魁!!男塾キテレツ大百科ひみつのアッコちゃん(1-3作) ピーターパンの冒険 獣神ライガー アイドル伝说えり子ミラクルジャイアンツ童梦くん悪魔くん魔法使いサリー(1-2作)笑ゥせぇるすまんつる姫じゃ〜っ!キャッ党忍伝てやんでえアイドル天使ようこそようこNG骑士ラムネ&40 楽しいムーミン一家(90)魔法のエンジェルスイートミントカラス天狗カブトピグマリオおちゃめなふたご クレア学院物语 21エモン魔法のプリンセス ミンキーモモ(1-2作)ママは小学4年生 お〜い!竜马スーパービックリマンヤダモンおやゆび姫物语姫ちゃんのリボンスペースオズの冒険 南国少年パプワくん(92)(03)みかん絵日记 赤ずきんチャチャモンタナ・ジョーンズカラオケ戦士マイク次郎超くせになりそう覇王大系リューナイト白雪姫の伝说 おまかせスクラッパーズ ヤマトタケルメタルファイター♥MIKU飞べ!イサミストリートファイターII V ママはぽよぽよザウルスがお好きナースエンジェルりりかSOS モジャ公 シンデレラ物语水色时代快杰ゾロ赤ちゃんと仆 家なき子レミ花より男子超者ライディーンキューティーハニーF ケロケロちゃいむあずきちゃん(1-3季)MAZE☆爆热时空猫·狐·警探白鲸伝说梦のクレヨン王国深海伝说MEREMANOIDネクスト戦记EHRGEIZ クシーコマンドー外伝AWOL -Absent Without Leave-银河漂流バイファム13 魔法のステージファンシーララ 如月女子高野球部热沙の覇王YAT安心!宇宙旅行(第2期)DT战士ふたり暮らし発明BOYカニパン时空探侦ゲンシクン圣ルミナス女学院 スーパードール★リカちゃん快杰蒸気探侦団 宇宙海贼ミトの大冒険1-2超発明BOYカニパン神八剣伝パワーストーン それゆけ!宇宙戦舰ヤマモト・ヨーコD4プリンセスモンスターファーム〜円盘石の秘密〜ぶぶチャチャサイボーグクロちゃん未来少年コナンII ビックリマン2000マイアミ☆ガンズ モンスターファーム〜伝说への道〜银装骑攻オーディタイムボカン2000 怪盗きらめきマンBRIGADOON胜负师伝说 哲也无敌王トライゼノン 机巧奇传ヒヲウ戦记
我知道一个仓鼠管家。。
片源如大海捞针
からくり剣豪伝ムサシロード
中文:机甲武士剑
求大神字幕,极影当年做了四集就跳票了学日语全为此
OVA的话倒凶十将传
6集,前3集网上有字幕,只要抄字幕就可以了,后三话每翻译。都有英文字幕,不用打轴魔法少女队阿尔斯 OVA 6集,前4集有字幕,缺2集再也无法醒来的摇篮曲 二度と目覚めぬ子守呗 1集 有内嵌英文字幕NINETEEN 19 1集 ,英文字幕,不用打轴
贴吧拳王争霸赛中累计获取100场胜利
柔道少女26j之后都没人翻译了
水色时代,只有英文字幕
明日之丈,tv版字幕貌似也不全。
补个稍近一点的,sci-fi harry ,浪曲纪行清水次郎传
还有Angel Cop,没有完全翻译的版本
强烈建议翻译兽兵卫忍风帖剧场版的双语字幕,漫游的那个字幕感觉一般,高清片源的话我有
网球甜心,TV版都很难找←_←字幕更加是
1987年的ハイスクールAGENT 諜報員。字幕
不错 帮顶一下
贴吧热议榜
使用签名档&&
保存至快速回贴ヒメゴトクラブ遠距離戦を得意とするシューティングキャラクター。
多彩な必殺技を使い分けて、敵を近づけるな!
『デスソーサー』で自分自身を斬り刻まないように注意だ!
ゴールデンフリーザに変身して敵に絶望を与えよう!ADX2LE情報 - サウンド助け合い所 @ ウィキ - アットウィキ
サイト内検索
ADX2ユーザー助け合い所
ADX2LE x Unity
ADX2LE x Windows
ADX2LE OSC
Unityサウンド
書き込み練習場所
サウンドネタ
アクセスカウンタ
adx2leウィキ、adx2le wiki
情報(からコピー)
検索にひっかかるようにwikiにADX2LEでのスクリプトのヒント集をwikiにまとめたページになります。
ゲームサウンドを強力にサポートする
ADX2LEダウンロードはこちら→
ADX2用語集→
オンラインマニュアル→
AtomCraftマニュアル→
Atom? エディターじゃないよ CRIAtomといってADX2の下で動いているモジュール名
ADX2ポータルはこちら→
ADX2 LE採用タイトルはこちら→
ADX2Tips→
なお、ここに書いてある情報はADX2とADX2LE両方の情報になります。一部LEでは未実装な機能もあるかもしれません。(わかる範囲で書いています)
Unity向けの場合は一部の機能に制限されている場合があります。(一部のDSP関連のCallback(フィルターやシームレス連結コールバック)など)
トラブルシューティング
古いツールで開けない
CRFATは基本的に新しいツールでデータを作ってしまうと古いツールで開けなくなります。
この場合、最悪目コピーで復元する必要がでてきますが、キューシートの情報であれば、CSVインポートエクスポートが使える場合があります。
DSPバス設定が今までと違う
今までと同じように使いたい場合
1.BUSを8個追加し
2.バスマップのBusMap_Defaultのバス名のところを全て設定する。
3.AISACオートーメーション用バスマップのバス名のところを全て設定する。
バスにセンドした音がでない
DSPBusSettingのバスのセンドにMasterOutを追加する。
カスタムプラグインに何もでてこない
エフェクトプラグインマネージャーでプラグイン検索パスを追加する
カスタムプラグインの影響でツールが起動しない
iniファイル
C:\Users\ユーザ名\AppData\Local\CRIWARE\Adx2\CriAtomCraft\
CriAtomCraft.iniの記述
vstPath=C:\\Program Files\\Common Files\\Steinberg\\VST2
を空フォルダにパスに置き換えて回避する
AtomWindowが開かない
Qiita記事「AtomWindowが開かない」?
うまくアップデートできない
UnityEditor上で関連するコンポーネントなどが認識されている状態だとうまくImportができないようです。
まず、空のシーンを作る。
Unityを閉じる。
Unityを開いてcriware_unity_plugin.unitypackageをAssetsにドロップしインポートする。
とするとうまくいくはず。
MonoDevelopでビルドするとエラー
エラーのでるProjectを右クリックしOptionsを選択、Build&GeneralのTargetframework:を「Mono/.Net 4.0」を選択する。
※SolutionリストのAssembly-CSharp_Editorとかの右クリックです。(よくSolutionのOptionをみて項目が無くて焦るので)
PCでビルドしようとしたらエラー
Assets/Plugins/CriWare/CriHcaDecoder.cs(45,36): error CS0117: `System.IO.File' does not contain a definition for `ReadAllBytes'
がでてるけど?
Unity EditorのPlayerSettingがiOSになっていると出ます。(Macで作業したプロジェクトなど)
WindowsではiOSがビルドできないため、Unity EditorのPlayerSettingでiOS以外(PCなど)にSwitchPlatformして下さい。
The number of Field exceeds the number of MAX Field.とエラーになる
もしくは、
[CRIWARE] Error:E:Invalid parameter.
これはデータフォーマットが不正な場合に起こります。ツールとランタイムのバージョンが合っているかどうか確認してください。
(ランタイムが古く、データが新しいフォーマットの場合に起こりやすいです)
CRI runtime library is not compatible. Confirm the version number.
これもデータの不整合が考えられるのですが、他に、
unity実行後に「criware_unity_plugin.unitypackage」をインポートした場合、
一部のオブジェクトが正しくインポートできない(実行中のファイルの上書きなどに失敗)している可能せがあります。
「criware_unity_plugin.unitypackage」を確実に再インポートするには、
ファイルメニューから、「New Scene」 を選択。
Unityを一度終了する。
Unityを起動する。
「criware_unity_plugin.unitypackage」をダブルクリックしてインポートする。
これで、確実にインポートができます。
Unity側で、一度でもシーンが実行されてしまう(Editor上でも)と、ファイルがロックされてしまうので、
空のシーンにしてから再起動する必要があります。
CriWareLeStub.csでエラー
これは、ADX2LEを動かすためのソースです。ADX2プロ版の場合は不要ですので削除してください。
[CRIWARE] Error:E:Can not find specified cue name. (Specified cue name is 'Beat1'.)
これは、キュー名「Beat1」が見つからないというエラーです。正しくacbがロードされていない場合に起こります。
キューが見つからない場合にも起こります。
Windows7 Windows8でUnityでエラー?XAudio2がなんとかで音が出ない場合
これでWindows7 ADX2LE動いた→
という報告があります。
なお、最近のバージョンではWASAPIに対応しているため、上記の問題が起こらないかもしれません。
仮想環境でCRIAtomCraftを動かす時の注意
Macで作業する場合、ParallelsやVMWareなどの仮想環境でAtom Craftを動かす事になる。
このときビルドの出力先は通常のWindowsが認識出来るフォルダに設定する必要がある。
ほとんどの場合デフォルト設定のままで良いのですが、
仮想環境がファイルを同期するような特殊なフォルダの場合正しく出力できない場合があります。
(例:マイドキュメントがMacのドキュメントと共有されている等)
ドライブレター(C:とか)が含まれるフォルダであれば問題ありません。(\\から始まるパスだとうまくいかない)
UnityではMac側で認識可能な共有フォルダを指定すると良い。(稀に共有にラグが発生するので日付など確認するとなお良い)
CRIAtomCraftをAssetsフォルダ以下に配置してはいけない理由
Assetsを共有したい目的で、Assetsフォルダ以下にCRIAtomCraftのプロジェクト(.atmcproj)を置くと、
元素材の波形やビルド時に生成されるキャッシュファイルや生成されたcsファイルが多重にUnityに認識されて問題が発生します。
波形や関連ファイルが多いとUnityのロードに時間がかかります。
AtomCraftのファイルはAssetsフォルダの外側(Assetsと同階層または一つ上の階層にAtomCraftフォルダを作ってその中とか)
で作成/管理し、生成物(.cs,acb,acf,awb)のみAssetsフォルダ内にコピー(CRI Atom WindowでUpdate)すると良いです。
突然爆音になる?
以下の操作時
コーデックがADXでシーク再生を行う
ツールで再生位置を変えてプレビューした
原因として以下のものが考えられます。
ADXでのシーク再生は推奨されません。(ADXの場合、ADPCM的な予測値が不明になるため、無音部分以外のシークは問題が起こる場合があります。)
HCAでは問題が起こらないため、ターゲットコンフィグのデフォルトコーデックをADXからHCAなどに変更すると良いです。
他、LEのみの使用では通常起りませんが、ADX2LEではないプロ版のデータを再生しようとした場合にも正しく発音されない場合があります。
爆音については、スピーカやヘッドフォン、耳を痛めてしまう恐れがありますので、ご注意ください。
暗号化のかかったデータの場合なども同様に爆音になる可能性が高いです。
突然音が鳴らなくなった
?プレビュー再生で、「AWBのビルドに失敗しました」となった場合、previewCacheフォルダ内のAWB名のファイル(.awb,.TmpAwb,.oldなど)を削除すると復活する場合があります。
AtomWindowにキューが表示されない
?UnityのCriAtomWindowにキューの情報が表示されていない場合、一度アプリを実行して実行中にGetInfoボタンを押すとリストが得られる。
突然エディタが終了する
?ADX2LEはネイティブプラグインで動作しています。そのため、初期化などが正しく行われていない場合にCri〇〇といった関数にアクセスが行われるとUnityEditorごと落ちてしまいます。
もし、複雑な処理で落ちてしまうような場合、まずCri〇〇の呼び出しをコメントアウトし安定して動作するか確認し、
もしCri〇〇の呼び出しが原因と分かった場合、次にどのタイミングで落ちてしまうかをチェックします。
チェックは地道にコメントアウトを少づつ外して行くといった方法になります。
アップデートがうまくいかない
「CRIWARE Unity Plug-in」をアップデートする場合、プロジェクトを開いた後、まだシーンをロードしていない状態で、新しいカスタムパッケージをインポートしてください。
変更があるファイルのみ上書きされます。
いったんシーンをロードしてしまうと、パッケージのインポートに失敗する場合がありますので注意してください。
発音数が足りない
Cri Ware InitializerのStandard Voice Poolの数を増やす
あと、VirtualVoice(仮想ボイス)も合わせて増やす。
ストリーム数を増やす場合はFileSystemのストリーム数も増やす。
発音数の確認スクリプト(デバッグ用途)
TextVoices.text = string.Format(&{0} vocies&,
CriAtomExVoicePool.GetNumUsedVoices( CriAtomExVoicePool.VoicePoolId.StandardMemory).numUsedVoices
+ CriAtomExVoicePool.GetNumUsedVoices( CriAtomExVoicePool.VoicePoolId.HcaMxMemory).numUsedVoices);
発音数はボイスプールごとにある。ボイスプールの最大発音数もとれる。
CriAtomExVoicePool.GetNumUsedVoices( CriAtomExVoicePool.VoicePoolId.StandardMemory).numPoolVoices
iPhone/Android同時開発で同じビルドデータを使いたい
iPhoneとAndroid共有したい場合、Androidで出すといい。
理由は、低遅延再生のためのパラメータパレット設定(Native)がAndroidでのみ出力されるから。
Androidの設定の初期設定では44100でリサンプリングされてしまう。
これを避けるには強制リサンプリングレートフラグをfalseにする。
ただし、気をつける点として、低遅延再生(Native)を使う場合に44100でないとエラーになる。
低遅延再生(Native)を使うとBusエフェクトは効かない。
フィルターも使えない。あくまで、そのまま再生する用として使う。
低遅延再生は、音ゲーなどでのタップ音などにのみ使う。
低遅延再生(Native)はいろいろ制限があるので注意。(Androidの機種やバージョンなどによって発音負荷や動作が異なる)
あと、iPhone/Androidはデフォルト設定だとADXコーデックなので、HCAに変更する。
ループ再生で音がループしない
?タイムラインでのループマーカーでは波形の途中に戻るようなループはできません。ループ区間内に波形の出だし部分があるもののみ再度再生されます。
他にマテリアルの設定でループをつけるとサンプルレベルの精度でループが可能です。
他に「自動繰り返し間隔」を指定することでオーバーラップや間を入れてループといったこともできます。
トラックで音が重なって鳴ってしまう
?トラックの設定の「トラックMonoフラグ」をオンにすると、重ならないようになります。
ブロックの再生がまれにずれる
?サーバー周期が低い場合に起こります。サーバー周期をあげることで改善する場合があります。
ビート同期再生で音が重ならない
?ビート同期再生は、次の音へ切り替わるような動作のため、複数の音をリクエストした場合に最後のリクエストした音のみが再生されます。
複数の音を鳴らすキューをアクションで呼び出すなどの工夫が必要です。
シーケンスマーカーいろいろ
曲の途中から再生する音にする
1.キューを作る
2.BGMをキューにドロップしてトラックを作る
3.キューに「シーケンススタート」マーカーを作成する
4.マーカーの位置を適宜ずらす
5.適当にウェーブフォームのエンベロープのアタックなどをいじってフェードインっぽくする
曲の途中で終わらせる
1.キューを作る
2.BGMをキューにドロップしてトラックを作る
3.キューに「シーケンスエンド」マーカーを作成する
4.マーカーの位置を適宜ずらす
5.適当にウェーブフォームのエンベロープのリリースなどをいじってフェードアウトっぽくする
曲の開始位置をランダムに再生する音にする
1.キューを作る
2.BGMをキューにドロップしてトラックを作る
3.キューに「シーケンススタート」マーカーを二つ以上作成する
4.マーカーの位置を適宜ずらす
5.適当にウェーブフォームのエンベロープのアタックなどをいじってフェードインっぽくする
シーケンススタートが複数あると、ランダムにどれかから再生されます。
AISACいろいろ
BGMをハイパスエフェクトを通した音にする
1.キューを作る
2.BGMをキューにドロップしてトラックを作る
3.トラックにAISACを追加し、「バンドパスフィルター-低域」を作る。
4.AISACのカーブを右肩上がりにする。
5.AISACを動かすとハイパスになる。
下記にあるアクションでAISACを動かしたり、REACTでAISACを動かしたりすることができる。
アクションいろいろ
特定キューを止めるキュー
キューをリクエストすると、再生中の特定のキューのみを停止するキューの作り方
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーに止めたいキューをドロップ
4.アクショントラックに「停止」アクションを追加する。
キューにつけたAISACを動かすキュー
キューをリクエストすると、AISACを一定時間かけて変更するキュー
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにAISACを動かしたいキューをドロップ
4.アクショントラックに「再生パラメータアクション」アクションを追加する。
5.「パラメータ変更」アクションのタイプをAISAC0、変更値、変更時間を設定する
カテゴリにつけたAISACを動かすキュー
キューをリクエストすると、カテゴリにつけたAISACを一定時間かけて変更するキュー
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにカテゴリをドロップ
4.アクショントラックに「再生パラメータアクション」アクションを追加する。
5.「再生パラメータタイプ」をAISACコントロール0、目標パラメータ値、目標への速度を設定する
キューにつけたセレクタを動かすキュー
キューをリクエストすると、特定のキューのセレクタを変更するキュー
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにキューをドロップ
4.アクショントラックに「セットセレクタラベル」アクションを追加する。
5.「セレクタラベル」を設定する
プレーヤーのフェードパラメータを変更するキュー
1.キューを作る
2.プレーヤーアクショントラックを作る
3.プレーヤーアクショントラックに「プレーヤーフェーダー」アクションを追加する。
4.「フェードイン時間」「フェードアウト時間」「カーブタイプ」を設定する
なお、フェーダーは別途、ランタイムでつけておく必要がある。
BGMのピッチを下げつつ音を止める
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにカテゴリをドロップ
4.アクショントラックに「再生パラメータアクション」アクションを追加する。
5.「再生パラメータタイプ」をピッチ、目標パラメータ値を-1200、目標への速度1.0を設定する
6.「停止」アクションを追加する。
複合技いろいろ
「飛ばし」みたいな演出をする
1.DSPバス設定にバスを追加する(飛ばし用のバス)
2.バスにエフェクト(リバーブ)をつける。
3.バスのセンド先をMainにつなぐ
4.バスマップで、飛ばし用バスを追加する
5.BGMのキューを作る
6.BGMのキューの飛ばし用バスを最大出力にする
これで、エフェクトのかかった音が準備できたので、今度はこれらをコントロールキューを作る
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにBGMキューをドロップ
4.アクショントラックに「再生パラメータアクション」アクションを追加する。
5.「再生パラメータタイプ」をバスセンド(飛ばし)、目標パラメータ値を0、目標への速度10.0を設定する
6.「再生」アクションを追加する。
これで、エフェクトが抑えられた状態でBGMが鳴らせる。
次に飛ばしつつ止めるキューを作る
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにBGMキューをドロップ
4.アクショントラックに「再生パラメータアクション」アクションを追加する。
5.「再生パラメータタイプ」をバスセンド(飛ばし)、目標パラメータ値を1、目標への速度10.0を設定する
6.「停止」アクションを追加し、適宜後ろへずらす。(止まるまで少し時間かかる分の音だけエフェクトへ飛ばす)
「飛ばし」みたいなのの別回答
1.通常の音楽と、
その音楽にめっちゃリバーブのかかった音を用意する。
2.トラックにそれぞれ音を追加する
これで、両方が同時に鳴っているキューができる。
次にこれを制御するキューを用意する。まずドライ音用キュー
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにBGMキューをドロップ
4.アクショントラックに「ミュートアクション」を追加する。
5.「トラックインデックス」を0、ミュート状態を「ミュート解除」
6.アクショントラックに「ミュートアクション」を追加する。
7.「トラックインデックス」を1、ミュート状態を「ミュート」
次にWet音用キュー
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにBGMキューをドロップ
4.アクショントラックに「ミュートアクション」を追加する。
5.「トラックインデックス」を0、ミュート状態を「ミュート」
6.アクショントラックに「ミュートアクション」を追加する。
7.「トラックインデックス」を1、ミュート状態を「ミュート解除」
メリットとしては、DSPエフェクト使わずお気に入りのかかった音を用意できる。 デメリットとしては2音常に再生し続けている状態になっている。
「飛ばし」みたいなのの別回答2(ビート頭で飛ばす)
1.通常の音楽と、
その音楽にめっちゃリバーブのかかった音を用意する。
2.トラックにそれぞれ音を追加する
1.セレクタによるトラック遷移キューを作る
2.トラックを2つ用意し、それぞれ波形を配置
3.セレクタを用意する。セレクタラベルを2つ用意する
4.トラックにセレクタラベルをセットする。
5.「ビート同期マーカー」を追加する(適宜BPMを設定する)
次にセレクタを切り替えるキューを用意する
1.キューを作る
2.アクショントラックを作る
3.アクショントラックのトラックヘッダーにBGMキューをドロップ
4.アクショントラックに「セットセレクタラベル」を追加する。
5.「セレクタラベル」をセットする
これをトラックの数用意する。
(止める場合は、「停止」のアクションも追加する)
これの良いところは、発音数が1で、クロスフェードする瞬間だけ2音になる。(すごく少ない発音数で済む)且つ、サンプルレベルで同期している。
全体の尺が同じであれば、BPM違いのBGMを用意することもできる。
(トラックにBPM設定をする)
サイドチェインコンプ
DSPバス設定に「振幅解析機」と「コンプレッサー」を用意して、声とかバスドラ(?)を聞こえやすくするような効果を作る。
1.バスを用意、トリガーとなるバス、影響を受けるバス(BGMとか)
2.トリガーのバスに「振幅解析機」をつける
3.受けるバス(BGMとか)に「コンプレッサー」(こちらはセンド先をMasterOutにする)
4.バスマップを用意する(トリガー、BGMなど)
トリガーのキューの設定
5.キューで、トリガーバスを指定し1.0をバスセンドしておく。
BGMのキューの設定
5.キューで、BGMバスを指定を指定し1.0をバスセンドしておく。MasterOutは0にする。
BGM再生中に、トリガーのキューを鳴らすとBGMにコンプがかかる。
効果音を作りたい
の33ページから「爆発音」「レーザー音」「サイレン音」など作ってみましょう。
↑チップチューン風の音が作れます。
シーンの初期手順
UnityでPluginをインストールした後に以下の手順でシーンに最低限必要なオブジェクトを作成します。
①「CRI」メニューからCreate CRIWARE Libraly Initializerを選択し、ADX2システム初期化の為のオブジェクトをシーンに追加する。
②「CRI」メニューからCreate CRIWARE Error Handlerを選択し、エラーハンドラをシーン追加
③「CRI」メニューからOpen CRI Atom Window ...でCRIウィンドウを開きそのウィンドウ内の
Select Assets Rootボタンで[Atom Craftの出力したAssetsフォルダ]を指定します。
Update Assets of &CRI Atom Craft&ボタンでACF,ACBを更新します。
この手順でツール「CRI Atom Craft」で作ったデータを更新する事ができます。
AtomCraftの(cs,acf,acb,awb)ファイルが正しく認識できたら
④「CRI Atom Window」の「CreateGameObject」ボタンを押してAtomSourceのついたオブジェクトを作成します。
この時、同時にCRIWAREオブジェクトが生成されます。
生成されたオブジェクトの「Play on Start」をチェックし再生確認をする。
ACFはどこで指定するの?
CriWareInitializerのInitialize Atomの項目にあるACF File Nameに
NewProject.acfといった名前で設定します。
CRIWAREのCRI Atom(Script)で設定します。
CriAtomスクリプトにもACF Fileの項目がありますが、こちらは特に指定しなくても問題ありません。
逆に両方指定してしまうと2回初期化しようとしてエラーが発生します。
スクリプトはじめ
ADX2LE用の音を鳴らす為のSoundManager.csを作る
①シーンに空のGameObjectを生成し、SoundManagerと名前をつける。
②プロジェクトにC#スクリプトを作成し、SoundManager.csと名前をつける。
③ ①で作ったオブジェクトに②で作ったcsをドロップし、コンポーネントとしてくっつける。
あとはこのcs内でAtomSouceを生成しても良いし、くっつけたコンポーネントを操作するも良い。
AtomSourceのスクリプトでの作り方は次に書いてある。
CriAtomSourceコンポーネントの追加(スクリプトから追加)
atomSourceSe = gameObject.AddComponent&CriAtomSource& ();
atomSourceSe.cueSheet = cueSheetN //キューシート名指定
AtomSourceコンポーネントをスクリプトで作りたい場合はStart()内などに上記のスクリプトで追加すると、
実行時にCriAtomSourceが追加されます。
複数のAtomSourceをつけたい場合など上記のようなやり方もできるという例になります。
CriAtomSourceコンポーネントの取得
atomSourceSe = gameObject.GetComponent&CriAtomSource& ();
ゲームオブジェクトにくっついてるAtomSourceコンポーネントを取得します。
スクリプトで制御したい時にこれを使って取り出す。
再生/停止/ポーズ/ポーズ解除
atomSourceSe.Play(4); // キューID指定再生
atomSourceSe.Play(“orchehit”); //キュー名指定再生
atomSourceSe.Stop();
atomSourceSe.Pause(true);
atomSourceSe.Pause(false);
再生関数には、番号(ID)指定と名前(ラベル)指定の二種類があり、どちらでも好みのものを利用できます。
スクリプト特殊
特殊な再生開始(時間指定して、フェードイン、フェードアウト設定を上書き)
atomsourceSelect.startTime = 30*1000; //30秒目から
atomsourceSelect.Player.SetEnvelopeAttackTime(2000f); //2秒フェードイン
atomsourceSelect.Player.SetEnvelopeReleaseTime(2000f); //2秒フェードアウト
atomsourceSelect.Play(); //再生
Pitch/Volume変更
atomSourceSe.pitch = 100; // cent(100で半音)
atomSourceSe.volume = 1.0f;
// 1.0で原音と同じ振幅レベル
【即時反映】
ピッチやボリュームは変更したらすぐに反映します。
これは、同じatomSouceSeで複数の音を再生している場合、全ての音に反映します。
再生中の音に反映させたくない場合はピッチベンドの項目を参考にしてみてください。
パンは360度のパンになっており、に合わせ
LRの角度は30度、サラウンド(後ろ側)は120度の範囲で指定します。
atomSourceSe.pan3dAngle = -30; // Lスピーカから再生 
2Dゲームであれば、-30~+30の範囲をL~Rとみなして操作することができます。
なお、後ろ側へパンをした場合、音が消えてしまうタイプと、ダウンミックス(4ch-&2chにダウンしてミックスされる)が行われる
場合があり、ハードウェアやプラットフォームに依存します。
(ダウンミックスされる場合は-3dBほど下がってフロントスピーカへ出力される。)
パンの奥行き感をだす
pan3dDistanceは初期値は1.0で
値が小さくなると他のスピーカから漏れていくようになり、0.0で完全に定位がなくなります。
1.0がスピーカの配置の円周上、0.0が全スピーカの中央となります。
atomSourceSe.pan3dAngle = 0.80; // 若干音像がぼやける (ステレオだと中央に寄る)
画面の手前にいるキャラクタはしっかりと音の定位を動かし、遠い側にいるキャラは0.5くらいにして定位をぼかすといったことができます。
画面構成によってはまったく別パターンもあり
ある距離無いは定位をぼかし、ある距離が一番定位がしっかりし、さらに遠くは音量が下がりつつまたぼかすといった形になります。
(カメラのフォーカス、マイクのフォーカスなどのイメージになり、画角が広い、狭い、望遠か近距離かなどでも演出方法が変わります)
また、ゆっくりと音が頭上を通り抜ける場合(対角線上のスピーカへの移動)などにもこのパラメータを使うことで、スピーカ感の音のジャンプを防ぐことができます。
他にも、メニュー画面に遷移した時に0.0にしてモノラル風にし、ゲーム開始で1.0に変化させることで、
空間の広がり感の変化のメリハリをつけるといった効果も考えられます。
単純に音源までの距離とは違う場合があります。例えば、音源の大きさで考えることもあります。
大きな噴水の近くでは音像がつつまれる感じになるため0.0に近くなり、蚊や蜂などが30cm以内で飛ぶような音の表現は1.0になります。
3Dポジショニング
3Dポジショニングは毎フレームアップデートしつつ、CRI ListenerとのCRI SoundSourceの位置関係から音の定位をします。
さらに、距離減衰やドップラー、音源コーンなどの効果をもたせることができます。
トレードオフとして演算量や設定の手間が増えますが、距離AISACなどと組み合わせることで、自動化しつつ音の変化の表現を豊かにすることも可能です。
例えば、サラウンド側にまわった音はAISACでローパスフィルタの周波数をさげるなど。
注目させたい、ここぞという音につけていくのが効果的です。
[トラブルシュート]3D Positioningをチェックしても音の位置が変化しない
AtomCraft側で
[ウェーブフォームのPanTypeをオート]
[キューの距離減衰を設定]
にする必要がある
[トラブルシュート]PanTypeを変えても音の位置が変化しない
 atomPlayer = new CriAtomExPlayer(); // AtomExPlayer()作成
atom3dSource = new CriAtomEx3dSource();
atomPlayer.SetPanType(CriAtomEx.PanType.Pos3d);
atomPlayer.SetCue(null,&synth&);
atomPlayer.Set3dSource(atom3dSource);
atomPlayer.Set3dListener(CriAtomListener.instance.internalListener);//リスナーもセット
void Update () {
atom3dSource.SetPosition(this.transform.position.x,this.transform.position.y,this.transform.position.z);
atom3dSource.Update();
[トラブルシュート]リアスピーカの音がしない
正確には、iPhoneなど2ch出力の機種で、サラウンド側にある音が聞こえない場合の対処です。
マトリクスのエフェクトをつかってスピーカ出力のルーティングを変えることで、フロントへまわします。
これだと音量が1.5倍になるからヘッドルーム(音量の最大に達しないように音量を小さくし余裕をもつ事)を多めにしておく必要あり
他にも前後で音の質感を変えたい場合などにもマトリクスを使う方法もあります。
サンプルソース:
atomSourceSe.SetAisac(aisac_id,value);//AISACコントロールID指定
atomSourceSe.SetAisac(“Any”,value); //AISACコントロール名指定
AISACはゲームの状況を音に影響させたい場合に使います。ピッチやボリューム変更と同じようなコントロール値という0.0~1.0の値で、ツールで作成したAISAC変化をプログラムから呼び出す事ができます。
持続音などの変化(エンジン音)やBGM、環境音に対するフィルター処理など様々な用途に使う事ができます。
カテゴリボリューム変更
CriAtom.SetCategoryVolume(&BGM&,bgmVolume);
カテゴリはツールでキューに設定しておくことができます。
キューに適切にカテゴリを設定することで、ゲーム中のサウンドコンフィグとして使う事ができます。
カテゴリとは、BGM、SE、Voice、Ambientなど大まかな分け方と
CutScene、MainChara、SubChara、Enemy、Weaponなどの分類
System、InGame、UI、Areaなど
Shoot,Throw,Explosionなど
一つのキュー(音定義)に対して複数のカテゴリを持たせる事ができます。(タグのようなイメージ)
カテゴリにつけたAISACの変更
CriAtomExCategory.SetAisac(0,0,0); //カテゴリID 0のAISACControlID0にAISAC値0をセット
CriAtomExCategory.SetAisac(1,0,0); //カテゴリID 1のAISACControlID0にAISAC値0をセット
CriAtomExCategory.SetAisac(2,0,0); //カテゴリID 2のAISACControlID0にAISAC値0をセット
CriAtomExCategory.SetAisac(3,0,0); //カテゴリID 3のAISACControlID0にAISAC値0をセット
バスについて
最近バスの仕様が変更になって、AtomCraftでバスを追加しないとうまく動かないかもしれない。気をつけて。
バスセンド(リバーブ量変化等)
これは個々のプレーヤーせ再生するキューのバスセンド量を調節する場合に使用します。
float depth = 1.0f;
int busNo = 1; //reverb
atomSourceSe.SetBusSendLevelOffset(busNo,depth);
センドエフェクトは比較的重いDSP処理を行う目的で使用します。上記の関数はデータ設定に対して加算します。
トンネルに入った時にdepthを大きくするという使い方ができます。
ツールで他のバス(バスは0~7まで)にエフェクトを追加しておく事で、音に変化を与える事ができます。
【応用的な使い方】
バスセンドを動的に変えて、一部の音の振幅レベルだけを取り出す
DSPバスのボリューム変更
これは、DSPバス設定のバスのボリュームを変更する場合に使用します。
void CRIAPI criAtomExAsr_SetBusVolume ( CriSint32
CriFloat32
ASRって何?
AtomSoundRendererの略 サウンドのレンダリングを主に行う。
ASRラックって何?
AtomSoundRendererはミキサーを持っていて、それの収まっているラック(入れ物)のこと。
スクリプト【状態取得】
再生時刻の取得
GUILayout.Label(atomSourceBgm.time.ToString());
上記のはOnGUI()なっで呼ぶと再生時刻を表示します。
音楽のタイミングに合わせて何かしたい場合
より厳密に時刻を撮りたい場合、GetTimeSyncedWithAudioを使うと、上記のTimeよりも正確に時間がとれます。
例えば、ポーズ、ポーズ解除や、iOSなどスプリングボードに出入りするなど、サウンドのタイミングが乱される場合があります。(時刻取得がフレームスキップするなど)
この関数は、サウンドの再生サンプル数から時刻を返すため極めて正確な時刻を得られます。
反面、ピッチを変えられません。また、内部処理の都合で同一フレームで度々呼ぶようなコードにしないことをお勧めします。(負荷がかかる)
GetTimeSyncedWithAudioを使うには、対応したCriAtomExPlayerを用意し、再生する必要があります。
CriAtomExPlayer(bool enableAudioSyncedTimer)
サンプル数を基準とするため、ピッチの変更ができません。
また、波形再生に依存するため、波形が存在しない区間のあるシーケンスでは正しく時刻をとれません。
音ゲーなど、必ず鳴り続けてる音があるものにピンポイントで使用するような感じになります。
シーケンスの時刻を得る
GetSequencePositionを使うとシーケンスの時刻を得ることができます。
シーケンスループやブロック再生、シーケンス再生レートの影響を受けた時刻が得られるため、ブロックの再生位置監視などに使うことができます。
再生状態の取得 (再生中かどうか)
CriAtomSource.Status status = atomSourceBgm.
if ((status == CriAtomSource.Status.Stop) || (status == CriAtomSource.Status.PlayEnd)) {//停止かエンドか
this.playbackBGM = atomSourceBgm.Play(100);
上記の例では停止かエンド時に再度トリガーします。
振幅レベルをとりだす(プレーヤーから)(音量チェック、ピークメータ表示、口パク等)
CriAtomSource atomS
// プレーヤー出力の解析
CriAtomExPlayerOutputAnalyzer criAtomExPlayerOutputA
void Start () {
atomSource = this.gameObject.AddComponent&CriAtomSource&();
// 解析モジュールの作成
CriAtomExPlayerOutputAnalyzer.Type[] type = new CriAtomExPlayerOutputAnalyzer.Type[1];
type[0] = CriAtomExPlayerOutputAnalyzer.Type.LevelM
// コンフィグでバンド数を指定
CriAtomExPlayerOutputAnalyzer.Config[] config = new CriAtomExPlayerOutputAnalyzer.Config[1];
config[0] = new CriAtomExPlayerOutputAnalyzer.Config();
// 出力データ解析モジュールを作成
criAtomExPlayerOutputAnalyzer = new CriAtomExPlayerOutputAnalyzer(type, config);
// ソースに解析をアタッチ
atomSource.AttachToAnalyzer(criAtomExPlayerOutputAnalyzer);
void Update () {
Debug.Log(&Player Level & + criAtomExPlayerOutputAnalyzer.GetRms(0).ToString());
void OnDestroy()
// ソースに解析をデタッチ
atomSource.DetachExPlayer();
振幅レベルをとりだす(バスから)(音量チェック、ピークメータ表示、口パク等)
void Start () {
CriAtomEx.AttachDspBusSetting(&DspBusSetting_0&); //バス変更
CriAtom.SetBusAnalyzer(true); // バス解析器を有効化
void Update () {
CriAtomExAsr.BusAnalyzerInfo lBusInfo = CriAtom.GetBusAnalyzerInfo(0); //バス0
Debug.Log(&level:& + lBusInfo.peakLevels[0].ToString()); //チャンネル0(Left)
8個あるバスのうちバス0はマスターアウトのバスで、全ての音がそのバスを経由します。
特定の音のみの振幅を検出したい場合は、専用のバスへもセンドして検出する事も可能。(声専用バス等)
GetBusAnalyzerInfo()はUpdate()などで定期的に呼び出すことで、リアルタイムの変化が取り出せます。
Debug.Log(&level RMS:& + lBusInfo.rmsLevels[0].ToString()); //RMS
Debug.Log(&level PeakHold:& + lBusInfo.peakHoldLevels[0].ToString()); //RMS
もあります。
デフォルトではRMSは50msec,ホールドは1000msec
RMS、ピークホールドの時間設定は、AttachBusAnalyzerの引数で設定を変える事もできます。
各チャンネル0~7(L,R,C,LFE,Ls,Rs,Ex1,Ex2)のレベルが確認できるので、音量のチェックなどにも利用できます。
(使用しない時は負荷軽減になるのでCriAtom.SetBusAnalyzer(false); を呼んでおきましょう。)
バスの波形フィルターコールバックを使って波形を参照したり直接加工する
CriAtomExAsrBusFilterCbFunc(void *obj, CriAtomPcmFormat format, CriSint32 num_channels, CriSint32 num_samples, void *data[])
これ使うとゲーム側でバスの音を変化させるDSP処理が書けたりする
プレーヤーの波形フィルターコールバックを使って波形を参照したり直接加工する
CriAtomExPlayerFilterCbFunc(void *obj, CriAtomExPlaybackId id, CriAtomPcmFormat format, CriSint32 num_channels, CriSint32 num_samples, void *data[])
これ使うとゲーム側でプレーヤーの音を変化させるDSP処理が書けたりする
たとえば、ボイスチャットや別のサウンド処理へ流したり、サンプリングしたりといったことにも使える
ACF情報の取得
// カテゴリ情報の取得数
int categoryNum = CriAtomExAcfDebug.GetNumCategories();
Debug.Log(&categoryNum & + categoryNum.ToString());
CriAtomExAcfDebug.CategoryInfo categoryI
for(ushort categoryNo = 0; categoryNo & categoryN categoryNo++){
bool ret = CriAtomExAcfDebug.GetCategoryInfoByIndex(categoryNo,out categoryInfo);
Debug.Log(&CategoryName \&& + categoryInfo.name + &\& GroupNo & + categoryInfo.groupNo.ToString());
// ゲーム変数の取得
int gameVariablesNum = CriAtomEx.GetNumGameVariables();
Debug.Log(&gameVariablesNum & + gameVariablesNum.ToString());
CriAtomEx.GameVariableInfo gameVariableI
for(ushort gameVariablesNo = 0; gameVariablesNo &gameVariablesNgameVariablesNo++){
bool ret = CriAtomEx.GetGameVariableInfo (gameVariablesNo,out gameVariableInfo);
Debug.Log(&GameVariablesName \&& + gameVariableInfo.name + &\&&);
// AISACコントロール情報の取得
for(uint aisacControlId = 0;aisacControlId&32;aisacControlId++)
string aisacControlName = CriAtomExAcfDebug.GetAisacControlNameById(aisacControlId);
if(aisacControlName.Length != 0){
Debug.Log(&AISAC Control ID & + aisacControlId.ToString() + & Name \&& + aisacControlName + &\&&);
ACB(キューシート)情報の取得
CriAtomExAcb acb = CriAtom.GetAcb (cueSheetName);
キュー情報一括取得
string cueSheetName = “Pinball”;
CriAtomExAcb acb = CriAtom.GetAcb (cueSheetName);
CriAtomEx.CueInfo[] cueInfoList = acb.GetCueInfoList ();
キューにはツールで設定された様々な情報があります。これを再生前に取得する場合上記の関数を使います。名前やID、ユーザーデータ、カテゴリやAISAC使用有無、キューの長さなど取り出す事ができます。
たとえば、サウンドテスト用に再生ボタンを並べる時、キュー名一覧が欲しい場合や、キューがループ(長さが-1)かどうかの判定に使います。
キュー名とキューID一覧を得る
以下のソースを参考にしてacbから情報を取得する事ができます。
// ACB(キューシート)情報の取得
string cueSheetName = &CueSheet_0&;
CriAtomExAcb acb = CriAtom.GetAcb (cueSheetName);
// キュー情報の一括取得
CriAtomEx.CueInfo[] cueInfoList = acb.GetCueInfoList ();
// キュー名とキューIDをデバッグ出力
foreach(CriAtomEx.CueInfo cueInfo in cueInfoList){
Debug.Log(&cueName:&+cueInfo.name + & cueId:&+ cueInfo.id);
キュー情報取得(キュー名指定)
CriAtomExA
CriAtomEx.CueInfo cueI
int GetNumBlocks(string cueName){
acb = CriAtom.GetAcb (cueSheetName);
acb.GetCueInfo (cueName, out cueInfo);
return cueInfo.numB
// ブロック数を得る
string GetUserData(string cueName){
acb = CriAtom.GetAcb (cueSheetName);
acb.GetCueInfo (cueName, out cueInfo);
return cueInfo.userD
// ユーザーデータを得る
ACBの情報をキューシート名で取得し、acbからキューの情報をキュー名で取り出します。ここでは。ブロック数を取得しています。
例)現在の再生時刻と組み合わせて、シークバー(どこまで再生したか)などのような表現などに使えます。
atomsourceBgm = gameObject.GetComponent&CriAtomSource&();
if(atomsourceBgm != null){
CriAtomExA
CriAtomEx.CueInfo cueI
acb = CriAtom.GetAcb (atomsourceBgm.cueSheet);
if(acb.GetCueInfo (atomsourceBgm.cueName, out cueInfo)){
totalTime = cueInfo.
キューの長さを取得する例。ここではCriAtomSourceから取り出している。
DSPバス設定のスナップショット切り替え
criAtomExAsrRack_ApplyDspBusSnapshot ( CriAtomExAsrRackId
const CriChar8 *
snapshot_name,
時間指定でDSPバスエフェクトのスナップショットを切り替える
エフェクトパラメータ設定の違うスナップショットをあらかじめツールで用意し名前をつけておくことで、その設定に変更することができる。
スクリプト【ブロック再生】
ブロック再生は、キューの一部の再生区間(ブロック)の遷移情報をもたせたキューをインタラクティブにコントロールする場合に使用します。
音楽的な変化として、ビートを崩さないで再生を連結するといった要望があるのですが、その解決の一つになります。
データ側で明示的なブロック(音楽的な区切り、Stem、小節、楽章(イントロ、サビ、アウトロ)など)を作成し、
そのブロックの再生中に別のブロックへの変更を行う際に
再生リクエストを音楽的な区切り目(ブロック終端または分割数区切り)まで自動遅延(待機)させたり、
指定回数ブロックをループした後に「次ブロックへ」の遷移指定ができます。
再生中のブロックインデックスの取得(ブロック再生)
CriAtomExPlayback playbackBGM;
playbackBGM = atomSourceBgm.Play(100);
int cur = this.playbackBGM.GetCurrentBlockIndex();
↑現在再生中のブロック番号を確認する方法。どのブロックが再生されているか、確認する用途で使用します。
再生中のブロックインデックスの指定(ブロック再生)
playbackBGM.SetNextBlockIndex(cur % this.cueInfo.numBlocks);
再生中のブロックを含むキューに対して上記の関数を呼ぶと、ツールでブロックをクリックした時と同じような動作になります。
例えば、ブロックを無限ループ(ループ回数-1)にしていたブロック再生中に、別のブロックへ遷移を指定したい場合に使用します。
遷移を指定しても即時に切り替わるのではなく、データ側で定義したブロックの遷移ルールに従って遷移します。
即時に切り替えたい場合は
データ側の「分割数」を細かくする
一度停止して、ブロックセットしてから再生する。 
再生開始前にブロックをセットして再生(ブロック再生)
atomSourceBgm.cueName = &mainBgm&;
atomSourceBgm.Player.SetFirstBlockIndex(1);
atomSourceBgm.Play();
再生開始前にセットする方法。
複数のイントロ(再生開始位置)がある楽曲などで使用します。
シーケンスコールバックを得る
シーケンスコールバックは、AtomCraft側で、シーケンスコールバックマーカーを設定したデータを用意することで実現します。
楽曲のタイミングに合わせた演出を行いたい場合などに使います。
シーケンス上の任意の位置にコールバックイベントを埋め込むことで、
そのタイミングで、SequencerEventCallback関数が動作します。
void Start() {
CriAtomExSequencer.SetEventCallback(SequencerEventCallback); //シーケンスコールバックの関数をセット
void SequencerEventCallback(string eventParamsString)
string[] strList = eventParamsString.Split('\t');
Debug.Log(strList[4]);  // Callbackの文字列をログに表示
int tagNo = int.Parse( strList[4]); // CallbackのIDを取得
//GameObject go = Instantiate(itemPrefab,new Vector3(posX,9,0),Quaternion.identity) as GameO
//GameObject.Destroy(go,4);
strListの4番目はコールバックのタグの内容が文字列で渡ってくるので、これをゲームの演出などに応用することができます。
例えば、出現位置とかに利用できます。
再生位置に連動した演出が簡単にできます。
スクリプト【ビート同期】
BGMのビートを取り出す(ビート同期する処理)
void Start () {
evBeatUpdate += //(デリゲート)
void beat ()
Debug.Log(&beat& + beatNo.ToString());
static int beatNo = 0;
static int lastBeatNo = 0;
public delegate void BeatUpdate ();
static public BeatUpdate evBeatU
void Update () {
beatNo = (int)(0.001f*(atomSourceBgm.time*82f/60f)); //BPM82
if(lastBeatNo != beatNo){
evBeatUpdate();
lastBeatNo = beatNo;
再生時間を元楽曲のテンポ(あらかじめ知っている)で割って拍を取り出し、デリゲートを使ってビートに合わせる処理。
拍に合わせた処理をする(音ゲーなど)に使えるかも。
timeは再生中の時刻(msec)が入ります。
1000msec/60で1分(Minite)あたり何ビート(Beat)数の基準(60BPM)が取り出せます。
1BPM = 60000msec
2BPM = 30000msec
10BPM = 6000msec
60BPM = 1000msec
120BPM = 500msec
テンポが早ければ、ビートの間隔は短くなり、遅ければ長くなります。
レイテンシー
音の再生タイミング(レイテンシー)はオーディオサーバー周期とも密接に関連します。
周期が60FPSの場合、約16.6msecの単位で一括処理が行われます。(クォンタイズがかかったような状態)
タイミングがシビアな音ゲー等の場合、4~6msecほどの精度をもたないと音がずれる(もたったり食った状態)などに
感じます。
200msec,100msec,50msec,25msec,10msecの違いを聞けます。
200「ツ、タン」,100「ツタン」,50「ツタ」,25「チャ」,10「タ」といった感じ。
ゲームの画面更新が16msecや32msecだとすると「チャ」「タ」くらい出て欲しい。
バッファサイズ(サンプル数)とレイテンシー
128,256sampleなどが処理単位となる。ADX2LEではボリューム値はリニアに補間するが、ピッチやフィルターなどはこの最小単位で処理される。
なめらかなピッチベンドなどを行うつもりでもこの最小単位msecの階段状に変化する。ドップラーなども影響受けるので、あまりに高速な音の変化を期待する時に気にかけておくと良い。(奇麗な変化を別サンプルで用意するとか)
最終出力が22050の場合
1000msec = 22050 sample
0.045351msec = 1 sample
5.804989msec = 128 sample
11.609978msec = 256 sample
16msec = 約352.8sample
32msec = 約705.6sample
高域がこもって聞こえる。
最終出力が32000の場合
1000msec = 32000 sample
0.03125msec = 1 sample
4msec = 128 sample
8msec = 256 sample
16msec = 512sample
32msec = 1024sample
処理負荷低い、切りが良い。CD品質より劣る。
最終出力が44100の場合
1000msec = 44100 sample
約0.022676msec = 1 sample
約2.902494msec = 128 sample
約5.804989msec = 256 sample
16msec = 約705.6 sample
32msec = 約1411.2 sample
最終出力が48000の場合
1000msec = 48000 sample
0.020833msec = 1 sample
2.66667msec = 128 sample
5.33333msec = 256 sample
16msec = 768sample
32msec = 1536sample
処理負荷が上がるけど時間方向に細かい変化になる。
ADX2で音が遅れる一般的な要因と回避策
ストリーム再生を使っている。メディアから読み込むため再生開始に時間がかかる。
 【回避策】
 →メモリ再生をする。
 →prep (一時停止状態で読み込み)pause解除で再生開始する。
ボイスリミットに達している音を発音している。
 【回避策】
 →ボイスリミットを多めにする。
  ボイスリミットの確保の処理は早いのですが、ボイス開放処理は遅めなため、短時間で多くのリクエストをすると処理が滞る場合があります。
  (ボイス開放待ちになる)
 →キューリミットを使う
  キューリミット、またはカテゴリの
   キューリミット数を、制限したい発音数
   ボイスリミット数を、制限したい発音数+数音にしておく。
  後着優先時の動作として、
  キューリミットではリリースのある音を止めないため、実質の発音数はオーバーラップ分リミットを超える場合があります。
  ボイスリミットでは、リリースを停止してボイスを取得しに行くため、ボイスの停止に時間がかかる場合、次のボイス取得が遅延します。
  ボイスにゆとりをもたせて、リミットはキュー側で行うと処理として都合が良くなります。
シーク再生
 【回避策】
 →2つボイスを用意し、交互に扱うなど。
ブロック再生
 シーケンスの精度の問題でサンプルレベルでの連続再生はできない。
 【回避策】
 →少し長めの余韻つき波形を、次の波形の頭にオーバーラップするように再生し誤摩化す。
 【回避策】
 →低遅延再生を試みる。
CRIWARE Library Initializer コンポーネントにて低遅延再生標準ボイスプール数を指定
CriAtomSourceコンポーネントの「Low Latency Playback」チェックをオンにして再生開始
スクリプト上でCriAtomSourceを操作する場合は、CriAtomSource.androidUseLowLatencyVoicePoolプロパティに true をセットしてください。ただし、低遅延音声再生ボイスプールから音声を再生する場合、以下のような制限事項があります。
本機能はSE再生など遅延を少しでも減らした音声のみ使用し、BGMやエフェクトを使用したい音は通常再生を行ってください。
注意:o低遅延再生標準ボイスプールの最大数はメモリ再生?ストリーム再生あわせて27まで。
o音声データのサンプリングレートは44100Hz/22050Hz以外は再生できません。
o2Dパン、ボリューム調整のみ可能。ピッチ調整やリバーブなどのエフェクト機能などは使えません。
o本機能はAndroid OS 2.3以降の端末のみ有効です。
オーディオサーバーの周期
理想的にはオーディオサーバー処理を240FPSの処理になるのですが、
デフォルトの30FPSと比較して8倍の負荷になる計算。(実測値は環境や処理内容依存で変化します)
ゲームの場合、他の処理の為に負荷を軽減する必要が多く
これらの設定は大きなトレードオフが発生します。
オーディオサーバー周期はCriAtomInitializerで設定することができます。
※実際には別の要因でボトルネックが発生する場合もあり、ある一定量以上は効果がでなくなります。
ハイエンド機やPCなどではほとんど問題ないのですが
携帯機では
「処理負荷が上がる」=「電池の減りが早く」なります。
CPUクロック等待機状態からの復帰に時間がかかるような処理では、
再生の供給が間に合わず音が途切れたりする事もあります。
(想定しているサーバー周期で動作しないし、システムの保証がない)
おそらく、音の途切れをなくすための膨大なレイテンシー(100~300msec)のある端末やOS、ハードウェアの組み合わせがあるようで、
電話やメッセージの着信、カメラのシャッター音など、システムレベルのサウンドとのミキシングなど公開されていないレイテンシーもあります。
同じ内容のものでも端末によって気持ちよさが変わってしまいます。
300msecは200BPMで1拍(beat)音楽的に4分音符分の遅れということになります。
150msecで8分音符
75msecで16分音符
32.5msecで32分音符
16分音符のずれはほとんどの人が知覚できるレベルでずれに感じます。
これらのシビアなタイミングが気持ちよさにダイレクトに繋がるような
音ゲーを作る場合には重要な問題となります。
【for Unity iOS で遅延を減らしたい】
プロジェクトセッティングのAudioManagerからDisable Audioをチェックする。
iOS ConfigのBuffering Timeを100から16にする。
メモリ再生にする。
【for Windowsで遅延を減らしたい】
 criAtom_SetSoundBufferSizeを小さくする。(あまり小さくすると音途切れなどの原因になります)
【ADX2LE iOSで遅延を減らしたい】
楽器アプリを作っていて気がついたのですが
[CriWareInitializer]の[iOS Config]というところの[Buffering Time]という項目がデフォルト100msecとなっています。
これを50msecに変更する
と少し改善します。
「ツタン」から「ツタ」くらいに変わる。
※ただしこの設定を下げるとGC(ガベコレ)時に音途切れが発生する可能性があります。発音中にGCが発生するような作りにしない工夫も必要です。(シーン切り替え時に無音部分を用意するなど)
ちなみによくあるBPM120で
4分音符 500msec
8分音符 250msec
16分音符 125msec
32分音符 62.5msec
なので、32分音符分ずれていたらこれが原因。
iOSの画面を爪でコツンと叩くような感じで、音を鳴らした時にこれくらいずれていたら
設定を疑うと良い。
「ツ、タン」(120~200msec)が「ツタン」(60msec)くらいになります。(鳴らし開始と音が出るまでの時間が短縮する)
楽器レベルでは(10msec以内に押さえたいところ)
解像度的な乱れ(密度がばらつく)の改善
32分音符で叩いていて、たまに動作が乱れる場合は
[CriAtomInitializer]の[InitializeAtom]の[Server Frequency]をデフォルト30から
60または120にします。
「タタッタタタ」とかが「タタタタタタ」と改善するはず。(サーバーの鳴らす処理の入るタイミングの解像度が上がる)
30FPS 約32msec
60FPS 約16msec
120FPS 約8msec
※ただし、負荷も上がるので、携帯機などでは電池の減りが早くなる等別の問題が発生します。
※また、処理量も増えるため大量のサウンドを同時再生しているなど負荷の増加に注意が必要です。
音の停止判定は遅い?
サウンドの発音までの処理は早いのですが、停止の処理は精度が低いようです。(エンベロープのリリース処理や解放処理など)
リミットがかかった場合なども若干の停止待ちが発生するため、
発音を優先するのであれば、多めのボイスを確保するようにしておくことが良いです。
スクリプト【テクニックアラカルト】
サンプルディレイみたいなのはありますか?
サンプル単位ではなくミリ秒単位で以下のような方法が可能です。
キューにプリディレイ用のAISAC「PreDelay」を作る。カーブに「プリディレイ」を設定し
AISAC(0.0~1.0)をmsecにマッピングする。例えば、0~100msec。
ただし、波形の再生だけが遅くなるだけなので、オートメーションとかシーケンスのタイミングは元のままで再生されます。
また、PreDealy中も発音カウントは増えるので、リミット処理などが行われます。(PreDelay時間時に無音が再生されているイメージ)
プログラムで以下のように呼び出す
atomSourceBgm.SetAisac(&PreDelay&,msec/100.0f);
atomSourceBgm.Play(&hit&);
これでとりあえずディレイ再生が可能です。
再生開始位置をずらす
criAtomExPlayer_SetStartTimeを使う
XYでAISACを変更する(カオシレータ風)
// TapPos(new Vector2(x/Screen.width,y/Screen.height));
static public void TapPos(Vector2 tapPos)
atomSourceBgm.SetAisac(&y&,tapPos.y);
atomSourceBgm.SetAisac(&x&,tapPos.x);
AISACを2つ使って音を面(2軸)で操作する。AISACは一つのキューで最大8個まで別のコントロールを持たせる事ができる。
カオシレータ風にするならば
スケール用のピッチの階段上のグラフ(AISAC)
エフェクト用のバスセンドのグラフ(AISAC)
といった形にもできます。
エンジン音ならば
RPM(回転数)
Laod(エンジン負荷)
環境音なら
群衆の人数
ゲーム状況をインタラクティブに反映するならば
ゲームの進行具合
メインキャラの体力ゲージ
による音の変化など。
Unityの標準再生などの再生速度指定系でピッチを指定したい場合に使います。ADX2LEでは再生速度指定AISACなどで使うかも。
iOSなどバックグラウンドになった時にBGMを一時停止/復帰する
void OnApplicationPause(bool pause)
atomSourceBgm.Pause(pause);
iOSなどスプリングボードへ移動する瞬間などの若干のフェードアウトしている間も音は再生されています。これを使うことでほんの少し抑制できます。
Androidなどバックグラウンド動作を許す端末などでは、
void OnApplicationFocus(bool focusFlag)
atomSourceBgm.Pause(!focusFlag);
でフォーカスが当たっていない時に音を止めたりします。
AtomSourceからCriAtomExPlayerを得る(CriAtomExPlayerを呼び出す改良)
CriAtomExPlayerはpitchの変更やtimeの設定など低レベルな隠されたリアルタイム処理を使用する場合に取得します。
いろいろな事ができる反面、状態や動作をよく理解しておかないと混乱(意図しない再生など)する可能性のある機能もあるので注意。
Plugins/CriWare/CriWare/CriAtomSource.csに以下の行を追加
public CriAtomExPlayer player { }
一度も再生をしていないと不定な場合があるため、初回呼び出し前に下のリセットを呼び出すと少し安定する?
AtomSourceからCriAtomExPlayerを初期設定に戻す(リセット)
Playerに対して様々なパラメータをセット(ピッチ等)してしまった後にもとに戻したい場合リセットをすると最初の状態に戻ります。
atomsourceSelect.Player.ResetParameters();
atomsourceSelect.Stop();
シークして再生(シーク再生、途中から再生)
次回再生の再生開始時刻を指定する
atomsourceSelect.startTime = 30*1000; //次回再生音は30秒目から
atomsourceSelect.Play();
atomsourceSelect.startTime = 0; //次回再生音を0秒目からに戻す
プレーヤに直接指定する場合
atomSourceSe.Player.SetStartTime((long)settime);
atomSourceSe.Stop();
atomSourceSe.Play(cueNo);
CriAtomExPlayerのSetStartTimeを呼び出すため、CriAtomExPlayerを呼び出す改良を施しておいて下さい。
SetStartTimeには開始msecを指定します。次回再生時に指定時刻から再生します。
再生中の音をピッチベンドする
CriAtomExP
void Playback(int cueNo)
playback = atomSourceSe.Play(cueNo);
void PitchBend(float pitch){
atomSourceSe.Player.SetPitch(pitch);
atomSourceSe.Player.Update(playback);
CriAtomExPlayerのSetPitchを呼び出すため、CriAtomExPlayerを呼び出す改良を施しておいて下さい。SetPitchにはcent値(100で半音、1200で1オクターブ)を指定します。
playbackを取得して、Updateしたタイミングで再生中の音に反映します。
AtomExPlayerを使用した再生
より低レベルなサウンド処理を行う場合の再生方法です。
CriAtomExPlayer atomPlayer =
void Start()
atomPlayer = new CriAtomExPlayer(); // AtomExPlayer()作成
void Play(string cueName)
atomPlayer.SetCue(null,cueName);
atomPlayer.Start(); // 再生開始
void OnDestroy()
if(atomPlayer != null){
atomPlayer.Dispose(); // 破棄
atomPlayer =
selectorLabelを設定する
CriAtomExPlayerの関数を呼ぶ
audioSource.player.SetSelectorLabel(”Ground”,&concrete&); //床セレクタのコンクリートのラベル指定
スクリプト【Unityの物理とかで再生制御】
キューブをクリックすると再生/停止をする
クリックの判定にRaycastHitを使う方法を紹介。
CubeにCriAtomSourceをつけて、cri/unity/samples/criatom/script/Unity3Project/ScriptSample01_ClickToPlay/Assets/Scripts/PlayAndStopSoundOnClick.csを使う。
void Update () {
if (Input.GetMouseButtonDown(0)){
Ray clkRay = Camera.main.ScreenPointToRay(Input.mousePosition);
// Collision Dectection
if (Physics.Raycast(clkRay, out rh, 20)) {
GameObject target = rh.collider.gameO
if (target == this.gameObject) {
// Play Cue
CriAtomSource atom_src = target.GetComponent();
if (atom_src != null) {
CriAtomSource.Status status = atom_src.
if ((status == CriAtomSource.Status.Stop) || (status == CriAtomSource.Status.PlayEnd)) {
atom_src.Play();
atom_src.Stop();
キューブに触れると再生/停止する
スクリプト【初期化、ロード関連】
スクリプトでのacbロードと解放の仕方
if(GUILayout.Button(&Remove&)){
CriAtom.RemoveCueSheet(&PinballMain&);
if(GUILayout.Button(&Add&)){
CriAtom.AddCueSheet(&PinballMain&,&PinballMain.acb&,&&);
ACBを動的に切り替えたいなどの特殊用途に使用します。
具体例をいくつか
ダウンロードコンテンツ(DLC) キャラクターダウンロード(読み上げる声優の切り替え)
アイテムのダウンロード
プログラム上の差し替えでリクエストに対する音が切り替わる等を表現したい場合など。 対戦格闘におけるキャラ選択後のパンチやキックの音の変化
レースゲーム等で車選択による音の切り替え
音ゲーでの楽曲選択による音の切り替え
ステージ切り替えによるアンビエント変化等
なお、あらかじめInitializerオブジェクト、Cri}

我要回帖

更多关于 左耳完整版百度云资源 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信