C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.102196 の関連記事表示

<< 0 >>
■102196  equalizerをリセット出来ない
□投稿者/ トア -(2023/07/19(Wed) 16:29:57)

    分類:[C#] 

    初めまして、Vistual studio 2022 最新バージョン使用しています。
    言語:C#
    プロジェクトの名前:PlayMusic NET Core 6.0です。

    BASS.NETと言うプログラムでequalizerを作っているのですが、参考:https://akabeko.me/blog/2010/01/csharp-music-player-4/

    こちらのサイトを見て、equalizerを作りました。

    フォルダ\BASS\Player\

    「EQualizer.cs」
    「IEQualizer.cs」
    「AudioPlayer.cs」クラスが三つあります。
    「equalizer.cs」Form

    まず、Form1がメインとしています。

    Form1.cs

    private void イコライザーToolStripMenuItem_Click(object sender, EventArgs e)
    {
    if (eqInstance == null || eqInstance.IsDisposed)
    {
    eqInstance = new equalizer(BassSound, this);
    eqInstance.FormClosed += Eq_FormClosed;
    }

    eqInstance.Show();
    eqInstance.BringToFront();

    }

    private void Eq_FormClosed(object sender, FormClosedEventArgs e)
    {
    eqInstance = null;
    }
    }

    新しいフォームのequalizerが開きます。
    equalizerをトラックバーx10個あります。
    トラックバーの値を上下してOKを押すと非表示にして、再度equalizerを開き、リセットボタンを押すとチェックボックスとトラックバーの値が0に戻ります。
    その時、音の音源って言うのでしょうか?音が戻っていない状態になります。
    コード長いので分割して投稿させていただきます。

    「EQualizer.cs」

    using System;

    namespace BASSNETPlayer.BASS.Player
    {
    /// <summary>
    /// BASSEVENTS INTERFACE
    /// </summary>
    interface IEQualizer
    {
    #region EQUALIZER INTERFACE
    void BASS_AddEQ(int handle, int[] fxEQ, int nLoopBands);
    void BASS_RemoveEQ(int handle, int[] fxEQ, int nLoopBands);
    void BASS_SetParametersEQ(int[] fxEQ, int nFreqCenter, int nBands);
    void BASS_UpdateEQ(int[] fxEQ, int band, float gain);
    #endregion
    }
    }

    ここまで

    「IEQualizer.cs」

    using BASSNETPlayer.BASS.Player;
    using System;
    using Un4seen.Bass;

    namespace BASSNETPlayer.BASS.Player
    {
    public class EQualizer : IEQualizer
    {
    private BASS_DX8_PARAMEQ[] paramEQ;

    public EQualizer()
    {
    }

    public void BASS_AddEQ(int handle, int[] fxEQ, int nLoopBands)
    {
    try
    {
    paramEQ = new BASS_DX8_PARAMEQ[nLoopBands + 1];
    for (int i = 0; i <= nLoopBands; i++)
    {
    fxEQ[i] = Bass.BASS_ChannelSetFX(handle, BASSFXType.BASS_FX_DX8_PARAMEQ, 0);
    }
    }
    catch (Exception ex)
    {
    // Handle exception
    }
    }

    public void BASS_RemoveEQ(int handle, int[] fxEQ, int nLoopBands)
    {
    try
    {
    for (int i = 0; i <= nLoopBands; i++)
    {
    Bass.BASS_ChannelRemoveFX(handle, fxEQ[i]);
    }
    }
    catch (Exception ex)
    {
    // Handle exception
    }
    }

    public void BASS_SetParametersEQ(int[] fxEQ, int nFreqCenter, int nBands)
    {
    try
    {
    paramEQ[nBands] = new BASS_DX8_PARAMEQ
    {
    fGain = 0.0f,
    fBandwidth = 18.0f,
    fCenter = nFreqCenter
    };
    Bass.BASS_FXSetParameters(fxEQ[nBands], paramEQ[nBands]);
    }
    catch (Exception ex)
    {
    // Handle exception
    }
    }

    public void BASS_UpdateEQ(int[] fxEQ, int band, float gain)
    {
    try
    {
    if (Bass.BASS_FXGetParameters(fxEQ[band], paramEQ[band]))
    {
    paramEQ[band].fGain = gain;
    Bass.BASS_FXSetParameters(fxEQ[band], paramEQ[band]);
    }
    }
    catch (Exception ex)
    {
    // Handle exception
    }
    }
    }
    }

    ここまで


