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

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

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

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

#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 置き場

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

#46: midiStream によるプログラミング
Date: 2000/10/08 15:24:55 Sun Author: tos (tnet0004)
Child Article: #49: midiStream によるプログラミング

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

とりあえず、midiStream を使って MIDI音源から音を出すプログラムを
作ってみました。ドの音が1回だけ鳴ります。(苦笑)

// しかし、これに辿り着くまでに半日掛かりました。 ^^;

なお、これを作るにあたり、infoseekで midiStreamOpen を検索して
出てきた資料を参考にしました。

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


何かの役に立つように、サンプルソースの一部を添付ファイルにしておきます。


tos.


[ http://www.tnet.to/filer/41/midiStream.txt 2.21KBytes (2265Bytes) ]

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

#45: クラスを返す関数
Date: 2000/10/07 06:37:06 Sat Author: tos (tnet0004)
Parent Article: #44: クラスを返す関数
Child Article: #47: クラスを返す関数

> まだしっかりと分かっていないです>オブジェクトの所有権

オブジェクトの所有権? 私には初耳な言葉ですが。 ^^;


tos.

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

#44: クラスを返す関数
Date: 2000/10/07 05:27:29 Sat Author: GOO・豪 (tnet0077)
Parent Article: #43: クラスを返す関数
Child Article: #45: クラスを返す関数

> これで、安心して ToAnsiString() が作れそうです。(笑)

私も BeOS で ua100controler 作っていた頃には
オブジェクトの所有権問題でさんざんエラー出しました。
だいたい C++ 全然分かっていない状態から BeIDE を使っていたら
何となく分かってきたという強行突破状態でしたからね(^^;
まだしっかりと分かっていないです>オブジェクトの所有権
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

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

#43: クラスを返す関数
Date: 2000/10/07 01:59:05 Sat Author: tos (tnet0004)
Parent Article: #42: クラスを返す関数
Child Article: #44: クラスを返す関数

>> ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、
>> 関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^;
> 上の書き方だとまずくないです.
> AnsiString& ToAnsiString(complex z)
> の場合は,ローカル変数への参照になるのでアウトですけど,
> 上のように AnsiString 型を返す場合は,ローカル変数の
> 内容がコピられるので,問題ないです.

そうか、アドレスを渡すわけではなくて、値をコピーするから問題ないん
ですね。 ^^;

これで、安心して ToAnsiString() が作れそうです。(笑)


tos.

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

#42: クラスを返す関数
Date: 2000/10/06 12:51:34 Fri Author: 沢渡 みかげ (subop)
Parent Article: #41: クラスを返す関数
Child Article: #43: クラスを返す関数

> |AnsiString   str;
> |str = "(" + ToAnsiString(z) + ")";

> のように書ける ToAnsiString() という関数を作ることです。
> 簡単に思いつくのは、

> |AnsiString ToAnsiString(complex z)
> |{
> |    AnsiString str;
> |
> |    str += AnsiString(real(z)) + ", " + AnsiString(imag(z));
> |
> |    return (str);
> |}

> ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、
> 関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^;

上の書き方だとまずくないです.

AnsiString& ToAnsiString(complex z)

の場合は,ローカル変数への参照になるのでアウトですけど,
上のように AnsiString 型を返す場合は,ローカル変数の
内容がコピられるので,問題ないです.

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

#41: クラスを返す関数
Date: 2000/10/06 11:25:59 Fri Author: tos (tnet0004)
Child Article: #42: クラスを返す関数

文字列クラスの実体を返す関数を作りたいのですが、どう作ったらよい物か。

やりたいことは、

|AnsiString   str;
|str = "(" + ToAnsiString(z) + ")";

のように書ける ToAnsiString() という関数を作ることです。
簡単に思いつくのは、

|AnsiString ToAnsiString(complex z)
|{
|    AnsiString str;
|
|    str += AnsiString(real(z)) + ", " + AnsiString(imag(z));
|
|    return (str);
|}

ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、
関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^;

こんな時、どういう風に書くのが一般的でしょうか?
教えてくださいませ。 ^^


tos.

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

#40: 初挑戦
Date: 2000/07/30 10:45:47 Sun Author: GOO・豪 (tnet0077)
Parent Article: #39: 初挑戦

> 私はCの基礎知識すら無かったので苦労しています。(^^;

> 最近Win32 APIが一覧出来るような書籍を本屋で探したのですが、
> 値段に玉砕してしまいました。

Win32 API で検索してみるとこんなところがありました。
http://tokyo.cool.ne.jp/masapico/

う〜ん、役に立ちそう(^^;
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

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

#39: 初挑戦
Date: 2000/07/29 12:23:46 Sat Author: mega (tnet0051)
Parent Article: #35: 初挑戦
Child Article: #40: 初挑戦

>  で細々とWindowsの勉強を重ねていました。Cの基本知識しかなかったので
>  最初は本を見ても何をやっているか全然分かりませんでしが、

私はCの基礎知識すら無かったので苦労しています。(^^;

最近Win32 APIが一覧出来るような書籍を本屋で探したのですが、
値段に玉砕してしまいました。

--
mega(mega@fics.org)

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

#38: 初挑戦
Date: 2000/07/20 23:45:21 Thu Author: tos (tnet0004)
Parent Article: #35: 初挑戦

>  一ヶ月ほど前にヨドバシカメラ京急上大岡店でデジカメを買った時に、
>  そのポイントでVisal C++6.0 Professionalを買いました。

なんで、C++Builder でないのかな? と不思議に思ってしまいます。 ^^;


tos.

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

#37: それでは
Date: 2000/07/20 23:29:16 Thu Author: Komit (tnet0027)

>>  それでタイマーでWindowsを終了するのを作ってみました。
>>  よろしければうまく動くか試してみてください。
> とりあえずタイマーとしては普通に動いているみたいです(^^;

 それでは終了するのも置いておきます。
 試してみてください。



Komit

[ http://www.tnet.to/filer/35/WinExiter.lzh 5.85KBytes (6000Bytes) ]

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

#36: 初挑戦
Date: 2000/07/20 19:16:10 Thu Author: GOO・豪 (tnet0077)
Parent Article: #35: 初挑戦

>  それでタイマーでWindowsを終了するのを作ってみました。
>  よろしければうまく動くか試してみてください。

とりあえずタイマーとしては普通に動いているみたいです(^^;
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

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

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

T-Net ■ メインページ