お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-09-06 21:42:30

syosinnsya
メンバ
登録日: 2008-06-20

x86_64環境でのttaのデコード

OS:ubuntu 9.04 amd64

SoundConverter 1.4.1でttaファイルをデコードしてwaveファイルにしたのですが「ザー」という音が出て聞けません。
元のttaファイルはwindows環境で作成してあり、以前はちゃんと聞けました(windows環境で)

調べたところ、

x86_64なGNU/LinuxにおけるTTA(The True Audio)対応の現状
http://d.hatena.ne.jp/kakurasan/20070619


「TTAのデコード部分(ttadec)に問題があるため、同様にx86_64環境でのみノイズとなった」

とあるのですが、64bit環境ではttaはデコードできないのでしょうか?(バグのせいで)

ちなみにttaのソフトウェアは入れていないのですが、SoundConverterでちゃんと変換できたので大丈夫だと思ったのですが、それがいけないのでしょうか?

どなたか教えてください。お願いします。

オフライン

 

#2 2009-09-07 23:45:52

kakurasan
新しいメンバ
登録日: 2009-01-01

Re: x86_64環境でのttaのデコード

その記事を書いた者です。

syosinnsya による投稿:

ちなみにttaのソフトウェアは入れていないのですが、SoundConverterでちゃんと変換できたので大丈夫だと思ったのですが、それがいけないのでしょうか?

SoundConverterはGStreamerのTTAプラグイン(パッケージ「gstreamer0.10-plugins-bad」内)を用いているため、ttaencは必要ありませんが、リンク先にも書いている通りのバグにより(64bit上でのみ)ノイズ音になってしまいます。
これを修正するには「gstreamer0.10-plugins-bad」パッケージのソースを取得後
-gst/tta/ttadec.h内の「unsigned long long」を「u_int64_t」に置換
-gst/tta/以下の.cファイルと.hファイル内の「long」を「int」に置換
のように修正して再ビルド/置換する必要があり、手間がかかります。

一方、TTAのエンコード/デコードを行うコマンドのttaencでは、バージョン3.4系から64bit上の問題が修正されており

コード:

$ ttaenc -d [.ttaファイルの場所]

とすることにより正常にWAVEへのデコードが行えます(もちろんエンコードもOK)。
ttaencの入手については
http://true-audio.com/Free_Downloads
を開いて
「TTA compressor version 3.4.1」の「Linux x86」にある32bit向けバイナリを直接使ってもOKですし、ソース(Source)をダウンロードして(64bit用として)ビルドしてもOKです。

以上、参考になれば幸いです。

オフライン

 

#3 2009-09-08 00:11:05

syosinnsya
メンバ
登録日: 2008-06-20

Re: x86_64環境でのttaのデコード

おぉ、筆者さんですか。わざわざありがとうございます。
なんかこう、TVの中でしか会ったことのない芸能人に直接会った気分です:) ,

「x86_64なGNU/LinuxにおけるTTA(The True Audio)対応の現状」の記事は2年前に書かれたもので現在は修正されているものだと思っていました。
今もバグが残っているのですね。

ttaencをソースからビルドしようと思い、TTA compressorをDLしてReadMeを読んだのですがどのファイルをコンパイルして、ビルドすればいいかわかりません。
もしよければ教えていただけないでしょうか?

初心者な質問ですいません。

オフライン

 

#4 2009-09-08 22:34:34

kakurasan
新しいメンバ
登録日: 2009-01-01

Re: x86_64環境でのttaのデコード

syosinnsya による投稿:

ttaencをソースからビルドしようと思い、TTA compressorをDLしてReadMeを読んだのですがどのファイルをコンパイルして、ビルドすればいいかわかりません。

まず、念の為に書いておきますが、ダウンロード/展開するファイルはttaenc-3.4.1-src.tgzです。
C言語のソースファイルは

コード:

[ttaenc-3.4.1-src]$ ls
COPYING  ChangeLog-3.4.1  Makefile  README  ttaenc.c  ttaenc.h  ttaenc.vcproj

見ての通りttaenc.cの1つしかないので、(ディレクトリ「ttaenc-3.4.1-src」の中に移動した後)直接gccコマンドで

