I am interested in making a sampler, by which I mean a processor that can 
record and play back audio in response to trigger or gate signals.

rwtable is one primitive that might be useful for this. But if this isn't a 
good way to make a sampler, please let me know if there is a better way.

The rwtable documentation shows the implementation of a looper. There is a 
terse mathematical description, which matches my intuition of how rwtable would 
work, although it leaves out certain details such as the table size and what 
happens if the indices go out of bounds. I am having trouble understanding 
exactly how rwtable works, even after studying the looper implementation and 
exploring rwtable's behavior on my own. The documentation is a bit unclear on 
rwtable's semantics.

My intuition is that rwtable is a mutable array of static size. The write index 
controls which element in the table is assigned the value of the input signal. 
That is to say, if the write index were a constant function of time, then a 
particular element in the table would vary as a function of time identically 
with rwtable's input signal. Likewise, my intuition about its read behavior is 
that the output value of rwtable is the value of the element referred to by the 
value of the read index. Thus, if the read index is constant, then the output 
signal would be identical to the value of a particular element. When that 
element is written to, then rwtable's output signal changes to the value 
written.

More formally, the processor rwtable(s, i, n, _ n) for all s > 0, for all i, 
and for all n in [0, s - 1] is the identity function.

It is easy to test this hypothesis.

    process = os.osc(55) : rwtable(1024, 0.1, 42, _, 42);

The result, as demonstrated using faustide, is that the hypothesis is wrong. 
The output signal is a constant 0.1, not a 55Hz sinusoid.

This implies that the table isn't being written to. One guess I have is that 
the write index has to change in order for the table to be written. Indeed, the 
looper's write index changes, and it works. So this seems like the next thing I 
should investigate. But if I'm clearly making a mistake somewhere, please point 
it out.


_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to