Spaces:
Sleeping
Sleeping
File size: 1,767 Bytes
fabcff4 2354dd6 fabcff4 b31ba68 bce64c5 b31ba68 bce64c5 a856ad2 f320495 b31ba68 caf3fac f930d36 567e64e 2354dd6 b31ba68 2354dd6 e0987f0 b31ba68 2354dd6 b31ba68 2354dd6 b31ba68 fabcff4 b31ba68 fabcff4 ba969e8 fabcff4 ba969e8 fabcff4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import streamlit as st
import streamlit_pianoroll
from fortepyan import MidiPiece
from datasets import load_dataset, Dataset
def main():
available_datasets = [
"maestro-sustain-v2",
"pijamia-midi-v1",
"vgmidi",
"music-net",
"piano-midi-de",
"lakh-lmd-full",
"giant-midi-sustain-v2",
"piast-midi",
"imslp-midi-v1",
"jsb-chorales",
"atepp-1.1-sustain-v2",
]
dataset_name = st.selectbox(
label="Select dataset",
options=available_datasets,
)
preview_dataset(dataset_name)
@st.cache_data(persist="disk")
def get_dataset(dataset_name: str) -> Dataset:
dataset = load_dataset(f"epr-labs/{dataset_name}", split="train")
return dataset
def preview_dataset(dataset_name: str):
st.write(f"### Dataset: {dataset_name}")
with st.spinner("Loading the dataset, hang tight!"):
dataset = get_dataset(dataset_name)
st.write(f"""
Number of records: {len(dataset)}
""")
code = f"""
dataset = load_dataset("epr-labs/{dataset_name}", split="train")
record = dataset[321]
piece = MidiPiece.from_huggingface(record)
# Playback in streamlit
streamlit_pianoroll.from_fortepyan(piece)
"""
st.code(code, language="python")
record_idx = st.number_input(
label="record id",
min_value=0,
max_value=len(dataset) - 1,
value=50,
)
record = dataset[record_idx]
piece = MidiPiece.from_huggingface(record)
# TODO Improve fortepyan to make this cleaner
piece.time_shift(-piece.df.start.min())
streamlit_pianoroll.from_fortepyan(piece)
st.write("#### Piece metadata")
st.json(piece.source)
if __name__ == "__main__":
main()
|