Django-临时midi文件music21
很抱歉,如果我做得不对,我是web应用程序开发新手,我一直在与Django合作一个项目,我希望我能做到以下几点: 当用户单击按钮时,会生成一个Ajax请求(我使用的是纯Javascript) 该请求向服务器(Django)发送一些音符,该服务器生成旋律Django-临时midi文件music21,django,ajax,midi,temporary-files,music21,Django,Ajax,Midi,Temporary Files,Music21,很抱歉,如果我做得不对,我是web应用程序开发新手,我一直在与Django合作一个项目,我希望我能做到以下几点: 当用户单击按钮时,会生成一个Ajax请求(我使用的是纯Javascript) 该请求向服务器(Django)发送一些音符,该服务器生成旋律 # Generate the melody based on the seed @require_http_methods(["POST"]) def generate(request): # See if method w
# Generate the melody based on the seed
@require_http_methods(["POST"])
def generate(request):
# See if method was post
if request.method == "POST":
# Get the seed and other stuff...
# Create a melody generator
mg = MelodyGenerator()
melody = mg.generate_melody(encoded_seed, ...)
mg.save_melody(melody)
# Return the melody
return JsonResponse({"melody": melody}, status=200)
服务器将旋律保存在一个midi文件中,我希望它是一个临时文件
class MelodyGenerator:
# ... do some stuff
def save_melody(...):
path_dir = os.path.join(settings.MEDIA_ROOT, "temp_midis")
file_path = os.path.join(path_dir, file_name)
midi = stream.write(format, file_path)
因此,用户可以收听midi(html模板):
我希望这个文件是临时的,这样它就不会占用空间,也就是说,用户可以听旋律,可以选择下载等等,但是当他们离开页面时,文件会被删除,因此不会占用更多空间
我如何知道这个文件的url,我希望它是临时的?服务器应该动态生成并输出MIDI文件,例如,
url/path/to/generate.mid?notes=1,2,3
Hi@CL。感谢您的回答。。。我不完全理解你的解释,我在问题中添加了更多细节,而不是返回JSON响应,而是返回MIDI文件本身。谢谢@CL。仍然不知道如何做,但我将检查你的建议。。。我真的很感激任何其他方向如何实现这一点。我的问题还在于我不知道如何在不保存的情况下在music21中创建midi文件,如果我正确理解了您的注释而不是write()
,请使用和writestr()
。
class MelodyGenerator:
# ... do some stuff
def save_melody(...):
path_dir = os.path.join(settings.MEDIA_ROOT, "temp_midis")
file_path = os.path.join(path_dir, file_name)
midi = stream.write(format, file_path)
<midi-player
src = "url/path/to/temporaryfile"
sound-font visualizer = "#myVisualizer">
</midi-player>
<midi-visualizer type = "staff" id = "myVisualizer"> </midi-visualizer>