2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Javaでサウンドアプリつくる

1 :名無しサンプリング@48kHz:03/10/27 23:47 ID:7vxRYGx3
Javaをつかって音楽系のアプリを作る。

2 :名無しサンプリング@48kHz:03/10/27 23:49 ID:+mzo91/W
無理。あきらめろ。

3 :名無しサンプリング@48kHz:03/10/27 23:50 ID:VoPc9+KX
         __,,,,、、、、,,,,,__  ゙!ヽト、
     ,、-''"´   _,,、-‐   `ソ .! ゙i
   /     /::     ,ノ  ノ l\
  /.:     /:::::    _/ ;/  /   ヽ        ラクス・クラインが>>2ゲットですわ?
 / ..::: .:  .:  :j:::: .: i //,.イ /   :  ゙、      >3 お疲れ様です。次は頑張って下さいね。
/ ..::::::.:: ..: .:/!:::::..:: l / '´ // ゙i .:: .:::  ゙!      >4 残念ですわね。でも、少し遅くはありませんか?
i ..::::i:::::::: i::i:..::l l:i::::::::::|;:l,   _,,,,,_ノ:::::;ィ:::  jl !     >5 論外ですわ。出直していらっしゃい。
| i:::::|:::::::::l::l:::::|-゙!ヽ::i;:l,ヽ  ´  ///;ハ:::. / i!    >6 もう2ゲットなんて狙っていらっしゃらないですわよね?
゙i.|::::|;::::i:::|::l'ヽ! ゙ ヽぃ:、   ,r=;''ヾ、 /::;.イ       >7 そろそろ電源を切って寝て下さい。お身体に悪いですわ。
:.!゙!::|ヽ:l::|ヽ! rテ"゙ヽ      l`';;:::} 'イ:: |        >8 あら?もうネタ切れですの?
 Y::ヽ:!:l, `i l`';;::::|      `゙''''''"  !:::  |       >9 素晴らしいですわ。これからも良い長文を書いて下さい。
 j:i::::l´iヾ: ´ ̄     i    ミミミミ l:::: l       >10 わたくし、お腹が空きましたの。
:/::l:::::::j:::::゙!ミミミミ    '   ,   ,/i:::  .!
__,ノ::::_/:::::::| 、    ー‐ '''"´   //:::  |つ,
,;/レ' ::::::j、_ ゙ヽ、     `"   ,.イ /::  /´ i゙
:::::/  .::/:/  `゙''''‐` - 、、,, /_⊥/::::: ./:j ,r''" ゙̄ヽ,
/ /:::/            //:::::;ィ//i!/ __   ヽ

4 :名無しサンプリング@48kHz:03/10/27 23:50 ID:zcvD52IC
Stormという失敗作(?)が既にあるからね
Javaじゃなければもっと評価されたと思う

5 :1:03/10/28 00:03 ID:+rQANHmj
参考URL)

Java Sound プログラマーズガイド
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/sound/programmer_guide/contents.html
Javaで音声、MIDI処理を扱うためのパッケージjavax.soundに関する概要

JavaでHello World サウンド編
http://www.hellohiro.com/sound.htm
とりあえずjavax.soundを使ってwavファイルを鳴らすチュートリアル

Java技術調査:音声出力について
http://www2.odn.ne.jp/〜cab71160/java_tech/sound/sound.html
いくつかサンプルソースあり

6 :1:03/10/28 00:15 ID:+rQANHmj
本格的なソフトシンセを作るとかは考えてないです。
第一目標はしょぼいストンパーみたいなのをつくることです。
とりあえずチュートリアル漁りながら、aiffファイルを開いて音を再生させることはできた。
aiffファイルから取得していたバイト配列の部分を適当な関数で塗り替えれば、発音も簡単にできそう

eclipseとJDKがあればタダでかなり本格的な環境をゲットできるので、ちょっと試してみる分には
なかなかいいと思うんですが。

とりあえずしばらくは俺の自己満&情報提供スレッドということでsageでやっていきたいとおもいます。
ちなみに意識調査アンケート。暇な人は答えてね

1.プログラムなんて興味ない
2.興味あるけどめんどくさい
3.経験あるけど音系はまったくやったことなし
4.音系かじってます
5.音系はまってます
6.音系で食ってます

ちなみに俺は3.です。同志もとむ!

