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

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

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

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

#96: Windowsのメモリ確保
Date: 2002/07/07 16:32:26 Sun Author: tos (tnet0004)
Child Article: #97: Windowsのメモリ確保

Windowsプログラムで、大容量のメモリ確保を行いたいと思っています。
ページングファイルを 4GBにすれば、4GBのメモリ確保ができるかと
思っていました。

ところが、new演算子でメモリ確保すると、1GBくらいでエラーになって
しまいます。

同じプログラムを複数実行すると、合計して 4GBくらいは確保できる
ので、Windows内では 4GBは使えるようです。

私がやりたいのは、1つのプログラムで 4GB、もしくはそれ以上の
メモリを使いたいのです。 Windows XP では無理なのでしょうか?

// その点、UNIXは何も考えなくても良いのがうれしい。 ^^;


tos.

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

#95: win2k で動かなくなった理由
Date: 2001/06/24 16:51:01 Sun Author: GOO・豪 (tnet0077)
Parent Article: #94: win2k で動かなくなった理由

>> 原因は情けないながら int 型の変数を初期化せずに使っていたことでした。
> コンパイラのワーニングでチェックできることですね。 ^^;

> とはいえ、C++Builder では、デフォルトではワーニングが出ないように
> なっています。初期化してない変数を使うって事は、ほとんど明らかに
> バグなのに。

