サウンドファイルの編集について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
柴田淨兒

サウンドファイルの編集について

#1

投稿記事 by 柴田淨兒 » 14年前

2つのサウンドファイルを統合して1つのファイルにする
関数はありませんか(例えば、mp3ファイル)。
インターネットのクライエントから受け取った情報をもとに
簡単なサウンドファイルを組上げて送り出すことを考えています。

もちろん、この関数を使ったCプログラムを
HTMLに挿入することが必要ですが、
その問題は、ひとまずここでは置きます。

C++ または Visual C++ で考えています。

Dixq (管理人)

Re:サウンドファイルの編集について

#2

投稿記事 by Dixq (管理人) » 14年前

wavファイルなら簡単ですが、mp3のような圧縮ファイルは少し難しいでしょう。
wavであってもファイルヘッダを書き換える必要があります。

そんな時はffmpegを使うと良いです。
aviからmpegへ、mp4から連続したjpgへ、bpmとmp3からwmvへ
メディアファイルであればなんだって変換出来てしまう優れものです。
オープンソースなので誰にでもカスタマイズでき、ソースを組み込めます。
ただし組み込むとGPLライセンス(ソースコード開示義務)になるのでご注意ください。
コンパイル済み実行ファイルをツールとして利用する場合はこれにあてはまりません。

まずffmpegってなんぞ?と思ったら、それを使ってあれこれ変換してみてください。
ffmpegでググると沢山資料が出てきます。
世の中には沢山動画変換ツールがありますが、中身はほとんどこれじゃないかと勝手に推測しています。

柴田淨兒

Re:サウンドファイルの編集について

#3

投稿記事 by 柴田淨兒 » 14年前

1)wavファイルが処理できれば十分です。

2)ffmpegについていくつかサイトを調べましたが、これはコマンドラインから使う「ファイル変換ソフト」のようで、
C++スクリプトの中で、しかもファイルを統合するためには、(カストマイズしても)使えそうにありません。
もちろんソースを解読すれば、使える関数がその中にあるかも知れません。

3)「wavなら簡単」と言って頂いたので元気が出て、wavファイルを自前で処理する
プログラムを作る方向で検討を始めました。取りあえずはwavファイルの構造の理解です。
ffmpegのソースも参考にしながら。

4)「クライエントが入力した五線譜を演奏する」
ことを含むWebアプリケーションを作るのが目的です。
ドのファイル、レのファイルなどをたくさん持って、五線譜データに従ってこれを統合すれば、
HTMLの<BGSOUND   >などで演奏できます。
今持っているドレミのwmaファイルをwavファイルに変換するソフトは、持っています。

5)プログラム歴
++の付かないC・・・・・昔、仕事で使いました。但し、数値計算と図形処理。
Java・・・デスクトップのものを一通り勉強。
_____JSP&サーブレットに首を突っ込んだところで、考えているWebアプリに向かないように
__________思いC++に転向。
Visual C++ 2010 Express・・・これのプログラミング環境を少しかじった程度。
_____C++の本格的な勉強はこれからです。
HTML・・・・・基礎的な勉強だけ
PHP・・・・・勉強している最中です。この中にC++のexeが挿入できることを期待しています。

6)進展したら、またご報告します。

Dixq (管理人)

Re:サウンドファイルの編集について

#4

投稿記事 by Dixq (管理人) » 14年前

携帯からなので簡単な事しか言えませんが、
Wav フォーマット などでググれば出てきますよ。
私も先日aviとwaveを作りました。aviは面倒でしたがWaveはヘッダをつけて後は生データ付けるだけでした。

Dixq (管理人)

Re:サウンドファイルの編集について

#5

投稿記事 by Dixq (管理人) » 14年前

追記:サーバーでffmpegを使って動画変換する仕組みも先日作りましたがffmpegをツールとしてシェルから使えば簡単でしたよ。

softya

Re:サウンドファイルの編集について

#6

投稿記事 by softya » 14年前

参考資料をご紹介します。

「wav ファイルフォーマット」
http://www.kk.iij4u.or.jp/~kondo/wave/
沢山ある中から無圧縮, リニアPCM さえサポートすれば良いと思います。

「Amazon.co.jp: WAVプログラミング―C言語で学ぶ音響処理: 北山 洋幸: 本」
http://www.amazon.co.jp/dp/4877832076/

>ことを含むWebアプリケーションを作るのが目的です。

C++は動くレンタルサーバーが限られますし、音声処理は負荷が重いのでサーバー側で処理するのは無理があると思いますよ。Javaアプレットの方が良いかも知れません。
あと、音声をピッチシフトで作れば沢山のWAVファイルを処理する必要はなくなります。あるいは波形を合成するのも手です。

柴田淨兒

Re:サウンドファイルの編集について

#7

投稿記事 by 柴田淨兒 » 14年前

皆様にいろいろ教えていただいて感謝しています。
C++の勉強を済ませてから、wavファイル現物の解読、ファイル統合ソフトの開発
と言う段取りになりますので、結果が出るには少々時間がかる見込みです。


softya様へ

1)処理負荷の問題
音符にして5~10個の短いメロディをwavファイルに組上げるだけですから
大丈夫だろうと思っています。
クライエントが検索用のキーとして五線譜を入力したとき
確認のためにそれを演奏するのが目的です。

2)ピッチの件
たしかにピッチがいじれれば楽です。1個の音源から
音高の差(ドレミ) や、
音長の差(四分音符と2分音符、四分音符=100と80)
をつけたものを作れれば、言うことはないので、トライするつもりです。

