Algoritmos

  • 1
Midicenter
#1 por Midicenter el 08/07/2003
Pretendo iniciarme en la tarea de crear algoritmos y quien sabe algún día
hacerme un instrumento vst. Lo que me gustaría es saber, los pasos iniciales o talvez un manual introductorio. Soy muy conciente que el camino es largo y difíci pero quiero al menos tener un punto de partida.

Saludos
Subir
OFERTASVer todas
  • -21%
    Zoom H4n Pro Black
    158 €
    Ver oferta
  • -26%
    AKAI MPC Key 61
    1.290 €
    Ver oferta
  • -8%
    Behringer X Air XR18
    645 €
    Ver oferta
ADVanZe
#2 por ADVanZe el 08/07/2003
En breve escribiré algunos artículos sobre el tema. Pero debo decirte que el arte de programar instrumentos VST requiere conocimientos profundos de C++ o DELPHI, además de saber técnicas sobre procesado de sonido.
El camino es ciertamente largo, pero puedes empezar mirando los siguientes recursos web; http://musicdsp.org/ y el indispensable kit de desarrollo de steinberg: http://www.steinberg.net/de/de/ps/suppo ... /index.php
Subir
Midicenter
#3 por Midicenter el 08/07/2003
Gracias, no sabes cuanto valoro esta información, al menos tengo de dónde partir :mrgreen:
Subir
shockwavedj
#4 por shockwavedj el 09/07/2003
Intenta hacerte con el "Digital Signal Processing" de Oppeheim... la Biblia!!! (aunque requiere "algunos" conocimientos previos)
Subir
Dj_Geizer
#5 por Dj_Geizer el 09/07/2003
Matlab lleva unas toolboxes de miedo. ¿Quizás sirva?
Subir
Dj_Geizer
#6 por Dj_Geizer el 09/07/2003
El Oppenheim muy bueno si señor. Aunque quizás sea demasiado profundo para lo que aquí se plantea. Es un libro de tratamiento digital de señales en general. Seguro que hay cosas mas sencillas para escribir DSP's de audio basados en VST.

No crees ?
Subir
Midicenter
#7 por Midicenter el 09/07/2003
Bueno el que mucho abarca poco aprieta, pero el que no busca metas se transforma en un conformista. Bueno estoy llevando un curso de programación para entender el meollo del asunto Laaaaaaaargo camino... :wink:
Subir
mabbam
#8 por mabbam el 09/07/2003
Alguien escribió:
Matlab lleva unas toolboxes de miedo. ¿Quizás sirva?



Claro, en la uni mucha gente hace cosas con matlab, es potentísimo, aunque para hacer un vsti o algo así necesitas el kit de steinberg y c++. Pero si quieres hacer un programa autónomo y cacharrear es perfectamente válido.
Un saludo
Juan
Subir
shockwavedj
#9 por shockwavedj el 10/07/2003
Hombre, si lo que realmente quieres es sobrevivir en el mundo del procesado, apréndete de memoria lo que es una convolución y ya sólo tienes que descargarte coeficientes de filtros y convolucionarlos con las señales. Así no es necesario saber qué hace cada filtro, pierde el 90% de su gracia, pero cuando escuchas un sonido filtrado por tí mismo... no hay palabras. Y si te abuerres de procesado, recurre a la realidad que es mucho más directa: condesador en paralelo con potenciómetro y filtro paso bajo al canto!!! Y nada de digitalización XDDDD
Subir
Dj_Geizer
#10 por Dj_Geizer el 10/07/2003
Jeje si el problema no es aburrirse, a mi me encanta diseñar filtros digitales con las diferentes aproximaciones etc, y luego dibujar la plantilla y ver como va la cosa, corregir la fase con ecualizadores etc..

Matlab es fácil e intuitivo, un lenguaje de alto nivel con muchas funciones que permiten esa abstracción. Por eso me refiero a que entender y comprender todas las transformadas y propiedades descritas en el Oppenheim ayuda, aunque por lo menos en la carrera que estudio tenemos una asignatura que dura un año para ver todo el libro.

