Necesito generar un tono que pueda manipular frecuencia y onda. El objetivo general es crear un piano básico. ¿Alguien sabe cómo puedo lograr esto?Generación de tonos en Cocoa Touch
Mi plataforma de desarrollo es el iPhone 2.x
Necesito generar un tono que pueda manipular frecuencia y onda. El objetivo general es crear un piano básico. ¿Alguien sabe cómo puedo lograr esto?Generación de tonos en Cocoa Touch
Mi plataforma de desarrollo es el iPhone 2.x
Salida http://mda.smartelectronix.com/. Son una serie de plugins VST de código abierto. Mira la fuente de Piano, ePiano o DX10. Es tan simple como lo que vas a encontrar.
Siempre puede comenzar con sin
waves. :-)
#include <cmath>
typedef double Sample;
typedef double Time;
class MonoNote {
protected:
Time start, duration;
virtual void internalRender(double now, Sample *mono) = 0;
public:
MonoNote(Time s, Time d) : start(s), duration(d) {}
virtual ~MonoNote() {}
void render(double now, Sample *mono) {
if (start <= now && now < start + duration) {
internalRender(now, mono);
}
}
};
class MonoSinNote : public MonoNote {
Time freq;
Sample amplitude;
protected:
void internalRender(double now, Sample *mono) {
const double v = sin(2*M_PI*(now - start) * freq);
*mono += amplitude*v;
}
public:
MonoSinNote(Time s, Time d, Time f, Sample a) : MonoNote(s, d), freq(f), amplitude(a) {}
~MonoSinNote() {}
};
Apple Developer Forums tiene un hilo en este ("Audio Synthesis") que podría proporcionar una cierta penetración.
Piano es extraño. Robert Moog escribió sobre esto en Keyboard Magazine en marzo de 1980. El fundamental (frecuencia más baja parcial) está en sintonía, pero cada armónico superior es más brillante (o "más agudo" o más agudo) de lo que debería ser, y en una cantidad creciente.
El segundo a noveno armónicos son más fuertes que el fundamental. Del décimo al vigésimo son casi tan ruidosos.
El elemento fundamental se hincha en volumen y luego se sumerge, luego vuelve. Los otros parciales tienen formas ascendentes y descendentes características. Los parciales intercambian energía por lo que el volumen general actúa como era de esperar. Pero es un enjambre de parciales que comercian energía. Supongo que si obtuvieras los pocos más bajos a la derecha y la extraña dispersión inarmónica, lo harías bien.
Puede ver la acción en un analizador de espectro de software y aprender lo que necesita saber. La síntesis aditiva es probablemente la forma en que asumiría el problema.
Consulte el código de ejemplo DefaultOutputUnit que reproduce una onda sinusoidal.
/desarrollador/Ejemplos/CoreAudio/SimpleSDK/DefaultOutputUnit
Salida Mobilesynth ... un sintetizador de código abierto en la tienda de aplicaciones: http://code.google.com/p/mobilesynth/
vaca Santo. No sabía que esos habían sido fuente abierta. ¡Fantástico! – Nosredna