7 :1:03/10/28 00:18 ID:+rQANHmj
さらにどっかの大学の卒論で「Javaによる波形編集ソフトの開発」ってのも発見した。



8 :107:03/10/28 01:48 ID:PPzHHWFL
>>5 のHello Worldのソース解説

1. Fileオブジェクトを元にAudioInputStreamオブジェクトaisを作る。
2. aisにオーディオ形式を問い合わせ、AudioFormatオブジェクトafを得る。
3. 「オーディオ形式がafで、入力データライン」であるライン情報を表すオブジェクトdlInfoを生成する。
4. Javaが稼動しているコンピュータに対して、「dlInfoを実現するラインを下さい」とお願いし、該当するラインを得る。
5. afのオーディオ形式でラインの元栓をあける。(以後このラインにwrite()することで音が鳴るようになる)
6. aisから音声データを随時読み込んではラインにwrite()する。
7. すべてのデータをラインにwrite()しおわったらラインの元栓を閉じる。
8. 明示的にexit(0)することでリソースを解放する?

音源となるラインについては大きく二つの方式を選べる。(Lineについて二種類の実装がある)
Clip方式...固定長の配列にあらかじめ音声データを入れておく。サンプラーのRAMに波形を置くようなもの。
SourceDataLine方式...適当なバッファを持ち、随時音声データを入力できる。ストリーミングのイメージ。

単純なテーブルシンセ的なものを作るにはClip方式、エフェクタや波形エディタを作るにはSourceDataLine方式をつかえばいい?

9 :1:03/11/02 09:09 ID:Dugw+rYY
とりあえずつくるものをきめた

44100Hz,16bit固定で100ワード長のループサンプルをデザインするソフト

画面上で波形を見ながらノブやスライダーをいじって、色んなサンプルをつくる。
保存時には.aif形式でエクスポート。
これをループ再生すると基準音Aに近い音程(441Hz)で鳴るので、外部のサンプラー
などで利用可能。


10 :1:03/11/03 11:55 ID:PSTuKVJl
なんとか8bitで正弦波、矩形波、ノコギリ波、パルス波を再生できた。
音の作り方、鳴らし方、止め方が分かったので次は簡単なUIを作ってその中で
波形グラフを表示してみます

11 :名無しサンプリング@48kHz:03/11/03 19:34 ID:mkyGrgIQ
ひっそり応援sage

12 :名無しサンプリング@48kHz:03/11/06 17:29 ID:4JsC8ccI
>>1
>>6の意識調査には当てはまらないのですが、
1音楽に興味がある。で
2ゆくゆくはプログラムとか組みたいけれど、
 今はまったくといっていいほど知識が無い。
です。「Javaによる波形編集ソフトの開発」てのもみたいんですが…
本当に応援してます。

13 :1:03/11/06 21:05 ID:zsK3mWmz
応援してくれている人ありがとう。
めざしているソフトは、本格派のソフトシンセというよりは
他のまともなサンプラ−で鳴らすためのネタ生成機って感じです。
KORGのDWGSとかコモドールのSidチップみたいな音素材をさくさく作っては
.aiffに(できればループ情報付きで)エクスポート出来て、半自動的に
サンプルライブラリが作れるようなアプリを目指します。

サラリーマンなんで週末くらいしかまとまった時間がとれず、しかも開発環境も
MacOS X(Eclipse)のために激重いのでなかなか進みませんが、ひっそり頑張るので
これからもよろしく。

で、肝心の進捗情報ですが、まだ全然進んでません。すまそ

14 :名無しサンプリング@48kHz:03/11/07 17:06 ID:l09lpeMh
>1
どうやら俺をやる気にさせたのはお前だったようだな。
前々からサウンドプログラミングに興味はあったんだけどね。
ということでHelloWorldSound鳴らせました!
pd, max/msp, supercollider, csoundなんかが如何に優れてるか実感するなこりゃ。
jmaxはjavaで出来てるんだよね?すごいな。

15 :1:03/11/07 21:37 ID:Xza2/kTc
>>14
おお、同志!
jmaxってなんですか?java版のmax?
maxはかつて一度触ったことあるんですが、当時はプログラムにはほとんど
興味なかったのであまり真剣に勉強しなかった...
でjavax.soundだけど、他の汎用言語に比べたら比較的取っ付きやすいと思う。

お互いがんばりましょう。