3)レンタルサーバーのC++の問題
Visual C++でDebugしてできたたくさんのファイルの中からexeファイルを探して、
それをコマンドプロンプトで実行したら、正常に動きました。で、
「レンタルサーバーにC++の準備がなくても、exeは動く」と今のところ考えています。

但し、あるレンタルサーバーでは、
Tomcat とか PHP とか Perl とか言う言葉はあっても「WindowsやVistaが動く」
と言う表現はなく、気になります。
HTMLやPHPの間にC++のexeが挿入できるかどうかを気にしていましたが、
その前にレンタルサーバー側がexeを受け付けることが必要だと、改めて認識しました。
この件で行き詰ったら、改めて掲示板のスレッドを立ち上げますので
その際はよろしくお願いします。

なお、前述のexe実行テストでは次の2フォルダを「ごみ箱」に捨てておきました。
Program Files\Visual Studio 2010
該当exeのソリューション全体

4)Javaアプレットの件
これ自体を知らないので何とも言えませんが、C++/PHPで行き詰まったら
転向するかも知れません。

***wavの本を発注、今日届きます。

softya

Re:サウンドファイルの編集について

#8

投稿記事 by softya » 14年前

レンタルサーバーでC言語が使えれば、そう説明書きに書いてありますよ。もし書いてないなら使えないって事です。C/C++はサーバー負荷が高くなりがちなのとセキュリティ上の問題が出やすいので避けているサーバーも多数あります。
それと大半のレンタルサーバーはLinuxが多いと思います。ただ単にLinuxでコンパイルすると使えると思われても困りますが・・・。

一番理解して欲しいのは、ユーザーはWEBブラウザでアクセスする事になりますので通信のリクエスト受け付けるのは、まずApatcheなどのWEBサーバーソフトです。
WEBサーバーソフトは、必要に応じてWEBアプリ用のCGIを実行しますが、これがPerlやPHPやJavaサーブレットやCGIとして構築されたC/C++などです。

>それをコマンドプロンプトで実行したら、正常に動きました。
それは何の根拠にもなりません。

CGIとするためには色んなことをしないといけませんので、下記を読んで勉強してください。
http://www-cms.phys.s.u-tokyo.ac.jp/~na ... NTRO/CCGI/
とりえず確認することは、借りているサーバーで上記のようなことが出来るかです出来なければ出来るサーバーをお金がかかっても良いので探す必要が出てきます。あるいは自宅サーバーを公開するかです。
もし借りているサーバーで公開できるにしても、いきないテストCGIをサーバーにアップロードして試してはいけません。もし無限ループ等になればレンタルサーバ全体が操作不能に陥って損害賠償やレンタル契約を解除される可能性も出てきます。自宅にサーバー(出来るだけLinux)を構築して自宅でまず試験をしないとダメですよ。 画像

Dixq (管理人)

Re:サウンドファイルの編集について

#9

投稿記事 by Dixq (管理人) » 14年前

もし勘違いされていたら困ると思うので補足すると・・
windowsをお使いのようですが、サーバーはほとんどがLinuxです。
アーキテクチャが違うので、windowsで動くものをサーバーへコピーしても動きません。

cppファイルをサーバーにアップし、Poderosaみたいなソフトでサーバーに接続し、
シェルからgccでコンパイルするのが一番正確かと思います。

perlよりは情報が少ないですが「CGI C言語」で検索するといくつか参考になるサイトが出てきますよ。

柴田淨兒

Re:サウンドファイルの編集について

#10

投稿記事 by 柴田淨兒 » 14年前

皆様ご指摘の通りレンタルサーバーでexeを動かすのは問題が多く、諦めました。
Windows・PHPを3件見つけ、その2件は「セキュリティの関係で」とはっきり
断られました。もう1件も言い方は違いますがOKではありません。

専用サーバーや自宅のパソコンサーバーは費用の面など問題が多く、
「exeなしのPHP」でやることをトライするつもりです。
気軽に「Cならば何でもできるから」とPHPの全機能を調査していませんでした。

C++が挿入できると言うことで選んだPHPですが、取りあえずこれで行きます。
C掲示板でのご意見でCを止めるのは、少々申し訳なく思っています。

アップロードするデータの作成などには、C++も使うでしょう。
例のwavファイル編集も、C++で確かめたうえで、PHPに置き換えることに
なると思います。

状況が進んだら、またご報告します。

柴田淨兒

Re:サウンドファイルの編集について

#11

投稿記事 by 柴田淨兒 » 14年前

一応wavファイルの編集に成功しましたのでご報告します。有難うございました。
費やした時間の大部分はC++に慣れることでした。
ご紹介の本が非常に役立ちました。尤も最初の数ページを読んだだけですが。

まだ、簡単なことだけです。
1)ドレミ1オクターブの音源をヘッダなしの16分音符にしたもの
・・(各音階ともバイト数は固定13152で無音を含む14音源全体が1ファイル)   と
2)dataの無いヘッダだけのファイル
の二つを準備し、別に作った「五線譜データファイル」を参照しながらメロディを作るプログラムができ、
「ドレミの歌」の冒頭部分がWMAで演奏できました。
ピッチの変更はプログラムが複雑になり、今の方法でも十分なので、これで行く予定です。

音源データのつなぎ目で雑音が入るので、行く行くは波形の繰り返し境界で音源データをトリムしようかと・・。これもやや面倒ですが。
次はPHPの勉強です。PHPがバイナリの扱いに意外に強そうで安心しました。

閉鎖

“C言語何でも質問掲示板” へ戻る