親記事 /過去ログ178より / 関連記事表示
削除チェック/

■102197  Re[1]: equalizerをリセット出来ない
□投稿者/ トア -(2023/07/19(Wed) 16:43:15)
    「equalizer.cs」
    
    using BASSNETPlayer.BASS.Player;
    using System.Reflection.Metadata;
    using System.Runtime.InteropServices;
    using Un4seen.Bass;
    
    namespace BASSNETPlayer.BASS.Control
    {
        public partial class equalizer : Form
        {
            private AudioPlayer BassSound;
            private readonly HashSet<string> History = new(StringComparer.OrdinalIgnoreCase);
            public readonly ToolTip tip = new();
            public readonly EQualizer BassEQ = new();
            public readonly int[] fxEQ = new int[11];
    
            private Form1 form1;
    
    
            private bool initialized = false; // イコライザー初期化フラグ
    
            public static int BandsCount { get; private set; }
    
            public equalizer(AudioPlayer bassSound, Form1 form1)
            {
    
                InitializeComponent();
                BassSound = bassSound;
                this.form1 = form1;
                InitializeEqualizer(); // イコライザーを初期化
    
            }
            private void InitializeEqualizer()
            {
                if (!initialized)
                {
                    BASS_ChannelAddEQ(); // イコライザーの設定を追加
                    initialized = true;
                }
                else
                {
                    BASS_ChannelUpdateEQ(); // イコライザーの状態を更新
                }
            }
            //イコライザ
            #region イコライザ
            public void BASS_ChannelAddEQ()
            {
                BassEQ.BASS_AddEQ(BassSound.Steam, fxEQ, 10);
                BassEQ.BASS_SetParametersEQ(fxEQ, 100, 0);
                BassEQ.BASS_SetParametersEQ(fxEQ, 200, 1);
                BassEQ.BASS_SetParametersEQ(fxEQ, 400, 2);
                BassEQ.BASS_SetParametersEQ(fxEQ, 600, 3);
                BassEQ.BASS_SetParametersEQ(fxEQ, 1000, 4);
                BassEQ.BASS_SetParametersEQ(fxEQ, 3000, 5);
                BassEQ.BASS_SetParametersEQ(fxEQ, 6000, 6);
                BassEQ.BASS_SetParametersEQ(fxEQ, 12000, 7);
                BassEQ.BASS_SetParametersEQ(fxEQ, 14000, 8);
                BassEQ.BASS_SetParametersEQ(fxEQ, 16000, 9);
            }
            public void BASS_ChannelUpdateEQ()
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 0, (float)this.TrackBar1.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 1, (float)this.TrackBar2.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 2, (float)this.TrackBar3.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 3, (float)this.TrackBar4.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 4, (float)this.TrackBar5.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 5, (float)this.TrackBar6.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 6, (float)this.TrackBar7.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 7, (float)this.TrackBar8.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 8, (float)this.TrackBar9.Value);
                BassEQ.BASS_UpdateEQ(fxEQ, 9, (float)this.TrackBar10.Value);
            }
            public void BASS_ChannelRemoveEQ()
            {
                BassEQ.BASS_RemoveEQ(BassSound.Steam, fxEQ, 10);
            }
            public void BASS_ResetVolumeEQ()
            {
                this.TrackBar1.Value = 0;
                this.TrackBar2.Value = this.TrackBar1.Value;
                this.TrackBar3.Value = this.TrackBar2.Value;
                this.TrackBar4.Value = this.TrackBar3.Value;
                this.TrackBar5.Value = this.TrackBar4.Value;
                this.TrackBar6.Value = this.TrackBar5.Value;
                this.TrackBar7.Value = this.TrackBar6.Value;
                this.TrackBar8.Value = this.TrackBar7.Value;
                this.TrackBar9.Value = this.TrackBar8.Value;
                this.TrackBar10.Value = this.TrackBar9.Value;
            }
            #endregion
            private void equalizer_Load(object sender, EventArgs e)
            {
    
            }
            private void TrackBar1_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 0, (float)this.TrackBar1.Value);
            }
    
            private void TrackBar1_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 0, (float)this.TrackBar1.Value);
                tip.SetToolTip(this.TrackBar1, this.TrackBar1.Value.ToString());
            }
    
            private void TrackBar2_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 1, (float)this.TrackBar2.Value);
            }
    
            private void TrackBar2_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 1, (float)this.TrackBar2.Value);
                tip.SetToolTip(this.TrackBar2, this.TrackBar2.Value.ToString());
            }
    
            private void TrackBar3_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 2, (float)this.TrackBar3.Value);
            }
    
            private void TrackBar3_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 2, (float)this.TrackBar3.Value);
                tip.SetToolTip(this.TrackBar3, this.TrackBar3.Value.ToString());
            }
    
            private void TrackBar4_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 3, (float)this.TrackBar4.Value);
            }
    
            private void TrackBar4_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 3, (float)this.TrackBar4.Value);
                tip.SetToolTip(this.TrackBar4, this.TrackBar4.Value.ToString());
            }
    
            private void TrackBar5_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 4, (float)this.TrackBar5.Value);
            }
    
            private void TrackBar5_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 4, (float)this.TrackBar5.Value);
                tip.SetToolTip(this.TrackBar5, this.TrackBar5.Value.ToString());
            }
    
            private void TrackBar6_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 5, (float)this.TrackBar6.Value);
            }
    
            private void TrackBar6_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 5, (float)this.TrackBar6.Value);
                tip.SetToolTip(this.TrackBar6, this.TrackBar6.Value.ToString());
            }
    
            private void TrackBar7_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 6, (float)this.TrackBar7.Value);
            }
    
            private void TrackBar7_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 6, (float)this.TrackBar7.Value);
                tip.SetToolTip(this.TrackBar7, this.TrackBar7.Value.ToString());
            }
    
            private void TrackBar8_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 7, (float)this.TrackBar8.Value);
            }
    
            private void TrackBar8_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 7, (float)this.TrackBar8.Value);
                tip.SetToolTip(this.TrackBar8, this.TrackBar8.Value.ToString());
            }
    
            private void TrackBar9_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 8, (float)this.TrackBar9.Value);
            }
    
            private void TrackBar9_ValueChanged(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 8, (float)this.TrackBar9.Value);
                tip.SetToolTip(this.TrackBar9, this.TrackBar9.Value.ToString());
            }
    
            private void TrackBar10_Scroll(object sender, EventArgs e)
            {
                BassEQ.BASS_UpdateEQ(fxEQ, 9, (float)this.TrackBar10.Value);
            }
    
            private void CheckBox1_CheckedChanged(object sender, EventArgs e)
            {
                switch (this.CheckBox1.CheckState)
                {
                    case CheckState.Checked:
                        {
                            BASS_ChannelAddEQ();
                            BASS_ChannelUpdateEQ();
                            this.TrackBar1.Enabled = true;
                            this.TrackBar2.Enabled = true;
                            this.TrackBar3.Enabled = true;
                            this.TrackBar4.Enabled = true;
                            this.TrackBar5.Enabled = true;
                            this.TrackBar6.Enabled = true;
                            this.TrackBar7.Enabled = true;
                            this.TrackBar8.Enabled = true;
                            this.TrackBar9.Enabled = true;
                            this.TrackBar10.Enabled = true;
                            break;
                        }
                    case CheckState.Unchecked:
                        {
                            BASS_ChannelRemoveEQ();
                            this.TrackBar1.Enabled = false;
                            this.TrackBar2.Enabled = false;
                            this.TrackBar3.Enabled = false;
                            this.TrackBar4.Enabled = false;
                            this.TrackBar5.Enabled = false;
                            this.TrackBar6.Enabled = false;
                            this.TrackBar7.Enabled = false;
                            this.TrackBar8.Enabled = false;
                            this.TrackBar9.Enabled = false;
                            this.TrackBar10.Enabled = false;
                            break;
                        }
    
                    default:
                        {
                            break;
                        }
                }
            }
            
    
