framework español iphone objective-c core-audio signal-processing piano

iphone - español - cocoa framework



Generación de tonos en Cocoa Touch (6)

Consulte 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.

Necesito generar un tono que pueda manipular la frecuencia y la onda. El objetivo general es crear un piano básico. ¿Alguien sabe cómo puedo lograr esto?

Mi plataforma de desarrollo es el iPhone 2.x



Siempre puedes comenzar con olas de sin . :-)

#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() {} };


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.

Los armónicos segundo a noveno son más fuertes que el fundamental. Del décimo al vigésimo son casi tan ruidosos.

El 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 tienes los pocos más bajos a la derecha y la extraña dispersión inarmónica, lo harás 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