Potrzebuję wygenerować sygnał, który pozwoli mi manipulować częstotliwością i falami. Ogólnym celem jest stworzenie podstawowego fortepianu. Czy ktoś wie, jak mogę to osiągnąć?Generacja dźwięków w kakao Touch
Moja platforma rozwoju jest 2.x iPhone
Potrzebuję wygenerować sygnał, który pozwoli mi manipulować częstotliwością i falami. Ogólnym celem jest stworzenie podstawowego fortepianu. Czy ktoś wie, jak mogę to osiągnąć?Generacja dźwięków w kakao Touch
Moja platforma rozwoju jest 2.x iPhone
odjazdu http://mda.smartelectronix.com/. Są serią open source'owych wtyczek VST. Spójrz na źródło Piano, ePiano lub DX10. To jest tak proste, jak się znajdziesz.
Zawsze można rozpocząć od fal 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() {}
};
Apple Developer Forums ma gwint na ten ("Audio Synthesis"), które może stanowić źródło informacji.
Fortepian jest dziwny. Robert Moog napisał o tym w "Keyboard Magazine" w marcu 1980 roku. Podstawowy (częściowa najniższa częstotliwość) jest dostrojony, ale każda wyższa harmoniczna jest jaśniejsza (lub "ostrzejsza" lub wyższa), niż powinna być, i coraz większa.
Druga do dziewiątej harmoniczna jest głośniejsza niż podstawowa. Dziesiątą do dwudziestej jest tak głośno.
Fundament puchnie, a następnie nurkuje, po czym wraca. Pozostałe części mają charakterystyczne kształty w górę iw dół. Energia częściowa wymienia energię, więc całkowita objętość działa tak, jak można się spodziewać. Buts to rój częściowych transakcji handlowych. Zgaduję, że jeśli masz najniższe kilka prawych i dziwne, nieharmoniczne rozprzestrzenianie się, zrobisz to dobrze.
Można oglądać akcję w analizatorze spektrum oprogramowania i dowiedzieć się, co należy wiedzieć. Synteza addycyjna jest prawdopodobnie tym, w jaki sposób podjąłem ten problem.
Sprawdź kod przykładowy DefaultOutputUnit, który odtwarza falę sinusoidalną.
/Developer/Przykłady/CoreAudio/SimpleSDK/DefaultOutputUnit
Wyjazd Mobilesynth ... open source syntezator w App Store: http://code.google.com/p/mobilesynth/
Holy cow. Nie wiedziałem, że zostały otwarte źródła. Fantastyczny! – Nosredna