コード:

[ttaenc-3.4.1-src]$ gcc [好みでコンパイラオプションを指定...] ttaenc.c -o ttaenc

のようにコンパイルしてもよいのですが、ディレクトリ「ttaenc-3.4.1-src」の中にはMakefileがあるので、このディレクトリの中で「make」を実行するだけでOKです。
(どちらの場合も「build-essential」パッケージが入っている必要があるので、なければ事前に入れておきます)

コード:

(ビルド作業)
[ttaenc-3.4.1-src]$ make

(動作の確認)
[ttaenc-3.4.1-src]$ ./ttaenc -d [.ttaファイルの場所]

ところで、このttaencを用いてGUIのウィンドウにドラッグ・アンド・ドロップする形で簡単にエンコード/デコードできるツールを作っているのですが、需要はあるのでしょうか?
過去にTiMidity++関係のcfgforsfというツールをGUIで使うためのツールを作っていて、ほとんどそれと同じようなものなものです。ほぼ完成しているので、近い内に公開できると思います。
スクリーンショット: 準備状態 処理中(詳細エラーメッセージも表示可)

オフライン

 

#5 2009-09-09 01:12:22

syosinnsya
メンバ
登録日: 2008-06-20

Re: x86_64環境でのttaのデコード

丁寧な説明に感激です!
すごく初歩的な事なのですが、いつも疑問に思っていて悩んでいたことがあるので質問させてもらってもいいでしょうか。(今回の場合の話ではないです。)
プログラムをソースからインストールした場合、

1、新しいversionが出たときは同じ手順でインストールできるのでしょうか?
2、アンインストールはどうやるのでしょうか?GUIで可能なのでしょうか。
3、ソースが入っていたフォルダは消しても大丈夫なのでしょうか?


ttaをエンコード、デコードするプログラムはwindows版ならGUI版があるのですが(使ってました)、linux版ではなくて困っていたので助かります。kakurasanさんが作成なさっているGUI版を待ってもいい気がしてきました(オイ)

オフライン

 

#6 2009-09-09 10:08:58

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: x86_64環境でのttaのデコード

syosinnsyaさん による投稿:

プログラムをソースからインストールした場合、

3つの質問すべての答えが「パッケージによって違う」です.

ソースからインストールすることについてのスレッドです.私も意見を述べさせて頂きました.
https://forums.ubuntulinux.jp/viewtopic.php?pid=26818

また,私が関わったスレッドのうち,make install してトラブルになった事例を紹介します.
* インストールしたファイルが邪魔で apt-get がエラーになる.
https://forums.ubuntulinux.jp/viewtopic.php?id=5296
* アンインストール方法がわからない.
https://forums.ubuntulinux.jp/viewtopic.php?id=4309

2番めのスレッドのケースは他の質問者の make install を手伝ってあげようとした結果でした.
make install でトラブルになっても,ここで助けを求めれば間違いなく手を差し伸べてもらえますが,
回答者も同じ手順を再現しないと答えられない場合があり,その結果,回答者も困ったことになる場合があるということです.

他の方々の善意に甘えられても困りますが,多少の冒険をしないと上達しないのも事実です.
他の方々の手を煩わせないためには,最悪のケースで Ubuntu の再インストールを覚悟して make install して下さい.
防護策をとってから make install すれば最悪のケースは避けられますが,その防護策が「パッケージによって違い」そこそこの知識が必要です.

オフライン

 

#7 2009-09-09 12:17:50

syosinnsya
メンバ
登録日: 2008-06-20

Re: x86_64環境でのttaのデコード

返信ありがとうございます。

場合によって違うのですね。今回はソースからのインストールは止めておきます。知識をつけてから再度挑戦したいと思います。
もしくはパッケージが出たらパッケージからインストールしますね。わざわざ手順を教えていただいたkakurasanさん、すいません。

オフライン

 

#8 2009-09-09 21:30:07

kakurasan
新しいメンバ
登録日: 2009-01-01

Re: x86_64環境でのttaのデコード

