diff --git a/README.md b/README.md index 84c63c3..18fdc90 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ - [Audio Waveforms](#audio-waveforms) - [Spectrograms](#spectrograms) + - [Complex-Valued Spectrograms](#complex-valued-spectrograms) - [Filter Banks](#filter-banks) - [License](#license) @@ -33,6 +34,10 @@ A spectrogram (`SPECT`) can be one of three types: 2. `magnitude` – a real valued spectrogram that is the absolute value of the `complex` spectrogram (power 1); 3. `power` – a real valued spectrogram that is the square of the `magnitude` spectrogram (power 2); +### Complex-Valued Spectrograms + +[![Generating, plotting, and inverting a complex-valued spectrogram](workflows/spectrogram/complex-valued-spectrogram.png)](workflows/spectrogram/complex-valued-spectrogram.json) + ## Filter Banks | Name | Description | diff --git a/workflows/spectrogram/complex-valued-spectrogram.json b/workflows/spectrogram/complex-valued-spectrogram.json new file mode 100644 index 0000000..ae3af50 --- /dev/null +++ b/workflows/spectrogram/complex-valued-spectrogram.json @@ -0,0 +1,551 @@ +{ + "last_node_id": 17, + "last_link_id": 21, + "nodes": [ + { + "id": 1, + "type": "LoadAudio", + "pos": [ + 737, + 502 + ], + "size": { + "0": 315, + "1": 124 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 1, + 3 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadAudio" + }, + "widgets_values": [ + null, + "" + ] + }, + { + "id": 2, + "type": "ComfyAudio.Spectrogram", + "pos": [ + 1198, + 502 + ], + "size": { + "0": 315, + "1": 130 + }, + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 1 + } + ], + "outputs": [ + { + "name": "SPECT", + "type": "SPECT", + "links": [ + 7, + 16 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ComfyAudio.Spectrogram" + }, + "widgets_values": [ + "complex", + 400, + -1, + -1 + ] + }, + { + "id": 3, + "type": "PreviewAudio", + "pos": [ + 1201, + 731 + ], + "size": { + "0": 315, + "1": 76 + }, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 4 + } + ], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 4, + "type": "Reroute", + "pos": [ + 1074, + 731 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 3 + } + ], + "outputs": [ + { + "name": "", + "type": "AUDIO", + "links": [ + 4, + 5 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 5, + "type": "ComfyAudio.PlotWaveform", + "pos": [ + 1201, + 851 + ], + "size": { + "0": 315, + "1": 130 + }, + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 5 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 6 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ComfyAudio.PlotWaveform" + }, + "widgets_values": [ + "Waveform", + "Time (s)", + "Amplitude", + true + ] + }, + { + "id": 6, + "type": "PreviewImage", + "pos": [ + 1537, + 729 + ], + "size": { + "0": 409, + "1": 327 + }, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 6 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 7, + "type": "ComfyAudio.InverseSpectrogram", + "pos": [ + 2181, + 495 + ], + "size": { + "0": 216.59999084472656, + "1": 26 + }, + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "spectrogram", + "type": "SPECT", + "link": 7 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 20, + 21 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ComfyAudio.InverseSpectrogram" + } + }, + { + "id": 8, + "type": "PreviewAudio", + "pos": [ + 2443, + 731 + ], + "size": { + "0": 315, + "1": 76 + }, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 20 + } + ], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "widgets_values": [ + null + ] + }, + { + "id": 10, + "type": "ComfyAudio.PlotWaveform", + "pos": [ + 2442, + 919 + ], + "size": { + "0": 315, + "1": 130 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 21 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 12 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ComfyAudio.PlotWaveform" + }, + "widgets_values": [ + "Waveform", + "Time (s)", + "Amplitude", + true + ] + }, + { + "id": 12, + "type": "PreviewImage", + "pos": [ + 1997, + 730 + ], + "size": { + "0": 409, + "1": 327 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 12 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 15, + "type": "ComfyAudio.PlotSpectrogram", + "pos": [ + 1198, + 304 + ], + "size": { + "0": 315, + "1": 154 + }, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "spectrogram", + "type": "SPECT", + "link": 16 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 19 + ], + "slot_index": 0, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "ComfyAudio.PlotSpectrogram" + }, + "widgets_values": [ + "magnitude", + "Spectrogram", + "Time (s)", + "Frequency (Hz)", + false + ] + }, + { + "id": 17, + "type": "PreviewImage", + "pos": [ + 1532, + 304 + ], + "size": { + "0": 409, + "1": 327 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 19 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + } + ], + "links": [ + [ + 1, + 1, + 0, + 2, + 0, + "AUDIO" + ], + [ + 3, + 1, + 0, + 4, + 0, + "*" + ], + [ + 4, + 4, + 0, + 3, + 0, + "AUDIO" + ], + [ + 5, + 4, + 0, + 5, + 0, + "AUDIO" + ], + [ + 6, + 5, + 0, + 6, + 0, + "IMAGE" + ], + [ + 7, + 2, + 0, + 7, + 0, + "SPECT" + ], + [ + 12, + 10, + 0, + 12, + 0, + "IMAGE" + ], + [ + 16, + 2, + 0, + 15, + 0, + "SPECT" + ], + [ + 19, + 15, + 0, + 17, + 0, + "IMAGE" + ], + [ + 20, + 7, + 0, + 8, + 0, + "AUDIO" + ], + [ + 21, + 7, + 0, + 10, + 0, + "AUDIO" + ] + ], + "groups": [ + { + "title": "Original Audio", + "bounding": [ + 1191, + 655, + 765, + 411 + ], + "color": "#3f789e", + "font_size": 24 + }, + { + "title": "Reconstructed Audio from Spectrogram", + "bounding": [ + 1987, + 656, + 781, + 411 + ], + "color": "#3f789e", + "font_size": 24 + }, + { + "title": "Complex-Valued Spectrogram", + "bounding": [ + 1188, + 230, + 763, + 412 + ], + "color": "#3f789e", + "font_size": 24 + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.7513148009015777, + "offset": [ + -287.2675454545451, + 286.19709090909066 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/workflows/spectrogram/complex-valued-spectrogram.png b/workflows/spectrogram/complex-valued-spectrogram.png new file mode 100644 index 0000000..c812ae9 Binary files /dev/null and b/workflows/spectrogram/complex-valued-spectrogram.png differ