{ "id": "5f2341e1-12d2-42c3-b821-0c41d3d8202f", "revision": 0, "last_node_id": 99, "last_link_id": 127, "nodes": [ { "id": 45, "type": "MIDILoader", "pos": [ -1339.8095703125, 1347.4271240234375 ], "size": [ 381.1168212890625, 226 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [ { "name": "MIDI", "type": "MIDI", "links": [ 64, 67, 69, 78 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "e75dbb7156d34ee0d0dcfba629be0acb7f9c2538", "widget_ue_connectable": {} }, "widgets_values": [ "sample_midi.mid", "1: piano", 1, 1, 0, 1, "upload", "refresh" ] }, { "id": 29, "type": "PreviewAudio", "pos": [ -394.14019775390625, 728.9194946289062 ], "size": [ 310.4596252441406, 126.08221435546875 ], "flags": {}, "order": 16, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", "link": 65 } ], "outputs": [], "properties": { "cnr_id": "comfy-core", "ver": "0.3.33", "Node name for S&R": "PreviewAudio", "widget_ue_connectable": {} }, "widgets_values": [] }, { "id": 71, "type": "PreviewAudio", "pos": [ -370, -170 ], "size": [ 315, 88 ], "flags": {}, "order": 19, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", "link": 90 } ], "outputs": [], "properties": { "cnr_id": "comfy-core", "ver": "0.3.34", "Node name for S&R": "PreviewAudio", "widget_ue_connectable": {} }, "widgets_values": [] }, { "id": 74, "type": "PreviewAudio", "pos": [ -333.0875549316406, -1521.66552734375 ], "size": [ 315, 88 ], "flags": {}, "order": 17, "mode": 0, "inputs": [ { "name": "audio", "type": "AUDIO", "link": 92 } ], "outputs": [], "properties": { "cnr_id": "comfy-core", "ver": "0.3.34", "Node name for S&R": "PreviewAudio", "widget_ue_connectable": {} }, "widgets_values": [] }, { "id": 72, "type": "MIDILoader", "pos": [ -1297.677001953125, -1001.4724731445312 ], "size": [ 381.1168212890625, 226 ], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [ { "name": "MIDI", "type": "MIDI", "links": [ 91, 102, 103 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "e75dbb7156d34ee0d0dcfba629be0acb7f9c2538", "widget_ue_connectable": {} }, "widgets_values": [ "sample_midi.mid", "3: drum", 1, 1, 0, 1, "upload", "refresh" ] }, { "id": 79, "type": "MIDIFeatureExtractor", "pos": [ -767.5911254882812, -830.1699829101562 ], "size": [ 1020, 322 ], "flags": {}, "order": 12, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 102 } ], "outputs": [ { "name": "midi", "type": "MIDI", "links": null }, { "name": "feature", "type": "FEATURE", "links": [ 107 ] }, { "name": "frame_count", "type": "INT", "links": [] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "selectedNotes": [ 36 ], "widget_ue_connectable": {} }, "widgets_values": [ "Note On/Off", 30, 0, 512, 512, false, "36" ] }, { "id": 75, "type": "MIDIFeatureExtractor", "pos": [ -820, -10 ], "size": [ 1020, 322 ], "flags": {}, "order": 15, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 93 } ], "outputs": [ { "name": "midi", "type": "MIDI", "links": null }, { "name": "feature", "type": "FEATURE", "links": [ 99 ] }, { "name": "frame_count", "type": "INT", "links": [] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "selectedNotes": [], "widget_ue_connectable": {} }, "widgets_values": [ "Velocity", 30, 0, 512, 512, false, "" ] }, { "id": 88, "type": "Note", "pos": [ -1312.242919921875, -1373.744873046875 ], "size": [ 373.50885009765625, 179.8002166748047 ], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [], "title": "2. Drums", "properties": { "widget_ue_connectable": {} }, "widgets_values": [ "For the drums, we have an example of extracting individual notes, the kick and the snare." ], "color": "#432", "bgcolor": "#653" }, { "id": 69, "type": "MIDILoader", "pos": [ -1312.6334228515625, 97.49837493896484 ], "size": [ 381.1168212890625, 226 ], "flags": {}, "order": 3, "mode": 0, "inputs": [], "outputs": [ { "name": "MIDI", "type": "MIDI", "links": [ 89, 93 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "e75dbb7156d34ee0d0dcfba629be0acb7f9c2538", "widget_ue_connectable": {} }, "widgets_values": [ "sample_midi.mid", "2: bass", 1, 1, 0, 1, "upload", "refresh" ] }, { "id": 89, "type": "Note", "pos": [ -1315.5673828125, -162.17872619628906 ], "size": [ 372.4935607910156, 182.84597778320312 ], "flags": {}, "order": 4, "mode": 0, "inputs": [], "outputs": [], "title": "2. Bass", "properties": { "widget_ue_connectable": {} }, "widgets_values": [ "When no notes are selected, all notes are used" ], "color": "#432", "bgcolor": "#653" }, { "id": 91, "type": "Note", "pos": [ -1322.5369873046875, 903.3281860351562 ], "size": [ 372.4935607910156, 182.84597778320312 ], "flags": {}, "order": 5, "mode": 0, "inputs": [], "outputs": [], "title": "3. Piano", "properties": { "widget_ue_connectable": {} }, "widgets_values": [ "When 'chord only' is enabled, feature will only be extracted when all selected notes are on simulaneously. This is useful for different reactivity for different chords (think special behavior for tonic chord or something).\n\nAdditionally, this is critical for differentiating a melody from the accompaniment." ], "color": "#432", "bgcolor": "#653" }, { "id": 87, "type": "Note", "pos": [ -2116.0517578125, -1389.1805419921875 ], "size": [ 569.0508422851562, 480.17010498046875 ], "flags": {}, "order": 6, "mode": 0, "inputs": [], "outputs": [], "title": "1. Overview", "properties": { "widget_ue_connectable": {} }, "widgets_values": [ "This workflow demonstrates how to extract features from a MIDI file. This uses a single midi file with multiple tracks with standard instruments.\n\nThe first and most important step is to get an extremely beautiful and compelling composition, like the one used in this example. A song both happy and sad\n\n\n\nTHE PIANO NODE (midi extractor):\nThe piano keys will be enabled based on the available notes in the selected section of midi. The available notes will be updated based on the connnectd MIDI Loader node. \n\nTHE AUDIO:\nThe midi-to-audio node is is a rudimentary approximation of the midi notes for quick reference only. \n\nNOTE:\nFor brevity, all of the feature extraction is done against simply \"velocity\" and \"note on-off\". The sample midi file here does not include it, but you can use many message type for reactivity.... \n\nFor example, think of a setup where you dont map specific notes, but some expression of all notes on a track. This could be reused for any song. \n\nFeel free to DM me with some midi tracks and I could make an example workflow with them. " ], "color": "#432", "bgcolor": "#653" }, { "id": 64, "type": "MIDIFeatureExtractor", "pos": [ -871.2890625, 2088.83984375 ], "size": [ 1020, 322 ], "flags": {}, "order": 10, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 78 } ], "outputs": [ { "name": "midi", "type": "MIDI", "links": null }, { "name": "feature", "type": "FEATURE", "links": [ 88 ] }, { "name": "frame_count", "type": "INT", "links": null } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "selectedNotes": [ 41, 53, 60, 68 ], "widget_ue_connectable": {} }, "widgets_values": [ "Velocity", 30, 0, 512, 512, true, "41, 53, 60, 68" ] }, { "id": 43, "type": "MIDIFeatureExtractor", "pos": [ -852.0150756835938, 1054.3472900390625 ], "size": [ 1020, 322 ], "flags": {}, "order": 8, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 67 } ], "outputs": [ { "name": "midi", "type": "MIDI", "links": null }, { "name": "feature", "type": "FEATURE", "links": [ 50 ] }, { "name": "frame_count", "type": "INT", "links": [] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "selectedNotes": [ 37, 49, 56, 61, 65 ], "widget_ue_connectable": {} }, "widgets_values": [ "Velocity", 30, 0, 512, 512, true, "37, 49, 56, 61, 65" ] }, { "id": 56, "type": "MIDIFeatureExtractor", "pos": [ -852.0150756835938, 1523.5477294921875 ], "size": [ 1020, 322 ], "flags": {}, "order": 9, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 69 } ], "outputs": [ { "name": "midi", "type": "MIDI", "links": null }, { "name": "feature", "type": "FEATURE", "links": [ 75 ] }, { "name": "frame_count", "type": "INT", "links": [] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "selectedNotes": [ 51, 58, 63, 67 ], "widget_ue_connectable": {} }, "widgets_values": [ "Velocity", 30, 0, 512, 512, true, "51, 58, 63, 67" ] }, { "id": 84, "type": "EffectVisualizer", "pos": [ 920.0111694335938, -1252.7969970703125 ], "size": [ 315, 174 ], "flags": {}, "order": 21, "mode": 0, "inputs": [ { "name": "video_frames", "type": "IMAGE", "link": 108 }, { "name": "feature", "type": "FEATURE", "link": 110 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 116 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "Node name for S&R": "EffectVisualizer", "widget_ue_connectable": {} }, "widgets_values": [ "(255,255,255)", 1.4000000000000001, "snare", 10, 10 ] }, { "id": 73, "type": "MIDIToAudio", "pos": [ -733.9694213867188, -1521.224609375 ], "size": [ 315, 106 ], "flags": {}, "order": 11, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 91 } ], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 92, 123 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "Node name for S&R": "MIDIToAudio", "widget_ue_connectable": {} }, "widgets_values": [ "Drums", 44100, 0.5 ] }, { "id": 80, "type": "MIDIFeatureExtractor", "pos": [ -770.4898071289062, -1256.8670654296875 ], "size": [ 1020, 322 ], "flags": {}, "order": 13, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 103 } ], "outputs": [ { "name": "midi", "type": "MIDI", "links": [] }, { "name": "feature", "type": "FEATURE", "links": [ 110 ] }, { "name": "frame_count", "type": "INT", "links": [ 111 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "selectedNotes": [ 38 ], "widget_ue_connectable": {} }, "widgets_values": [ "Note On/Off", 30, 0, 512, 512, false, "38" ] }, { "id": 70, "type": "MIDIToAudio", "pos": [ -790, -170 ], "size": [ 315, 106 ], "flags": {}, "order": 14, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 89 } ], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 90, 124 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "Node name for S&R": "MIDIToAudio", "widget_ue_connectable": {} }, "widgets_values": [ "Bass", 44100, 0.5 ] }, { "id": 97, "type": "Audio_Combine", "pos": [ 1589.7186279296875, -94.85237884521484 ], "size": [ 352.79998779296875, 102 ], "flags": {}, "order": 20, "mode": 0, "inputs": [ { "name": "audio1", "type": "AUDIO", "link": 123 }, { "name": "audio2", "type": "AUDIO", "link": 124 } ], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 125 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "widget_ue_connectable": {}, "Node name for S&R": "Audio_Combine" }, "widgets_values": [ 0.5, 0.5 ] }, { "id": 50, "type": "MIDIToAudio", "pos": [ -821.4395751953125, 731.225341796875 ], "size": [ 315, 106 ], "flags": {}, "order": 7, "mode": 0, "inputs": [ { "name": "midi", "type": "MIDI", "link": 64 } ], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 65, 126 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "Node name for S&R": "MIDIToAudio", "widget_ue_connectable": {} }, "widgets_values": [ "Piano", 44100, 0.5 ] }, { "id": 99, "type": "Audio_Combine", "pos": [ 1560.019287109375, 773.7644653320312 ], "size": [ 352.79998779296875, 102 ], "flags": {}, "order": 22, "mode": 0, "inputs": [ { "name": "audio1", "type": "AUDIO", "link": 125 }, { "name": "audio2", "type": "AUDIO", "link": 126 } ], "outputs": [ { "name": "AUDIO", "type": "AUDIO", "links": [ 127 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "d060e57a8db80e631364478a3b228fc632d85f39", "widget_ue_connectable": {}, "Node name for S&R": "Audio_Combine" }, "widgets_values": [ 0.5, 0.5 ] }, { "id": 68, "type": "VHS_VideoCombine", "pos": [ 2741.55517578125, -937.7992553710938 ], "size": [ 1749.921875, 1321.0810546875 ], "flags": {}, "order": 28, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", "link": 86 }, { "name": "audio", "shape": 7, "type": "AUDIO", "link": 127 }, { "name": "meta_batch", "shape": 7, "type": "VHS_BatchManager", "link": null }, { "name": "vae", "shape": 7, "type": "VAE", "link": null } ], "outputs": [ { "name": "Filenames", "type": "VHS_FILENAMES", "links": null } ], "properties": { "cnr_id": "comfyui-videohelpersuite", "ver": "1.6.1", "Node name for S&R": "VHS_VideoCombine", "widget_ue_connectable": {} }, "widgets_values": { "frame_rate": 30, "loop_count": 0, "filename_prefix": "AnimateDiff", "format": "video/h264-mp4", "pix_fmt": "yuv420p", "crf": 19, "save_metadata": true, "trim_to_audio": false, "pingpong": false, "save_output": false, "videopreview": { "hidden": false, "paused": false, "params": { "filename": "AnimateDiff_00022-audio.mp4", "subfolder": "", "type": "temp", "format": "video/h264-mp4", "frame_rate": 30, "workflow": "AnimateDiff_00022.png", "fullpath": "C:\\_dev\\comfy\\ComfyUI\\temp\\AnimateDiff_00022-audio.mp4" } } } }, { "id": 85, "type": "EmptyImage", "pos": [ 479.27947998046875, -1257.9613037109375 ], "size": [ 315, 130 ], "flags": {}, "order": 18, "mode": 0, "inputs": [ { "name": "batch_size", "type": "INT", "widget": { "name": "batch_size" }, "link": 111 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 108 ] } ], "properties": { "cnr_id": "comfy-core", "ver": "0.3.33", "Node name for S&R": "EmptyImage", "widget_ue_connectable": {} }, "widgets_values": [ 960, 540, 1, 0 ] }, { "id": 81, "type": "EffectVisualizer", "pos": [ 914.053955078125, -824.3253173828125 ], "size": [ 315, 174 ], "flags": {}, "order": 23, "mode": 0, "inputs": [ { "name": "video_frames", "type": "IMAGE", "link": 116 }, { "name": "feature", "type": "FEATURE", "link": 107 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 117 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "Node name for S&R": "EffectVisualizer", "widget_ue_connectable": {} }, "widgets_values": [ "(255,255,255)", 1.4000000000000001, "kick", 10, 60 ] }, { "id": 76, "type": "EffectVisualizer", "pos": [ 910, -10 ], "size": [ 315, 174 ], "flags": {}, "order": 24, "mode": 0, "inputs": [ { "name": "video_frames", "type": "IMAGE", "link": 117 }, { "name": "feature", "type": "FEATURE", "link": 99 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 118 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "Node name for S&R": "EffectVisualizer", "widget_ue_connectable": {} }, "widgets_values": [ "(255,255,255)", 1.4000000000000001, "bass", 10, 110 ] }, { "id": 38, "type": "EffectVisualizer", "pos": [ 906.0049438476562, 1105.6773681640625 ], "size": [ 315, 174 ], "flags": {}, "order": 25, "mode": 0, "inputs": [ { "name": "video_frames", "type": "IMAGE", "link": 118 }, { "name": "feature", "type": "FEATURE", "link": 50 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 119 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "Node name for S&R": "EffectVisualizer", "widget_ue_connectable": {} }, "widgets_values": [ "(255,255,255)", 1.4000000000000001, "C# ", 10, 160 ] }, { "id": 58, "type": "EffectVisualizer", "pos": [ 933.9990844726562, 1612.6243896484375 ], "size": [ 315, 174 ], "flags": {}, "order": 26, "mode": 0, "inputs": [ { "name": "video_frames", "type": "IMAGE", "link": 119 }, { "name": "feature", "type": "FEATURE", "link": 75 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 120 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "Node name for S&R": "EffectVisualizer", "widget_ue_connectable": {} }, "widgets_values": [ "(255,255,255)", 1.4000000000000001, "D# ", 10, 210 ] }, { "id": 67, "type": "EffectVisualizer", "pos": [ 912.8372802734375, 2150.399658203125 ], "size": [ 315, 174 ], "flags": {}, "order": 27, "mode": 0, "inputs": [ { "name": "video_frames", "type": "IMAGE", "link": 120 }, { "name": "feature", "type": "FEATURE", "link": 88 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 86 ] } ], "properties": { "cnr_id": "comfyui_ryanontheinside", "ver": "492c20ba4ae1484c9e3bdc11d036fbb4820c52c1", "Node name for S&R": "EffectVisualizer", "widget_ue_connectable": {} }, "widgets_values": [ "(255,255,255)", 1.4000000000000001, "F ", 10, 270 ] } ], "links": [ [ null, null, null, null, null, null ], [ 50, 43, 1, 38, 1, "FEATURE" ], [ 64, 45, 0, 50, 0, "MIDI" ], [ 65, 50, 0, 29, 0, "AUDIO" ], [ 67, 45, 0, 43, 0, "MIDI" ], [ 69, 45, 0, 56, 0, "MIDI" ], [ 75, 56, 1, 58, 1, "FEATURE" ], [ 78, 45, 0, 64, 0, "MIDI" ], [ 86, 67, 0, 68, 0, "IMAGE" ], [ 88, 64, 1, 67, 1, "FEATURE" ], [ 89, 69, 0, 70, 0, "MIDI" ], [ 90, 70, 0, 71, 0, "AUDIO" ], [ 91, 72, 0, 73, 0, "MIDI" ], [ 92, 73, 0, 74, 0, "AUDIO" ], [ 93, 69, 0, 75, 0, "MIDI" ], [ 99, 75, 1, 76, 1, "FEATURE" ], [ 102, 72, 0, 79, 0, "MIDI" ], [ 103, 72, 0, 80, 0, "MIDI" ], [ 107, 79, 1, 81, 1, "FEATURE" ], [ 108, 85, 0, 84, 0, "IMAGE" ], [ 110, 80, 1, 84, 1, "FEATURE" ], [ 111, 80, 2, 85, 0, "INT" ], [ 116, 84, 0, 81, 0, "IMAGE" ], [ 117, 81, 0, 76, 0, "IMAGE" ], [ 118, 76, 0, 38, 0, "IMAGE" ], [ 119, 38, 0, 58, 0, "IMAGE" ], [ 120, 58, 0, 67, 0, "IMAGE" ], [ 123, 73, 0, 97, 0, "AUDIO" ], [ 124, 70, 0, 97, 1, "AUDIO" ], [ 125, 97, 0, 99, 0, "AUDIO" ], [ 126, 50, 0, 99, 1, "AUDIO" ], [ 127, 99, 0, 68, 1, "AUDIO" ] ], "groups": [ { "id": 1, "title": "Bass", "bounding": [ -1362.0684814453125, -374.0391845703125, 3360.12255859375, 775.947998046875 ], "color": "#3f789e", "font_size": 100, "flags": {} }, { "id": 2, "title": "Piano", "bounding": [ -1361.111083984375, 532.2680053710938, 3372.01708984375, 2264.61669921875 ], "color": "#3f789e", "font_size": 100, "flags": {} }, { "id": 3, "title": "Drums", "bounding": [ -1359.57666015625, -1695.46826171875, 3364.666259765625, 1269.9716796875 ], "color": "#3f789e", "font_size": 100, "flags": {} } ], "config": {}, "extra": { "ds": { "scale": 0.1210000000000066, "offset": [ 5189.493242450809, 2982.4761975652627 ] }, "ue_links": [], "links_added_by_ue": [], "frontendVersion": "1.17.11", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, "VHS_KeepIntermediate": true, "reroutes": [ { "id": 1, "pos": [ 1747.84130859375, -1475.663818359375 ], "linkIds": [ 123 ] } ], "linkExtensions": [ { "id": 123, "parentId": 1 } ] }, "version": 0.4 }