作成していたttaencのGUIについては
http://kakurasan.ehoh.net/software/gtk-ttaenc/
に公開しました。システムへのインストール作業は不要で、展開した中の「exec.py」を実行するだけでOKですが、Ubuntuでは別途「python-gtk2」パッケージが必要です。ttaencの実行ファイルはもちろん必要(32bitのビルド済みバイナリでもOK)ですが、このツールの中のbinディレクトリに(起動前に)入れておけば利用できるようにしました。
また、これとは別にTau ProducerをWineで試したところ、インストーラを含め挙動が微妙な部分があるものの、GUIからのエンコード/デコードともに動作はしているようです。こちらのほうが馴染んでいるというのであれば、試してみると良いかも知れません。

---

以下は、ソースからのアプリケーションのインストールに関する質問についての内容(一般的な話)です。今回のような「実行ファイル1つだけ」の例とは別のものと考えて頂ければと思います。

---

質問1については、古いバージョンと同じように入れられることは多いですが、バージョンが大きく上がったときなどに使用ビルドシステムが変わるということは有り得ます(各ソフトウェアの開発側の判断による)。

2と3についてですが、手動でビルドしたソフトウェアを管理者権限でシステムにインストールする場合は、einundzwanzighundertsechs氏も意見されているように、注意が必要です。

ソースからソフトウェアをインストールするための仕組み(ビルドシステム)は色々とあり、インストールをする流れはビルドシステムごとに異なります。どのビルドシステムを用いているのかはソフトウェアによって異なります。また、同じビルドシステムでも、ソフトウェアによって固有なビルド前のオプション指定を受け付けるものもあり、「ソフトウェアごとに方法が異なる」という認識でもよいかも知れません。

kakurasan による投稿:

ディレクトリ「ttaenc-3.4.1-src」の中にはMakefileがあるので、このディレクトリの中で「make」を実行するだけでOKです。

このように、どのビルドシステムを用いていてどのような手順でビルド/インストールをすれば良いのかを判別して的確な操作を行えるようにするには、多少の慣れや知識が必要だと思います。

手動で入れたプログラムのアンインストールについては、GNU製のソフトウェアなどで広く用いられているautotool(s)と呼ばれるツール群によるもの(configure.acやMakefile.amなどがあるもの)ではソースディレクトリを残しておけば「(sudo) make uninstall」で消せる *ものもある* のですが、一般的に簡単には消せない *ことが多い* です。インストール先接頭辞(prefix)を/opt/[アプリケーション名]/などに指定することで後から消しやすくすることができる *場合もあります*。
paco/pacKAGE oRGANIZER(http://paco.sourceforge.net/)を用いることで、「sudo paco -lD make install-strip」のようにしてインストールしたファイルの一覧をデータベースに記憶してGUI(「sudo gpaco」)から後でパッケージごとに消すということは可能ですが、100%信頼できるというものではありませんし、万が一システム上のパッケージとファイルがぶつかったりすると危険です。ただ、使い方によってはそれなりに便利なツールだとは思います。

ディストリのパッケージになっていないものを自分用にインストールしたいというのであれば、インストール先接頭辞を自分のホームディレクトリの下にアプリケーションごとに(「${HOME}/[プログラム名]/」のように)指定して一般ユーザ権限で入れるという手もありますが、ソフトウェアによっては無理 *なものもあります*。

ビルドシステムによっては、パッケージ手動インストール時には手動インストール用途の/usr/local/以下に標準で入るようになっていて、ディストリのパッケージ管理システムが管理する/usr/{bin,sbin,lib*,share,...}や/etc/などに影響を及ぼすことはない *場合が多い* ですが、/usr/の下に入れてしまう *ものもあります*。
今回のttaencを「インストール」したいのであれば、実行ファイルを/usr/local/bin/の下などにコピーしておけば十分です。

色々と書きましたが、「ディストリのパッケージ管理下にあるディレクトリ内を管理者権限でいじらない」点に注意し、インストール先指定やpacoなどの「防護策」をとるなり、一般ユーザ権限で配置するなどしていけばよいのではないでしょうか。
ただし、一番理想的なのはディストリのパッケージだけで管理することだと思います。

オフライン

 

Board footer

Powered by FluxBB