[Script] Apply MIDI Tempo Map to Project

This is a script that will read a MIDI file and apply any tempo markers to your project. By default it looks for a file named “TempoMap.mid” in the same location as your SVP file, but if it doesn’t find one it will prompt for the file path.

It would be wise to back up your project before trying this script; I’ve only tested it with simple tempo maps where there’s a single track and the tempo changes occur at the start of a quarter. That’s not to say you shouldn’t try it with more complex tempo maps, but don’t be surprised if something breaks.

Download ImportTempoMap.lua from svstudio-scripts · SynthV Studio scripts by Claire under the “Automation” section, or from GitHub directly:

「いいね!」 3

When using this script please keep in mind that MIDI files don’t support gradual tempo changes; that’s not just a SynthV quirk.

Some DAWs will encode a stepwise interpolation of the ramping tempo, but there is no standardized way of doing so and therefore no guarantee of consistency.

So by all means give it a try, but setting up your tempo changes to be instantaneous or stepwise in the first place will likely be more reliable.

「いいね!」 2

Hi,

Thanks for your amazing resources!
I’m new to SynthV and its scripting capabilities, but was wondering how/if I could “adapt” this script to apply the midi velocity (volume) information to existing tracks.
(SynthV does not seem to preserve this information when importing midi tracks)

I have been creating choir (SATB) rehearsal tracks with piano sounds for a while, and am looking at using SynthV to improve those. I will typically have a Dorico file with the arrangement including dynamic information that would get exported to midi.

So the idea would be to import a midi and then use the same midi + script to apply the velocity information to the right tracks.

It’s likely possible, now that I know how to get information out of a MIDI file.

There’s one main obstacle though. Velocity is very easy to understand for more typical virtual instruments; it’s how hard you press the key, pluck the string, hit the drum, etc.

This concept doesn’t apply to voices in a simple way, and it’s unlikely two people would have the same idea about how to interpret velocity as loudness.


Human voices don’t have a simple attack/sustain/release pattern. If we treat it that way and increase the loudness at the start of the note, then faster sequences will sound silly and inconsistent.

It gets even more complicated when you consider that the phonetics of each note are different and might change how velocity should affect it, especially in English where there is no consistent consonant/vowel pattern.

We could also adjust the loudness of the entire note based on the velocity, which is perhaps the safest option, but then the question is, by how much, and at this point is it really “velocity” any more?


There’s also the question of redundancy. Adjusting the loudness parameter to target specific sounds or lyrics is helpful, but most people will even out the loudness of a vocal clip by riding the fader in their DAW anyway, so larger sweeping changes to the loudness parameter can often just make for more work later on.

So perhaps loudness is the wrong approach. If we want to use velocity to control the “impact” of a note, maybe we should add spikes of tension, tone shift, or a vocal mode based on the MIDI velocity? Now we’re not strictly talking about dynamics any more, but also (or perhaps primarily) vocal tone.


So yes, reading a value from a MIDI file and mapping it to some meaning within SynthV Studio is likely possible, the big issue is how to do that in a way that makes sense and has a desirable result.

Thanks for the additional information and considerations. I’m new to looking/thinking about voice (generation) in this detailed way.

I’m coming from a sheet music background, where dynamics are notated and are used to balance the different voices, e.g. when there is solo in a soprano and the rest of the choir needs to sing less loud. This dynamic information can be noted (e.g. in Sibelius, Dorico, etc) and I think it is translated into (midi) velocity. I would need to experiment a bit with Dorico to see how the exported midi (velocity) actually behaves.

Perhaps it does not map one to one, but I’m looking for something that can “kickstart” the importing of the dynamic information from the sheet music into Synthesizer V. If there is another parameter that betters “maps” than that is also fine. I think currently the midi velocity information seems completely ignored resulting in all notes being the same “loudness” (although I think I observed higher notes tend to have a higher loudness).

The reason I want at least a level of dynamics in the rehearsal track “performance” is to help people be aware of the dynamics when rehearsing a choral piece. Some people rehearse by reading exactly the sheet music, some might learn a piece only by listening to a recording on repeat.

The other aspect is of course that there might be “perfect” way to do this, but perhaps I need to do some manual experimentation to discover what mapping is “good enough” for my intention for the rehearsal tracks. But at the moment I simply don’t have enough experience with the different Synth V settings to know the possibilities/limitations and what effect certain settings on the sound have.