Skip to content

Commit

Permalink
📖 Describe the documentation for smsc
Browse files Browse the repository at this point in the history
  • Loading branch information
AutumnSky1010 committed Dec 7, 2024
1 parent fb5b88f commit 427e76e
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
55 changes: 55 additions & 0 deletions docs/markdowns/smsc/serializer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# SMSCシリアライズ・デシリアライズ

SMSCデータをシリアライズおよびデシリアライズする方法を示します。

### シリアライズ

以下のコード例では、サウンドコンポーネントをSMSC形式にシリアライズする方法を示しています。

#### コード例
```cs
// using SoundMaker.ScoreData.SMSC;
// using SoundMaker.Sounds.Score;
var components = new List<ISoundComponent>()
{
new Note(Scale.E, 5, LengthType.Eighth),
new Note(Scale.F, 5, LengthType.Eighth),
new Note(Scale.G, 5, LengthType.Eighth),
};
var smsc = SMSCFormat.Serialize(components);
Console.WriteLine(smsc);
```

#### 詳細な説明

1. **サウンドコンポーネントの作成**: `ISoundComponent` を実装したクラス(例:`Note`)のオブジェクトをリストに追加します。
- `new Note(Scale.E, 5, LengthType.Eighth)`: 音階E、5オクターブ、長さは八分音符の音を作成。
- 同様に、音階FおよびGの音符も追加します。
2. **シリアライズ**: `SMSCFormat.Serialize` メソッドを使用して、サウンドコンポーネントのリストをSMSC形式にシリアライズします。
3. **出力**: シリアライズされたSMSCデータをコンソールに出力します。

### デシリアライズ

以下のコード例では、SMSC形式のデータをサウンドコンポーネントにデシリアライズする方法を示しています。

#### コード例
```cs
// using SoundMaker.ScoreData.SMSC;
// using SoundMaker.Sounds.Score;
var smsc = "C4, 4";
var result = SMSCFormat.Read(smsc);
if (result.TryGetValue(out IReadOnlyList<ISoundComponent> components))
{
}
else
{
}
```

#### 詳細な説明

1. **SMSCデータの読み込み**: シリアライズされたSMSC形式の文字列を用意します。例:`"C4, 4"`
2. **デシリアライズ**: `SMSCFormat.Read` メソッドを使用して、SMSC形式のデータをサウンドコンポーネントにデシリアライズします。
3. **結果の確認**:
- `result.TryGetValue(out IReadOnlyList<ISoundComponent> components)`: デシリアライズに成功した場合、サウンドコンポーネントのリストを取得します。
- デシリアライズに失敗した場合の処理も含めます。
21 changes: 21 additions & 0 deletions docs/markdowns/smsc/what-is-the-smsc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# SMSCフォーマットとは?
## 概要
簡単にSoundMaker用の楽譜を記述するためのフォーマットです。詳細な情報は設定できませんが、簡単に記述できます。
チャンネルやトラックの完全なデータを永続化する目的では利用できないことに注意してください。

##
```
// コメントアウト
// 付点四分音符(音階はC#4)
C#4, 4.
// 休符
rest, 4.
// タイ と 三連符(4分音符を三等分している)
tie(C4, 4, 4, 4); tup(4, C4, C4, C4)
```

## 仕様
[BNF(バッカス・ナウア記法)](https://github.com/AutumnSky1010/SoundMaker/blob/master/src/SoundMaker/ScoreData/SMSC/SMSC.bnf)

## 今後の展望
音量やエフェクトなどを指定できるように仕様を拡張する可能性があります。

0 comments on commit 427e76e

Please sign in to comment.