mieki256's diary



2006/03/15(水) [n年前の日記]

#1 [iappli] サウンド関係について調べてたり

そもそも何を鳴らせるのかわからんのだけど。FM音源なのか、PCM音源なのか。

昔の携帯は、FM音源+ADPCMとかだったらしい。今のは、FM音源+PCM音源とか。PCM音源16音なんて話も見かけてビックリ。一昔前のゲーム機並みだな…。

YAMAHAのツールで .mid → .mmf → .mld に変換。 :

最初は、 _着メロ超入門 というページを参考に、 _着メロコンバータ で、いきなり mid → mld 変換したのだけど。出力された .mld を _YAMAHA MidRadio Player にD&Dしたら、「サポートしてないフォーマットだ」と言われてしまった。まあ、MidRadio Player で鳴らなくても、実機で鳴る可能性はありそうだけど。

とりあえず、 _YAMAHAのツール で試しに変換してみたり。

SSD-122-j.zip を解凍。Installer/setup.exe を実行してインストール。起動。.mid を開いて、音色の傾向を選んで再生してみてから、「save as…」で保存。この時点で .mmf ができる。

SCP-MA-N-110-j.zip を解凍してインストール。Bin/SCP-MAX.exe を起動。.mmf をウインドウにD&D。これで .mld が出力された。

出力された .mld を MidRadio Player に D&D。鳴ってくれた。… MidRadio Player は、YAMAHA製音源チップの音色を持ったソフトウェアMIDI音源を内蔵してるらしいので、たぶん実機の音色に近いところもあるのであろうとほんのり期待。 *1

ちょっと気になるのは、SCP-MA-N-110-j.txt に、以下のような注意書きがあったこと。
 mld_NにおいてはMA-3とMA-5を使用した端末それぞれでベロシティーカーブが違ったり、WTの音圧調整方法が違うため、同じMA音源を使っていても音量に差がある場合があります。

 SMAFから変換したデータをそのまま再生できる端末は以下になります。
 - SMAF/MA-2 -> N503
 - SMAF/MA-3 -> N504,N251
 - SMAF/MA-3 -> N2051(FOMA),海外向けMA-3端末
  この変換は、SCPのオプションにつけたVelocity変換機能を使用した際に対応します。
 - SMAF/MA-5 -> N900,N506

 ★SMAF/MA5 -> N505,N252(MA-5)
  SMAF-MA5を変換したmldは、N505,N252で再生した場合、本来の音量バランスとは違った鳴りになる場合があります。
N505ではちゃんと鳴らせない可能性があるのか。うーむ。

MA5_AT の、ATS-MA5-N-D230-j/MA音量バランスについて-ATS.pdf を覗いたら関連記述が。
2.1 WT,STREAM +12dB シフトについて

MA-3 とMA-5 で音量の設定が違います。MA シリーズではFM 発音とWT 発音の聴感上の音圧レベルをそろえる目的から、FM に対してWT とSTREAM の音量が+12dB 上がるようになっています。MA-3 ではHW 的なアシストが無い事もあって、(MasterVolume + Velocity で+12dB)を1つの音量設定HW で処理するようになっています。HW 的に0dB を超える設定は出来ないため、(MasterVolume + Velocity)が(-12dB)を超える場合は音量がそれ以上は上がらず飽和します。Velocity のカーブは20 Log(x / 127)です。これに対し、MA-5 ではHW 的にWT とSTREAM の音量を+12dB する様になっているので、Velocity 設定に対する制限はありません。Velocity のカーブは40 Log(x / 127)が基本です。

※但し,MA-5 端末の内 N505i,N505is,N252i についてはMA-3 方式
なるほど、N50x は一部に関してMA-3的であると…。

もう一つ気になるのは、ここで作った .mld は、N50x 以外でも鳴らせるのか判らないこと。YAMAHA サイトの、 _対応端末の情報ページ には、Nxxx しか書いてないわけで。他メーカの製品は、違った音源チップを乗せてるということなんだろうか。

どの機種でも共通で鳴らせるデータを作る方法を知りたいのだけど、もしかすると無理なのかしら。…なんとなくMSXを思い出してしまう。 *2

何にせよ、次はwavを変換できるか試してみないと。

_SMAF / SMAFとは? / SMAF対応音源・端末情報 :

