Synthmaker CM

mickygemma
#1 por mickygemma el 14/01/2010
Hola, muy buenas, me presento, soy Micky, y he creado algunos plugins con synthmaker CM (computer music edition) abro este foro para ver si alguien más utiliza el programa y me puede ayudar a crear un buen arpegiador... o cualquier otro modulo.
Adjunto la imagen de uno de mis últimos intentos por crear un sintetizador virtual, espero que alguien me pueda ayudar, gracias de nuevo por vuestro tiempo, saludos.
Gracias.
Archivos adjuntos ( para descargar)
1.1.PNG
Subir
Wikter
#2 por Wikter el 17/01/2010
Hola,
para crear un arpegiador sólo necesitas unos pocos módulos:

- Contador (con reset), o acumulador.
- selector de salidas
- Reloj
- sumador
- controlador

El contador irá incrementando valores en cada golpe de reloj. El selector de salidas (si existe como tal, sinó tendrás que programar un conjunto de sumadores y AND's que te permitan discriminar la salida en función del valor de entrada) activará el envío mediante un multiplicador del valor del fader/control para cada paso.
Si lo que quieres es que vaya sincronizado con el tempo del host tan sólo tienes que incluir un módulo de tempo VST, que te debería dar un reloj o un valor BPM...
Por cierto, el reset se lo hace el contador a sí mismo enviandose un pulso a sím mismo al llegar al paso 8/16/32... o el que quieras tú. Si te hiciese el reset justo en el momento en que le llega el pulso, probablemente perderías la sincronía, así que necesitarías usar una combinación de relays/delays/multiplicadores para que el reset salga cuando tiene que salir.

Suerte!
Subir
mickygemma
#3 por mickygemma el 18/01/2010
Gracias por tu respuesta, veremos a ver que sale...
Subir
Wikter
#4 por Wikter el 23/01/2010
Bueno, es casi genérica, serviría para cualquier entorno.
En Synthedit sí que he hecho arpegiadores, pero en Synthmaker creo que ya hay algunas "templates"...
Subir
mickygemma
#5 por mickygemma el 11/02/2010
wikter escribió:
Hola,
para crear un arpegiador sólo necesitas unos pocos módulos:

- Contador (con reset), o acumulador.
- selector de salidas
- Reloj
- sumador
- controlador

El contador irá incrementando valores en cada golpe de reloj. El selector de salidas (si existe como tal, sinó tendrás que programar un conjunto de sumadores y AND's que te permitan discriminar la salida en función del valor de entrada) activará el envío mediante un multiplicador del valor del fader/control para cada paso.
Si lo que quieres es que vaya sincronizado con el tempo del host tan sólo tienes que incluir un módulo de tempo VST, que te debería dar un reloj o un valor BPM...
Por cierto, el reset se lo hace el contador a sí mismo enviandose un pulso a sím mismo al llegar al paso 8/16/32... o el que quieras tú. Si te hiciese el reset justo en el momento en que le llega el pulso, probablemente perderías la sincronía, así que necesitarías usar una combinación de relays/delays/multiplicadores para que el reset salga cuando tiene que salir.

Suerte!


Perdona, pero... ¿podrías darme los nombres de los módulos en inglés? si no es mucha molestia, claro.
Subir
Wikter
#6 por Wikter el 12/02/2010
- Counter
- Switch o Selector
- Clock
- Add, sum, adder(The black Adder)
- Fader/knob

Hace mucho que no uso Synthmaker así que no sabría decirte los nombres exactos de los módulos.
Subir
mickygemma
#7 por mickygemma el 12/02/2010
Muchas gracias wikter, seguiré peleándome con el programa, a ver si me sale de una ******* vez el arpegiador.
Subir
ER
#8 por ER el 17/04/2014
chicos, existirá algún modulo que permita crear formas de onda a partir de una linea recta deformable con curvas Bezier, y añadir distintas formas de onda para crear una tabla de ondas variables por un Knob (perilla virtual en este caso) seria un Osc alimentado por un emisor de frecuencia virtual formado también por comas flotantes.. ¿?

les parece si lo escribimos ? por que la fuente de mas abajo hay que llevarlo al lenguaje Ruby y luego escribirlo en Synthmaker o FlowStone,

Fuente: (es de lo que sigue a continuación)
http://www.planetclegg.com/projects/WarpingTextToSplines.html

La interpolación lineal (lerp) entre dos valores escalares se define como sigue:

vlerp = v0 + ( v1 - v0 ) * t

De lo cual se puede crear una función lerp entre dos puntos 2D

lerp(P0, P1, t) :
xlerp = x0 + ( x1 - x0 ) * t
ylerp = y0 + ( y1 - y0 ) * t
return point (xlerp, ylerp)

La imagen geométrica anterior se puede entonces expresarse como sigue:

P4 = lerp(P0, P1, t);
P5 = lerp(P1, P2, t);
P6 = lerp(P2, P3, t);
P7 = lerp(P4, P5, t);
P8 = lerp(P5, P6, t);
P9 = lerp(P7, P8, t);

Cuando P9 es el punto de la curva para t.

A Bézier cúbica también puede expresarse como un polinomio cúbico con ocho coeficientes: (voy a describir la forma de calcular los coeficientes de los cuatro puntos de control en una fecha posterior)

x = At3 + Bt2 + Ct + D
y = Et3 + Ft2 + Gt + H

Para valores de T entre 0 a 1, estos polinomios producen la coordenadas x e y de un punto en la curva. Los valores fuera de ese rango continúan la función hasta el infinito en algún sitio. La fórmula es realmente lo mismo para las versiones x e y, sólo con diferentes coeficientes. Las ecuaciones se relacionan de forma independiente x e y al valor del parámetro valor de t. Debido a esto las ranuras se pueden extender en tres dimensiones (o más!) Con mucha facilidad.

Entonces, ¿dónde los coeficientes (A.. H) vienen? Para una explicación completa de las cuentas, consulte la sección de recursos en la parte inferior, pero por ahora sólo voy a dar las fórmulas para la conversión de los puntos de control a los coeficientes.
Teniendo en cuenta cuatro puntos de control para la P0 spline .. P3, que tiene valores de (x0, y0) .. (x3, y3), los coeficientes son:

A = x3 - 3 * x2 + 3 * x1 - x0
B = 3 * x2 - 6 * x1 + 3 * x0
C = 3 * x1 - 3 * x0
D = x0

E = y3 - 3 * y2 + 3 * y1 - y0
F = 3 * y2 - 6 * y1 + 3 * y0
G = 3 * y1 - 3 * y0
H = y0

Si fuera necesario para calcular los puntos de control de los coeficientes, aquí están las operaciones inversas:

x0 = D;
x1 = D + C / 3
x2 = D + 2 * C / 3 + B / 3
x3 = D + C + B + A

y0 = H;
y1 = H + G / 3
y2 = H + 2 * G / 3 + F / 3
y3 = H + G + F + E

Así que para ilustrar lo que se ha cubierto hasta ahora, he aquí algo de pseudocódigo, utilizando puntos de control P0 .. P3:

/ / Dibujar la Bézier utilizando GDI + función (g es objeto Gráfico)
g.DrawBezier (Pens.Black, P0, P1, P2, P3);

Líneas / / Dibujar conectan los Puntos de Control

g.DrawLine(redPenWithEndCap, P0,P1);
g.DrawLine(redPenWithEndCap, P2,P3);

[[calcular los coeficientes de la A a la H que se describen anteriormente]]

/ / Dibujar 20 puntos, con un incremento fijo para el parámetro t
para (float t = 0; t <= 1; t + = 0.05f)
{
x = At3 + Bt2 + Ct + D
y = Et3 + Ft2 + Gt + H

/ / Función que dibuja una recta lleno en x, coordina y llama.
DrawBoxAtPoint(g, Color.Blue, x, y);
}
Archivos adjuntos ( para descargar)
Bezier_3_big.gif
NonArcLengthSplinePoints.png
Subir
Wikter
#9 por Wikter el 12/11/2014
Lo mismo alguien ya lo ha escrito....
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo