Actualmente estoy escribiendo un programa haskell que imita el juego de un guitarrista humano y escupe eventos Midi. Como guitarra, estoy usando una Telecaster muestreada en Fluidsynth/Qsynth.
Para imitar un deslizamiento hacia arriba, uso pitch-bend, pero también quería agregar un poco de "punteo" cuando el dedo se mueve por un traste. Para mi sorpresa, tuve que darme cuenta de que cuando toco dos notas consecutivas del mismo tono en el mismo canal, la segunda nota silencia a la primera.
¿Es este el comportamiento esperado? ¿Es esto lo que esperarías del estándar Midi? ¿O es que Fluidsynth se está portando mal?
Debería ser Fluidsynth, ¿alguien sabe qué podría hacer para convencerlo de que NOTE_ON significa NOTE_ON y no NOTE_OFF seguido de NOTE_ON?
Eso es bastante común. Mi sintetizador también hace eso.
Las notas superpuestas son un área gris en midi.
Pero la mayoría de los sintetizadores realizan un noteoff implícito cuando aparece un noteon en ese canal.
Si desea que permanezca encendido, póngalos en canales separados. Eso generalmente hará el truco.
Midi está diseñado principalmente para piano. Y encuentra mucha notación que muestra un acorde para todo el compás con notas de melodía superpuestas.
Entonces, tan pronto como toques una nota de la melodía en la misma nota que el acorde... Bueno, el piano tiene una tecla para tocar esa nota, por lo que debe amortiguarse antes de que puedas escuchar la superpuesta.
Por lo general, la forma en que se hace la guitarra sobre midi es que tiene un canal por cuerda de guitarra.
No estoy completamente seguro de entender lo que está sucediendo, pero he experimentado cosas similares antes. Si está tratando de deslizarse hacia una nota, puede usar una nota adyacente doblada hacia ella. Por lo tanto, si se desliza hacia arriba hasta un G, en lugar de usar la inflexión de tono para que el G comience plano y se incline hacia arriba, puede usar un F # que comience sostenido e inclínelo hacia G, luego ataque el G.
La respuesta de Stephen es muy buena y brinda una resolución mucho más amplia al problema de la guitarra MIDI, pero puede requerir un poco de trabajo adicional y una comprensión más profunda. No estoy seguro de cómo se programaría esto y si sería capaz o no de capturar efectivamente el rendimiento con un controlador, es decir, puede haber mucha más programación.
¿Qué quieres decir con "arrancar"? ¿Por qué necesita activar la nota de nuevo?
Supongo que te refieres al cambio en el sonido que induce el deslizamiento a través de un traste. Estoy pensando en la dinámica de la diapositiva, y realmente no tiene mucho sentido simularla como una nueva nota. Creo que tiene más sentido pensar en ello como un cambio en el sonido actual y no como un sonido nuevo.
Lo que está haciendo el deslizamiento a través de un traste es un poco de excitación para la cuerda, pero se suma al estado actual de la envolvente del sonido. Por eso tiene sentido pensar en ello como un cambio de amplitud, rápido en su ascenso, más lento en su descenso.
Puede modular el sonido para que cambie cuando alcance el estado de "pluck". Tal vez lo que realmente desea es una amplitud más alta durante el estado de "arranque" y una amplitud más baja cuando el sonido pasa el estado de "arranque".
Durante el estado de la diapositiva, cada cambio de semitono (cada vez que la diapositiva pasa a través de un traste) debe desencadenar una modulación, tal vez una envolvente o tal vez un LFO de diente de sierra invertido de un solo ciclo, que da forma a la dinámica de amplitud (¿y quizás al timbre?) como un deslizarse a través de un traste sería.
Lee Kowalkowski