11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JUCEAdvent Calendar 2018

Day 5

JUCEチュートリアルを始めたての人向けに役立つコードスニペット

Last updated at Posted at 2018-11-04

JUCEチュートリアル

JUCEは機能が豊富な分、チュートリアルが提供されています。本記事の執筆時点で62個のチュートリアルが用意されていますが、これでも全てのクラスの使い方が網羅されているわけではありません。
チュートリアルに付属のプロジェクトファイルPIP形式、ZIP形式で提供されていますが、個々の開発環境についてまでは触れられていないため、開発環境によっては期待通りに動いてくれないケースに遭遇することがあります。
本記事では、そのようなトラブルの一例について解決方法を紹介します。

JUCE tutorials.PNG

音が出ない場合

原因としては、JUCEアプリケーションにおけるオーディオの出力先のデバイスが設定されていないことが挙げられます。特にプロジェクトを新規作成したときなどは、参照すべき設定値などを取ることができず、オーディオデバイスの設定が存在しないせいで、出力自体が無効化されているケースに遭遇します。

以下に、JUCEアプリケーションでのオーディオデバイス設定パネルを表示するためのコードスニペットを示します。

オーディオデバイス設定パネルを表示するコードスニペット

void showDeviceSetting()
{
	AudioDeviceSelectorComponent selector(deviceManager,
		0, 256,
		0, 256,
		true, true,
		true, false);
	selector.setSize(400, 600);

	DialogWindow::LaunchOptions dialog;
	dialog.content.setNonOwned(&selector);
	dialog.dialogTitle = "Audio/MIDI Device Settings";
	dialog.componentToCentreAround = this;
	dialog.dialogBackgroundColour = getLookAndFeel().findColour(ResizableWindow::backgroundColourId);
	dialog.escapeKeyTriggersCloseButton = true;
	dialog.useNativeTitleBar = false;
	dialog.resizable = false;
	dialog.useBottomRightCornerResizer = false;
	dialog.runModal();
}

この関数をメインのコンポーネントのコンストラクタ内で呼び出すようにしましょう。

 MainContentComponent()
        :   state (Stopped)
    {
        ~中略~
        setAudioChannels (2, 2);
        startTimer (20);

        showDeviceSetting();

    }

showDeviceSetting関数が呼び出されると、以下のパネルが表示されます。

AMPanel.PNG

実行環境に合わせてオーディオデバイスの設定を変更しましょう。

AMPanel2.PNG

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?