Maybe it would make sense to do something different for "noise at night" and everything else? I (but I'm not anywhere close to autistic ttbomk) would probably be interrupted less by something that would vary in response to noise I'm making, so something like a lamp with brightness ~ sigmoid(is_it_night)*some_function(sliding_window_average(noise_level)) might be helpful for that?
(feel free to tell me that i'm saying terribly obvious/obviously wrong things and that I should stop)