16 :14:03/11/20 01:48 ID:9snkohO/
亀レスですがjmaxはjava版maxです。
http://freesoftware.ircam.fr/rubrique.php3?id_rubrique=14
OSX10.1でCVSからコンパイルした時はうまく動いてくれませんでした。
というか全然分からなくてきちんとコンパイルされてなかったのかも。
今はMacが壊れてWin環境なんですけどどっちにしろうまく動いてくれません。

そもそもプログラミングに慣れ親しんでいるわけでもない上にjava使うの初めてって事で全然進んでません。
それでもCとかC++よりは楽そうだなと感じてます。
先は長いですが頑張ります。

17 :名無しサンプリング@48kHz:03/11/30 09:28 ID:8ylbVsRt
1さんはまだ続けてるんですかね。

18 :名無しサンプリング@48kHz:03/12/26 15:29 ID:7gWMdbfE
ぷっつり途絶えたのぅ

19 :名無しサンプリング@48kHz:04/01/09 00:18 ID:dQtF1Qu8
age

20 :名無しサンプリング@48kHz:04/01/09 19:36 ID:jsU21wvC
StormはJava製か・・・
うーん、がんばってみようかな

21 :名無しサンプリング@48kHz:04/01/16 01:51 ID:phB2R5zh
保守

22 :1:04/01/21 21:07 ID:3dUdm+bk
swingの知識が全くなかったため、UIまわりの設計でぷっつり止まってたとは口がさけてもいえず....
すいません、なんとか本買ってマスターしたので、また再開します。


23 :名無しサンプリング@48kHz:04/01/21 22:37 ID:DN5D0are
ガンガレ

24 :名無しサンプリング@48kHz:04/01/22 12:49 ID:oI8vjAD2
ganbare

25 :名無しサンプリング@48kHz:04/01/23 03:56 ID:e7niqTAT
とりあえず今何やってるのかと現在のソースをupしようよ。

26 :名無しサンプリング@48kHz:04/01/24 01:48 ID:0nBz8FGi
俺漏れも

27 :名無しサンプリング@48kHz:04/01/24 01:58 ID:z/dUlQkD
応援してまつ。漏れも今Java大学で習ってるんで、このスレ見てなんか作ろうかと思いました。

28 :名無しサンプリング@48kHz:04/01/24 04:53 ID:KBtfKGDu
http://page.auctions.yahoo.co.jp/jp/auction/64102012

29 :1:04/01/24 20:48 ID:Q/wPYHD4
ひどいソースですがupしてみました。
http://yokohama.cool.ne.jp/urbs0818/WTP.jar

(注意)
まともな動作検証もしていないものですので、万一このプログラムを実行して不利益/損害が発生しても責任は負いかねます。あらかじめご了承ください。
*とりあえず音量にだけ注意して下さい。まずはお使いのスピーカの音量をしぼってから試して下さい!

Windows+Javaの方は、コマンドプロンプトから「Java WTP.jar」で実行できると思います。
Mac OS Xの方は、Finder上で直接WTP.jarをダブルクリックすればOKです。

ソースはjar内に同梱してあります。

このアプリでは、[サンプルレート44100Hz、量子化ビット数8ビット、音程441Hz]の任意のパルス波を再生出来ます。
起動するとボタンとスクロールバーだけのウィンドウがでます。
ボタンをクリックする度に、再生/停止をします。
スクロールバーを移動させることで、パルス幅が最小から最大まで変化します。
再生中のパルス幅変化はできません。(つまり人力PWMとかはできません)いちど停止してから再生しなおしてください。

ほんとつまんないプログラムですよ。期待しないでね。
なんでパルス波で実験したかっていうと、単純に波形テーブルを書くのが楽だったからです。
今後は波形イメージを表示しながら自由なテーブルを描けて、ループ情報付きの.aifファイルに落とせるようにしたいです。


30 :名無しサンプリング@48kHz:04/01/25 07:13 ID:Pr8x0SBN
おー、確かに小さな一歩だけど、確実に進んでるみたいだなあー
がんばれー
ソースについてはjavaあまり知らないのでコメントできません。スマソ

31 :名無しサンプリング@48kHz:04/01/25 08:08 ID:OKFWIN5H
>>29
おー、すごい。ストリーム再生版もキボン

32 :1:04/01/25 12:50 ID:1KvhDWCM
パルスのアップ/ダウンエッヂの傾きを任意にかえられるようにしてみました。
(通常のパルス波は、それぞれ直角です)
これで、パルス、三角、ノコギリ、台形波がだせるはず。
でも思った程音にバリエーションは見られなかった。

