Symbolic Music Generation with Non-Differentiable Rule Guided Diffusion
About
We study the problem of symbolic music generation (e.g., generating piano rolls), with a technical focus on non-differentiable rule guidance. Musical rules are often expressed in symbolic form on note characteristics, such as note density or chord progression, many of which are non-differentiable which pose a challenge when using them for guided diffusion. We propose Stochastic Control Guidance (SCG), a novel guidance method that only requires forward evaluation of rule functions that can work with pre-trained diffusion models in a plug-and-play way, thus achieving training-free guidance for non-differentiable rules for the first time. Additionally, we introduce a latent diffusion architecture for symbolic music generation with high time resolution, which can be composed with SCG in a plug-and-play fashion. Compared to standard strong baselines in symbolic music generation, this framework demonstrates marked advancements in music quality and rule-based controllability, outperforming current state-of-the-art generators in a variety of settings. For detailed demonstrations, code and model checkpoints, please visit our project website: https://scg-rule-guided-music.github.io/.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Posterior Sampling | Linear Gaussian n=400 | SWD6.172 | 24 | |
| Posterior Sampling | Linear Gaussian n=80 | SWD6.013 | 24 | |
| Posterior Sampling | Linear Gaussian n=2 | SWD2.704 | 24 | |
| Bayesian Inference | Bayesian Inverse Problems Task 4 1.0 | C2ST86 | 17 | |
| Bayesian Inference | Bayesian Inverse Problems Task 2 1.0 | C2ST66.4 | 17 | |
| Bayesian Inference | Bayesian Inverse Problems Task 5 1.0 | C2ST71.4 | 17 | |
| Bayesian Inference | Bayesian Inverse Problems Task 1 1.0 | C2ST60.3 | 17 | |
| Bayesian Inference | Bayesian Inverse Problems Task 3 1.0 | C2ST83.2 | 17 | |
| Inverse Problem | InverseBench Navier-Stokes (sigma_noise=2.0) (test) | Relative L2 Error0.966 | 13 | |
| Inverse Problem | InverseBench Navier-Stokes (sigma_noise=0) (test) | Relative L2 Error0.961 | 13 |