Por eso mismo como por aquí se está comentando, estos Kits de desarrollo ayudan a proporcionar una abstacción a un nivel superior. Con unos pocos conocimientos de tratamiento digital de señales se pueden hacer seguramente grandes cosas :).
Subir
Dj_Geizer
#11 por Dj_Geizer el 10/07/2003
Por cierto la web http://musicdsp.org/ es realmente impresionante.

Hace tiempo busqué algo parecido y no lo encontré. Con buenos ejemplos de código y de libre distribución.

Algunos diseñados para implementar en Power PC para auténticos DSP's hardware.

Nunca había buscado así pero sin duda es un buen enlace para empezar.

Lástima no tener tiempo para todo.
Subir
Dj_Geizer
#12 por Dj_Geizer el 10/07/2003
http://www.u-he.com/vstsource/

Este es uno de los alegados a aquél. Te ayudará mucho, sobretodo para como el enlace indica diseño de DSP's sobre la tecnología VST
Subir
shockwavedj
#13 por shockwavedj el 11/07/2003
Lo mejor para empezar es dejar de lado filtros y demás y centrarte en hacer un simple amplificador:

y[n]=g·x[n]

Ya está. Parece poca cosa, no? Pero el asunto empieza a tener sus problemas. Por ejemplo, qué hacer cuando se amplifica por encima de la saturación? Se emplea recorte digital o algún tipo de emulación de semiconductores o válvulas? Y qué pasa cuando en vez de amplificar se atenúa? Y si se atenúa por un factor no múltiplo de 2, qué tipo de redondeo introduces para minimizar el ruido? Y cuando se amplifica por un factor con decimales?

Una vez que hayas resuelto estos problemas el paso siguiente puede ser convertir tu amplificador en un lfo de amplitud. Modula la amplitud de la señal de entrada con otra señal simple (sinusoide, cuadrada, etc...):

y[n]=g[n]·x[n]

donde g[n] es la señal moduladora. Puedes permitir que se manipulen algunos parámetros como la frecuencia de la señal, la profundida de modulación, etc...

Partiendo de esto, puedes intentar que ahora la moduladora sólo comience a funcionar cuando la señal supere un determinado umbral de amplitud o nivel y que sólo se module durante un ciclo de la moduladora. Sería un Lfo disparado por amplitud.

El siguiente paso es convertir tu lfo en una puerta de ruido. Ahora, en vez de ser una señal simple la que se dispara al superar un determinado nivel, lo que se dispara es una envolvente. Puedes distinguir varias etapas, aunque lo más sencillo es comenzar con un puerta pura y dura. Cuando se supera un nivel se amplifica (o se mantiene el nivel) pero cuando se cae por debajo de ese nivel, no sale nada.

y[n]=g·x[n] si el nivel es superior al umbral y
y[n]=0 si el nivel es inferior.

La cuestión ahora es, qué es el nivel de una señal? Pues en vez de trabajar directamente con el valor de la forma de onda x[n] que oscila mucho, podemos intentar obtener otro valor que también sea representativo de la señal pero que se mantenga estable en un determinado intervalo. A ese intervalo se le llama tiempo de integración y suele variar según el tipo de aplicación a que se destine. El nivel se obtiene del cuadrado del valor eficaz de la señal: xef^2=1/k·(x[n]^2+x[n+1]^2+x[n+2]^2+...+x[n+k-1]^2), que es la suma de k muestras de x[n] elevadas al cuadrado. Una vez obtenido el valor eficaz se pasa de magnitud lineal a logarítmica (dB) haciendo: L=10log(xef^2/xref^2) donde xref es un valor de referencia que en digital se considera como la ampltid de corte, saturación o clipping, que es lo mismo, y que vale 2^(B-1), donde B es el número de bits que ocupa cada muestra de audio. El -1 es porque respresentamos muestras positivas y negativas. Ahora ya puedes expresar el nivel de la señal, e includo hacer un picómetro.

Los siguientes refinamientos que pordías hacerle a la puerta es que se abriese con suavidad, emplenado algún tipo de envolvente simple, como un ASR (ataque, sostenimiento y desvanecimiento), lo que evitará que oigas clicks cuando tu puerta se abra y se cierre.