考えられる原因は...

1.そもそもプログラムの波形計算が間違っていて、正しいテーブルが得られていない。
2.正しいテーブルは得られているが、これらの波だけではほとんど音の色づけはできない。

1.のセンももしかしてあるかもしれないので、とりあえず早くテーブルをグラフィカルに見られるようにしたいです。単純に256*100ドットの領域に、バイト配列の値を転写するだけですが。

2.に関しては、単純にもっと違ったテーブルを描けばいいのか、
それとも100サンプルという制限をとっぱらってLFOやAM、FMといったモジュレーションも対応させる必要があるのかは不明です。

モジュレーションに対応させても、ファイル出力時はモジュレーション効果が一周する部分までを書き出して使いたいのですが、実際に上記モジュレーションをかけ合わせた時に現実的なファイルサイズに常におさまるのかは怪しいです。



33 :1:04/01/25 12:52 ID:1KvhDWCM
あ、上記のソースはまだ上げていないです。波形が見られるようにしたらアップします。

34 :名無しサンプリング@48kHz:04/01/29 14:16 ID:QHALWupu
オウエンシテイルヨ、、、。

35 :名無しサンプリング@48kHz:04/02/11 03:44 ID:0LOAbIuT
mada-?

36 :名無しサンプリング@48kHz:04/02/14 17:00 ID:lTxykQLk
JsynってやつがJavaを使ったコンピューターミュージック言語では
標準的らしい。
http://www.softsynth.com/jsyn/

37 :名無しサンプリング@48kHz:04/02/25 22:28 ID:5jiO5W30
SourceDataLineはぷちぷちとノイズがはいる・・・
Clipは無問題なのになんで?

38 :名無しサンプリング@48kHz:04/03/06 07:00 ID:C7D02T6i
http://jmusic.ci.qut.edu.au/
こんなの見つけた。スレタイに追加ね。

ところでJAVAに限定しないほうが盛り上がると思うけど。

39 :1:04/03/09 20:52 ID:LjzMVCUe
すんません。かなり放置プレイ中です。
パソコン壊れちゃってしばらくここもみられない状態でした。

>>36
ためしていないのでよくわかりませんが、
SourceDataLine = ストリーミング
Clip = サンプルループ
ってのはわかってますよね?
読み取り速度(サンプルレート)よりも書き込み速度が遅いのではないでしょうか。
マイク端子とかをソースにしてもプチプチいうのだとしたら、ソースとデスティネーションで
サンプルレートが食い違っているとか。
あてずっぽうでいっているのでぜんぜん見当違いかも知れないです。

>>37
Java以外のプログラミングは僕の環境じゃできないんで....
超わがままですいません。

40 :36:04/03/10 01:20 ID:G4RuWOlb
初期の簡単なテスト段階だったので
writeでsin波のデータを全部渡して
戻ってきたらdrainで再生完了を待っているだけなので
書き込み速度が遅いという可能性はないです

リアルタイムで波形計算してそれを出力させてみたかったんですが
sin波でなくても音がにごるのがはっきり解り
サウンドアプリとしては致命的なのでこの方式は諦めました

Clipで渡したデータは
別スレッドでFFTをリアルタイム計算させてもまったくノイズが乗らないので
再生方式そのものが違うようです


41 :オウエン中:04/03/10 01:21 ID:TajpwFCQ
Java Sound APIの情報ページ
http://www.jsresources.org/

英語のサイトなんで読む気しないかもしれませんが
サンプルコードがけっこうあるから参考になるかも・・

こっちはリンク集
http://music.calarts.edu/~tre/JavaMusic.html

42 :37:04/03/10 04:30 ID:Vhf3eqHa
失礼しました、40をカキコしたのは37です

43 :名無しサンプリング@48kHz:04/03/11 04:54 ID:crMJBac7
>>37
バッファ(writeメソッドで一度に書く量)が短いのでは?

44 :37:04/03/11 19:04 ID:cFi5ud+g
>>43
それもないですね

百書は一聴にしかずということで
ttp://www2.ocn.ne.jp/~fis_junk/sound/SourceDataLineTest.zip

javaw -jar SoundDataLineTest.jar
で動作します

45 :37:04/03/11 19:06 ID:cFi5ud+g
↑javaw -jar SouceDataLineTest.jar のまちがいです

15 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)