diff --git a/docs/markdowns/toc.yml b/docs/markdowns/toc.yml
index 5191b2f..b3195f3 100644
--- a/docs/markdowns/toc.yml
+++ b/docs/markdowns/toc.yml
@@ -14,6 +14,8 @@
href: start/gen/channel-base-api.md
- name: トラックベースAPI
href: start/gen/track-base-api.md
+ - name: バッファリング可能な音声生成
+ href: start/gen/track-base-api-partial.md
- name: WAV出力
href: start/wav.md
- name: Ver 3.0.0への移行
@@ -22,4 +24,5 @@
items:
- name: SMSCフォーマットとは?
href: smsc/what-is-the-smsc.md
- - name: SMSCシリアライズ・デシリアライズ
\ No newline at end of file
+ - name: SMSCシリアライズ・デシリアライズ
+ href: smsc/serializer.md
\ No newline at end of file
diff --git a/src/SoundMaker/FormatBuilder.cs b/src/SoundMaker/FormatBuilder.cs
index 5d38374..fc78e65 100644
--- a/src/SoundMaker/FormatBuilder.cs
+++ b/src/SoundMaker/FormatBuilder.cs
@@ -31,7 +31,8 @@ internal BitDepthBuilder(FormatBuilder builder)
};
///
- /// sets a bit depth(BitRateType) to format. 量子化ビット数を指定する。
+ /// Sets a bit depth(BitRateType) to format.
+ /// 量子化ビット数を指定する。
///
/// value
/// builder
@@ -63,7 +64,8 @@ internal SamplingFrequencyBuilder(FormatBuilder builder)
};
///
- /// sets a sampling frequency to format. サンプリング周波数を指定する。
+ /// Sets a sampling frequency to format.
+ /// サンプリング周波数を指定する。
///
/// sampling frequency
/// builder
@@ -95,9 +97,10 @@ internal ChannelTypeBuilder(FormatBuilder builder)
};
///
- /// sets a count fo channels to format.
+ /// Sets a count fo channels to format.
+ /// チャンネル数を設定する(1: モノラル、2: ステレオ)
///
- /// count of channels
+ /// count of channels
チャンネル数
///
/// The count value must be either 1 or 2.
public FormatBuilder WithChannelCount(int count)
@@ -112,7 +115,8 @@ public FormatBuilder WithChannelCount(int count)
}
///
- /// create an instance of builder. ビルダのインスタンスを作成する。
+ /// Create an instance of builder.
+ /// ビルダのインスタンスを作成する。
///
/// builder
public static SamplingFrequencyBuilder Create()
@@ -122,7 +126,8 @@ public static SamplingFrequencyBuilder Create()
}
///
- /// build to FormatChunk. FormatChunkにビルドする。
+ /// Build to FormatChunk.
+ /// FormatChunkにビルドする。
///
/// FormatChunk
public FormatChunk ToFormatChunk()
@@ -131,7 +136,8 @@ public FormatChunk ToFormatChunk()
}
///
- /// build to SoundFormat. SoundFormatにビルドする。
+ /// Build to SoundFormat.
+ /// SoundFormatにビルドする。
///
/// SoundFormat
public SoundFormat ToSoundFormat()
diff --git a/src/SoundMaker/ScoreData/SMSC/SMSCFormat.cs b/src/SoundMaker/ScoreData/SMSC/SMSCFormat.cs
index 7c3ad9a..de848c7 100644
--- a/src/SoundMaker/ScoreData/SMSC/SMSCFormat.cs
+++ b/src/SoundMaker/ScoreData/SMSC/SMSCFormat.cs
@@ -10,8 +10,8 @@ public static class SMSCFormat
/// Reads SMSC data.
/// SMSCデータを読み込む。
///
- /// SMSC data. SMSCデータ
- /// The read results. 読み取り結果
+ /// SMSC data.
SMSCデータ
+ /// The read results.
読み取り結果
public static SMSCReadResult Read(string data)
{
var lexer = new Lexer(data);
@@ -23,8 +23,8 @@ public static SMSCReadResult Read(string data)
/// Outputs SMSC data.
/// SMSCデータを出力する。
///
- /// Sound components to write. 書き込むサウンドコンポーネント
- /// SMSC data. SMSCデータ
+ /// Sound components to write.
書き込むサウンドコンポーネント
+ /// SMSC data.
SMSCデータ
public static string Serialize(IEnumerable components)
{
return SMSCSerializer.Serialize(components);
diff --git a/src/SoundMaker/Sounds/ChannelType.cs b/src/SoundMaker/Sounds/ChannelType.cs
index b79c2fb..ac89e90 100644
--- a/src/SoundMaker/Sounds/ChannelType.cs
+++ b/src/SoundMaker/Sounds/ChannelType.cs
@@ -5,11 +5,11 @@
public enum ChannelType
{
///
- /// monaural(1ch) モノラル1ch
+ /// monaural(1ch)
モノラル1ch
///
Monaural,
///
- /// stereo(2ch) ステレオ2ch
+ /// stereo(2ch)
ステレオ2ch
///
Stereo
}
\ No newline at end of file
diff --git a/src/SoundMaker/Sounds/IWave.cs b/src/SoundMaker/Sounds/IWave.cs
index 79e54b1..ade31d5 100644
--- a/src/SoundMaker/Sounds/IWave.cs
+++ b/src/SoundMaker/Sounds/IWave.cs
@@ -1,20 +1,21 @@
namespace SoundMaker.Sounds;
+
///
-/// interface for wave. 波を表すインターフェイス
+/// Interface for wave. 波を表すインターフェイス
///
public interface IWave
{
///
- /// get length of bytes of wave data. 波形データのバイト列の長さを取得するメソッド。
+ /// Get the length of bytes of wave data.
波形データのバイト列の長さを取得するメソッド。
///
- /// quantization bit rate. 量子化ビット数
- /// length of bytes of wave data.
+ /// Quantization bit rate.
量子化ビット数
+ /// Length of bytes of wave data.
int GetLengthOfBytes(BitRateType bitRate);
///
- /// get the array of bytes of wave data. 波形データのバイト列を取得するメソッド。
+ /// Get the array of bytes of wave data.
波形データのバイト列を取得するメソッド。
///
- /// quantization bit rate. 量子化ビット数
- /// bytes of wave data. 波形データのバイト列 : byte[]
+ /// Quantization bit rate.
量子化ビット数
+ /// Array of bytes of wave data.
波形データのバイト列 : byte[]
byte[] GetBytes(BitRateType bitRate);
}
diff --git a/src/SoundMaker/Sounds/MixerBase.cs b/src/SoundMaker/Sounds/MixerBase.cs
index 7a2f8b5..1006d3b 100644
--- a/src/SoundMaker/Sounds/MixerBase.cs
+++ b/src/SoundMaker/Sounds/MixerBase.cs
@@ -1,34 +1,27 @@
using SoundMaker.Sounds.SoundChannels;
namespace SoundMaker.Sounds;
+
///
-/// provides a base class for a mixer to inherit from. ミキサーの抽象基底クラス
+/// Provides a base class for a mixer to inherit from.
ミキサーの抽象基底クラス
///
-public abstract class MixerBase
+/// List of sound channels (read-only).
音声チャンネルのリスト(読み取り専用)
+public abstract class MixerBase(IReadOnlyList channels)
{
///
- /// constructor コンストラクタ
- ///
- /// 音声チャンネルのリスト(読み取り専用)
- public MixerBase(IReadOnlyList channels)
- {
- Channels = channels;
- }
-
- ///
- /// チャンネルのリスト
+ /// List of channels.
チャンネルのリスト
///
- protected IReadOnlyList Channels { get; }
+ protected IReadOnlyList Channels { get; } = channels;
///
- /// 音のフォーマット
+ /// Sound format.
音のフォーマット
///
protected SoundFormat Format { get; }
///
- /// 各チャンネルの波形データで一番長い配列の長さを返すメソッド。
+ /// Method to return the length of the longest array in each channel's waveform data.
各チャンネルの波形データで一番長い配列の長さを返すメソッド。
///
- /// 最長の配列の長さ : int
+ /// Length of the longest array.
最長の配列の長さ : int
protected int GetMaxWaveLength()
{
var max = 0;
diff --git a/src/SoundMaker/Sounds/MonauralMixer.cs b/src/SoundMaker/Sounds/MonauralMixer.cs
index 528c9a2..a5f1081 100644
--- a/src/SoundMaker/Sounds/MonauralMixer.cs
+++ b/src/SoundMaker/Sounds/MonauralMixer.cs
@@ -1,25 +1,19 @@
using SoundMaker.Sounds.SoundChannels;
namespace SoundMaker.Sounds;
+
///
-/// mix waves to monaural wave. モノラル音声をミックスするクラス。
+/// Mix waves to monaural wave.
モノラル音声をミックスするクラス。
///
-public class MonauralMixer : MixerBase
+/// Channels.
チャンネルのリスト(読み取り専用)
+public class MonauralMixer(IReadOnlyList channels) : MixerBase(channels)
{
- ///
- /// constructor. コンストラクタ
- ///
- /// channels. チャンネルのリスト(読み取り専用)
- public MonauralMixer(IReadOnlyList channels) : base(channels)
- {
- }
-
private object LockObject { get; } = new object();
///
- /// mix ミックスする。
+ /// Mix.
ミックスする。
///
- /// the mixed wave of monaural. モノラルの波形データ : MonauralWave
+ /// The mixed wave of monaural.
モノラルの波形データ : MonauralWave
public MonauralWave Mix()
{
var result = Enumerable.Repeat((short)0, GetMaxWaveLength()).ToArray();
diff --git a/src/SoundMaker/Sounds/MonauralWave.cs b/src/SoundMaker/Sounds/MonauralWave.cs
index 06b1b51..73f5b75 100644
--- a/src/SoundMaker/Sounds/MonauralWave.cs
+++ b/src/SoundMaker/Sounds/MonauralWave.cs
@@ -1,13 +1,14 @@
namespace SoundMaker.Sounds;
+
///
-/// monaural wave. モノラル波形データを表すクラス。
+/// Monaural wave.
モノラル波形データを表すクラス。
///
public class MonauralWave : IWave
{
///
- /// constructor. コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// the collection of wave data. 波形データを表す配列
+ /// The collection of wave data.
波形データを表す配列
public MonauralWave(IReadOnlyCollection wave)
{
var argumentIntegers = wave.ToArray();
@@ -24,9 +25,9 @@ public MonauralWave(IReadOnlyCollection wave)
public int Volume { get; private set; } = 100;
///
- /// change volume this. 音量を変更するメソッド
+ /// Change volume.
音量を変更するメソッド
///
- /// 音量(0 ~ 100)
+ /// Volume (0 ~ 100).
音量(0 ~ 100)
public void ChangeVolume(int volume)
{
volume = volume < 0 ? 0 : volume;
@@ -39,9 +40,9 @@ public void ChangeVolume(int volume)
}
///
- /// append deferent MonauralWave. 別の波形データを末尾に繋げるメソッド。
+ /// Append different MonauralWave.
別の波形データを末尾に繋げるメソッド。
///
- /// monaural wave.モノラルの波形データ
+ /// Monaural wave.
モノラルの波形データ
public void Append(MonauralWave wave)
{
Wave = Wave.Concat(wave.GetWave()).ToArray();
@@ -74,9 +75,9 @@ public byte[] GetBytes(BitRateType bitRate)
}
///
- /// get the wave. 音の波形データを取得するメソッド。
+ /// Get the wave.
音の波形データを取得するメソッド。
///
- /// the wave. 波形データ : short[]
+ /// The wave.
波形データ : short[]
public short[] GetWave()
{
var result = new short[Wave.Length];
diff --git a/src/SoundMaker/Sounds/SamplingFrequencyType.cs b/src/SoundMaker/Sounds/SamplingFrequencyType.cs
index 2e816f6..8791315 100644
--- a/src/SoundMaker/Sounds/SamplingFrequencyType.cs
+++ b/src/SoundMaker/Sounds/SamplingFrequencyType.cs
@@ -1,6 +1,7 @@
namespace SoundMaker.Sounds;
///
-/// the type which is expressed sampling frequency of the sound. サンプリング周波数の種類を表す列挙型
+/// The type which is expressed sampling frequency of the sound.
+/// サンプリング周波数の種類を表す列挙型
///
public enum SamplingFrequencyType
{
diff --git a/src/SoundMaker/Sounds/Score/BasicSoundComponentBase.cs b/src/SoundMaker/Sounds/Score/BasicSoundComponentBase.cs
index 413db69..8bb7380 100644
--- a/src/SoundMaker/Sounds/Score/BasicSoundComponentBase.cs
+++ b/src/SoundMaker/Sounds/Score/BasicSoundComponentBase.cs
@@ -1,16 +1,17 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.Score;
+
///
-/// provides a base class for a basic sound component to inherit from. 音符・休符など音の基本部品を表す抽象基底クラス
+/// Provides a base class for a basic sound component to inherit from.
音符・休符など音の基本部品を表す抽象基底クラス
///
public abstract class BasicSoundComponentBase : ISoundComponent
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
- /// is note/rest dotted. 付点かを表す論理型
+ /// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+ /// Is note/rest dotted.
付点かを表す論理型
public BasicSoundComponentBase(LengthType length, bool isDotted)
{
Length = length;
@@ -18,12 +19,12 @@ public BasicSoundComponentBase(LengthType length, bool isDotted)
}
///
- /// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+ /// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
///
public LengthType Length { get; }
///
- /// note/rest is dotted. 付点かを表す論理型
+ /// Note/rest is dotted.
付点かを表す論理型
///
public bool IsDotted { get; }
diff --git a/src/SoundMaker/Sounds/Score/ISoundComponent.cs b/src/SoundMaker/Sounds/Score/ISoundComponent.cs
index da7962a..4f3ec92 100644
--- a/src/SoundMaker/Sounds/Score/ISoundComponent.cs
+++ b/src/SoundMaker/Sounds/Score/ISoundComponent.cs
@@ -3,48 +3,46 @@
namespace SoundMaker.Sounds.Score;
///
-/// interface for sound components. 音の部品を表すインターフェイス
+/// Interface for sound components.
音の部品を表すインターフェイス
///
public interface ISoundComponent
{
///
- /// return length of the sound array. 音の配列の長さを取得するメソッド。
+ /// Return length of the sound array.
音の配列の長さを取得するメソッド。
///
- /// format of the sound.音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// length of array. 配列の長さ : int
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Length of array.
配列の長さ : int
/// Tempo must be non-negative and greater than 0.
int GetWaveArrayLength(SoundFormat format, int tempo);
///
- /// generate the wave of wave type. 波形の種類に基づいて波形データの配列を生成するメソッド。
+ /// Generate the wave of wave type.
波形の種類に基づいて波形データの配列を生成するメソッド。
///
- /// format of the sound.音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// length of the array. 配列の長さ
- /// type of wave.波形の種類
- /// data of wave. 波形データ : short[]
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Length of the array.
配列の長さ
+ /// Type of wave.
波形の種類
+ /// Data of wave.
波形データ : short[]
/// Tempo must be non-negative and greater than 0.
/// Length must be non-negative.
short[] GenerateWave(SoundFormat format, int tempo, int length, WaveTypeBase waveType);
///
- /// generate the wave of wave type. 波形の種類に基づいて波形データの配列を生成するメソッド。
+ /// Generate the wave of wave type.
波形の種類に基づいて波形データの配列を生成するメソッド。
///
- /// format of the sound.音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// type of wave.波形の種類
- /// data of wave. 波形データ : short[]
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Type of wave.
波形の種類
+ /// Data of wave.
波形データ : short[]
/// Tempo must be non-negative and greater than 0.
short[] GenerateWave(SoundFormat format, int tempo, WaveTypeBase waveType);
///
- /// Creates a clone of the sound component.
- /// サウンドコンポーネントのクローンを作成するメソッド。
+ /// Creates a clone of the sound component.
サウンドコンポーネントのクローンを作成するメソッド。
///
///
- /// A new instance of the sound component with the same properties.
- /// 同じプロパティを持つサウンドコンポーネントの新しいインスタンス
+ /// A new instance of the sound component with the same properties.
同じプロパティを持つサウンドコンポーネントの新しいインスタンス
///
ISoundComponent Clone();
}
diff --git a/src/SoundMaker/Sounds/Score/LengthType.cs b/src/SoundMaker/Sounds/Score/LengthType.cs
index d34f34f..381e0a2 100644
--- a/src/SoundMaker/Sounds/Score/LengthType.cs
+++ b/src/SoundMaker/Sounds/Score/LengthType.cs
@@ -1,35 +1,42 @@
namespace SoundMaker.Sounds.Score;
+
///
-/// type of length.(ex. "quarter" note) 長さのタイプを列挙(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+/// Type of length. (ex. "quarter" note).
長さのタイプを列挙(音楽的な、「四分」音符、「全」休符のような長さを表す。)
///
public enum LengthType
{
///
- /// whole. 全音符・休符
+ /// Whole.
全音符・休符
///
Whole = 1,
+
///
- /// half. 二分音符・休符
+ /// Half.
二分音符・休符
///
Half = 2,
+
///
- /// quarter. 四分音符・休符
+ /// Quarter.
四分音符・休符
///
Quarter = 4,
+
///
- /// 8. 八分音符・休符
+ /// 8th.
八分音符・休符
///
Eighth = 8,
+
///
- /// 16. 十六分音符・休符
+ /// 16th.
十六分音符・休符
///
Sixteenth = 16,
+
///
- /// 32. 三十二分音符・休符
+ /// 32nd.
三十二分音符・休符
///
ThirtySecond = 32,
+
///
- /// 64. 六十四分音符・休符
+ /// 64th.
六十四分音符・休符
///
SixtyFourth = 64,
}
diff --git a/src/SoundMaker/Sounds/Score/Note.cs b/src/SoundMaker/Sounds/Score/Note.cs
index 175f064..41f819c 100644
--- a/src/SoundMaker/Sounds/Score/Note.cs
+++ b/src/SoundMaker/Sounds/Score/Note.cs
@@ -1,18 +1,19 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.Score;
+
///
-/// the note. 音符を表すクラス
+/// The note.
音符を表すクラス
///
public class Note : BasicSoundComponentBase
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// scale of the note.音の高さ
- /// sound height number. (C"4" is middle C.)音の高さの番号(Cの「4」が真ん中のド)
- /// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
- /// is note/rest dotted. 付点かを表す論理型
+ /// Scale of the note.
音の高さ
+ /// Sound height number. (C"4" is middle C.)
音の高さの番号(Cの「4」が真ん中のド)
+ /// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+ /// Is note/rest dotted.
付点かを表す論理型
/// Scale and scale number must be only the range of sound that the piano can produce.
public Note(Scale scale, int scaleNumber, LengthType length, bool isDotted = false)
: base(length, isDotted)
@@ -24,10 +25,10 @@ public Note(Scale scale, int scaleNumber, LengthType length, bool isDotted = fal
}
///
- /// easiness constructor(use case: construct Tie).Scale is "A4". 簡易コンストラクタ(使用場面: タイの初期化)。音の高さは"A4"
+ /// Easiness constructor (use case: construct Tie). Scale is "A4".
簡易コンストラクタ(使用場面: タイの初期化)。音の高さは"A4"
///
- /// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
- /// is note/rest dotted. 付点かを表す論理型
+ /// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+ /// Is note/rest dotted.
付点かを表す論理型
public Note(LengthType length, bool isDotted = false) : base(length, isDotted)
{
var scale = Scale.A;
@@ -38,23 +39,24 @@ public Note(LengthType length, bool isDotted = false) : base(length, isDotted)
}
///
- /// scale of the note. 音の高さ
+ /// Scale of the note.
音の高さ
///
public Scale Scale { get; }
///
- /// sound height number. (C"4" is middle C.)音の高さの番号(Cの「4」が真ん中のド)
+ /// Sound height number. (C"4" is middle C.)
音の高さの番号(Cの「4」が真ん中のド)
///
public int ScaleNumber { get; }
///
- /// hertz of the sound. 音の周波数
+ /// Hertz of the sound.
音の周波数
///
public double Hertz { get; } = 0d;
private int _volume = 100;
+
///
- /// volume of the sound.(0 ~ 100) 音の大きさ(0 ~ 100の間)
+ /// Volume of the sound. (0 ~ 100)
音の大きさ(0 ~ 100の間)
///
public int Volume
{
diff --git a/src/SoundMaker/Sounds/Score/Rest.cs b/src/SoundMaker/Sounds/Score/Rest.cs
index f989083..ff449f9 100644
--- a/src/SoundMaker/Sounds/Score/Rest.cs
+++ b/src/SoundMaker/Sounds/Score/Rest.cs
@@ -1,11 +1,12 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.Score;
+
///
-/// the rest. 休符を表すクラス
+/// The rest.
休符を表すクラス
///
-/// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
-/// is note/rest dotted. 付点かを表す論理型
+/// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+/// Is note/rest dotted.
付点かを表す論理型
public class Rest(LengthType length, bool isDotted = false) : BasicSoundComponentBase(length, isDotted)
{
public override Rest Clone()
@@ -24,11 +25,11 @@ public override short[] GenerateWave(SoundFormat format, int tempo, WaveTypeBase
}
///
- /// 長さの分休む(0埋めの配列を返す)
+ /// Rest for the duration (returns an array filled with zeroes).
長さの分休む(0埋めの配列を返す)
///
- /// format of the sound.音のフォーマット
- /// 一分間の休符の数
- /// 0埋めされた配列 : short[]
+ /// Format of the sound.
音のフォーマット
+ /// Number of rests per minute.
一分間の休符の数
+ /// Array filled with zeroes.
0埋めされた配列 : short[]
private short[] GetWave(SoundFormat format, int tempo)
{
var length = GetWaveArrayLength(format, tempo);
@@ -36,12 +37,12 @@ private short[] GetWave(SoundFormat format, int tempo)
}
///
- /// 長さ分休む(0埋めの配列を返す)
+ /// Rest for the duration (returns an array filled with zeroes).
長さ分休む(0埋めの配列を返す)
///
- /// format of the sound.音のフォーマット
- /// 一分間の休符の数
- /// length of the array. 配列の長さ
- /// 0埋めされた配列 : short[]
+ /// Format of the sound.
音のフォーマット
+ /// Number of rests per minute.
一分間の休符の数
+ /// Length of the array.
配列の長さ
+ /// Array filled with zeroes.
0埋めされた配列 : short[]
private short[] GetWave(SoundFormat format, int tempo, int length)
{
return Enumerable.Repeat(0, length).ToArray();
diff --git a/src/SoundMaker/Sounds/Score/Scale.cs b/src/SoundMaker/Sounds/Score/Scale.cs
index 4980995..cf4d277 100644
--- a/src/SoundMaker/Sounds/Score/Scale.cs
+++ b/src/SoundMaker/Sounds/Score/Scale.cs
@@ -1,6 +1,6 @@
namespace SoundMaker.Sounds.Score;
///
-/// type of pitch of sound. 音の高さを表す列挙型
+/// Type of pitch of sound.
音の高さを表す列挙型
///
public enum Scale
{
diff --git a/src/SoundMaker/Sounds/Score/Tie.cs b/src/SoundMaker/Sounds/Score/Tie.cs
index e4cb7ed..7705492 100644
--- a/src/SoundMaker/Sounds/Score/Tie.cs
+++ b/src/SoundMaker/Sounds/Score/Tie.cs
@@ -1,17 +1,18 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.Score;
+
///
-/// tie is joined two notes of same scale. タイ(同じ高さの音符同士を繋げて、あたかも一つの音符かのように扱う)を表すクラス
+/// Tie is joined two notes of same scale.
タイ(同じ高さの音符同士を繋げて、あたかも一つの音符かのように扱う)を表すクラス
///
public class Tie : ISoundComponent
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// the note of base. 基本となる音符。二つ目の音符の音の高さはこの音符と同じになる。
- /// length of the second note.(ex. "quarter" note) 二つ目の音符の長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
- /// the second note/rest is dotted. 二つ目の音符が付点かを表す論理型
+ /// The note of base.
基本となる音符。二つ目の音符の音の高さはこの音符と同じになる。
+ /// Length of the second note. (ex. "quarter" note).
二つ目の音符の長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+ /// The second note/rest is dotted.
二つ目の音符が付点かを表す論理型
public Tie(Note baseNote, LengthType additionalLength, bool additionalIsDotted = false)
{
BaseNote = baseNote;
@@ -22,10 +23,10 @@ public Tie(Note baseNote, LengthType additionalLength, bool additionalIsDotted =
}
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// the note of base. 基本となる音符。二つ目の音符の音の高さはこの音符と同じになる。
- /// notes of tie. 追加する音符
+ /// The note of base.
基本となる音符。二つ目の音符の音の高さはこの音符と同じになる。
+ /// Notes of tie.
追加する音符
public Tie(Note baseNote, IReadOnlyCollection additionalNotes)
{
BaseNote = baseNote;
@@ -33,17 +34,17 @@ public Tie(Note baseNote, IReadOnlyCollection additionalNotes)
}
///
- /// count of notes.
+ /// Count of notes.
///
public int Count => AdditionalNotes.Count + 1;
///
- /// the base note. 基本の音符
+ /// The base note.
基本の音符
///
public Note BaseNote { get; }
///
- /// the additional notes. 追加の音符のリスト
+ /// The additional notes.
追加の音符のリスト
///
public IReadOnlyCollection AdditionalNotes { get; }
@@ -69,12 +70,9 @@ public int GetWaveArrayLength(SoundFormat format, int tempo)
}
///
- /// Creates a clone of the tie.
- /// タイのクローンを作成するメソッド。
+ /// Creates a clone of the tie.
タイのクローンを作成するメソッド。
///
- /// A new instance of the tie with the same properties.
- /// 同じプロパティを持つタイの新しいインスタンス
- ///
+ /// A new instance of the tie with the same properties.
同じプロパティを持つタイの新しいインスタンス
public Tie Clone()
{
var newTie = new Tie(BaseNote.Clone(), AdditionalNotes.Select(note => note.Clone()).ToArray());
diff --git a/src/SoundMaker/Sounds/Score/Tuplet.cs b/src/SoundMaker/Sounds/Score/Tuplet.cs
index 2b96883..2c62fd5 100644
--- a/src/SoundMaker/Sounds/Score/Tuplet.cs
+++ b/src/SoundMaker/Sounds/Score/Tuplet.cs
@@ -1,17 +1,18 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.Score;
+
///
-/// tuplet. 連符を表すクラス
+/// Tuplet.
連符を表すクラス
///
public class Tuplet : ISoundComponent
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// components to be tuplet. 連符にする基本の音のリスト
- /// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
- /// tuplet is dotted. 付点かを表す論理型
+ /// Components to be tuplet.
連符にする基本の音のリスト
+ /// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
+ /// Tuplet is dotted.
付点かを表す論理型
public Tuplet(IReadOnlyList tupletComponents, LengthType length, bool isDotted = false)
{
TupletComponents = new List(tupletComponents);
@@ -20,32 +21,32 @@ public Tuplet(IReadOnlyList tupletComponents, LengthType length
}
///
- /// components to be tuplet. 連符にする基本の音のリスト
+ /// Components to be tuplet.
連符にする基本の音のリスト
///
internal IReadOnlyList TupletComponents { get; }
///
- /// get the component at index. index番目の連符の音を取得する。
+ /// Get the component at index.
index番目の連符の音を取得する。
///
- /// index. 何番目かを表す整数
- /// sound component.サウンドコンポーネント
- /// index is less than 0 or index is equal to or greater than Count.
+ /// Index.
何番目かを表す整数
+ /// Sound component.
サウンドコンポーネント
+ /// Index is less than 0 or index is equal to or greater than Count.
public ISoundComponent this[int index] => index < 0 || index >= TupletComponents.Count
- ? throw new IndexOutOfRangeException("index is less than 0 or index is equal to or greater than Count.")
+ ? throw new IndexOutOfRangeException("Index is less than 0 or index is equal to or greater than Count.")
: TupletComponents[index];
///
- /// length (ex. "quarter" note) 長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。
+ /// Length (ex. "quarter" note).
長さ(音楽的な、「四分」音符、「全」休符のような長さを表す。)
///
public LengthType Length { get; }
///
- /// note/rest is dotted. 付点かを表す論理型
+ /// Note/rest is dotted.
付点かを表す論理型
///
public bool IsDotted { get; }
///
- /// count of component in this. コンポーネントの個数
+ /// Count of components in this.
コンポーネントの個数
///
public int Count => TupletComponents.Count;
@@ -57,7 +58,7 @@ public int GetWaveArrayLength(SoundFormat format, int tempo)
public short[] GenerateWave(SoundFormat format, int tempo, int length, WaveTypeBase waveType)
{
var result = new List(length);
- // 一個あたりの配列の長さを算出
+ // Calculate the length of each component
var count = GetLengthPerOneComponent();
int i;
var componentLengthBase = length / count;
@@ -99,12 +100,9 @@ private int GetLengthPerOneComponent()
}
///
- /// Creates a clone of the tuplet.
- /// 連符のクローンを作成するメソッド。
+ /// Creates a clone of the tuplet.
連符のクローンを作成するメソッド。
///
- /// A new instance of the tuplet with the same properties.
- /// 同じプロパティを持つ連符の新しいインスタンス
- ///
+ /// A new instance of the tuplet with the same properties.
同じプロパティを持つ連符の新しいインスタンス
public Tuplet Clone()
{
var cloned = new Tuplet(TupletComponents.Select(component => component.Clone()).ToArray(), Length, IsDotted);
diff --git a/src/SoundMaker/Sounds/SoundChannels/ISoundChannel.cs b/src/SoundMaker/Sounds/SoundChannels/ISoundChannel.cs
index 5d1a85d..c65944c 100644
--- a/src/SoundMaker/Sounds/SoundChannels/ISoundChannel.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/ISoundChannel.cs
@@ -4,62 +4,62 @@ namespace SoundMaker.Sounds.SoundChannels;
public interface ISoundChannel : IEnumerable
{
///
- /// get sound component at index. index番目のサウンドコンポーネントを取得する
+ /// Get sound component at index.
index番目のサウンドコンポーネントを取得する
///
- /// 何番目かを表す整数
- /// sound component.サウンドコンポーネント
+ /// Index.
何番目かを表す整数
+ /// Sound component.
サウンドコンポーネント
ISoundComponent this[int index] { get; }
///
- /// the total number of sound components the internal data structure can hold without resizing. 内部リストがサイズを変えないで保持できるサウンドコンポーネントの個数
+ /// The total number of sound components the internal data structure can hold without resizing.
内部リストがサイズを変えないで保持できるサウンドコンポーネントの個数
///
public int Capacity { get; }
///
- /// count of sound components. サウンドコンポーネントの個数
+ /// Count of sound components.
サウンドコンポーネントの個数
///
public int ComponentCount { get; }
///
- /// length of wave data. 音の波形データを表す配列の長さ
+ /// Length of wave data.
音の波形データを表す配列の長さ
///
public int WaveArrayLength { get; }
///
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
///
public int Tempo { get; }
///
- /// format of the sound. 音のフォーマット
+ /// Format of the sound.
音のフォーマット
///
SoundFormat Format { get; }
///
- /// direction of hearing. ステレオサウンドの場合、左右どちらから音が出るか
+ /// Direction of hearing.
ステレオサウンドの場合、左右どちらから音が出るか
///
PanType PanType { get; }
///
- /// generate wave data. 音の波形データを生成するメソッド。
+ /// Generate wave data.
音の波形データを生成するメソッド。
///
- /// the array of wave data.音の波形データの配列 : short[]
+ /// The array of wave data.
音の波形データの配列 : short[]
short[] GenerateWave();
///
- /// add sound component to this. サウンドコンポーネントを追加するメソッド。
+ /// Add sound component to this.
サウンドコンポーネントを追加するメソッド。
///
- /// the sound component to be added to this. 追加するサウンドコンポーネント
+ /// The sound component to be added to this.
追加するサウンドコンポーネント
void Add(ISoundComponent component);
///
- /// remove the sound component at index. index番目のサウンドコンポーネントを削除するメソッド。
+ /// Remove the sound component at index.
index番目のサウンドコンポーネントを削除するメソッド。
///
- /// the index of the sound component to remove. 削除するサウンドコンポーネントのインデックス
+ /// The index of the sound component to remove.
削除するサウンドコンポーネントのインデックス
void RemoveAt(int index);
///
- /// clear sound components in this. チャンネル内のサウンドコンポーネントを空にするメソッド。
+ /// Clear sound components in this.
チャンネル内のサウンドコンポーネントを空にするメソッド。
///
void Clear();
}
diff --git a/src/SoundMaker/Sounds/SoundChannels/LowBitNoiseSoundChannel.cs b/src/SoundMaker/Sounds/SoundChannels/LowBitNoiseSoundChannel.cs
index 5952578..059ac40 100644
--- a/src/SoundMaker/Sounds/SoundChannels/LowBitNoiseSoundChannel.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/LowBitNoiseSoundChannel.cs
@@ -1,29 +1,31 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.SoundChannels;
+
///
-/// this generates low bit noise wave. ロービットノイズを生成するサウンドチャンネル
+/// This generates low bit noise wave.
ロービットノイズを生成するサウンドチャンネル
///
public class LowBitNoiseSoundChannel : SoundChannelBase
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format of the sound. 音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// sound direction. 左右どちらから音が出るか
- /// the total number of sound components the internal data structure can hold without resizing. 内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Sound direction.
左右どちらから音が出るか
+ /// The total number of sound components the internal data structure can hold without resizing.
内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
/// Tempo must be non-negative and greater than 0.
/// Capacity must be non-negative.
public LowBitNoiseSoundChannel(int tempo, SoundFormat format, PanType panType, int capacity) : base(tempo, format, panType, capacity)
{
}
+
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format of the sound. 音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// sound direction. 左右どちらから音が出るか
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Sound direction.
左右どちらから音が出るか
/// Tempo must be non-negative and greater than 0.
public LowBitNoiseSoundChannel(int tempo, SoundFormat format, PanType panType) : base(tempo, format, panType)
{
diff --git a/src/SoundMaker/Sounds/SoundChannels/PanType.cs b/src/SoundMaker/Sounds/SoundChannels/PanType.cs
index 1d8dae2..de2d2b7 100644
--- a/src/SoundMaker/Sounds/SoundChannels/PanType.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/PanType.cs
@@ -1,19 +1,19 @@
namespace SoundMaker.Sounds.SoundChannels;
///
-/// direction of hearing. 左右どちらから音が出るかを表す列挙型
+/// Direction of hearing.
左右どちらから音が出るかを表す列挙型
///
public enum PanType
{
///
- /// both. 左右両方
+ /// Both.
左右両方
///
Both,
///
- /// right. 右
+ /// Right.
右
///
Right,
///
- /// left. 左
+ /// Left.
左
///
Left
}
diff --git a/src/SoundMaker/Sounds/SoundChannels/PseudoTriangleSoundChannel.cs b/src/SoundMaker/Sounds/SoundChannels/PseudoTriangleSoundChannel.cs
index d42589b..b4c8dff 100644
--- a/src/SoundMaker/Sounds/SoundChannels/PseudoTriangleSoundChannel.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/PseudoTriangleSoundChannel.cs
@@ -4,23 +4,23 @@ namespace SoundMaker.Sounds.SoundChannels;
public class PseudoTriangleSoundChannel : SoundChannelBase
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format of the sound. 音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// sound direction. 左右どちらから音が出るか
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Sound direction.
左右どちらから音が出るか
/// Tempo must be non-negative and greater than 0.
public PseudoTriangleSoundChannel(int tempo, SoundFormat format, PanType panType) : base(tempo, format, panType)
{
}
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format of the sound. 音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// sound direction. 左右どちらから音が出るか
- /// the total number of sound components the internal data structure can hold without resizing. 内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Sound direction.
左右どちらから音が出るか
+ /// The total number of sound components the internal data structure can hold without resizing.
内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
/// Tempo must be non-negative and greater than 0.
/// Capacity must be non-negative.
public PseudoTriangleSoundChannel(int tempo, SoundFormat format, PanType panType, int capacity) : base(tempo, format, panType, capacity)
diff --git a/src/SoundMaker/Sounds/SoundChannels/SoundChannelBase.cs b/src/SoundMaker/Sounds/SoundChannels/SoundChannelBase.cs
index 78ad536..dad3f00 100644
--- a/src/SoundMaker/Sounds/SoundChannels/SoundChannelBase.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/SoundChannelBase.cs
@@ -1,21 +1,20 @@
-
-using SoundMaker.Sounds.Score;
+using SoundMaker.Sounds.Score;
using System.Collections;
namespace SoundMaker.Sounds.SoundChannels;
+
///
-/// sound channel base. サウンドチャンネルの抽象基底クラス。
+/// Sound channel base.
サウンドチャンネルの抽象基底クラス。
///
public abstract class SoundChannelBase : ISoundChannel
{
-
///
- /// constructor. コンストラクタ。
+ /// Constructor.
コンストラクタ。
///
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// format of the sound.音のフォーマット
- /// direction of hearing. 左右どちらから音が出るか
- /// the total number of sound components the internal data structure can hold without resizing. 内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Format of the sound.
音のフォーマット
+ /// Direction of hearing.
左右どちらから音が出るか
+ /// The total number of sound components the internal data structure can hold without resizing.
内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
/// Tempo must be non-negative and greater than 0.
/// Capacity must be non-negative.
public SoundChannelBase(int tempo, SoundFormat format, PanType panType, int capacity)
@@ -35,11 +34,11 @@ public SoundChannelBase(int tempo, SoundFormat format, PanType panType, int capa
}
///
- /// constructor. コンストラクタ。
+ /// Constructor.
コンストラクタ。
///
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// format of the sound.音のフォーマット
- /// pan of the sound. 左右どちらから音が出るか
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Format of the sound.
音のフォーマット
+ /// Pan of the sound.
左右どちらから音が出るか
/// Tempo must be non-negative and greater than 0.
public SoundChannelBase(int tempo, SoundFormat format, PanType panType)
{
@@ -53,7 +52,7 @@ public SoundChannelBase(int tempo, SoundFormat format, PanType panType)
}
///
- /// サウンドコンポーネントのリスト
+ /// List of sound components.
サウンドコンポーネントのリスト
///
protected List SoundComponents { get; private set; } = [];
@@ -70,13 +69,13 @@ public SoundChannelBase(int tempo, SoundFormat format, PanType panType)
public int WaveArrayLength { get; private set; }
///
- /// get sound component at index. index番目のサウンドコンポーネントを取得する
+ /// Get sound component at index.
index番目のサウンドコンポーネントを取得する
///
- /// index. 何番目かを表す整数
- /// sound component.サウンドコンポーネント
- /// index is less than 0 or index is equal to or greater than ComponentCount.
+ /// Index.
何番目かを表す整数
+ /// Sound component.
サウンドコンポーネント
+ /// Index is less than 0 or index is equal to or greater than ComponentCount.
public ISoundComponent this[int index] => index < 0 || index >= SoundComponents.Count
- ? throw new IndexOutOfRangeException("index is less than 0 or index is equal to or greater than ComponentCount.")
+ ? throw new IndexOutOfRangeException("Index is less than 0 or index is equal to or greater than ComponentCount.")
: SoundComponents[index];
public void Add(ISoundComponent component)
@@ -92,15 +91,15 @@ public void Clear()
}
///
- /// remove the sound component at index. index番目のサウンドコンポーネントを削除するメソッド。
+ /// Remove the sound component at index.
index番目のサウンドコンポーネントを削除するメソッド。
///
- /// the index of the sound component to remove. 削除するサウンドコンポーネントのインデックス
- /// index is less than 0 or index is equal to or greater than ComponentCount.
+ /// The index of the sound component to remove.
削除するサウンドコンポーネントのインデックス
+ /// Index is less than 0 or index is equal to or greater than ComponentCount.
public void RemoveAt(int index)
{
if (SoundComponents.Count <= index || index < 0)
{
- throw new ArgumentOutOfRangeException(nameof(index), "index is less than 0 or index is equal to or greater than ComponentCount.");
+ throw new ArgumentOutOfRangeException(nameof(index), "Index is less than 0 or index is equal to or greater than ComponentCount.");
}
var component = SoundComponents[index];
WaveArrayLength -= component.GetWaveArrayLength(Format, Tempo);
@@ -108,9 +107,9 @@ public void RemoveAt(int index)
}
///
- /// Import sound components. サウンドコンポーネントをインポートする。
+ /// Import sound components.
サウンドコンポーネントをインポートする。
///
- /// Sound components. サウンドコンポーネント
+ /// Sound components.
サウンドコンポーネント
public void Import(IEnumerable components)
{
SoundComponents = new List(components);
diff --git a/src/SoundMaker/Sounds/SoundChannels/SquareSoundChannel.cs b/src/SoundMaker/Sounds/SoundChannels/SquareSoundChannel.cs
index ee185a3..d7033e8 100644
--- a/src/SoundMaker/Sounds/SoundChannels/SquareSoundChannel.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/SquareSoundChannel.cs
@@ -1,18 +1,19 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.SoundChannels;
+
///
-/// this generates square wave. 矩形波を生成するサウンドチャンネル
+/// This generates square wave.
矩形波を生成するサウンドチャンネル
///
public class SquareSoundChannel : SoundChannelBase
{
///
- /// コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// format of the sound.音のフォーマット
- /// duty cycle. デューティ比
- /// pan of the sound. 左右どちらから音が出るか
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Format of the sound.
音のフォーマット
+ /// Duty cycle.
デューティ比
+ /// Pan of the sound.
左右どちらから音が出るか
/// Tempo must be non-negative and greater than 0.
public SquareSoundChannel(int tempo, SoundFormat format, SquareWaveRatio ratio, PanType panType) : base(tempo, format, panType)
{
@@ -20,13 +21,13 @@ public SquareSoundChannel(int tempo, SoundFormat format, SquareWaveRatio ratio,
}
///
- /// コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// format of the sound.音のフォーマット
- /// duty cycle. デューティ比
- /// pan of the sound. 左右どちらから音が出るか
- /// the total number of sound components the internal data structure can hold without resizing. 内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Format of the sound.
音のフォーマット
+ /// Duty cycle.
デューティ比
+ /// Pan of the sound.
左右どちらから音が出るか
+ /// The total number of sound components the internal data structure can hold without resizing.
内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
/// Tempo must be non-negative and greater than 0.
/// Capacity must be non-negative.
public SquareSoundChannel(int tempo, SoundFormat format, SquareWaveRatio ratio, PanType panType, int capacity)
@@ -36,7 +37,7 @@ public SquareSoundChannel(int tempo, SoundFormat format, SquareWaveRatio ratio,
}
///
- /// デューティ比
+ /// Duty cycle.
デューティ比
///
private SquareWaveRatio Ratio { get; }
diff --git a/src/SoundMaker/Sounds/SoundChannels/SquareWaveRatio.cs b/src/SoundMaker/Sounds/SoundChannels/SquareWaveRatio.cs
index 2b25114..cdc83d5 100644
--- a/src/SoundMaker/Sounds/SoundChannels/SquareWaveRatio.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/SquareWaveRatio.cs
@@ -1,6 +1,6 @@
namespace SoundMaker.Sounds.SoundChannels;
///
-/// type of duty cycle. デューティ比の列挙型
+/// Type of duty cycle.
デューティ比の列挙型
///
public enum SquareWaveRatio
{
diff --git a/src/SoundMaker/Sounds/SoundChannels/TriangleSoundChannel.cs b/src/SoundMaker/Sounds/SoundChannels/TriangleSoundChannel.cs
index 44a07c0..18df760 100644
--- a/src/SoundMaker/Sounds/SoundChannels/TriangleSoundChannel.cs
+++ b/src/SoundMaker/Sounds/SoundChannels/TriangleSoundChannel.cs
@@ -1,28 +1,29 @@
using SoundMaker.Sounds.WaveTypes;
namespace SoundMaker.Sounds.SoundChannels;
+
///
-/// this generates triangle wave. 三角波を生成するチャンネル。
+/// This generates triangle wave.
三角波を生成するチャンネル。
///
public class TriangleSoundChannel : SoundChannelBase
{
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format of the sound. 音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// sound direction. 左右どちらから音が出るか
- /// the total number of sound components the internal data structure can hold without resizing. 内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Sound direction.
左右どちらから音が出るか
+ /// The total number of sound components the internal data structure can hold without resizing.
内部データ構造がリサイズされずに保持できるサウンドコンポーネントの総数。
/// Tempo must be non-negative and greater than 0.
/// Capacity must be non-negative.
public TriangleSoundChannel(int tempo, SoundFormat format, PanType panType, int capacity) : base(tempo, format, panType, capacity) { }
///
- /// constructor コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format of the sound. 音のフォーマット
- /// quarter note/rest per minute. 一分間の四分音符・休符の数
- /// sound direction. 左右どちらから音が出るか
+ /// Format of the sound.
音のフォーマット
+ /// Quarter note/rest per minute.
一分間の四分音符・休符の数
+ /// Sound direction.
左右どちらから音が出るか
/// Tempo must be non-negative and greater than 0.
public TriangleSoundChannel(int tempo, SoundFormat format, PanType panType) : base(tempo, format, panType) { }
diff --git a/src/SoundMaker/Sounds/SoundDirectionType.cs b/src/SoundMaker/Sounds/SoundDirectionType.cs
index 1d770d5..2409f28 100644
--- a/src/SoundMaker/Sounds/SoundDirectionType.cs
+++ b/src/SoundMaker/Sounds/SoundDirectionType.cs
@@ -1,19 +1,20 @@
namespace SoundMaker.Sounds;
///
-/// the type which is expressed direction of the sound. ステレオ音声で音が聞こえる方向の種類を表す列挙型
+/// The type which is expressed direction of the sound.
+/// ステレオ音声で音が聞こえる方向の種類を表す列挙型
///
public enum SoundDirectionType
{
///
- /// both. 左右両方
+ /// Both.
左右両方
///
Both,
///
- /// right. 右
+ /// Right.
右
///
Right,
///
- /// left. 左
+ /// Left.
左
///
Left,
}
diff --git a/src/SoundMaker/Sounds/SoundFormat.cs b/src/SoundMaker/Sounds/SoundFormat.cs
index a5a8600..fd335fa 100644
--- a/src/SoundMaker/Sounds/SoundFormat.cs
+++ b/src/SoundMaker/Sounds/SoundFormat.cs
@@ -1,15 +1,16 @@
namespace SoundMaker.Sounds;
+
///
-/// format of the sound. 音のフォーマットを表す構造体
+/// Format of the sound.
音のフォーマットを表す構造体
///
public readonly struct SoundFormat
{
///
- /// constructor. コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// sampling frequency. サンプリング周波数
- /// bit rate.量子化ビット数
- /// type of channels count. チャンネル数
+ /// Sampling frequency.
サンプリング周波数
+ /// Bit rate.
量子化ビット数
+ /// Type of channels count.
チャンネル数
public SoundFormat(SamplingFrequencyType samplingFrequency, BitRateType bitRate, ChannelType channel)
{
Channel = channel;
@@ -18,17 +19,17 @@ public SoundFormat(SamplingFrequencyType samplingFrequency, BitRateType bitRate,
}
///
- /// type of channels count. チャンネル数
+ /// Type of channels count.
チャンネル数
///
public ChannelType Channel { get; }
///
- /// sampling frequency. サンプリング周波数
+ /// Sampling frequency.
サンプリング周波数
///
public SamplingFrequencyType SamplingFrequency { get; }
///
- /// bit rate. 量子化ビット数
+ /// Bit rate.
量子化ビット数
///
public BitRateType BitRate { get; }
}
diff --git a/src/SoundMaker/Sounds/StereoMixer.cs b/src/SoundMaker/Sounds/StereoMixer.cs
index 5603b53..ce32e3e 100644
--- a/src/SoundMaker/Sounds/StereoMixer.cs
+++ b/src/SoundMaker/Sounds/StereoMixer.cs
@@ -1,27 +1,21 @@
using SoundMaker.Sounds.SoundChannels;
namespace SoundMaker.Sounds;
+
///
-/// mix waves to stereo wave. ステレオ音声をミックスするクラス。
+/// Mix waves to stereo wave.
ステレオ音声をミックスするクラス。
///
-public class StereoMixer : MixerBase
+/// Channels.
チャンネルのリスト
+public class StereoMixer(IReadOnlyList channels) : MixerBase(channels)
{
- ///
- /// constructor. コンストラクタ
- ///
- /// channels. チャンネルのリスト
- public StereoMixer(IReadOnlyList channels) : base(channels)
- {
- }
-
private object LockLeftObject { get; } = new object();
private object LockRightObject { get; } = new object();
///
- /// mix. ミックスするメソッド。
+ /// Mix.
ミックスするメソッド。
///
- /// ステレオ波形データ
+ /// Stereo wave data.
ステレオ波形データ
public StereoWave Mix()
{
var max = GetMaxWaveLength();
@@ -34,6 +28,7 @@ public StereoWave Mix()
});
return new StereoWave(rightResult, leftResult);
}
+
private void Merge(short[] left, short[] right, ISoundChannel channel, ChannelCount channelCount)
{
var waveNumericData = channel.GenerateWave();
@@ -57,7 +52,7 @@ private void Merge(short[] left, short[] right, ISoundChannel channel, ChannelCo
}
}
}
- // 両方のチャンネルから音が出る場合
+ // If sound is coming from both channels
else
{
lock (LockLeftObject)
@@ -73,17 +68,18 @@ private void Merge(short[] left, short[] right, ISoundChannel channel, ChannelCo
}
}
}
+
///
- /// 左右それぞれのチャンネルの個数を数えるメソッド。
+ /// Method to count the number of channels for left and right.
左右それぞれのチャンネルの個数を数えるメソッド。
///
- /// 左右それぞれのチャンネルの個数
+ /// Number of channels for left and right.
左右それぞれのチャンネルの個数
private ChannelCount GetChannelCount()
{
var right = 0;
var left = 0;
foreach (var channel in Channels)
{
- // 両方の場合は両方インクリメントする。
+ // Increment both if both channels are used.
if (channel.PanType is PanType.Left || channel.PanType is PanType.Both)
{
left++;
@@ -96,16 +92,10 @@ private ChannelCount GetChannelCount()
return new ChannelCount(left, right);
}
- private readonly struct ChannelCount
+ private readonly struct ChannelCount(int left, int right)
{
- public ChannelCount(int left, int right)
- {
- Left = left;
- Right = right;
- }
-
- public int Right { get; }
+ public int Right { get; } = right;
- public int Left { get; }
+ public int Left { get; } = left;
}
}
diff --git a/src/SoundMaker/Sounds/StereoWave.cs b/src/SoundMaker/Sounds/StereoWave.cs
index a47a944..aec8806 100644
--- a/src/SoundMaker/Sounds/StereoWave.cs
+++ b/src/SoundMaker/Sounds/StereoWave.cs
@@ -1,14 +1,14 @@
namespace SoundMaker.Sounds;
///
-/// stereo wave. ステレオ波形データのクラス
+/// Stereo wave.
ステレオ波形データのクラス
///
public class StereoWave : IWave
{
///
- /// constructor
+ /// Constructor.
コンストラクタ
///
- /// the wave of right. 右の波形データ
- /// the wave of left. 左の波形データ
+ /// The wave of right.
右の波形データ
+ /// The wave of left.
左の波形データ
public StereoWave(IReadOnlyCollection rightWave, IReadOnlyCollection leftWave)
{
var rightArgument = rightWave.ToArray();
@@ -38,10 +38,10 @@ public StereoWave(IReadOnlyCollection rightWave, IReadOnlyCollection
- /// change the volume this. 音量を変更するメソッド。
+ /// Change the volume.
音量を変更するメソッド。
///
- /// volume(0 ~ 100) 音量(0 ~ 100)
- /// Channel to change the sound. 左右・両方の中から音量を変更するものを選ぶ
+ /// Volume (0 ~ 100).
音量(0 ~ 100)
+ /// Channel to change the sound.
左右・両方の中から音量を変更するものを選ぶ
public void ChangeVolume(int volume, SoundDirectionType channelType)
{
volume = volume < 0 ? 0 : volume;
@@ -70,7 +70,7 @@ public void ChangeVolume(int volume, SoundDirectionType channelType)
LeftWave[i] = (short)(LeftOriginalVolumeWave[i] * (volume / 100d));
}
- // 残りを処理する。
+ // Process the remaining data.
var wave = RightWave.Length == maxAndMinLength.Max ? RightWave : LeftWave;
var originalWave = RightWave.Length == maxAndMinLength.Max ?
RightOriginalVolumeWave : LeftOriginalVolumeWave;
@@ -85,10 +85,10 @@ public void ChangeVolume(int volume, SoundDirectionType channelType)
}
///
- /// get byte array of the wave. 波形データのバイト列を取得するメソッド。
+ /// Get byte array of the wave.
波形データのバイト列を取得するメソッド。
///
- /// bitrate of the sound. 量子化ビット数
- /// byte array of wave data. 波形データのバイト列 : byte[]
+ /// Bitrate of the sound.
量子化ビット数
+ /// Byte array of wave data.
波形データのバイト列 : byte[]
public byte[] GetBytes(BitRateType bitRate)
{
return bitRate == BitRateType.SixteenBit ? Get16BitBytes().ToArray() : Get8BitBytes().ToArray();
@@ -177,9 +177,9 @@ private List Get16BitBytes()
}
///
- /// get the wave on the right. 右側のチャンネルの音の波形データを取得するメソッド。
+ /// Get the wave on the right.
右側のチャンネルの音の波形データを取得するメソッド。
///
- /// the wave on the right. 右側のチャンネルの音の波形データ : short[]
+ /// The wave on the right.
右側のチャンネルの音の波形データ : short[]
public short[] GetRightWave()
{
var resultshorts = new short[RightWave.Length];
@@ -188,9 +188,9 @@ public short[] GetRightWave()
}
///
- /// get the wave on the left. 左側のチャンネルの音の波形データを取得するメソッド。
+ /// Get the wave on the left.
左側のチャンネルの音の波形データを取得するメソッド。
///
- /// the wave on the left. 左側のチャンネルの音の波形データ : short[]
+ /// The wave on the left.
左側のチャンネルの音の波形データ : short[]
public short[] GetLeftWave()
{
var resultshorts = new short[LeftWave.Length];
@@ -199,9 +199,9 @@ public short[] GetLeftWave()
}
///
- /// append wave to this. 別のステレオ波形を末尾に繋げるメソッド。
+ /// Append wave to this.
別のステレオ波形を末尾に繋げるメソッド。
///
- /// wave
+ /// Wave.
波形
public void Append(StereoWave wave)
{
RightWave = RightWave.Concat(wave.GetRightWave()).ToArray();
diff --git a/src/SoundMaker/Sounds/WaveTypes/LowBitNoiseWave.cs b/src/SoundMaker/Sounds/WaveTypes/LowBitNoiseWave.cs
index ebe8e75..925ad15 100644
--- a/src/SoundMaker/Sounds/WaveTypes/LowBitNoiseWave.cs
+++ b/src/SoundMaker/Sounds/WaveTypes/LowBitNoiseWave.cs
@@ -1,6 +1,7 @@
namespace SoundMaker.Sounds.WaveTypes;
+
///
-/// the low bit noise. ロービットノイズ
+/// The low bit noise.
ロービットノイズ
///
public class LowBitNoiseWave : WaveTypeBase
{
diff --git a/src/SoundMaker/Sounds/WaveTypes/PseudoTriangleWave.cs b/src/SoundMaker/Sounds/WaveTypes/PseudoTriangleWave.cs
index 59477c8..0b248c6 100644
--- a/src/SoundMaker/Sounds/WaveTypes/PseudoTriangleWave.cs
+++ b/src/SoundMaker/Sounds/WaveTypes/PseudoTriangleWave.cs
@@ -1,24 +1,27 @@
namespace SoundMaker.Sounds.WaveTypes;
+
///
-/// the pseudo triangle wave. 疑似三角波
+/// The pseudo triangle wave.
疑似三角波
///
public class PseudoTriangleWave : WaveTypeBase
{
- private static readonly short[] _leftHeights = new short[]
- {
+ private static readonly short[] _leftHeights =
+ [
0, -4096, -8192, -12288, -16384, -20480, -24576, -28672, -28672, -24576, -20480, -16384, -12288, -8192, -4096, 0,
- };
- private static readonly short[] _rightHeights = new short[]
- {
+ ];
+ private static readonly short[] _rightHeights =
+ [
4095, 8191, 12287, 16383, 20479, 24575, 28671, short.MaxValue, short.MaxValue, 28671, 24575, 20479, 16383, 12287, 8191, 4095
- };
+ ];
public override short[] GenerateWave(SoundFormat format, int length, int volume, double hertz)
{
CheckGenerateWaveArgs(length, volume, hertz);
+ // Number of repetitions to create △ waveform
// △の波形を作るための繰り返し回数
var triangleWidth = (int)((int)format.SamplingFrequency / hertz);
+ // Generate a normal triangle wave if pseudo triangle wave cannot be generated.
// 疑似三角波に出来ない場合は普通の三角波を生成する。
if (triangleWidth <= 64)
{
@@ -44,13 +47,12 @@ internal override WaveTypeBase Clone()
}
///
- /// Generates one cycle of a sound waveform at the specified frequency.
- /// 指定した周波数の音声波形1周期分を生成する。
+ /// Generates one cycle of a sound waveform at the specified frequency.
指定した周波数の音声波形1周期分を生成する。
///
/// Format of the sound.
音のフォーマット
- /// Volume
音量(0 ~ 100)
+ /// Volume.
音量(0 ~ 100)
/// Hertz of the sound.
音の周波数
- /// The array of wave data.
+ /// The array of wave data.
波形データの配列 : short[]
/// Hertz must be non-negative and greater than 0.
/// Volume must be below 100 and above 0.
public short[] GenerateUnitWave(SoundFormat format, int volume, double hertz)
@@ -65,10 +67,13 @@ private static short[] GenerateUnitWaveInternal(SoundFormat format, int volume,
var result = new short[repeatNumber];
var steps = 32;
+ // Volume magnification (1.00 ~ 0.00)
// 音量の倍率(1.00 ~ 0.00)
var volumeMagnification = volume / 100d;
+ // Width of stairs
// 階段の幅
var stairsWidth = repeatNumber / steps;
+ // Remainder of width
// 幅の余り
var r = repeatNumber % steps;
diff --git a/src/SoundMaker/Sounds/WaveTypes/SquareWave.cs b/src/SoundMaker/Sounds/WaveTypes/SquareWave.cs
index 6c2dc0d..2e64942 100644
--- a/src/SoundMaker/Sounds/WaveTypes/SquareWave.cs
+++ b/src/SoundMaker/Sounds/WaveTypes/SquareWave.cs
@@ -1,15 +1,16 @@
using SoundMaker.Sounds.SoundChannels;
namespace SoundMaker.Sounds.WaveTypes;
+
///
-/// the square wave. 矩形波
+/// The square wave.
矩形波
///
public class SquareWave : WaveTypeBase
{
///
- /// constructor. コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// duty cycle. デューティ比
+ /// Duty cycle.
デューティ比
public SquareWave(SquareWaveRatio squareWaveRatio)
{
SquareWaveRatio = squareWaveRatio;
@@ -18,7 +19,7 @@ public SquareWave(SquareWaveRatio squareWaveRatio)
private SquareWaveRatio SquareWaveRatio { get; }
///
- /// デューティ比を基に繰り返し回数を求める為の値
+ /// Values to determine the number of repetitions based on duty cycle.
デューティ比を基に繰り返し回数を求める為の値
///
private static List<(double, double)> Ratio { get; } =
[
@@ -48,13 +49,12 @@ internal override WaveTypeBase Clone()
}
///
- /// Generates one cycle of a sound waveform at the specified frequency.
- /// 指定した周波数の音声波形1周期分を生成する。
+ /// Generates one cycle of a sound waveform at the specified frequency.
指定した周波数の音声波形1周期分を生成する。
///
/// Format of the sound.
音のフォーマット
- /// Volume
音量(0 ~ 100)
+ /// Volume.
音量(0 ~ 100)
/// Hertz of the sound.
音の周波数
- /// The array of wave data.
+ /// The array of wave data.
波形データの配列 : short[]
/// Hertz must be non-negative and greater than 0.
/// Volume must be below 100 and above 0.
public short[] GenerateUnitWave(SoundFormat format, int volume, double hertz)
@@ -68,8 +68,10 @@ private static short[] GenerateUnitWaveInternal(SoundFormat format, int volume,
var ratioIndex = (int)squareWaveRatio;
var allRepeatTimes = (int)((int)format.SamplingFrequency / hertz);
var firstRepeatTimes = (int)(allRepeatTimes * Ratio[ratioIndex].Item1);
+ // A list is faster than an array for some reason
// なぜか配列よりリストの方が早い
var result = new List(allRepeatTimes);
+ // Volume magnification (1.00 ~ 0.00)
// 音量の倍率(1.00 ~ 0.00)
var volumeMagnification = volume / 100d;
diff --git a/src/SoundMaker/Sounds/WaveTypes/TriangleWave.cs b/src/SoundMaker/Sounds/WaveTypes/TriangleWave.cs
index 423e011..e061605 100644
--- a/src/SoundMaker/Sounds/WaveTypes/TriangleWave.cs
+++ b/src/SoundMaker/Sounds/WaveTypes/TriangleWave.cs
@@ -1,6 +1,6 @@
namespace SoundMaker.Sounds.WaveTypes;
///
-/// the triangle wave. 三角波
+/// The triangle wave.
三角波
///
public class TriangleWave : WaveTypeBase
{
diff --git a/src/SoundMaker/Sounds/WaveTypes/WaveTypeBase.cs b/src/SoundMaker/Sounds/WaveTypes/WaveTypeBase.cs
index 0ce732f..70a721f 100644
--- a/src/SoundMaker/Sounds/WaveTypes/WaveTypeBase.cs
+++ b/src/SoundMaker/Sounds/WaveTypes/WaveTypeBase.cs
@@ -5,7 +5,7 @@
public abstract class WaveTypeBase
{
///
- /// generate array of wave data. 波形データの配列を生成する。
+ /// Generate array of wave data.
波形データの配列を生成する。
///
/// format of the sound. 音のフォーマット
/// length of the array. 配列の長さ
diff --git a/src/SoundMaker/WaveFile/BitRateType.cs b/src/SoundMaker/WaveFile/BitRateType.cs
index dac1a2b..6935641 100644
--- a/src/SoundMaker/WaveFile/BitRateType.cs
+++ b/src/SoundMaker/WaveFile/BitRateType.cs
@@ -1,15 +1,15 @@
namespace SoundMaker.WaveFile;
///
-/// the type which is expressed quantization bit rate of the sound. 量子化ビット数の種類を表す列挙型
+/// The type which is expressed quantization bit rate of the sound.
量子化ビット数の種類を表す列挙型
///
public enum BitRateType : ushort
{
///
- /// 16bit. 16ビット
+ /// 16bit.
16ビット
///
SixteenBit = 0x0010,
///
- /// 8bit. 8ビット
+ /// 8bit.
8ビット
///
EightBit = 0x0008
}
diff --git a/src/SoundMaker/WaveFile/ChannelType.cs b/src/SoundMaker/WaveFile/ChannelType.cs
index 6e8204f..a4bda03 100644
--- a/src/SoundMaker/WaveFile/ChannelType.cs
+++ b/src/SoundMaker/WaveFile/ChannelType.cs
@@ -1,15 +1,15 @@
namespace SoundMaker.WaveFile;
///
-/// the type which is expressed channels count of the sound. チャンネル数の種類を表す列挙型
+/// The type which is expressed channels count of the sound.
チャンネル数の種類を表す列挙型
///
public enum ChannelType : ushort
{
///
- /// monaural(1ch) モノラル1ch
+ /// monaural(1ch)
モノラル1ch
///
Monaural = 0x0001,
///
- /// stereo(2ch) ステレオ2ch
+ /// stereo(2ch)
ステレオ2ch
///
Stereo = 0x0002
}
\ No newline at end of file
diff --git a/src/SoundMaker/WaveFile/FormatChunk.cs b/src/SoundMaker/WaveFile/FormatChunk.cs
index 58c7b2c..508e209 100644
--- a/src/SoundMaker/WaveFile/FormatChunk.cs
+++ b/src/SoundMaker/WaveFile/FormatChunk.cs
@@ -1,15 +1,16 @@
namespace SoundMaker.WaveFile;
+
///
-/// Chunk of format for the .wav file. フォーマットチャンクを表す構造体
+/// Chunk of format for the .wav file.
フォーマットチャンクを表す構造体
///
public readonly struct FormatChunk : IChunk
{
///
- /// constructor. コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// sampling frequency. サンプリング周波数
- /// bit rate. 量子化ビット数
- /// type of channels count. チャンネル数
+ /// Sampling frequency.
サンプリング周波数
+ /// Bit rate.
量子化ビット数
+ /// Type of channels count.
チャンネル数
public FormatChunk(SamplingFrequencyType samplingFrequency, BitRateType bitRate, ChannelType channel)
{
Channel = (ushort)channel;
@@ -19,6 +20,7 @@ public FormatChunk(SamplingFrequencyType samplingFrequency, BitRateType bitRate,
ByteSizePerSecond = BlockSize * SamplingFrequency;
}
+ // Chunk size is 16 bytes
// チャンクサイズは16byte
private uint ChankSize { get; } = 0x00000010;
@@ -27,7 +29,7 @@ public FormatChunk(SamplingFrequencyType samplingFrequency, BitRateType bitRate,
private ushort Channel { get; }
///
- /// sampling frequency. サンプリング周波数
+ /// Sampling frequency.
サンプリング周波数
///
public uint SamplingFrequency { get; }
@@ -36,14 +38,14 @@ public FormatChunk(SamplingFrequencyType samplingFrequency, BitRateType bitRate,
private ushort BlockSize { get; }
///
- /// bit rate. 量子化ビット数
+ /// Bit rate.
量子化ビット数
///
public ushort BitRate { get; }
///
- /// get array of this chunk. フォーマットチャンクのバイト列を取得するメソッド。
+ /// Get array of this chunk.
フォーマットチャンクのバイト列を取得するメソッド。
///
- /// bytes of this chunk. フォーマットチャンクのバイト列 : byte[]
+ /// Bytes of this chunk.
フォーマットチャンクのバイト列 : byte[]
public byte[] GetBytes()
{
var result = BitConverter.GetBytes(0x20746D66);
diff --git a/src/SoundMaker/WaveFile/IChunk.cs b/src/SoundMaker/WaveFile/IChunk.cs
index 21d465f..e361b5c 100644
--- a/src/SoundMaker/WaveFile/IChunk.cs
+++ b/src/SoundMaker/WaveFile/IChunk.cs
@@ -1,13 +1,13 @@
namespace SoundMaker.WaveFile;
///
-/// interface for riff format chunks チャンクを表すインターフェイス
+/// Interface for riff format chunks.
チャンクを表すインターフェイス
///
public interface IChunk
{
///
- /// get bytes from the chunk. チャンクのバイト列を取得するメソッド。
+ /// Get bytes from the chunk.
チャンクのバイト列を取得するメソッド。
///
- /// byte array of the chunk.チャンクのバイト列 : byte[]
+ /// Byte array of the chunk.
チャンクのバイト列 : byte[]
byte[] GetBytes();
}
diff --git a/src/SoundMaker/WaveFile/RIFFChunk.cs b/src/SoundMaker/WaveFile/RIFFChunk.cs
index c5fe5fe..d2d717a 100644
--- a/src/SoundMaker/WaveFile/RIFFChunk.cs
+++ b/src/SoundMaker/WaveFile/RIFFChunk.cs
@@ -1,19 +1,11 @@
namespace SoundMaker.WaveFile;
///
-/// chunk of riff. RIFFチャンクを表す構造体
+/// Chunk of riff.
RIFFチャンクを表す構造体
///
-public readonly struct RIFFChunk : IChunk
+/// The number of 8 byte subtracted from the overall file size.
ファイル全体サイズからRIFFとWAVEのバイト数(8B)を引いた数。
+public readonly struct RIFFChunk(uint Size) : IChunk
{
- ///
- /// constructor. コンストラクタ
- ///
- /// the number of 8 byte subtracted from the overall file size. ファイル全体サイズからRIFFとWAVEのバイト数(8B)を引いた数。
- public RIFFChunk(uint Size)
- {
- this.Size = Size;
- }
-
- private uint Size { get; }
+ private uint Size { get; } = Size;
// 0x45564157 は WAVEの意味
private uint Format { get; } = 0x45564157;
public byte[] GetBytes()
diff --git a/src/SoundMaker/WaveFile/SamplingFrequencyType.cs b/src/SoundMaker/WaveFile/SamplingFrequencyType.cs
index a16ae6f..2cab0b2 100644
--- a/src/SoundMaker/WaveFile/SamplingFrequencyType.cs
+++ b/src/SoundMaker/WaveFile/SamplingFrequencyType.cs
@@ -1,6 +1,6 @@
namespace SoundMaker.WaveFile;
///
-/// the type which is expressed sampling frequency of the sound. サンプリング周波数の種類を表す列挙型
+/// The type which is expressed sampling frequency of the sound.
サンプリング周波数の種類を表す列挙型
///
public enum SamplingFrequencyType : uint
{
diff --git a/src/SoundMaker/WaveFile/SoundWaveChunk.cs b/src/SoundMaker/WaveFile/SoundWaveChunk.cs
index d7bfb2f..1770f96 100644
--- a/src/SoundMaker/WaveFile/SoundWaveChunk.cs
+++ b/src/SoundMaker/WaveFile/SoundWaveChunk.cs
@@ -1,11 +1,11 @@
namespace SoundMaker.WaveFile;
///
-/// chunk of the sound wave. 波形データのチャンクを表すクラス
+/// Chunk of the sound wave.
波形データのチャンクを表すクラス
///
public class SoundWaveChunk : IChunk
{
///
- /// constructor. コンストラクタ
+ /// Constructor.
コンストラクタ
///
/// 音の波形データの配列
public SoundWaveChunk(byte[] soundWave)
@@ -15,7 +15,7 @@ public SoundWaveChunk(byte[] soundWave)
}
///
- /// size of the wave data. 波形データのサイズ
+ /// Size of the wave data.
波形データのサイズ
///
public uint Size { get; }
diff --git a/src/SoundMaker/WaveFile/WaveWriter.cs b/src/SoundMaker/WaveFile/WaveWriter.cs
index a67c66f..a28dc01 100644
--- a/src/SoundMaker/WaveFile/WaveWriter.cs
+++ b/src/SoundMaker/WaveFile/WaveWriter.cs
@@ -1,17 +1,20 @@
namespace SoundMaker.WaveFile;
+
///
-/// write to the .wav file. waveファイルに書き込む
+/// Write to the .wav file.
waveファイルに書き込む
///
public class WaveWriter
{
///
- /// constructor. コンストラクタ
+ /// Constructor.
コンストラクタ
///
- /// format chunk. フォーマットチャンク
- /// sound wave chunk. 音声波形のチャンク
+ /// Format chunk.
フォーマットチャンク
+ /// Sound wave chunk.
音声波形のチャンク
public WaveWriter(FormatChunk format, SoundWaveChunk soundWave)
{
+ // Total file size = audio wave data + 44B
// ファイル全体サイズ = 音声波形データ + 44B
+ // The actual size written to the RIFF chunk is (total file size - the size of the "WAVE" string, which is 8B).
// 実際にRIFFチャンクに書き込むのは、(ファイル全体サイズ - "WAVE"の文字列の大きさである8B)になる
Chunks.Add(new RIFFChunk(soundWave.Size + 36));
Chunks.Add(format);
@@ -21,9 +24,9 @@ public WaveWriter(FormatChunk format, SoundWaveChunk soundWave)
private List Chunks { get; } = new(3);
///
- /// write to .wav file. .wavファイルに書き込む
+ /// Write to .wav file.
.wavファイルに書き込む
///
- /// path of .wav file.
+ /// Path of .wav file.
.wavファイルのパス
public void Write(string path)
{
using var stream = new FileStream(path, FileMode.Create, FileAccess.Write);
@@ -31,9 +34,9 @@ public void Write(string path)
}
///
- /// write to stream. ストリームに書き込む
+ /// Write to stream.
ストリームに書き込む
///
- /// stream
+ /// Stream.
ストリーム
public void Write(Stream stream)
{
var writer = new BinaryWriter(stream);