derenotes.libs.notes.song module

デレステ譜面ファイルを扱うモジュール。

exception SONGError(*args)

ベースクラス: Exception

songのエラーハンドラ

パラメータ:

args (object)

戻り値の型:

None

class SongType(*values)

ベースクラス: StrEnum

デレステ楽曲タイプの列挙クラス。

ALL = 'ALL'
CUTE = 'CUTE'
COOL = 'COOL'
PASSION = 'PASSION'
class SongCategory(*values)

ベースクラス: StrEnum

デレステ楽曲カテゴリの列挙クラス。

WIDE_DEBUT = 'WIDE:DEBUT'
WIDE_REGULAR = 'WIDE:REGULAR'
WIDE_PRO = 'WIDE:PRO'
WIDE_MASTER = 'WIDE:MASTER'
WIDE_MASTER_PLUS = 'WIDE:MASTER+'
WITCH_WITCH = 'WITCH:WITCH'
SMART_LIGHT = 'SMART:LIGHT'
SMART_TRICK = 'SMART:TRICK'
GRAND_PIANO = 'GRAND:PIANO'
GRAND_FORTE = 'GRAND:FORTE'
class NoteType(*values)

ベースクラス: StrEnum

ノートタイプの列挙クラス。

START = 'START'
END = 'END'
TAP = 'TAP'
FLICK_LEFT = 'FLICK:LEFT'
FLICK_RIGHT = 'FLICK:RIGHT'
LONG_ON = 'LONG:ON'
LONG_OFF = 'LONG:OFF'
LONG_FLICK_LEFT = 'LONG:FLICK:LEFT'
LONG_FLICK_RIGHT = 'LONG:FLICK:RIGHT'
SLIDE_ON = 'SLIDE:ON'
SLIDE_PASS = 'SLIDE:PASS'
SLIDE_OFF = 'SLIDE:OFF'
SLIDE_FLICK_LEFT = 'SLIDE:FLICK:LEFT'
SLIDE_FLICK_RIGHT = 'SLIDE:FLICK:RIGHT'
DAMAGE = 'DAMAGE'
class Song(name='未設定', category=SongCategory.WIDE_MASTER, type=SongType.ALL, level=1)

ベースクラス: object

デレステ楽曲情報のデータクラス。

パラメータ:
  • name (str) -- タイトル

  • category (SongCategory) -- デレステ楽曲カテゴリ

  • type (SongType) -- デレステ楽曲タイプ

  • level (int) -- レベル

name: str = '未設定'
category: SongCategory = 'WIDE:MASTER'
type: SongType = 'ALL'
level: int = 1
class Note(timestamp=0, lane=1, width=1, type=NoteType.TAP, time_base=Fraction(1, 1))

ベースクラス: object

ノートのデータクラス。

パラメータ:
  • timestamp (int) -- time_base単位のタイムスタンプ

  • lane (int) -- 左端から数えたレーン番号。

  • width (int) -- レーン幅

  • type (NoteType) -- ノートタイプ

  • time_base (Fraction) -- 単位時間(秒)

timestamp: int = 0
lane: int = 1
width: int = 1
type: NoteType = 'TAP'
time_base: Fraction = Fraction(1, 1)
ノート(ロング、スライド)の始点・節点・終点を保持する deque
  • ロング: LONG_ON, LONG_OFF, LONG_FLICK_LEFT, LONG_FLICK_RIGHT

  • スライド: SLIDE_ON, SLIDE_PASS, SLIDE_OFF, SLIDE_FLICK_LEFT, SLIDE_FLICK_RIGHT

class Chart

ベースクラス: object

デレステ譜面データを扱うクラス。

Todo:

self._notelink でロング・スライドのノートのつながりを扱う。

Todo:

self._notes グランドの複数レーンに跨るノートを扱う。

property videofile: str

デレステ動画ファイルのパス名。

property song: Song

デレステ楽曲情報。

property last_index: int | None

デレステ譜面ファイル保存時の画面フレームのインデックス。

property total_notes: int

Note の全数。

current_notes(timestamp)

timestamp 直前までの Note を数える。

パラメータ:

timestamp (int) -- タイムスタンプ

戻り値:

Note の数

戻り値の型:

int

search_within_range(min_timestamp, max_timestamp)

timestamp 範囲内の Note のリストを得る。

パラメータ:
  • min_timestamp (int) -- タイムスタンプ範囲の下限

  • max_timestamp (int) -- タイムスタンプ範囲の上限

戻り値:

Note のリスト

戻り値の型:

Iterator[Note]

find(timestamp)

timestampNote のリストを得る。

パラメータ:

timestamp (int) -- タイムスタンプ

戻り値:

Note のリスト

戻り値の型:

Iterator[Note]

push(note)

Note を追加する。

パラメータ:

note (Note) -- 追加する Note

戻り値の型:

None

remove(note)

Note を削除する。

パラメータ:

note (Note) -- 削除する Note

戻り値の型:

None

save(path=None)

デレステ譜面ファイルを保存する。

パラメータ:

path (Path|None) -- デレステ譜面ファイルのパスオブジェクト

例外:

SONGError -- ファイルが見つからない、または保存できない場合

戻り値の型:

None

load(path)

デレステ譜面ファイルを読み込む。

パラメータ:

path (Path) -- デレステ譜面ファイルのパスオブジェクト

戻り値の型:

None