そういえばそうですね。Java でやってると「初期化されてないかも知れない」
って口うるさく言ってきますしね。ってこういう経験が結構あるって事は
私は常習犯なんでしょうか(^^;
警告するように設定した方が良さそうですね。
GOO
E-Mail: goo_n@hotmail.com

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

#94: win2k で動かなくなった理由
Date: 2001/06/24 12:16:39 Sun Author: tos (tnet0004)
Parent Article: #93: win2k で動かなくなった理由
Child Article: #95: win2k で動かなくなった理由

> 原因は情けないながら int 型の変数を初期化せずに使っていたことでした。

コンパイラのワーニングでチェックできることですね。 ^^;

とはいえ、C++Builder では、デフォルトではワーニングが出ないように
なっています。初期化してない変数を使うって事は、ほとんど明らかに
バグなのに。


tos.

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

#93: win2k で動かなくなった理由
Date: 2001/06/24 05:55:26 Sun Author: GOO・豪 (tnet0077)
Child Article: #94: win2k で動かなくなった理由

以前私が作った例のテトリスのプログラムですが、
高い評価をしてくれる人がいて 2ch で取り引きされたりしていました。
まだまだやっているらしく、win2k 対応を希望する書き込みもありました。
tnet でも書いたかと思いますが win2k でハングアップしてしまうのです。
ゲーム自体は普通に動き、文字表示ばかりのようなところで
ハングアップしていたのでこりゃやっかいだろうなと思って
ずっと手を付けていなかったのですが、2ch の動きに刺激されて
バグ探しをしてみました。

原因は情けないながら int 型の変数を初期化せずに使っていたことでした。
win98 では偶然動いていたと言うのが正しかったようです。
win2k では今回の対象の初期化前の変数には毎回莫大な数値が入っていて、
ループのストッパーになっていたために、無限じゃないけど
長いループになってしまっていたのです。

これだけで正常に動くようになりました。
こんな事でユーザさんたちを苦しめていたかと思うと
後悔の念に押しつぶされそうになります。
あきらめるならせめて本当にやっかいかどうか、もしかしたら簡単じゃないか?
と言うことを実際に手を付けて見極めてからにしようと思います。

今ではもう配布すること自体が厳しいですし、
この遅れは大きな失態です。
GOO
E-Mail: goo_n@hotmail.com

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

#92: Java 開発環境に動き
Date: 2001/05/25 04:05:31 Fri Author: GOO・豪 (tnet0077)
Parent Article: #91: Java 開発環境に動き

> Forte だとレイアウトを null にしての操作が考えられていないので、

勘違いでした(^^;
Absolute Layout と言うレイアウトが、null にあたるものでした。
ただ、操作しようとすると表示がちょっとおかしくて
実際にあまり考えられてはいなかったのかも知れませんが、
とにかくできないわけではないことを取り急ぎ書いておきます(^^;
GOO
E-Mail: goo_n@hotmail.com

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

#91: Java 開発環境に動き
Date: 2001/05/22 01:32:29 Tue Author: GOO・豪 (tnet0077)
Parent Article: #88: Java 開発環境に動き
Child Article: #92: Java 開発環境に動き

> VisualCafe の Standard の方がフリーになっていたんですね(^^;
> http://www.webgain.co.jp/
> これは他のフリーの IDE と違って PureJava じゃないみたいですね。
> 軽そうです。なんで Java ばかりこんなにフリーの IDE がそろうんでしょうね。

一段落したので落としてみました。ちょっと触ってみた感じでは
やっぱり pure Java 環境より軽いのが印象的です。
ビジュアル開発の部分は、Forte と違って、setLayout(null) が
デフォルトで、つまりレイアウトマネージャから自由にして
座標指定でオブジェクトを置いていく、普通のイメージに近いものになっています。
Forte だとレイアウトを null にしての操作が考えられていないので、
これはアドバンテージですね。いろいろと完成度高そうな感じです。
完全移行するかも。

> 教育用なのかな?こんなのもありました。
> http://www.bluej.org/
> こっちはオブジェクト指向を学ぶにはすごく良さそうです。
> ちょっと大学の授業の手伝いをしているんで、そちらで使うかも。

こっちの方はまだ使い方がよく分からず(^^;
クラス相関図の書き方とか分かってる人が
概念をまとめるのにいいような感じがします。
コーディングしないでいいわけじゃないですし。
うまい教育への取り込み方が見つかるといいのですが...
GOO
E-Mail: goo_n@hotmail.com

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

#90: 販売可能に
Date: 2001/05/13 02:27:13 Sun Author: GOO・豪 (tnet0077)
Parent Article: #89: 販売可能に

http://www.famitsu.com/game/news/2001/05/09/n09.html

>  これでワンダーウィッチユーザが増えそう。

すごいですね。ツクールもので初の販売可能なものですよね。
ゲーム会社とユーザのつきあい方が変わる可能性すら含んでいますね。
ただ、そこまで行くと今の政府よろしく反対勢力が...(^^;
GOO
E-Mail: goo_n@hotmail.com

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

#89: 販売可能に
Date: 2001/05/12 09:45:39 Sat Author: Komit (tnet0027)
Child Article: #90: 販売可能に

http://www.famitsu.com/game/news/2001/05/09/n09.html

 これでワンダーウィッチユーザが増えそう。


Komit

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

#88: Java 開発環境に動き
Date: 2001/05/12 05:33:18 Sat Author: GOO・豪 (tnet0077)
Child Article: #91: Java 開発環境に動き

最近は Java ばかりいじっているんですが、知らないうちに
VisualCafe の Standard の方がフリーになっていたんですね(^^;
http://www.webgain.co.jp/
これは他のフリーの IDE と違って PureJava じゃないみたいですね。
軽そうです。なんで Java ばかりこんなにフリーの IDE がそろうんでしょうね。

教育用なのかな?こんなのもありました。
http://www.bluej.org/
こっちはオブジェクト指向を学ぶにはすごく良さそうです。
ちょっと大学の授業の手伝いをしているんで、そちらで使うかも。
GOO
E-Mail: goo_n@hotmail.com

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

#87: MidiPlayer
Date: 2001/03/17 11:04:45 Sat Author: GOO・豪 (tnet0077)
Parent Article: #86: MidiPlayer

> まあ、いずれにせよまだベータですしこれからですが。

とか書きましたが、もう DirectX も使えるようになっていますね。
ばりばり機種依存の方向かな・・・
GOO
E-Mail: goo_n@hotmail.com

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

#86: MidiPlayer
Date: 2001/03/17 11:02:18 Sat Author: GOO・豪 (tnet0077)
Parent Article: #85: MidiPlayer
Child Article: #87: MidiPlayer

>> MS はこれ以降 C# に任せて JAVA は載せないとか聞きますし、
> C# は名前は聞いたことがありますが、その実体は見たことはありません。

一応 .NET Framework SDK を入れればコマンドライン式のコンパイラと
実効環境は整いますのですぐできる状態ではありますよ。
私はまだ hello world したくらいでそれ以降手をつけていませんが、
一緒に入ってる VB の関数を C# から呼び出せたりしてかなり融通の利く
ものになっているみたいです。言語仕様が JAVA ライクで Delphi の
設計者が中心になっていると言うことで意外と人気が出てきているようです。

> でもこっちはこっちで、Windows系 OS マシンでしか動かないんでしょうね。

そうなんでしょうね。けど、もしかしたら MAC 用のランタイムとかは
出すかも知れませんね。へたしたら他の OS へも広げる?
もしそういう路線なら、JAVA が統一性にこだわる代わりに捨てた性能を、
少し機種依存を受け入れたようなちょっと違ったバランスで
持ち合わせてくれるものになるのかも。
まあ、いずれにせよまだベータですしこれからですが。
GOO
E-Mail: goo_n@hotmail.com

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

#85: MidiPlayer
Date: 2001/03/17 09:07:27 Sat Author: tos (tnet0004)
Parent Article: #84: MidiPlayer
Child Article: #86: MidiPlayer

> なんか JAVA の方針的にマルチメディアタイマーを使う気はないとか。

マシン非依存を前提に設計しているから、その方針は正しいでしょうね。
スレッドに対する扱いも、Win3.1 のような OS でも使えるように
低機能な物しか提供していないようです。

良くも悪くも、それが JAVA の限界なのでしょう。


> MS はこれ以降 C# に任せて JAVA は載せないとか聞きますし、

C# は名前は聞いたことがありますが、その実体は見たことはありません。
でもこっちはこっちで、Windows系 OS マシンでしか動かないんでしょうね。


tos.

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

#84: MidiPlayer
Date: 2001/03/17 01:11:11 Sat Author: GOO・豪 (tnet0077)
Parent Article: #83: MidiPlayer
Child Article: #85: MidiPlayer

> いつか JavaVM が改善されるかもしれませんし。

なんか JAVA の方針的にマルチメディアタイマーを使う気はないとか。
SUN と MS の和解交渉とかで完全に MS と決別してしまいましたし、
MS はこれ以降 C# に任せて JAVA は載せないとか聞きますし、
いろいろと状況が悪いですね。ローカルで動かす JAVA アプリとして
作るにしても JAVA1.3 VM が必要ですし。他の OS でも動くのは
いいですけど。
そんなわけでこの話はとりあえず凍結しておこうと思います。

あと C# はアプレット的使い方はメインじゃないようですが、
できるらしいので、この可能性も要チェックかも知れないですね。
GOO
E-Mail: goo_n@hotmail.com

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

#83: MidiPlayer
Date: 2001/02/14 16:07:43 Wed Author: GOO・豪 (tnet0077)
Parent Article: #79: MidiPlayer
Child Article: #84: MidiPlayer

>> それから、MIDIデバイスのどれを選んでも、同じ(ウチではサウンドカード
>> のMIDI音源)になってしまいます。
> うちでも確認しました。バグ出しして直そうと思います。

だめだ〜
Sequencer のトランスミッタにどのデバイス・シンセサイザの
レシーバをつないでも全く効果が無く、デフォルトと思われる
デバイスにしかデータを送ってくれません。

試しにローカルで動くクラスに移植してみましたが、そちらでも同じ状況で、
デフォルトと思われるデバイスが Java Sound Synthesizer である点だけが
アプレット版と異なっています。アプレット版では Win の MIDI マッパーが
デフォルトになっているようです。

鳴ることは鳴るんだしあきらめるしかないかな...
いや、やっぱりローカルで外部音源を使えないのは痛いですよね...

アプレット上でも一応使うことができる、というところを目標に
してみようかと思います。ローカルではもたりとかはありませんし、
いつか JavaVM が改善されるかもしれませんし。
GOO
E-Mail: goo_n@hotmail.com

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

#82: 継承関係で質問
Date: 2001/02/13 00:40:31 Tue Author: GOO・豪 (tnet0077)
Parent Article: #77: 継承関係で質問

> シーケンサが手に入れられるはずだ、デフォルトのシーケンサって言うくらいだし、
> と考えてしまっていたんです。

と、書きましたが、ここの記述には変なところがあります。
>非デフォルトシーケンサは、第 9 章「MIDI システムリソースへのアクセス」で説明したような方法で、取得可能です。

訳ミスなのかもしれませんが、私はこれに従って堂々巡りに陥ったのでした。
シーケンサの接続先を変更できない妙な挙動も気になるので、
もうちょっと調査が必要ですね。
GOO
E-Mail: goo_n@hotmail.com

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

#81: 継承関係で質問
Date: 2001/02/12 22:44:41 Mon Author: GOO・豪 (tnet0077)
Parent Article: #80: 継承関係で質問

> あとはデバイスの切り替えがきちんとできているかどうかの
> 確認ですが、また Java のデバイスが死んでしまったので再起動します。

最初に決定している状態からの変更が全くできていないようです。
接続の更新はしているし、それでエラーも返ってきていないのに、
おかしいです。もうちょっと調べてみます。
GOO
E-Mail: goo_n@hotmail.com

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

#80: 継承関係で質問
Date: 2001/02/12 20:56:48 Mon Author: GOO・豪 (tnet0077)
Parent Article: #78: 継承関係で質問
Child Article: #81: 継承関係で質問

> シーケンサは死んでいないと思います。単に、全体がハングアップした
> だけだと思います。

tos さんの説明で私もそのように理解したんですが、残念ながら
デフォルトシーケンサと Java Sound Synthesizer の両方が
死んでいるようです。片方だけが死ぬってのは今のところ経験がありません。

とりあえず、Java Sound Sequencer は表示しないようにしました。
あとはデバイスの切り替えがきちんとできているかどうかの
確認ですが、また Java のデバイスが死んでしまったので再起動します。
GOO
E-Mail: goo_n@hotmail.com

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

#79: MidiPlayer
Date: 2001/02/12 18:57:40 Mon Author: GOO・豪 (tnet0077)
Parent Article: #78: 継承関係で質問
Child Article: #83: MidiPlayer

> まず始めに、もしこの話題がもっと続くなら(プレイヤの制作を続けるなら)、
> 新しいサブボードを作りませんか?
> GOOさんの作るプレイヤ専用のサブボードを、です。

とりあえずここで一段落ですので、今は必要ないでしょう。
次に続けるときはそうしますね。

> プレイボタンを押してから音が鳴り始めるまで(プレイボタンが再びアクティブ
> になるまで)の間、シーケンサが MIDIデータを読み込んでいるのでしょうか?
> その時間がまず気になりました。

それは MIDI データ自体のブランクじゃないですか?
読み込み自体はアドレスを指定したときに行って、総時間とか TimeBase を
分析までできる状態で Sequence というクラスに収まっているので。
再生するときにはやっていないはずです。

> そして、 amazing02.mid を演奏させたときには気にならなかったのですが、
> bt4i.mid を演奏させると、音がもたりますね。

気になるテンポのデータじゃなかったってことですね。

> デフォルトのシーケンサでこうなるなら、どんなシーケンサを作っても
> これ以上良くならないのではないでしょうか?

> 何か、シーケンサから出力デバイスへのデータの流し方がまずいのでは
> ないでしょうか?

確かに向上する余地がないのではってのが心配ですけどね(^^;
いや、実はすでにサンプルプログラムがあって、
それでこんな状態だったから、最低限の状態で
どの程度のパフォーマンスを稼げるかということを
試したかったんです。ちょっといろんな事をやっているサンプルだったので。
こっちの方もちょっとアップロードしてみますね。
http://www.geocities.co.jp/SiliconValley-SanJose/4825/test/

> それから、MIDIデバイスのどれを選んでも、同じ(ウチではサウンドカード
> のMIDI音源)になってしまいます。

うちでも確認しました。バグ出しして直そうと思います。

> シーケンサのレシーバは、パソコン外部からの MIDIデータをレコーディング
> するためにあるのだと思いますが、違いますか?

> 「デフォルトのシーケンサ」と「デフォルトのシンセサイザ」は別の
> ものだと思います。シーケンサの中に音を発音する機能はないはずです。

やっと分かってきました。シーケンサのレコーディングのところにも
そのように書いてありました。getSequencer で Sequencer を手に入れて
なにも接続せずに sequencer.start() していたので、てっきり
内部にシンセサイザーを持っているものと勘違いしていましたが、
これでは録音するためのポートが無く、つじつまが合いませんね。
確認はしていませんが、おそらく初期状態では
Java sound Synthesizer の Receiver が Sequencer の
Transmitter にセットされているんでしょう。

> 一方、「デフォルトのデバイス」が具体的に何を指しているのかは
> 分かりません。もしかすると、「デフォルトのデバイス」は入力用
> として用意されたデバイスなのかも?

どうなんでしょうね。サンプルの方では最初に VM のシンセサイザが
なったり、突然外部音源が鳴り出したり、安定しません。

私が選んでいたデフォルトのデバイスは、最初に勘違いしていたときに、
Sequencer.getDeviceInfo() (MidiDevice クラスから継承したメソッド)
で、デバイス情報を手に入れ、それと列挙されたデバイス情報と比較して
決めていました。だから特に意味のあるものではないです。

> だとすると、シーケンサの出力に繋ぐべきなのは、実は「デフォルトの
> デバイス」でなく「デフォルトのシンセサイザ」の方だったのかも
> 知れません。これで、音のももたりが解決するかも。

Synthesizer extends MidiDevice で、結局は MidiDevice として
扱うことになりますし、その違いは JavaVM 内で音声合成までを行う
デバイスであるというだけなので、つなぐ対象が MidiDevice であることには
違いないと思います。用意されるメソッドもソフトシンセ用のものばかりですし。
GOO
E-Mail: goo_n@hotmail.com

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

#78: 継承関係で質問
Date: 2001/02/12 08:04:09 Mon Author: tos (tnet0004)
Parent Article: #77: 継承関係で質問
Child Article: #79: MidiPlayer #80: 継承関係で質問

まず始めに、もしこの話題がもっと続くなら(プレイヤの制作を続けるなら)、
新しいサブボードを作りませんか?
GOOさんの作るプレイヤ専用のサブボードを、です。


> 再生してみてどうでしょうか?うちでは重くてとても使い物になりませんでした。
> これでは着メロ編集がいいところでしょう。いや、そもそも時間精度が
> やばいのかもしれないからこれもきついかも(^^;

プレイボタンを押してから音が鳴り始めるまで(プレイボタンが再びアクティブ
になるまで)の間、シーケンサが MIDIデータを読み込んでいるのでしょうか?
その時間がまず気になりました。

そして、 amazing02.mid を演奏させたときには気にならなかったのですが、
bt4i.mid を演奏させると、音がもたりますね。


> いずれにせよシーケンサとして仕上げるには文字通り
> 自前でシーケンサを作ることになるとは思いますが。

デフォルトのシーケンサでこうなるなら、どんなシーケンサを作っても
これ以上良くならないのではないでしょうか?

何か、シーケンサから出力デバイスへのデータの流し方がまずいのでは
ないでしょうか?

それから、MIDIデバイスのどれを選んでも、同じ(ウチではサウンドカード
のMIDI音源)になってしまいます。
それから、「Java Sound Sequencer」は表示しない方が良いでしょう。


> しかもその信じられない仕様のせいでうちのようにデフォルトデバイスが
> 死んでしまったときには再生すらできないようになってしまっていたんです。
> こんな不安定なシーケンサじゃなくて他のデバイス情報を持った

それは、出力デバイスであるデフォルトデバイスが死んだだけで、
シーケンサは死んでいないと思います。単に、全体がハングアップした
だけだと思います。


> シーケンサが手に入れられるはずだ、デフォルトのシーケンサって言うくらいだし、
> と考えてしまっていたんです。
> 他の API (Win32 とか)でもこういう扱い方をしているんでしょうか?

WinAPI でも、デフォルトのシーケンサがあります。単にプレイヤを作る
だけなら、それを使えば簡単に作れます。

ただ、ちょっと凝ったこと(音に合わせて画面を動かそうとするなど)を
しようとすると、辛くなってきます。


> けどやっぱりシーケンシング専用のデバイスとしてシーケンサを
> 提供して欲しいなぁ。トランスミッタだけ持っているような。
> 自分で作れってか

シーケンサのレシーバは、パソコン外部からの MIDIデータをレコーディング
するためにあるのだと思いますが、違いますか?

「デフォルトのシーケンサ」と「デフォルトのシンセサイザ」は別の
ものだと思います。シーケンサの中に音を発音する機能はないはずです。

一方、「デフォルトのデバイス」が具体的に何を指しているのかは
分かりません。もしかすると、「デフォルトのデバイス」は入力用
として用意されたデバイスなのかも?

だとすると、シーケンサの出力に繋ぐべきなのは、実は「デフォルトの
デバイス」でなく「デフォルトのシンセサイザ」の方だったのかも
知れません。これで、音のももたりが解決するかも。

// いや、あの Sun の解説書に分かりやすい概念図が1つあるだけで、
// スッキリと理解できるはずなんですが、それがないんですよね。


tos.

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

#77: 継承関係で質問
Date: 2001/02/11 19:55:25 Sun Author: GOO・豪 (tnet0077)
Parent Article: #76: 継承関係で質問
Child Article: #78: 継承関係で質問 #82: 継承関係で質問

> デフォルトのシーケンサの出力を、getMidiDevice()で取得したデバイスの
> 入力に繋いでみてください。これで、GOO さんの悩みはすべて解決する
> ものと思われます。

その通りでした(^^;
再生できるようになりましたので、ご確認ください。

> もちろん、デフォルトのシーケンサの持つ機能が不満で、自分でシーケンサを
> 作りたいというなら、それはまた別な(高尚な)悩みですが。 ^^;

再生してみてどうでしょうか?うちでは重くてとても使い物になりませんでした。
これでは着メロ編集がいいところでしょう。いや、そもそも時間精度が
やばいのかもしれないからこれもきついかも(^^;
いずれにせよシーケンサとして仕上げるには文字通り
自前でシーケンサを作ることになるとは思いますが。

> そう、シーケンサは録音再生するだけの機能で、音は発音しない。
> そして、getMidiDevice() で取得できるデバイスは、シーケンサの機能は
> 持たず、音を発音したり、MIDI データを入力するための物理デバイスです。
> MIDI インタフェースに、シーケンサの機能はないでしょう?

それが音を発するし MIDI インターフェイスでもあるシーケンサが
再生機能を持っているので混乱してしまっていたんです(^^;
しかもその信じられない仕様のせいでうちのようにデフォルトデバイスが
死んでしまったときには再生すらできないようになってしまっていたんです。
こんな不安定なシーケンサじゃなくて他のデバイス情報を持った
シーケンサが手に入れられるはずだ、デフォルトのシーケンサって言うくらいだし、
と考えてしまっていたんです。
他の API (Win32 とか)でもこういう扱い方をしているんでしょうか?

いや、けどホントに助かりました。ありがとうございます。
本当に自分でシーケンサを作るまで気づかなかったかもしれません。

けどやっぱりシーケンシング専用のデバイスとしてシーケンサを
提供して欲しいなぁ。トランスミッタだけ持っているような。
自分で作れってか
GOO
E-Mail: goo_n@hotmail.com

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

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

T-Net ■ メインページ