記事No.102196 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102198  Re[2]: equalizerをリセット出来ない
□投稿者/ トア -(2023/07/19(Wed) 16:44:02)
    「equalizer.cs」その2
    private void EQreset_Click(object sender, EventArgs e)
    {


    //TrackBar1.Value = 0;
    //TrackBar2.Value = 0;
    //TrackBar3.Value = 0;
    //TrackBar4.Value = 0;
    //TrackBar5.Value = 0;
    //TrackBar6.Value = 0;
    //TrackBar7.Value = 0;
    //TrackBar8.Value = 0;
    //TrackBar9.Value = 0;
    //TrackBar10.Value = 0;

    ////Bass.BASS_ChannelStop(BassSound.Steam);
    ////Bass.BASS_StreamFree(BassSound.Steam);
    ////form1.TimerTrack.Value = 0;
    ////form1.Timer1.Stop();
    ////form1.picPlay.Image = Properties.Resources.Playbtn;
    ////// BassFileName.Text = ""; // 曲のタイトルをクリア
    ////form1.SoundPanel.Text = "00:00";
    ////form1.lblStatus.Text = BassSound.StatusString(BassSound.Steam);

    //MessageBox.Show("リセットされました。", "報告", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    //CheckBox1.Checked = false;
    }



    private void button1_Click(object sender, EventArgs e)
    {

    if (CheckBox1.Checked)
    {
    // イコライザーの設定を保存する
    fxEQ[0] = TrackBar1.Value;
    fxEQ[1] = TrackBar2.Value;
    fxEQ[2] = TrackBar3.Value;
    fxEQ[3] = TrackBar4.Value;
    fxEQ[4] = TrackBar5.Value;
    fxEQ[5] = TrackBar6.Value;
    fxEQ[6] = TrackBar7.Value;
    fxEQ[7] = TrackBar8.Value;
    fxEQ[8] = TrackBar9.Value;
    fxEQ[9] = TrackBar10.Value;

    }
    this.Hide();
    }
    }
    }

    ここまで


    やりたい事

    新しいフォームにイコライザーが開き、リセットボタンを押すとチェックボックスとトラックバーの値と音源がすべてデフォルトにしたい事です。

    同じフォームにイコライザーを書いた場合はちゃんと音源なども戻りますが、別Formとしてリセットボタン押した時、音源(音)とトラックバーの値、チェックボックスはオフと作りたいです。

    コメントアウトのコードは
    Bass.BASS_ChannelStop(BassSound.Steam);
    これを追加すれば音も元通りになります。(再生を停止なども)

    やりたい事が出来ません。
    音が元の状態にしたい場合はどうしたらいいですか?

    ビルドはX64として使用しました。

    AudioPlayer.csクラスはBassSoud.Steamで使用しています。
    よろしくお願いいたします。
