{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/ddsp-differentiable-digital-signal-processing-1","title":"DDSP: Differentiable Digital Signal Processing","arxiv_id":"2001.04643","date":"2020-01-14","proceeding":"ICLR 2020 1","authors":["Jesse Engel","Lamtharn Hantrakul","Chenjie Gu","Adam Roberts"],"abstract":"Most generative models of audio directly generate samples in one of two domains: time or frequency. While sufficient to express any signal, these representations are inefficient, as they do not utilize existing knowledge of how sound is generated and perceived. A third approach (vocoders/synthesizers) successfully incorporates strong domain knowledge of signal processing and perception, but has been less actively researched due to limited expressivity and difficulty integrating with modern auto-differentiation-based machine learning methods. In this paper, we introduce the Differentiable Digital Signal Processing (DDSP) library, which enables direct integration of classic signal processing elements with deep learning methods. Focusing on audio synthesis, we achieve high-fidelity generation without the need for large autoregressive models or adversarial losses, demonstrating that DDSP enables utilizing strong inductive biases without losing the expressive power of neural networks. Further, we show that combining interpretable modules permits manipulation of each separate model component, with applications such as independent control of pitch and loudness, realistic extrapolation to pitches not seen during training, blind dereverberation of room acoustics, transfer of extracted room acoustics to new environments, and transformation of timbre between disparate sources. In short, DDSP enables an interpretable and modular approach to generative modeling, without sacrificing the benefits of deep learning. The library is publicly available at https://github.com/magenta/ddsp and we welcome further contributions from the community and domain experts.","url_abs":"https://arxiv.org/abs/2001.04643v1","url_pdf":"https://arxiv.org/pdf/2001.04643v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"ddsp-differentiable-digital-signal-processing-1","repo_url":"https://github.com/magenta/ddsp","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"ddsp-differentiable-digital-signal-processing-1","repo_url":"https://github.com/azerty-waves/ddsp-real-time","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"ddsp-differentiable-digital-signal-processing-1","repo_url":"https://github.com/juanalonso/DDSP-singing-experiments","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"audio-generation","task_name":"Audio Generation"},{"task_slug":"audio-synthesis","task_name":"Audio Synthesis"}],"methods":[{"method_slug":"ddsp","method_name":"DDSP"},{"method_slug":"gru","method_name":"GRU"}],"datasets_introduced":[],"methods_introduced":[{"slug":"ddsp","name":"DDSP","full_name":"Differentiable Digital Signal Processing"}],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2001.04643","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2001.04643"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/juanalonso/DDSP-singing-experiments","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/azerty-waves/ddsp-real-time","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/magenta/ddsp","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":5},"by_repo_kind":{"official":{"samples":5,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":5,"samples":[{"code_sha256_prefix":"8a3b5ce6962ca243","entry":"make_iterable","repo":"magenta/ddsp","repo_kind":"official","path":"ddsp/core.py","file_url":"https://github.com/magenta/ddsp/blob/HEAD/ddsp/core.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"8a3b5ce6962ca243"}},{"code_sha256_prefix":"f141a8ebf7a7298c","entry":"mean_difference","repo":"magenta/ddsp","repo_kind":"official","path":"ddsp/losses.py","file_url":"https://github.com/magenta/ddsp/blob/HEAD/ddsp/losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"f141a8ebf7a7298c"}},{"code_sha256_prefix":"139be83746c71db5","entry":"split_keras_kwargs","repo":"magenta/ddsp","repo_kind":"official","path":"ddsp/dags.py","file_url":"https://github.com/magenta/ddsp/blob/HEAD/ddsp/dags.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"139be83746c71db5"}},{"code_sha256_prefix":"fefcf2ceee1219f4","entry":"tf_float32","repo":"magenta/ddsp","repo_kind":"official","path":"ddsp/core.py","file_url":"https://github.com/magenta/ddsp/blob/HEAD/ddsp/core.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"fefcf2ceee1219f4"}},{"code_sha256_prefix":"2527f406b8a45bcb","entry":"to_dict","repo":"magenta/ddsp","repo_kind":"official","path":"ddsp/core.py","file_url":"https://github.com/magenta/ddsp/blob/HEAD/ddsp/core.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"2527f406b8a45bcb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}