2010-07-31 8 views
3

Ok, celui-ci peut être un peu hors du champ gauche, mais je vais essayer de toute façon. Un pad est une sorte de son électronique ambiant qui «bourdonne» en quelque sorte. Quelque chose comme this.créer par programme un son de pad

Comment puis-je produire ceci en code? En utilisant soit Processing, OpenFrameworks, C, Objective-C ou C++. Gardez à l'esprit que je n'ai pas programmé depuis longtemps.

Je serai très impressionné si cela aboutit à une réponse!

Okay ... Allez!

Répondre

5

Je n'ai jamais entendu le terme «pad» tel qu'il est appliqué ici, mais cela ressemble à un son d'orgue de synthé, jouant des accords majeurs. Pour commencer, pour représenter une seule note, vous pourriez générer des ondes sinus à la fréquence fondamentale de la note (disons 440 Hz si nous parlons d'un A majeur) et les quelques suivants (880, 1760) , 3520) et les additionner de quelques poids (diminuant). Ajoutez ensuite les autres notes de l'accord (C# et E) rendues de la même manière.

Si cela vous semble utile jusqu'à présent, je peux développer si nécessaire.

EDIT: Par "quelques (diminuant) poids", j'ai voulu dire ajouter des harmoniques fois une certaine amplification, par ex.

F = 440; // Hz 
tone[t] = A * sin(t/F) + B * sin(t/(2*F)) + C * sin(t/(3*F)); // + etc, perhaps 

où, peut-être,

A = 1.0; 
B = 1.0/2.0; 
C = 1.0/3.0; 

ou quelque chose comme ça. Pour un filtre ADSR (look up), vous multipliez la forme d'onde générée par une amplification qui augmente de 0 à 1 pendant la période d'attaque que vous choisissez, puis chute pendant la période de "décroissance" jusqu'à un certain nombre vous choisissez (peut-être 0,7), puis descend à 0 linéairement lorsque vous "libérez" la note soutenue. Pour l'écho/réverbération, vous pouvez ajouter de nouveau la forme d'onde avec un certain retard, par ex.

D = 4410; // 10 msec at 44.1 kHz., as an example value 
tone[t] += 0.5 * tone[t-D]; 
+0

Oui, ce qui est utile. Je l'ai déjà implémenté dans le traitement et ça commence à bien paraître. Un couple de choses: 1. Que voulez-vous dire par «quelques poids décroissants»? 2. J'ai entendu dire que les longues attaques, les phases de relâchement et les retards bruyants peuvent aussi aider, mais ne savent pas par où commencer. Aucun conseil? –

2

Je ne peux pas vous aider avec des exemples concrets de code, mais je dirais que quelque chose de semblable à cet échantillon sonore de la vôtre pourrait être fait avec synthèse FM (modulation de fréquence). Avant d'écrire un code, vous pouvez télécharger n'importe quel logiciel de synthétiseur FM à partir d'Internet (il existe de nombreux logiciels disponibles gratuitement, certains en tant qu'applications autonomes, certains en tant que plug-ins VST) et expérimenter un peu, et si vous le pouvez produire le son que vous voulez, écrivez le code correspondant. (A ce moment-là, il y a de fortes chances que vous sachiez quelle combinaison d'oscillateurs, de fréquences etc. vous avez besoin.)

2

Si vous n'êtes pas programmé en programmation sonore, vous devriez jeter un oeil au son java, car c'est vraiment facile apprendre et utiliser. Je sais que vous avez tagué C * mais je ne sais pas s'il existe une API aussi simple. Créer un son est fondamentalement ce que Grumdrig a dit, vous "juste" devez combiner des ondes différentes de telle sorte que vous aimez le son.;-)

Questions connexes