記事No.102196 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102201  Re[3]: equalizerをリセット出来ない
□投稿者/ radian -(2023/07/20(Thu) 09:09:06)
    2023/07/20(Thu) 09:11:56 編集(投稿者)

    No102198 (トア さん) に返信
    > コメントアウトのコードは
    > Bass.BASS_ChannelStop(BassSound.Steam);
    > これを追加すれば音も元通りになります。(再生を停止なども)
    >
    > やりたい事が出来ません。
    > 音が元の状態にしたい場合はどうしたらいいですか?

    コメントアウトしたコードを実行すれば音が元通りになるなら、呼べばいいんじゃないですか?
    コメントアウトした理由がよく分からないんですが。問題点は何ですか?

    サンプルが長すぎるので、何か問題が発生しているなら、問題が再現可能な必要最小限のプログラムを作った方がいいと思います。
記事No.102196 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102202  Re[1]: equalizerをリセット出来ない
□投稿者/ WebSurfer -(2023/07/20(Thu) 10:17:39)
    No102196 (トア さん) に返信

    > 参考:https://akabeko.me/blog/2010/01/csharp-music-player-4/
    > こちらのサイトを見て、equalizerを作りました。

    参考サイトは WPF アプリ、質問者さんが作っているのは Windows Forms アプリのようですが
    その違いを分かってますか?


    デバッガを使うなどして問題をある程度切り分けしてもらえませんか?

    デバッガでダメなら、今のコードを問題が再現できる必要最小限のところまでどんどん削って
    いくということをするのをお勧めします。その過程で原因が分かって、自己解決できるという
    のはよくあることです。

    自己解決できなくても必要最低限かつそれをコピペすれば動くコードを提示してもらえれば
    問題解決に有用な情報がもらえるかもしれません。

    > 新しいフォームにイコライザーが開き、リセットボタンを押すとチェックボックス
    > とトラックバーの値と音源がすべてデフォルトにしたい事です。

    > 同じフォームにイコライザーを書いた場合はちゃんと音源なども戻りますが、別Form
    > としてリセットボタン押した時、音源(音)とトラックバーの値、チェックボックス
    > はオフと作りたいです。

    ・・・と言うところから、は関係なくて、Windows Forms アプリの作り方の
    基本的なところに問題がありそうな気がします。

    もしそうであれば、BASS.NET などは一切なしでその部分のコードの未提示してもらえば、
    見てくれる人が増えて、回答が得やすくなると思います。