現在ヤマハでは、SMAFファイルの再生用に「MA-1」「MA-2」「MA-3」「MA-5」「MA-7」という5種類のLSIを製造しています。「MA-1」「MA-2」「MA-3」「MA-5」「MA-7」では、それぞれ高音質な最大4音、16音、40音、64音、128音を同時に演奏できます。現在、多数の携帯電話にヤマハの音源LSIが使用されています。

SMAF / SMAFとは? / SMAF対応音源・端末情報 より


_ヤマハ音源LSI YMU765 『MA-5』
MA-5 は、高機能なゲームサウンドや高品位着信メロディなど、携帯電話端末で扱うサウンドの出力デバイスとして最適なLSI です。

MA-5 に搭載されている音源部は、FM音源、WaveTable音源、ストリーム音源、AL(Analog Lite)音源、HV(Humanoid Voice)音源と、5種類の音源方式を組みあわせた「ハイブリッド音源方式」を採用し、最大64音を同時に発音可能です。

SMAF / SMAFとは? / SMAF対応音源・端末情報 / ヤマハ音源LSI YMU765 『MA-5』 より

シンセサイザやパソコン用マルチメディア音源などに幅広い実績のあるFM シンセサイザは、わずか数十バイトのパラメータ指定で無限の音色を表現できるため、メモリ容量や通信帯域を節約することができ、任意の音色付メロディの配信が可能になるなど、携帯電話端末の動作環境で特長を発揮します。さらに、FMシンセサイザは携帯電話の着信メロディとして最適な輪郭がはっきりとして、明瞭で、聞き取りやすい音の発音が可能です。

SMAF / SMAFとは? / SMAF対応音源・端末情報 / ヤマハ音源LSI YMU765 『MA-5』 より

FM音源ってことは、携帯も、メガドラ程度の効果音なら作れるはず、ということでありましょうか。…無理かな。 *3

テストプログラムを作成。 :

_メディアリソースを利用して絵と音のあるiアプリ作成 を参考にしつつ。ていうかそのまんまコピペしてるに等しいか…。とりあえず、曲データに関しては、エミュレータ上で鳴ってくれた。

こんな感じ。
ScreenShot

あ。考えてみたら、ScreenShotを載せたところで完全に意味がない種類のサンプルではないか…。まあ、いいや。
/*
 * サウンド再生テスト
 */
package soundtest;

import com.nttdocomo.io.ConnectionException;
import com.nttdocomo.ui.AudioPresenter;
import com.nttdocomo.ui.Canvas;
import com.nttdocomo.ui.Display;
import com.nttdocomo.ui.Frame;
import com.nttdocomo.ui.Graphics;
import com.nttdocomo.ui.IApplication;
import com.nttdocomo.ui.MediaManager;
import com.nttdocomo.ui.MediaSound;
import com.nttdocomo.ui.UIException;

public class SoundTest extends IApplication {

	public void start() {
		MediaCanvas m = new MediaCanvas();
		m.setSoftLabel(Frame.SOFT_KEY_2, "終了");
		Display.setCurrent(m);
	}

}


class MediaCanvas extends Canvas implements Runnable {

	// サウンドファイル名
	static final String[] FILE_LIST = {
			"pop02.mld", "stg_03.mld", "stg_10.mld", "up03.mld"
	};

	// サウンドの種類 0:SE / 1:BGM
	static final byte[] SOUND_KIND_LIST = {
			1, 1, 0, 0
	};

	// サウンドファイル個数
	static final int SOUND_MAX = 4;

	// frame per sec
	static final int FPS = 100;
	static final int SLEEP_VALUE = 1000 / FPS;

	AudioPresenter[] audio = new AudioPresenter[SOUND_MAX];
	int sound_num;

	Thread tm;
	int key;
	int keyrel;
	int keytrg;

	boolean paint_fg;
	
	// コンストラクタ
	public MediaCanvas() {
		paint_fg = false;
		
		sound_num = 0;
		key = 0;
		for (int i = 0; i < SOUND_MAX; i++) {
			audio[i] = AudioPresenter.getAudioPresenter(SOUND_KIND_LIST[i]);
			audio[i].setSound(getResourceSound(FILE_LIST[i]));
		}

		tm = new Thread(this);
		tm.start();
	}

