First, there are not the rules of classical music. Different people have put forth different rules. I would also rather think of these rules as strong suggestions instead of invariable laws. Therefore, if you would use formal language theory to create a classical music parser, you will most likely fail to apply that parser to all but a tiny fraction of pieces.
Now, let's pick an example of rules, for example Percy Goetschius's Exercises in melody writing. Here, chords are grouped in different classes. For example, a chord of the Tonic class may progress into any other class whereas a chord of the Dominant class most likely progresses into the Tonic class. And so on. What you should see here is that every chord (i.e., the literals of our formal language) has some associated state (the class). This class is clearly finite and it is easy to construct a finite automaton that accepts these rules (if one would really want to do that, which I find rather questionable). This shows that this formal language of chord progression rules is regular (or Type 3).
Musical form aside (since it is not mentioned in the question), I cannot think of a reason why a formal language of chord progressions should not be regular. It is after all not that difficult to tell which chord progessions sound good. And, more important, you do not need knowledge of a possibly infinite number of decisions for chord progressions that you have done in the past. So you can encode all the information needed to decide which chord to use next into a finite number of states. If we want to conform to some musical form, however, things will be more complicated.
Last, I agree with the comment by helveticat that for use cases like the Harmony Improvisator, Markov Chains seem much more applicable. After all, the rules are often phrased with words like “tendency“. And I would take the advertisement of the Harmony Improvisator with a grain of salt. :)