記事No.102196 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102203  Re[1]: equalizerをリセット出来ない
□投稿者/ 魔界の仮面弁士 -(2023/07/20(Thu) 10:38:38)
    2023/07/20(Thu) 15:09:31 編集(投稿者)

    No102196 (トア さん) に返信
    > 初めまして、Vistual studio 2022 最新バージョン使用しています。
    最新は Version 17.6.5 ですね。
    あるいは 17.7.0 Preview 4.0 とか。

    > 「EQualizer.cs」
    > 「equalizer.cs」Form
    大文字小文字が違う同名ファイルが 2 つある…?
    別フォルダーに配置された partial class なのでしょうか。

    > public partial class equalizer : Form
    .NET の世界では、クラス名の先頭は大文字で始めるのが一般的ですよ。


    > まず、Form1がメインとしています。
    > Form1.cs
    あれ? 提示された フォルダ\BASS\Player\ 内のファイル群に、
    「Form1.cs」というファイルは無いようですが。


    > eqInstance = new equalizer(BassSound, this);
    > eqInstance.FormClosed += Eq_FormClosed;
    このコードがあるということは、Form1 上には
    「private equalizer? eqInstance = null;」もしくは
    「private equalizer eqInstance = null!;」あるいは
    「private equalizer eqInstance = null;」といった
    フィールド宣言があるということでしょうか。


    > 「EQualizer.cs」
    > interface IEQualizer
    >
    > ここまで
    >
    > 「IEQualizer.cs」
    > public class EQualizer : IEQualizer

    ファイル名が入れ替わってませんか?


    > 「AudioPlayer.cs」クラスが三つあります。
    その AudioPlayer.cs というファイルは、どこにあるのでしょうか?
    BASS.NET 公式サイトにある .NET 6 向けの Bass24.Net.zip 内にも該当ファイルが無いようです。

    参考にされていたサイトには、VS2008 + .NET Framework 3.5 SP1 向けの
    WfpAudioPlayer4.zip が置いてありましたが、その中の
    \WfpAudioPlayer4\Models\AudioPlayer.cs のことでしょうか。


    > equalizerをトラックバーx10個あります。
    Scroll や ValueChanged を 10 個ずつ用意するのではなく、
    イベント引数 sender を使って一つにまとめた方が楽だと思いますよ。

    たとえば、private readonly TrackBar[] trackbars; な配列フィールドを用意し、
    コンストラクタで InitializeComponent(); の呼び出し直後に
    その配列に 10 個のトラックバーを入れておけば、
    一つのイベントハンドラだけで 10 個すべてをまかなえます。
     if (sender is TrackBar tb)
     {
      int index = Array.IndexOf(trackbars, tb);
      BassEQ.BASS_UpdateEQ(fxEQ, index, (float)tb.Value);
      tip.SetToolTip(tb, $"{tb.Value}");
     }


    > トラックバーの値を上下してOKを押すと非表示にして、再度equalizerを開き、リセットボタンを押すとチェックボックスとトラックバーの値が0に戻ります。
    > その時、音の音源って言うのでしょうか?音が戻っていない状態になります。

    「0 ではなく、トラックバーを現在の設定値に戻す」という対応と
    「トラックバーを 0 にして、設定値も 0 にする」という対応が考えられますね。

    前者にするなら、BASS_DX8_PARAMEQ 指定で
    BASS_FXSetParameters でゲイン(-15DB〜+15DB)を変更する処理だけでなく、
    BASS_FXGetParameters で現在のゲインを取得して、それをトラックバーに
    反映させれば良い気がします。※未検証

    後者の場合は、BASS_UpdateEQ を明示的に呼び出すようにしてみてください。
    TrackBar は ISupportInitialize を実装しているので、ロードが完了するまでは
    ValueChanged や Scroll イベントが処理されない可能性があります。
    また、ロード後に void BASS_ResetVolumeEQ() を呼び出したとしても、
    Value が既に 0 だった場合、0 を再代入しても ValueChanged イベントが呼ばれません。
