{"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/counterpoint-by-convolution","title":"Counterpoint by Convolution","arxiv_id":"1903.07227","date":"2019-03-18","proceeding":null,"authors":["Cheng-Zhi Anna Huang","Tim Cooijmans","Adam Roberts","Aaron Courville","Douglas Eck"],"abstract":"Machine learning models of music typically break up the task of composition\ninto a chronological process, composing a piece of music in a single pass from\nbeginning to end. On the contrary, human composers write music in a nonlinear\nfashion, scribbling motifs here and there, often revisiting choices previously\nmade. In order to better approximate this process, we train a convolutional\nneural network to complete partial musical scores, and explore the use of\nblocked Gibbs sampling as an analogue to rewriting. Neither the model nor the\ngenerative procedure are tied to a particular causal direction of composition.\nOur model is an instance of orderless NADE (Uria et al., 2014), which allows\nmore direct ancestral sampling. However, we find that Gibbs sampling greatly\nimproves sample quality, which we demonstrate to be due to some conditional\ndistributions being poorly modeled. Moreover, we show that even the cheap\napproximate blocked Gibbs procedure from Yao et al. (2014) yields better\nsamples than ancestral sampling, based on both log-likelihood and human\nevaluation.","url_abs":"http://arxiv.org/abs/1903.07227v1","url_pdf":"http://arxiv.org/pdf/1903.07227v1.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":"counterpoint-by-convolution","repo_url":"https://github.com/czhuang/coconet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"counterpoint-by-convolution","repo_url":"https://github.com/kevindonoghue/coconet-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"counterpoint-by-convolution","repo_url":"https://github.com/lukewys/coconet-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"counterpoint-by-convolution","repo_url":"https://github.com/prentrodgers/coconet-pytorch-csound","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}}],"tasks":[{"task_slug":"music-generation","task_name":"Music Generation"},{"task_slug":"music-modeling","task_name":"Music Modeling"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/music-modeling-on-jsb-chorales","task":"Music Modeling","dataset":"JSB Chorales","model":"CoCoNet","rank_in_archive_order":4,"of":10,"metrics":{"NLL":"2.22"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1903.07227","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1903.07227"}},"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/lukewys/coconet-pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/czhuang/coconet","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kevindonoghue/coconet-pytorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/prentrodgers/coconet-pytorch-csound","reach":{"status":"ok","spdx":"GPL-3.0"}}],"summary":{"unverified":1},"by_repo_kind":{"listed":{"samples":1,"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":0,"samples":[{"code_sha256_prefix":"e3ed463d12778bcc","entry":"pad_number","repo":"lukewys/coconet-pytorch","repo_kind":"listed","path":"coconet.py","file_url":"https://github.com/lukewys/coconet-pytorch/blob/HEAD/coconet.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e3ed463d12778bcc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}