	// メイン
	public void run() {
		paint_fg = true;
		
		while (true) {

			// メインループ

			try {
				Thread.sleep(SLEEP_VALUE);
			} catch (InterruptedException e) {
				break;
			}

			// キーの押し下げ情報を取得
			int keyold = key;
			key = this.getKeypadState();
			keyrel = (keyold | key) ^ key;
			keytrg = (keyold ^ key) & key;

			if ((keytrg & (1 << Display.KEY_DOWN)) != 0) {
				audio[sound_num].stop();
			} else if ((keytrg & (1 << Display.KEY_UP)) != 0) {
				audio[sound_num].play();
			} else if ((keytrg & (1 << Display.KEY_LEFT)) != 0) {
				sound_num--;
				if (sound_num < 0) {
					sound_num = SOUND_MAX - 1;
				}
			} else if ((keytrg & (1 << Display.KEY_RIGHT)) != 0) {
				sound_num++;
				if (sound_num >= SOUND_MAX) {
					sound_num = 0;
				}
			}
			repaint();
		}
	}

	MediaSound getResourceSound(String resource) {
		MediaSound sound = null;

		try {
			sound = MediaManager.getSound("resource:///" + resource);
			sound.use();
		} catch (ConnectionException ce) {
			sound = null;
		} catch (UIException e) {
			sound = null;
		}

		return sound;
	}

	public void processEvent(int type, int param) {
		if (type == Display.KEY_PRESSED_EVENT) {
			if (param == Display.KEY_SOFT2) {
				IApplication.getCurrentApp().terminate();
			}
		}
	}

	// 画面描画
	public void paint(Graphics g) {
		g.lock();
		g.clearRect(0,0,getWidth(),getHeight());

		if ( !paint_fg ) {
			g.drawString("初期化中",32,32);
		} else {
			int x = 32;
			int y = 32;
			g.drawString("SOUND No. " + sound_num, x, y);
			y += 12;
			g.drawString("← →", x, y);
			y += 12;
			g.drawString("PLAY : ↑", x, y);
			y += 12;
			g.drawString("STOP : ↓", x, y);
		}

		g.unlock(true);
	}

}
本当にこれでいいのか自信ないけど。既に鳴ってるサウンドと別のサウンドを差し替えて演奏するのはこれでいいのかしら。stop() 入れたほうが良かったりして?

N505の機種依存情報、n505is_iappli_notes_1.pdf を眺めたら、複数の音を同時に鳴らす際に…このへんってこういう場所に書いちゃいけない情報だったっけか。pdfをコピペしようとしたらできなかったから、秘密にすべき情報とされてるのかもしれん。 _とりあえずNTTドコモのページ からDLできるけど。

フリーのMIDIデータを、.mid → .mmf → .mld 変換・再生テストに使わせてもらった。 :

以下のサイトから。
_Aquanote -ゲーム向きのフリーのMIDI素材を公開-
_COMA WHITE
_COMA WHITE 【 FREE MIDI DATA 】

利用に制限を設けてないのがありがたい。感謝なのであります。

*1: MidRadio Player については _2005/12/25の日記 を参照。
*2: いや、MSXは触ったこと無いんですが。機種依存部分があるとかないとか聞いた記憶も。RAM容量がどうとか。
*3: メガドラだって、サブCPU Z80 が音源を細かく制御してたからあのぐらいの音を出せていたはず。…でも、今は音源チップ自体がそこまでやってくれたり、するのかなぁ。

#2 [digital] _ITmediaモバイル:白ロム【しろろむ】

コメント欄で「白ロム」なる用語を教えてもらって早速検索。

白ロムとは、携帯電話(PHS含む)のROMに電話番号などの情報が書き込まれていない状態、もしくは、解約などによってそれまで書き込まれていた情報が消去された状態の端末本体を指す。

白ロム端末は、キャリアに新規加入することで、内部のROMに電話番号が書き込まれ、いわゆる黒ロム状態になる。つまり、ここでいう白、黒の違いは、外見的な色の違いではなく、情報の書き込みの有無を示すものだ。

ITmediaモバイル:白ロム【しろろむ】 より

オークションなどで売買される端末は、ほとんどがこの白ロムであるが、電話機を失くして解約したとか、何らかの都合で消去作業が終わっていないものが流通しているケースもある。確かに解約済みの電話機であったとしても、端末側で番号が消されていないもの(灰ロム)を白ロム化するには、契約者本人でないと作業は受け付けられない。

ITmediaモバイル:白ロム【しろろむ】 より

