Ace Baker Posted October 17, 2012 Share Posted October 17, 2012 I'd like to transform the position of a midi note with an inverted, scaled function of that same note's velocity. All notes would be moved earlier in time, the lower the velocity, the more it would be moved earlier, the higher the velocity, the less it would be moved earlier. I know I'll have to play around with values to get exactly what I'm after, but I can't figure out in the transform window how to apply velocity info to position. Max appreciation for any help. Link to comment Share on other sites More sharing options...
David Nahmani Posted October 17, 2012 Share Posted October 17, 2012 I can't figure out in the transform window how to apply velocity info to position. I'm afraid that's not possible. Link to comment Share on other sites More sharing options...
Ace Baker Posted October 17, 2012 Author Share Posted October 17, 2012 No wonder I couldn't figure it out, LOL! Link to comment Share on other sites More sharing options...
David Nahmani Posted October 17, 2012 Share Posted October 17, 2012 Whatever were you trying to do? Sounds interesting. (just being curious really) Link to comment Share on other sites More sharing options...
fastfourier Posted October 18, 2012 Share Posted October 18, 2012 You could set up a bunch of transformers to route notes with certain velocities through differently configured delay line objects based on their velocity. To delay earlier, you'll just have to record the MIDI track first and move it backwards - say, by one bar. If you're playing live, you're out of luck. As great as it is, even Logic can't foresee the future. EDIT: assuming you're using a software instrument, you'll need to have your MIDI data on an "External MIDI" track, reassign it to an Instrument object in the environment and route it to your software instrument channel object via the transformers. I don't really know what your application is but it sounds good. Keep it up, whatever it is you're doing! Link to comment Share on other sites More sharing options...
Ace Baker Posted October 22, 2012 Author Share Posted October 22, 2012 The problem is with the MIDI interface on my Steinway grand piano. It works great for playing back MIDI files, but softer notes are delayed more than louder ones. It's pretty subtle in most situations, but I'd like to get the timing as accurate as possible. I've mapped the needed transformation by playing quantized MIDI notes at a range of velocities, recording the piano as audio, marking the transients, converting the transients into MIDI notes with "convert region to new sampler track", and comparing the positions of these MIDI notes to the original. Link to comment Share on other sites More sharing options...
fastfourier Posted October 22, 2012 Share Posted October 22, 2012 Try importing the "delayer" environment layer from this logic project. Assign the "To Steinway Piano" instrument to the MIDI Out connected to your piano. There are only two velocity "zones" set up in the environment but of course you can add more by option-dragging the delay+transformer objects and configuring them to the velocity range/delay you need. Delay is configured in Divisions + Ticks so you'll have to figure out how long that has to be from your experiments. 1 tick=1/3480 of a beat. The only problem with it is that you end up with a lot of note off messages, as they get passed through all velocity "zones". This might be a problem for your setup, it might not. I'm sure there is a way to get around this, but I have to leave the computer now. It will mean storing the note value somewhere and generating an appropriately-delayed Note Off message. Let me know if it works for you! velocity delay.zip Link to comment Share on other sites More sharing options...
Ace Baker Posted October 22, 2012 Author Share Posted October 22, 2012 Wow, thanks fastfourier. I'll give this a try. As I get deeper into this, I realize the compensation will need to be based on milliseconds, not bars and beats. Link to comment Share on other sites More sharing options...
David Nahmani Posted October 22, 2012 Share Posted October 22, 2012 The problem is with the MIDI interface on my Steinway grand piano. It works great for playing back MIDI files, but softer notes are delayed more than louder ones. It's pretty subtle in most situations, but I'd like to get the timing as accurate as possible. Wow... that sounds odd! Is this by design? Is this a bug with the interface? Have you contacted the interface manufacturer? I can't imagine why it wouldn't be dead on. Link to comment Share on other sites More sharing options...
Ace Baker Posted October 22, 2012 Author Share Posted October 22, 2012 It's dealing with little motors that move the hammers. Getting the hammer to strike more quietly means moving the motor slower, which means it's going to get there later. That's my understanding anyway. No, I haven't tried contacting the manufacturer. We've had this MIDI system for years, but mostly I play the piano, like, actually with my fingers. It's only just now I've gotten interested in sequencing piano, for this particular project. I'm trying to find a Java programmer that can write me a little code. Link to comment Share on other sites More sharing options...
David Nahmani Posted October 22, 2012 Share Posted October 22, 2012 Wow I see. You may want to contact the manufacturer to see if they are aware of the problem and of any potential fixes/workaround. For all you know, someone else has already programmed that. If not, they may be interested in whatever your programmer comes up with. Anyway thanks for quenching my curiosity. Best of luck to you. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.