コード例 #1
0
ファイル: load.py プロジェクト: Stepland/jubeatools
def _load_eve(lines: List[str],
              file_path: Path,
              *,
              beat_snap: int = 240) -> song.Song:
    chart = make_chart_from_events(iter_events(lines), beat_snap=beat_snap)
    dif = guess_difficulty(file_path.stem) or song.Difficulty.EXTREME
    return song.Song(metadata=song.Metadata(), charts={dif: chart})
コード例 #2
0
ファイル: memon.py プロジェクト: Stepland/jubeatools
def load_memon_0_1_0(path: Path, **kwargs: Any) -> jbt.Song:
    raw_memon = _load_raw_memon(path)
    schema = Memon_0_1_0()
    memon = schema.load(raw_memon)
    metadata = jbt.Metadata(
        title=memon["metadata"]["title"],
        artist=memon["metadata"]["artist"],
        audio=Path(memon["metadata"]["audio"]),
        cover=Path(memon["metadata"]["cover"]),
    )
    common_timing = jbt.Timing(
        events=[
            jbt.BPMEvent(time=jbt.BeatsTime(0), BPM=memon["metadata"]["BPM"])
        ],
        beat_zero_offset=jbt.SecondsTime(-memon["metadata"]["offset"]),
    )
    charts: MultiDict[jbt.Chart] = MultiDict()
    for difficulty, memon_chart in memon["data"].items():
        charts.add(
            difficulty,
            jbt.Chart(
                level=memon_chart["level"],
                notes=[
                    _load_memon_note_v0(note, memon_chart["resolution"])
                    for note in memon_chart["notes"]
                ],
            ),
        )

    return jbt.Song(metadata=metadata,
                    charts=charts,
                    common_timing=common_timing)
コード例 #3
0
ファイル: load.py プロジェクト: Stepland/jubeatools
def load_malody_file(raw_dict: dict) -> song.Song:
    file: malody.Chart = malody.CHART_SCHEMA.load(raw_dict)
    if file.meta.mode != malody.Mode.PAD:
        raise ValueError("This file is not a Malody Pad Chart (Malody's jubeat mode)")

    bgm = find_bgm(file.note)
    metadata = load_metadata(file.meta, bgm)
    time_map = load_timing_info(file.time, bgm)
    timing = time_map.convert_to_timing_info()
    chart = song.Chart(level=Decimal(0), timing=timing, notes=load_notes(file.note))
    dif = file.meta.version or song.Difficulty.EXTREME
    return song.Song(metadata=metadata, charts={dif: chart})
コード例 #4
0
ファイル: test_utils.py プロジェクト: Stepland/jubeatools
def memo_compatible_song(draw: DrawFunc) -> song.Song:
    """Memo only supports one difficulty per file"""
    diff = draw(st.sampled_from(list(d.value for d in song.Difficulty)))
    chart = draw(
        jbst.chart(
            timing_strat=jbst.timing_info(with_bpm_changes=True),
            notes_strat=jbst.notes(),
        ))
    metadata: song.Metadata = draw(memo_compatible_metadata())
    return song.Song(
        metadata=metadata,
        charts={diff: chart},
    )
コード例 #5
0
def eve_compatible_song(draw: DrawFunc) -> song.Song:
    """eve only keeps notes, timing info and difficulty,
    the precision you can get out of it is also severly limited"""
    diff = draw(st.sampled_from(list(song.Difficulty)))
    chart = draw(
        jbst.chart(
            timing_strat=jbst.timing_info(
                with_bpm_changes=True,
                bpm_strat=st.decimals(min_value=50, max_value=300, places=2),
                beat_zero_offset_strat=st.decimals(min_value=0,
                                                   max_value=20,
                                                   places=2),
                time_strat=jbst.beat_time(
                    min_section=1,
                    max_section=10,
                    denominator_strat=st.sampled_from([4, 3]),
                ),
            ),
            notes_strat=jbst.notes(
                note_strat=st.one_of(
                    jbst.tap_note(time_strat=simple_beat_strat),
                    jbst.long_note(
                        time_strat=simple_beat_strat,
                        duration_strat=jbst.beat_time(
                            min_numerator=1,
                            max_section=3,
                            denominator_strat=st.sampled_from([4, 3]),
                        ),
                    ),
                ),
                beat_time_strat=simple_beat_strat,
            ),
            level_strat=st.just(Decimal(0)),
        ))
    return song.Song(
        metadata=song.Metadata(),
        charts={diff: chart},
    )
コード例 #6
0
def malody_song(draw: DrawFunc) -> song.Song:
    """Malody files only hold one chart and have limited metadata"""
    diff = draw(difficulty())
    chart_ = draw(chart())
    metadata_ = draw(metadata())
    return song.Song(metadata=metadata_, charts={diff: chart_})