記事No.102196 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102215  Re[2]: equalizerをリセット出来ない
□投稿者/ トア -(2023/07/26(Wed) 22:50:54)
     radianさん
    
    >コメントアウトした理由がよく分からないんですが。問題点は何ですか?
    新しいフォームが開いた時、イコライザーフォームでチェックボックスをオンとトラックバーの値を設定した時、OKを押すと非表示にしました。
    その際に再度equalizerを開くとリセットボタンを押すと元の音にならないことが問題点です。
    これを改善したいと質問させて頂きました。
    
    WebSurferさん
    
    >参考サイトは WPF アプリ、質問者さんが作っているのは Windows Forms アプリのようですが
    >その違いを分かってますか?
    
    そのサイトのデザインだけをWindows Forms アプリに作りました。
    
    >・・・と言うところから、は関係なくて、Windows Forms アプリの作り方の
    >基本的なところに問題がありそうな気がします。
    
    >もしそうであれば、BASS.NET などは一切なしでその部分のコードの未提示してもらえば、
    >見てくれる人が増えて、回答が得やすくなると思います。
    
    分かりました。ありがとうございます。
    
    魔界の仮面弁士さん
    
    >このコードがあるということは、Form1 上には
    >「private equalizer? eqInstance = null;」もしくは
    >「private equalizer eqInstance = null!;」あるいは
    >「private equalizer eqInstance = null;」といった
    >フィールド宣言があるということでしょうか。
    
    private equalizerForm equalizerForm;
    を使用しています。
    
    Form1.csを書き忘れました。
    
    private void イコライザーToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (equalizerForm == null || equalizerForm.IsDisposed)
                {
                    equalizerForm = new equalizerForm(this);
                    equalizerForm.FormClosed += (s, ev) =>
                    {
                        equalizerForm = null;
                    };
                }
    
                // equalizerFormを表示する前に、現在のインスタンスを非表示にする
                if (equalizerForm.Visible)
                {
                    equalizerForm.Hide();
                }
    
                // equalizerFormを表示する
                equalizerForm.Show();
            }
    
    BASS\EQ\の中
    「equalizerForm.cs」
    「EQualizer.cs」
    「IEQualizer.cs」
    BASS\Player\
    「AudioPlayer.cs」
    プロジェクト名
    「Form1.cs」
    再生用の画像フォルダpng\
    以下のファイルにクラス入れています。(書き忘れてすいません)
    
    > if (sender is TrackBar tb)
    > {
    >  int index = Array.IndexOf(trackbars, tb);
    >  BassEQ.BASS_UpdateEQ(fxEQ, index, (float)tb.Value);
    >  tip.SetToolTip(tb, $"{tb.Value}");
    > }
    
    ご指摘された通りトラックバーを纏めて出来ました。
    
    最後に
    private void button1_Click(object sender, EventArgs e)
            {
                // チェックボックスがチェックされている場合のみ、イコライザーの設定を更新する
                if (CheckBox1.Checked)
                {
                    // 一旦イコライザーの設定を削除
                    // form1.BASS_ChannelRemoveEQ(); ここを追加しました。
    // トラックバーの値をイコライザーに設定
                    //form1.fxEQ[0] = TrackBar1.Value;
    //以下省略
                }
               }
    equalizerForm.cs
    
    private Form1 form1;
    public equalizerForm(Form1 form1)
            {
                InitializeComponent();
                this.form1 = form1;
    }
    
    Form1には
    public readonly EQualizer BassEQ = new();
            public readonly int[] fxEQ = new int[11];を入れてます。
    
    radianさん
    WebSurferさん
    魔界の仮面弁士さんありがとうございました。
    一旦解決済みとさせて頂きます。
    
記事No.102196 のレス / END /過去ログ178より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -