public Vector4[] Read(AudioContext ac) { Vector4[] data = new Vector4[ac.length]; //float[] beatphase = beatPh.Read(ac.clock.BPM/60.0,ac); //float[] oscphase = oscPh.Read((double)freq, ac); for (int n = 0; n < data.Length; n += ac.channels) { var ptn = new int[] { 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 }; float barpos = (float)ac.clock.readCache(n); float loopPhase = barpos % (ptn.Length * 1.0f / 8); var ptnphase = Pattern.Read(ptn, 1.0f / 8, barpos, ac); var trigP = ptnphase.y; float envA = (float)DSP.Env(0.001f, 0.1f, 1, trigP, ac); float envP = (float)DSP.Env(0.001f, 0.99f, 9, trigP, ac); var osc = oscPh.read(ac.baseFreq, ac); // float s = Sine(oscPh.read(freq, ac), ac) * amp * sawsq; float o = DSP.noise((float)osc) * envA; for (int i = 0; i < ac.channels; i++) { data[n + i] = new Vector4(o, trigP, envA, loopPhase); } } return(data); }
public Vector4[] Read(List <Note> ptn, float stepLength, AudioContext ac) { Vector4[] data = new Vector4[ac.length]; //float[] beatphase = beatPh.Read(ac.clock.BPM/60.0,ac); //float[] oscphase = oscPh.Read((double)freq, ac); for (int n = 0; n < data.Length; n += ac.channels) { float barpos = (float)ac.clock.readCache(n); float loopphase = (float)Clock.Phase(barpos, 2.0); var ptnphase = Pattern.Read(ptn, barpos); var trigP = ptnphase.phase; var note = ptnphase.note; var scale = Note.NotenumToScale(note.noteNum, ac); var pitch = Note.ScaleToFreq(scale, ac); var osc = Read((float)pitch, (float)trigP, ac); // float s = Sine(oscPh.read(freq, ac), ac) * amp * sawsq; float envA = (float)DSP.Env(0.01f, 0.99f, 1, trigP, ac); float o = ((float)osc) * (envA); for (int i = 0; i < ac.channels; i++) { data[n + i] = new Vector4(o, envA, (float)pitch, loopphase); } } return(data); }
public Vector4[] Read(AudioContext ac) { var data = new Vector4[ac.length]; //float[] beatphase = beatPh.Read(ac.clock.BPM/60.0,ac); //float[] oscphase = oscPh.Read((double)freq, ac); for (int n = 0; n < data.Length; n += ac.channels) { //float[] barphase = phase; float loopphase = (float)Clock.Phase(ac.clock.BarPosition, 1.0); var phase = ac.clock.readCache(n); float beatphase = (float)Clock.Beat4th(phase); float envA = (float)DSP.Env(0.001f, 0.99f, 1, beatphase, ac); float envP = (float)DSP.Env(0.001f, 0.8f, 6, beatphase, ac); var osc = oscPh.read(0.5 * ac.baseFreq * envP, ac); // float s = Sine(oscPh.read(freq, ac), ac) * amp * sawsq; float o = DSP.Sine((float)osc, ac) * envA; for (int i = 0; i < ac.channels; i++) { data[n + i] = new Vector4(o, beatphase, envA, loopphase); } } return(data); }
public Vector4[] Read(List <Code> ptn, float stepLength, AudioContext ac) { Vector4[] data = new Vector4[ac.length]; //float[] beatphase = beatPh.Read(ac.clock.BPM/60.0,ac); //float[] oscphase = oscPh.Read((double)freq, ac); //var nptns = new List<Note[]>(); //var ptns = nptns.ConvertAll(new Converter<Note[], int[]>(Pattern.NoteToNum)); for (int n = 0; n < data.Length; n += ac.channels) { for (int c = 0; c < ac.channels; c++) { float barpos = (float)ac.clock.readCache(n); float loopphase = (float)Clock.Phase(barpos, stepLength); var outd = Pattern.Read(ptn, barpos); var trigP = outd.phase; var code = outd.note; if (code.noteNums.Length > oscs.Count) { for (int i = 0; i < code.noteNums.Length - oscs.Count; i++) { oscs.Add(new OSC()); } } float envA = (float)DSP.Env(0.2f, 0.8f, 1, trigP, ac); float val = 0; int count = 0; var notes = from note in code.noteNums select new { scale = Note.NotenumToScale(note, ac), freq = Note.ScaleToFreq(Note.NotenumToScale(note, ac), ac) }; var freqs = notes.Select(note => (float)note.freq); var scales = notes.Select(note => note.scale); val = Read(freqs, ac) * envA; data[n + c] = new Vector4(val, envA, 0, loopphase); } } return(data); }