computer.program - プログラミングのお話

FotranとかcobolとかBasicとかCとかC++とかjavaとか…(以下略)

■ メインページ ■ サブボード修正

【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【前の20記事 [一覧] [ツリー] [一括] 【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

#66: 継承関係で質問
Date: 2001/02/10 03:19:35 Sat Author: GOO・豪 (tnet0077)
Parent Article: #65: 継承関係で質問
Child Article: #68: 継承関係で質問

> 試しに seq = (Sequencer)MidiDevice; とやってみましたがどうもそこで
> 止まってしまうようです(^^;

自己レスですが、さまよってたらこんなコードがボンと出てきました。
http://tick.informatik.uni-stuttgart.de/~pfistere/jsexamples/MidiPlayer.java.html

眺めてみると Sequencer seq = (Sequencer)MidiDevice;
といったことをばっちりやっているではありませんか(^^;
というわけで、おそらく止まるのは別の理由だったのでしょう。
これさえできるならばとりあえず方向性ははっきりします。

なんか眺めていると JDK1.3 のバグとか回避の方法なんかも書いてあります。
JDK のバグに振り回されるのはいやだなぁ
GOO
E-Mail: goo_n@hotmail.com

レスチェック ■ この記事のコメントを書く

#65: 継承関係で質問
Date: 2001/02/09 20:40:51 Fri Author: GOO・豪 (tnet0077)
Child Article: #66: 継承関係で質問

というわけで MIDI プレイヤーアプレットを作っているわけですが、
セキュリティ関連がなかなか難しそうです。ローカルのファイルに基本的には
アクセスできないですし。まあ、とりあえずそれは置いといて・・・

ちょっと再生デバイスとシーケンスとをつなげるのに苦労しています。
public interface Sequencer
extends MidiDevice

というインターフェイスがあって、
静的なメソッドが集まった MidiSystem クラスを使って、

Sequencer seq = MidiSystem.getSequencer();
seq.setSequence(MIDI ファイル);
seq.start();

といった感じで再生できるはずなんですが、getSequencer() は
デフォルトデバイスの Sequencer を返すメソッドなんです。
で、ほかのデバイスを選択するには、MidiDevice getDevice(Device.Info)
しかないらしいんです。そこからはもっと低レベルなコントロールの方に
持っていくらしいんですが、できれば Sequencer の簡単なインターフェイスに
持っていきたいです。MidiDevice を Sequencer にできないものでしょうか?
試しに seq = (Sequencer)MidiDevice; とやってみましたがどうもそこで
止まってしまうようです(^^;
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#64: 無料 JAVA 統合環境
Date: 2001/02/09 19:42:50 Fri Author: GOO・豪 (tnet0077)
Parent Article: #63: 無料 JAVA 統合環境
Child Article: #67: 無料 JAVA 統合環境

> とりあえず私は、GOO さんが制作したプログラムを実行できる環境を
> 整えないと行けないと言うことですかね。 (笑)

自動ダウンロードされなかったんですか?
なんだったらここで直にダウンロードもできます。
http://java.sun.com/j2se/1.3/ja/jre/index.html

> しかし、C++とJAVAを両方覚えようとすると、ごっちゃになって
> 訳が分からなくなりそうだなぁ。 ^^;

どうやら Forte があればほとんど覚えなくて良さそうですよ。
VS6 ばりの補完機能もあるし、ビジュアルに GUI を張り付けて
イベントを選択し、それにイベントハンドラをコーディングするという、
わかりやすい構成になっています。Forte が担当する GUI 生成部は
一つの関数になっていてコンストラクタから呼ばれていて、編集不可(!)
になっています。押しつけられるのはいやな人もいるかもしれませんが、
自分でやりたい初期化はコンストラクタに続けて書けばいいわけですし、
元々いろいろ従わなければならないビジュアル開発なのでこれでいいのかもしれません。

GUI 部分を適当に作ってみました。
http://www.geocities.co.jp/SiliconValley-SanJose/4825/java/
MIDI アプリケーションらしいのは MIDI デバイスの列挙ができている
ところくらいですね(^^;
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#63: 無料 JAVA 統合環境
Date: 2001/02/09 00:44:12 Fri Author: tos (tnet0004)
Parent Article: #62: 無料 JAVA 統合環境
Child Article: #64: 無料 JAVA 統合環境

> とりあえずいったん Forte の方を試してみようと思います。

とりあえず私は、GOO さんが制作したプログラムを実行できる環境を
整えないと行けないと言うことですかね。 (笑)


しかし、C++とJAVAを両方覚えようとすると、ごっちゃになって
訳が分からなくなりそうだなぁ。 ^^;


tos.

レスチェック ■ この記事のコメントを書く

#62: 無料 JAVA 統合環境
Date: 2001/02/08 19:45:31 Thu Author: GOO・豪 (tnet0077)
Child Article: #63: 無料 JAVA 統合環境

BeOS でも標準で統合環境(IDE)がついていましたが、
JAVA の方でも二つも無料の IDE があるのには驚きました。

JBuilder4Foundation
http://www.borland.co.jp/jbuilder/foundation/index.html

Forte for JAVA Community Edition
http://www.sun.co.jp/forte/ffj/index.html

今日 JAVA PRESS なる本を立ち読みしたところ、
IDE の特集をしていました。
どうも Forte の方がパワフルで使いやすいようです。
JBuilder の方では GUI の編集がいまいちつかめなかったので、
とりあえずいったん Forte の方を試してみようと思います。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#61: JAVA アプレットの現状
Date: 2001/02/06 16:49:24 Tue Author: GOO・豪 (tnet0077)
Parent Article: #60: JAVA アプレットの現状

> すみません、よく見てみたら HTML に、標準の VM ではなくプラグインを使うように
> JavaScript で指定されているようです。<A 

JavaScript の部分だけ私のテストアプレットを表示させる HTML にコピーしてみたら
IE がハングアップしました(笑)中身を見てもそんなにおかしくはなさそうなんですが...
と、FAQ をのぞいてみたら HTML Converter なるものがあるようです。
これで変換した HTML で表示させたらばっちりプラグインを使って swing の方も
動いてくれました。
http://java.sun.com/products/plugin/1.3/docs/ja/htmlconv.html
HTML への applet タグの記述はこれに任せることにします。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#60: JAVA アプレットの現状
Date: 2001/02/06 13:42:44 Tue Author: GOO・豪 (tnet0077)
Parent Article: #59: JAVA アプレットの現状
Child Article: #61: JAVA アプレットの現状

> いえ、ダウンロードする以前に、表示を諦めてエラーになっているようです。
> 表示できる JAVAアプレットもあるのに、何か違うんでしょうか。
> 1.3 のプラグインとやらがない、と自動検出しているんでしょうか。

すみません、よく見てみたら HTML に、標準の VM ではなくプラグインを使うように
JavaScript で指定されているようです。http://java.sun.com/products/plugin/1.3.0_01/ja/demos/index.html
1.3 のを動かすにはこういうことをしないといけないわけですね。
やっと安心して進められそうです。

> そう言えば、JBuilder で作ると、それ専用のライブラリとかは必要ないん
> でしょうか。 みんな、jarファイルの中に含めてくれるのかな??

分からないですね。まあ、基本的には標準クラスライブラリだけで
やっていくつもりではありますが。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#59: JAVA アプレットの現状
Date: 2001/02/06 07:35:33 Tue Author: tos (tnet0004)
Parent Article: #58: JAVA アプレットの現状
Child Article: #60: JAVA アプレットの現状

>> せっかく作っても、使える人が少なくなってしまいそう。
>> 私の所では、動くというデモが動きませんし。 ^^;
> 1.3 のプラグインは手に入ったんですよね?
> うちの場合そのページでは自動的にダウンロードされてきましたが。

いえ、ダウンロードする以前に、表示を諦めてエラーになっているようです。
表示できる JAVAアプレットもあるのに、何か違うんでしょうか。
1.3 のプラグインとやらがない、と自動検出しているんでしょうか。


> java.applet.Applet クラスだとふつうに動くんですが(そりゃそうだ)、
> javax.swing.JApplet クラスで作ると動いてくれない。
> というわけでふつうはあきらめるところなんですが、
> 先に書いたページでふつうに swing の GUI が動作しているので、
> 何かおかしいなと。調査続行中です。

そう言えば、JBuilder で作ると、それ専用のライブラリとかは必要ないん
でしょうか。 みんな、jarファイルの中に含めてくれるのかな??


tos.

レスチェック ■ この記事のコメントを書く

#58: JAVA アプレットの現状
Date: 2001/02/06 02:59:17 Tue Author: GOO・豪 (tnet0077)
Parent Article: #57: JAVA アプレットの現状
Child Article: #59: JAVA アプレットの現状

> せっかく作っても、使える人が少なくなってしまいそう。
> 私の所では、動くというデモが動きませんし。 ^^;

1.3 のプラグインは手に入ったんですよね?
うちの場合そのページでは自動的にダウンロードされてきましたが。

> 開発環境も、ウチにはないです。 無料で手にはいるはずだとは思いますが。

JBuilder4Foundation は試していますが、
元々そんなにコードの量は多くならないですし、
そのまま swing を使ったようではどうもうまく動かない様子ですので、
勉強込みで最初のうちは手書きでやってみようと思っています。

java.applet.Applet クラスだとふつうに動くんですが(そりゃそうだ)、
javax.swing.JApplet クラスで作ると動いてくれない。
というわけでふつうはあきらめるところなんですが、
先に書いたページでふつうに swing の GUI が動作しているので、
何かおかしいなと。調査続行中です。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#57: JAVA アプレットの現状
Date: 2001/02/06 01:08:02 Tue Author: tos (tnet0004)
Parent Article: #56: JAVA アプレットの現状
Child Article: #58: JAVA アプレットの現状

> とりあえずサウンド関係が実装されたのは 1.3 からのようなので、
> JAVA1.3 plug-in(7.5MB) を自動ダウンロードしてもらうのがまず壁になりますね(^^;
> しかし、MIDI が 1.3 からの機能である以上仕方がないところです。
> あとは対応状況ですがいまいち分からない状態です。

せっかく作っても、使える人が少なくなってしまいそう。
私の所では、動くというデモが動きませんし。 ^^;

開発環境も、ウチにはないです。 無料で手にはいるはずだとは思いますが。

// そう言えば、一応、JBuilder が手元にあったような。


tos.

レスチェック ■ この記事のコメントを書く

#56: JAVA アプレットの現状
Date: 2001/02/05 23:50:24 Mon Author: GOO・豪 (tnet0077)
Child Article: #57: JAVA アプレットの現状

とりあえずサウンド関係が実装されたのは 1.3 からのようなので、
JAVA1.3 plug-in(7.5MB) を自動ダウンロードしてもらうのがまず壁になりますね(^^;
しかし、MIDI が 1.3 からの機能である以上仕方がないところです。
あとは対応状況ですがいまいち分からない状態です。
動かないサンプルプログラムがあったり、こんなデモはきちんと動いていたり。
基本的には制限なしと言うことで進めて良さそうですが、ちょっと不安です。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#55: JAVA で MIDI/Audio シーケンサ?
Date: 2001/02/05 23:03:37 Mon Author: GOO・豪 (tnet0077)
Parent Article: #54: JAVA で MIDI/Audio シーケンサ?

> 分業は、クラスの仕様が完全に決まったら可能ですが、それまでが大変ですよ。

OOP での設計はやったことないし、いろんな話を聞きますので、
そういわれると引いてしまいそうになります(^^;
分業する規模じゃないかもしれませんし IE プラグインなどの
状況もちょっと今調べているところですので、
まだまだどうなるか分かりません。

> とりあえず、音の長さと発音タイミングをクォンタイズして音符に変換
> するだけでも、実用になると思います。

つい縦にまとめるくらいはやらないと使い物にならないと考えてしまいましたが、
最初はその前からですね。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#54: JAVA で MIDI/Audio シーケンサ?
Date: 2001/02/04 09:55:25 Sun Author: tos (tnet0004)
Parent Article: #53: JAVA で MIDI/Audio シーケンサ?
Child Article: #55: JAVA で MIDI/Audio シーケンサ?

> とりあえず表示再生の部分を T-NET のメンバーで共同製作しませんか?
> オブジェクト指向ですし共同作業には向いているかと思います。
> とりあえず私はふつうのアプレットを作れるように勉強ですね(^^;

分業は、クラスの仕様が完全に決まったら可能ですが、それまでが大変ですよ。


>> // ピアノロールよりも楽譜出力の方が見栄えはしていいですが。 ^^;
> 楽譜の文化は捨てるわけにはいかないので是非とも欲しいところですが、
> あれってなかなかに難しいですよね。譜面表示機能だけで製品になっちゃうくらい。

楽譜は、MIDIデータをそのまま出力するだけで良いのではないでしょうか?
そもそも、MIDIデータは楽譜へ変換にするための情報は含まれていない
のですから。

まずは、MIDIデータを素直に書いてしまうバージョンを作って、それから
より見栄えの良い出力処理を加えてバージョンアップしていった方が良いと
思います。

とりあえず、音の長さと発音タイミングをクォンタイズして音符に変換
するだけでも、実用になると思います。


tos.

レスチェック ■ この記事のコメントを書く

#53: JAVA で MIDI/Audio シーケンサ?
Date: 2001/02/03 16:22:59 Sat Author: GOO・豪 (tnet0077)
Parent Article: #52: JAVA で MIDI/Audio シーケンサ?
Child Article: #54: JAVA で MIDI/Audio シーケンサ?

> 頑張ってください。 JAVAの MIDIシーケンサ 一番乗りができるかも?

とりあえず表示再生の部分を T-NET のメンバーで共同製作しませんか?
オブジェクト指向ですし共同作業には向いているかと思います。
とりあえず私はふつうのアプレットを作れるように勉強ですね(^^;

> // ピアノロールよりも楽譜出力の方が見栄えはしていいですが。 ^^;

楽譜の文化は捨てるわけにはいかないので是非とも欲しいところですが、
あれってなかなかに難しいですよね。譜面表示機能だけで製品になっちゃうくらい。
まあ、そんなに高度な表示を必要とするわけではないですが、
おはよさんに楽譜の分析技術を教えてもらうことになるかもしれませんね。
こういう場合はタイで表示しなきゃいけないとか、休符の取り入れ方とか、
その辺の一般法則ですね。こういった細かいところは正式に学習した人でないと
分からないことが多いと思います。
私なんて楽譜は見て分かればいいと言う程度にしか考えていませんし(^^;
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#52: JAVA で MIDI/Audio シーケンサ?
Date: 2001/02/03 10:10:00 Sat Author: tos (tnet0004)
Parent Article: #51: JAVA で MIDI/Audio シーケンサ?
Child Article: #53: JAVA で MIDI/Audio シーケンサ?

> これは JAVA アプレットなどでも MIDI シーケンサを作れると言うことでしょうか?
> もしそうだったら、とりあえず T-NET で譜面(ピアノロール)表示で再生も行う
> アプレットなどを考えることもできますよね。
> なんかおもしろそうです。ちょっと勉強しながら試してみますね。

WinAPI相当のものがそろっているみたいですね。
やろうと思えばシーケンサも作れそうです。 道のりは険しいと思いますが、
頑張ってください。 JAVAの MIDIシーケンサ 一番乗りができるかも?

// ピアノロールよりも楽譜出力の方が見栄えはしていいですが。 ^^;


tos.

レスチェック ■ この記事のコメントを書く

#51: JAVA で MIDI/Audio シーケンサ?
Date: 2001/02/03 03:36:25 Sat Author: GOO・豪 (tnet0077)
Child Article: #52: JAVA で MIDI/Audio シーケンサ?

JAVA はまだ使ったことがないのであまり分かっていないんですが、
次のようなドキュメントがありました。
http://java.sun.com/j2se/1.3/ja/docs/ja/guide/sound/
これは JAVA アプレットなどでも MIDI シーケンサを作れると言うことでしょうか?
もしそうだったら、とりあえず T-NET で譜面(ピアノロール)表示で再生も行う
アプレットなどを考えることもできますよね。
なんかおもしろそうです。ちょっと勉強しながら試してみますね。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#50: midiStream によるプログラミング
Date: 2000/11/11 09:12:01 Sat Author: tos (tnet0004)
Parent Article: #49: midiStream によるプログラミング

> 亀レスですが、縦スクロールピアノロールは有用だと常日頃から考えていました。
> 横スクロールが一般的なのは譜面の影響が強いと思います。
> ゲームで採用されるように、直感的なのは縦の方だと思います。

確かに、直感的には分かりやすいのかも知れませんが、慣れないと
縦でも横でも同じです。 ^^;

あと、音の長さが分かりにくいですね。ピアノロールを縦にした
ような表示だと、棒の長さでタイミングが分かってやりやすい
ような気がします。


>> とりあえず、midiStream を使って MIDI音源から音を出すプログラムを
>> 作ってみました。ドの音が1回だけ鳴ります。(苦笑)
>> // しかし、これに辿り着くまでに半日掛かりました。 ^^;
> 足場固めですね。大切ですよね。

しかし結局、midi player らしき物を作った所までで、挫折しました。 ^^;
ドットを縦に流す所まではできたのですが、それをタイミング良く音楽に
合わせてとなると、ちょっと難しいようです。


>> キーポイントは、MEVT_F_SHORT 時の MIDIEVENT 構造体は 12バイトだという
>> ことです。ずっと 16 バイトだと思って作っていたので、midiStreamOut() が
>> エラーを返していました。
> これってノートとかプログラムチェンジとかを指定する構造体なんですか?

そうです。 MIDIEVENT構造体に MIDIデータ1つが割当たります。
だから、1音(key on)だけで、12byte バッファが必要です。

> 私としてはどちらかというとやるなら BeOS で作ってみたいですね。
> 扱いやすい API と Win とは比較にならない時間精度、
> MIDI キットも充実していますのでその辺は楽でしたし。
> まあ、いかんせん使用できる環境が限られているのが痛いところですが。

ぜひ、チャレンジしてみてください。 1つ作っておくと、いろいろな
音楽ゲームに応用が利くと思います。


tos.

レスチェック ■ この記事のコメントを書く

#49: midiStream によるプログラミング
Date: 2000/11/11 01:43:42 Sat Author: GOO・豪 (tnet0077)
Parent Article: #46: midiStream によるプログラミング
Child Article: #50: midiStream によるプログラミング

> 「キーボードマニア」が PC上で作れないものかと、ちょっと考えています。

亀レスですが、縦スクロールピアノロールは有用だと常日頃から考えていました。
横スクロールが一般的なのは譜面の影響が強いと思います。
ゲームで採用されるように、直感的なのは縦の方だと思います。

> とりあえず、midiStream を使って MIDI音源から音を出すプログラムを
> 作ってみました。ドの音が1回だけ鳴ります。(苦笑)
> 
> // しかし、これに辿り着くまでに半日掛かりました。 ^^;

足場固めですね。大切ですよね。

> キーポイントは、MEVT_F_SHORT 時の MIDIEVENT 構造体は 12バイトだという
> ことです。ずっと 16 バイトだと思って作っていたので、midiStreamOut() が
> エラーを返していました。

これってノートとかプログラムチェンジとかを指定する構造体なんですか?

私としてはどちらかというとやるなら BeOS で作ってみたいですね。
扱いやすい API と Win とは比較にならない時間精度、
MIDI キットも充実していますのでその辺は楽でしたし。
まあ、いかんせん使用できる環境が限られているのが痛いところですが。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#48: クラスを返す関数
Date: 2000/10/09 00:40:11 Mon Author: tos (tnet0004)
Parent Article: #47: クラスを返す関数

> オブジェクトを作るときに別のオブジェクトを渡したりする場合がありますが
> オブジェクトを delete するときにどのオブジェクトが渡したオブジェクトを
> delete するか、というような問題です。
> きちんとコピーしておかないと2重に消してしまったりしますよね。

了解しました。 私の件では、2重解放とはちょっと違って、誰も解放しない
領域が発生しないか心配していました。

クラスって、自分で明示的に確保解放しなくても領域が確保開放されたり、
するので、さらに複雑になって難しいですね。

その点、Java は自動解放するので、そんな悩みがなくて素晴らしいです。

// C++ でも、そう言うメモリ管理をしてもらえないだろうか?


tos.

レスチェック ■ この記事のコメントを書く

#47: クラスを返す関数
Date: 2000/10/08 23:39:02 Sun Author: GOO・豪 (tnet0077)
Parent Article: #45: クラスを返す関数
Child Article: #48: クラスを返す関数

>> まだしっかりと分かっていないです>オブジェクトの所有権
> オブジェクトの所有権? 私には初耳な言葉ですが。 ^^;

C++ マスターな方の話ではそう言っていましたが、言い方が違うのかも。
オブジェクトを作るときに別のオブジェクトを渡したりする場合がありますが
オブジェクトを delete するときにどのオブジェクトが渡したオブジェクトを
delete するか、というような問題です。
きちんとコピーしておかないと2重に消してしまったりしますよね。
そう言う話です。
tos さんの話も似たようなものだと思って書いたんです。
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

レスチェックした記事を
【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【前の20記事 [一覧] [ツリー] [一括] 【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

T-Net ■ メインページ