{"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/detecting-music-performance-errors-with","title":"Detecting Music Performance Errors with Transformers","arxiv_id":"2501.02030","date":"2025-01-03","proceeding":null,"authors":["Benjamin Shiue-Hal Chou","Purvish Jajal","Nicholas John Eliopoulos","Tim Nadolsky","Cheng-Yun Yang","Nikita Ravi","James C. Davis","Kristen Yeon-Ji Yun","Yung-Hsiang Lu"],"abstract":"Beginner musicians often struggle to identify specific errors in their performances, such as playing incorrect notes or rhythms. There are two limitations in existing tools for music error detection: (1) Existing approaches rely on automatic alignment; therefore, they are prone to errors caused by small deviations between alignment targets.; (2) There is a lack of sufficient data to train music error detection models, resulting in over-reliance on heuristics. To address (1), we propose a novel transformer model, Polytune, that takes audio inputs and outputs annotated music scores. This model can be trained end-to-end to implicitly align and compare performance audio with music scores through latent space representations. To address (2), we present a novel data generation technique capable of creating large-scale synthetic music error datasets. Our approach achieves a 64.1% average Error Detection F1 score, improving upon prior work by 40 percentage points across 14 instruments. Additionally, compared with existing transcription methods repurposed for music error detection, our model can handle multiple instruments. Our source code and datasets are available at https://github.com/ben2002chou/Polytune.","url_abs":"https://arxiv.org/abs/2501.02030v1","url_pdf":"https://arxiv.org/pdf/2501.02030v1.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":"detecting-music-performance-errors-with","repo_url":"https://github.com/ben2002chou/polytune","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[],"methods":[{"method_slug":"align","method_name":"ALIGN"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2501.02030","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2501.02030"}},"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/ben2002chou/polytune","reach":null}],"summary":{"ran":4,"ran_honours":1,"ran_draft_wrong":1,"unverified":3},"by_repo_kind":{"official":{"samples":9,"ran":6,"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":9,"samples":[{"code_sha256_prefix":"18e0122137212078","entry":"ASTEncoder","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"18e0122137212078"}},{"code_sha256_prefix":"ddc7d58a33fa5c70","entry":"Block","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ddc7d58a33fa5c70"}},{"code_sha256_prefix":"584e762d86a6d93d","entry":"FixedPositionalEmbedding","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"584e762d86a6d93d"}},{"code_sha256_prefix":"954280566223fba0","entry":"PatchEmbed","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"954280566223fba0"}},{"code_sha256_prefix":"750c7417aa367366","entry":"get_2d_sincos_pos_embed","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"750c7417aa367366"}},{"code_sha256_prefix":"df488bbe22b9bd2c","entry":"get_cosine_schedule_with_warmup","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"df488bbe22b9bd2c"}},{"code_sha256_prefix":"f51ecc0492340cd2","entry":"T5ForConditionalGeneration","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f51ecc0492340cd2"}},{"code_sha256_prefix":"b06559146a07777c","entry":"T5Stack","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"b06559146a07777c"}},{"code_sha256_prefix":"7ee4705ef79e4a0c","entry":"polytune","repo":"ben2002chou/polytune","repo_kind":"official","path":"tasks/polytune_net.py","file_url":"https://github.com/ben2002chou/polytune/blob/HEAD/tasks/polytune_net.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7ee4705ef79e4a0c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}