なるほど。

_ITmediaモバイル:灰ロム【はいろむ】 :

灰ロムとは、解約したにも関わらず利用可能のような振る舞いを見せる、白ロムと黒ロムの中間に位置する状態の端末を指す。電話による解約や、電話機紛失によって解約だけ済ませた端末などがこれに該当する。

解約済みであるから、電話としては当然ながら使えないものの、ROM自体にはに電話番号などの情報が残ったままとなっており、サービスエリア内では電波をキャッチしてアンテナマークを表示する。そのため、電波の強さをチェックするための計器として使用したり、回線契約をチェックするアプリゲームを起動するなど、一部利用者の間で好まれて使われている。

ITmediaモバイル:灰ロム【はいろむ】 より

灰ロムの状態では、キャリアでの再度の契約をすることができず、電話番号情報を消去して白ロム化する必要がある。ところが番号消去には、加入者本人の確認を必要とするため、他人から譲り受けた灰ロムではすぐに処理ができない。オークションなどで入手する際には注意が必要だ。

ITmediaモバイル:灰ロム【はいろむ】 より

むう。灰ロムとやらを入手してしまうと番号消去ができないからマズイ、ということでせうか。

_ITmediaモバイル:黒ロム【くろろむ】 :

黒ロムとは、携帯電話(PHS含む)のROMに電話番号などの情報が書き込まれている状態。いわゆる正式に回線契約があって、そのまま使える状態になっている端末を指す。つまりショップで購入できる携帯電話は、あえて白ロムと指定しない限りすべて黒ロムとなる。

ITmediaモバイル:黒ロム【くろろむ】 より

とりあえず「白ロム N505i」で検索してみたけど :

見つからない…。もはやお店では売ってないのだな。うーむ。

とりあえず、オークションを利用するとしても、そのへん気をつけなきゃいかんですな。

#3 [web] YAMAHAのサイトからiアプリ関連ツールをDLしたのだけど、一々アンケートに答えさせられてウザイ

_NEC携帯端末用ツール (.mld対応) のページ。DLする際にアンケートを強制させられる。最初のうちはバカ正直に入れてたけど。ツールをいくつもDLするたびに何度も入力させられて、とうとうキレた。項目の一番最初にある、「9歳」とか、「学生」とか、「a」から始まる「アフガニスタン」を選択し始めてしまったりして。ボク、9歳でちゅ。ハーイー。バブー。<それは若返り過ぎ。

アンケートをDL時に強制することで、一体何のメリットがあるのかしら。そこからしてわからん。…誰が集計結果を見てるんだろう。どうせ見てないんでしょ。仮に見てたとしても、その行為自体が無意味。DLしてる側が途中で呆れて適当な項目を選んでしまってる状態で、何を分析できるというのか。集計結果を眺めて、「わあ。アフガニスタンからDLされてるよ!」「9歳の子供がDLしてる!」と喜ぶのでありましょうか。…それはそれでなんか楽しげな光景かもしれないが。

各ツールをバラバラにDLさせるより、まとめてDLさせてほしいよなぁ。あるいは、チェックをつけたツール群だけリンクが並ぶようなDLページを動的に出力するとか。いや、せめて、「同意する」「同意しない」だけにしてほしい。なんなら、チェックボックスにするだけでもいい。小さいリストをスクロールして選択、てなところが苦行なわけだから。ていうか、ちゃんと勉強してるWebデザイナーなら、頻繁に閲覧されるページでリストのスクロールを避けたデザインをするのはデフォルトではあるまいか。 *1

なんでRefererで弾くの? :

どうやらいくつかのファイルをDLし損ねたみたいで、再度DLにチャレンジ…したものの、トップページに飛ばされる。何故。

_FAQ を見ると、
Q. ツールをダウンロードしようとすると他のページにジャンプしてしまい、ダウンロードできません。

A. セキュリティソフトでリファラ機能がオフとなっている場合当該ページに進めないためダウンロード出来ない場合があります。

NEC携帯端末用ツール (.mld対応) / FAQ より

とある。

Refererを無効にするブラウザ設定/セキュリティソフトは使ってないのですが。フツーにFirefoxでアクセスしてるんですがねえ。試しに、任意のRefererを送れる Irvine で試してみたり、IE6で試してみたものの、それも失敗。となると、おそらくアチラがおかしな設定にしてるんだろう。

ていうかさ。そもそも何のためにRefererチェックして弾かなきゃいけないの? エロ動画公開してアクセス制限してるわけでもあるまいし。これまた必要性が見出せない…。

全然関係ないけど。どうしてYAMAHAのページは、あちこちで全角文字の英数字を使ってるんだろうな…。まあそれは、ページ制作者の属性がなんとなく判るという、それだけの話なんだけど。

兎にも角にも首を捻る箇所があちこちに。 :

特に、トップページに飛ばされてしまって、ツールの.zipをDLできないのは困る。ツールの配布ページなのにツールがDLできないなんて致命的。

まともな管理・設定ができないなら、ごくフツーの素直な作りにしておけばいいのに。どうしてやらんでもいい余計なことまでしちゃうのか。プンスカ。ププンスカ。

2006/03/17追記:改善されたっぽい。 :

少なくともDLはできるようになってた。助かった。感謝であります。とはいえ、アンケートの強制は相変わらずなので、アフガニスタンの9歳で入れてるけど。

〜/nec/以降を、dl.php?ocid=xxxxxx にすればアンケートを回避できるみたい。…ますますエロサイトっぽくなってきた。YAMAHAはエロかった。<意味不明。…そのへん、YAMAHAのエロい人、じゃなくてえらい人の方針だったりするのかもしれないなぁ。大変ですな、エロエロと。

*1: などといいつつも。この日記ページも、過去の日記へのアクセスしようとすると、リストのスクロールが…。む。別途リンクページを作ればいいのか。…まあ、そのうち。<モノグサ。

#4 [anime] BLOOD+、動物園の回

過去の解説。ハジだかサジだかがガクガクとのたうち回るあたりがグー。

#5 [anime] ツバサクロニクルとやらを試しに見てみた

ピアノが店に来た回。らしい。

なんやよーわからん。テンポが独特というか遅いというか。メリハリが無いというか。とりあえず過去の作品のキャラが見れることを楽しむ作品、なのであろうか。しかし自分は元々CLAMP作品にほとんど興味が無く、故にどれが何のキャラかさっぱりわからず。この作品自体の設定・話もわからんしで。…まあ、こういう作品も世の中にはあったのだなという感じの認識で。

#6 [anime] 『耳をすませば』を見てみたり

録画してたものを鑑賞。

そういやじっくり見たことなかったな。映画館で見た記憶はあるのだけど。たしか、「少女漫画が判ってない」とか「どうしてこんなオチにしてしまうのか。これじゃギャグだ」とガックリきてた、そんなおぼろげな記憶もあるし…。

さておき。TVの画面で見たら、作画の密度、というより部屋の中を描写する際の意識の払い方にビックリ。とにかく全編に渡って観察と抽出・記号化が凄い。いや、それはジブリ作品、というか宮崎氏の関わったジブリ作品の常だけど。…改めて見てみると、充分、少女漫画、というかファンタジー作品だなぁ。クリリンが空を飛んでしまうぐらいに現実にはありえないお話。それをひたすら作画と演出の積み重ねで地に足をつけるかのように錯覚させる…。恐ろしい。

Dパート(?)は作りが変わった感が。主人公の周辺に現実的な問題が迫ってくるのと同時に、主人公が本の世界に入り込む…。上手いなぁ。原作からしてそういう展開があったのか、それともオリジナルの部分なのか。まあ、一旦下げておかないと上げられないからアレだけど。

最後の台詞・やり取りは狙ってるのかなぁ。ここで笑ってくださいとか、脱力してくださいとか。いや、思わせぶりな感じだけではラストとして足りない、との宮崎氏の判断、とどこかで読んだ記憶はあるのだけど。…たしかに、アレ以外にどんな終わらせ方があるか、ドカーンと打ち上げるものが他にあるかと言われれば、悩んじゃうわけですが。真面目に考えすぎちゃう・やりすぎちゃうとどこかズレた領域・ある意味バカっぽい領域に入っていく、みたいな話なのであろうか。

何にせよ、男の子も女の子もテレまくりでグッときました。…この作品の脚本・コンテをやったことで、そのへんの憑き物が落ちちゃったんだろうか。>宮崎氏。もったいない。いや、本当にもったいないのは、故人になってしまった、この作品の監督さんだけど。早過ぎる。

以上、1 日分です。

過去ログ表示

Prev - 2006/03 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project