NAudioと言うGitHubで公開されているオーディオライブラリの拡張ライブラリWaveFormRendererLibを使って、派生ライブラーを作っています。
やりたいことは、WaveFormRendererLibを最大限利用して、VWaveFormRendererLibというライブラリーをつくり、下の図のように波形の表示方向を横方向から縦方向に表示できるようにしようとしています。(VWaveFormRendererLibの頭文字Vは、Vertical(垂直)を表します。)
図の上側のウインドウはWaveFormRendererLibライブラリーだけを使って動かしたものです。下側は試しにWaveFormRendererLibの中を書き換え、x軸方向とy軸方向を入れ替えました。
さて本題です。
新たに作った名前空間VWaveFormRendererLibにあるVWaveFormRendererクラスのVRender(IPeakProvider peakProvider, VWaveFormRendererSettings settings)コンストラクタの中で、以前からある名前空間WaveFormRendererLibのWaveFormRendererLibクラスのDecibelPeakProvider(peakProvider, 48)を使って、変数 peakProviderを定義しています。
しかしpeakProviderの行で「CS0122 'DecibelPeakProvider' はアクセスできない保護レベルになっています」とエラーメッセージが出力してしまします。
DecibelPeakProviderはアクセス制御がpublicなので、どのクラスからもアクセスできると思うのですが、何が理由でアクセスできないのでしょうか?お教えいただければと思います。
C#
1namespace VWaveFormRendererLib 2{ 3 public class VWaveFormRenderer: WaveFormRenderer 4 { 5 省略 6 private static Image VRender(IPeakProvider peakProvider, VWaveFormRendererSettings settings) 7 { 8 if (settings.DecibelScale) 9 peakProvider = new DecibelPeakProvider(peakProvider, 48); <==ここでエラー発生 10 11 省略 12 } 13 } 14}
C#
1namespace WaveFormRendererLib 2{ 3 class DecibelPeakProvider : IPeakProvider 4 { 5 private readonly IPeakProvider sourceProvider; 6 private readonly double dynamicRange; 7 8 public DecibelPeakProvider(IPeakProvider sourceProvider, double dynamicRange) 9 { 10 this.sourceProvider = sourceProvider; 11 this.dynamicRange = dynamicRange; 12 } 13 14 省略 15 } 16}
回答2件
あなたの回答
tips
プレビュー