2017-03-10 2 views
0

私たちは、群衆調達に基づいて音楽を作成するプロジェクトに取り組んでいます。人々は、投票が終了するまで、すべてのメモに投票し、その後、音楽のキャンバスがいっぱいになるまで次の投票に移動します。同じようなプロジェクトは、それがどのように見えるかを知りたければ、大騒ぎです。herokuにデプロイされたWebアプリケーションでJava Sound APIを使用

私たちはherokuで.warをホストしていました。サウンド以外のすべてのものが動作するように管理しています。

2017-03-10T09:49:01.338821+00:00 app[web.1]: javax.sound.midi.MidiUnavailableException: Can not open line 
2017-03-10T09:49:01.339228+00:00 app[web.1]: at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:1155) 
2017-03-10T09:49:01.339288+00:00 app[web.1]: at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:1066) 
2017-03-10T09:49:01.339340+00:00 app[web.1]: at music.MusicPlayer.run(MusicPlayer.java:99) 
2017-03-10T09:49:01.339391+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:745) 
2017-03-10T09:49:01.340759+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian is supported. 
2017-03-10T09:49:01.340869+00:00 app[web.1]: at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:479) 
2017-03-10T09:49:01.340924+00:00 app[web.1]: at javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:606) 
2017-03-10T09:49:01.340975+00:00 app[web.1]: at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:1095) 
2017-03-10T09:49:01.341045+00:00 app[web.1]: ... 3 more 

これは我々がウェブアプリで、MIDIシンセサイザーを使用することはできません、または一部が存在することを意味しています:私たちは、JavaサウンドAPIを(私たちは、MIDIシンセサイザーを使用)をコールしようとするたびに、我々は次のエラーを取得しますこの仕事をする方法?

+0

このコードはクラウドサーバー上またはクライアント上で実行されますか?それらを列挙すると、ソースデータ行が表示されますか? –

+0

@CL。私は確信していませんが、音を再生するにはクライアント側でなければなりません。アプリケーションはクラウドサーバー(おそらくVM内)で実行されるTomcatサーバーで実行されます。あなたの疑問の2番目の部分については、私はソースデータラインを扱ったことが一度もないので、それをどうやって行うのか教えていただけますか?それが助けになると、ローカルサーバー上で実行すると、サウンドにエラーはありません。 –

答えて

3

Java WARはサーバー側で実行されるため、サウンドを再生できません。さらに、herokuのインスタンスがサウンドハードウェアを完全に欠いている可能性があります。

Webクライアントに配信されるサウンドを生成するには、サウンドファイルを生成するMIDIレンダラを使用して、結果のオーディオファイルをクライアントに配信する必要があります(WAVファイル)、または単にクライアントにMIDIを提供し、ブラウザが例えばMIDI.js

関連する問題