ich mit dem Web Audio API bin experimentieren und mein Ziel ist es, eine digitale Gitarre zu schaffen, wo jeder String eine anfängliche Schallquelle einer tatsächlichen Gitarre der Zeichenfolge offen zu spielen und dann möchte ich alle anderen Bund Position Sounds dynamisch erzeugen. Nach einigen Nachforschungen über das Thema (das ist alles ziemlich neu für mich) klang es so, als könnte man das erreichen, indem man die Frequenz des Quell-Sound-Samples ändert.Wie verschieben/modulieren Audiopuffer Frequenz mit dem Web Audio API
Das Problem ist, ich habe zur Veränderung synthetisierten sin Wellen viele Algorithmen gesehen, aber nichts, um die Frequenz einer Audio-Probe zu ändern. Hier ist ein Beispiel von meinem Code eine bessere Vorstellung davon zu geben, wie ich versuche, diese zu implementieren:
// Guitar chord buffer
var chordBuffer = null;
// Create audio context
var context = new webkitAudioContext();
// Load sound sample
var request = new XMLHttpRequest();
request.open('GET', 'chord.mp3', true);
request.responseType = 'arraybuffer';
request.onload = loadChord;
request.send();
// Handle guitar string "pluck"
$('.string').mouseenter(function(e){
e.preventDefault();
var source = context.createBufferSource();
source.buffer = chordBuffer;
// Create javaScriptNode so we can get at raw audio buffer
var jsnode = context.createJavaScriptNode(1024, 1, 1);
jsnode.onaudioprocess = changeFrequency;
// Connect nodes and play
source.connect(jsnode);
jsnode.connect(context.destination);
source.noteOn(0);
});
function loadChord() {
context.decodeAudioData(
request.response,
function(pBuffer) { chordBuffer = pBuffer; },
function(pError) { console.error(pError); }
);
}
function changeFrequency(e) {
var ib = e.inputBuffer.getChannelData(0);
var ob = e.outputBuffer.getChannelData(0);
var n = ib.length;
for (var i = 0; i < n; ++i) {
// Code needed...
}
}
So dort haben Sie es - ich kann den Klang spielen ganz gut, aber bin ein bisschen eine lose wenn es darum geht, den Code in der changeFrequency Funktion zu erstellen, die die Akkordprobenfrequenz ändern würde, so klang es wie eine andere Bundposition auf der Schnur. Jede Hilfe mit diesem Code würde geschätzt oder Meinungen darüber, ob das, was ich versuche, sogar möglich ist.
Danke!
Sie einen Sampler zu machen. Sie werden viel mehr Samples als eine einzelne Saite wollen. Sie benötigen mindestens zwei Samples pro Oktave, wenn Sie einen anständigen Sound wünschen. Selbst dann ist eine Gitarre ein sehr komplexes Instrument, das nur mit Samples nachgebaut werden kann. – Brad