Y con esto creo que puedes empezar a meterte en el procesado de la dinámica. El siguiente paso serían los compresores y limitadores, que puedes realizar modificando esa puerta de ruido. Otro paso inportante es dispararlos no con la propia señal sino con otra, que puede ser la misma pero filtrada o, incluso, otra señal distinta.

Si te pones a hacer algo de esto, ya tienes para rato, y creo que he sido un poco más simple que Oppenheim, por lo menos para empezar.
Subir
Dj_Geizer
#14 por Dj_Geizer el 11/07/2003
Algo también muy apasionante es el mundo de la síntesis. Gran parte de estas cosas llevan diseños por bloques que ya han sido perfectamente modelados e integrados. Son como pequeños ladrillos listos para encajar de forma mucho más cómoda. Por supuesto cuando se requiera mayor control habrá que descender a otros niveles.

Tener conocimientos de programación es fundamental. Conocer las transformadas para tiempo discreto ayudará bastante. Hay muchos libros sobre DSP's... y tiene que haber mucho en internet. Tengo curiosidad por ese Kit de desarrollo de Steinberg, ¿ Alguien lo tiene ? ¿ Qué tal se trabaja con él ?.

Elogoxa ha trabajado sobre plug ins VST etc. Me gustaría mucho que alguien metido en la materia explicara un poquillo cómo se desarrolla un soft de este tipo, y cuales son las herramientas y ayudas con la que trabajan.

1 Entrevista ?? :idea: :)
Subir
shockwavedj
#15 por shockwavedj el 12/07/2003
El SDK (Software Development Kit o Plataforma de desarrollo en "castellano") de VST son un par de ZIPs con fuentes para cada uno de los sistemas operativos en que están disponibles hosts VST: Windows, MacOS, BeOS y IRIX. Que yo sepa Cubase sólo sale para los dos primeros, pero supongo que habrá alguna empresa que se dedique sobre todo al sector SGI, aunque BeOS no lo encuentro muy práctico.

En qué consiste en SDK? Pues en todo y a la vez en nada. Es decir. Tienes documentación, las librerías fundamentales y las definiciones de estructuras y objetos básicos (a fin de cuentas un plugin VST es un código ejecutable que se manipula a través de un objeto, dinámicamente). También viene ejemplos, entre ellos AGain.dll que es precisamente un módulo que funciona como un amplificador digital. Por eso planteaba esa progresión. Empezar con un ampli e irle añadiendo "cosillas", luego ya se puede uno empezar a complicar. Realmente hacer un efecto es "relativmente" fácil en VST pues la ventaja de esta arquitectura de plugins es que te permite olvidarte del interfaz gráfico, pues los host VST tienen la obligación de cargar un interfaz estándar si no existe GUI propio en el plougin. De hecho muchos VSTs tienen dos editores, el estándar y el propio.

Geizer, no estoy muy de acuerdo contigo en que lo primero sea meterse con transformadas. Creo que es importante manejar bien conceptos como la función en el tiempo y demás. Incluso te diría que es posible olvidarse de las transformadas y trabajr en el tiempo con convoluciones. Trabajar con números complejos no es nada fácil y requiere una buena dosis de abstracción. Y meterse en el mundo de la síntesis también tiene lo suyo. En cuanto trabajas con filtros tienes que empezar a calcular posibles retardos, esperar a que se llenen los bufferes de entrada que te va proporcionando el host y devolverlos justo en el momento adecuado, y también la sincronía MIDI entre la aplicación y el VST tiene lo suyo.

En cuanto a herramientas, pues un compilador es lo único imprescindible. En Windows se puede usar Visual C++. Yo intenté hacerlo con Bloodshed que es gratuito y me encontré con tal cantidad de errores que pasé de investigar. Los ficheros de muestra están para Visual C++. Luego te puede venir bien algún tipo de software de simulación y tratamiento matemático, para diseñar filtros y algoritmos, porque esperar a compilar y luego a cargar el plugin pra ver si está bien diseñado, es un auténtico infierno. Y por último, si decides hacerte tu propio GUI, cosa que tiene su miga, pues alguna aplicación tipo Photoshop, o específicas para diseñar botones rotatorios.
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo