cwitkowitz's picture
initial commit
f773cb9
from pyharp import *
from symusic import Synthesizer, BuiltInSF3, dump_wav
import gradio as gr
import audiotools
# Create a ModelCard
model_card = ModelCard(
name='MIDI Synthesizer',
description="A MIDI synthesizer example for HARP v3.",
author='TEAMuP',
tags=["example", "midi", "synthesizer", "v3"]
)
# Define the process function
def process_fn(
input_midi_path: str,
pitch_shift_amount: int
) -> str:
midi = load_midi(input_midi_path)
# Create a synthesizer with default settings
synthesizer = Synthesizer(
sf_path=BuiltInSF3.MuseScoreGeneral().path(download=True),
sample_rate=44100,
quality=4 # Default quality setting
)
data = synthesizer.render(midi, stereo=True)
audio = audiotools.AudioSignal(data, sample_rate=44100)
output_audio_path = str(save_audio(audio))
return output_audio_path
# Build Gradio endpoint
with gr.Blocks() as demo:
# Define input Gradio Components
input_components = [
gr.File(type="filepath",
label="Input Midi",
file_types=[".mid", ".midi"])
.harp_required(True),
]
# Define output Gradio Components
output_components = [
gr.Audio(type="filepath",
label="Output Audio")
.set_info("The synthesized audio."),
]
# Build a HARP-compatible endpoint
app = build_endpoint(
model_card=model_card,
input_components=input_components,
output_components=output_components,
process_fn=process_fn,
)
demo.queue().launch(share=True, show_error=False, pwa=True)