• stuckboy

    Hi,

    I want to use pd to control 40 output channels using a 64 channel RME HDSP-MADI device. Does anyone have any experience about using many channels in pd/using MADI with pd?

    I am working in windows XP and my problem is that I can only use 2 audio channels at a time when using ASIO. When i'm using the standard driver I can get up to 8 channels working simultaneously, but this is not good enough.

    I found the following on google:

    http://lists.puredata.info/pipermail/pd-list/2006-03/036629.html

    but they are working in linux. Is it even possible to use pure data with MADI in windows?

    Many thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hi,

    I would like to use [vd~] to create a doppler shift style pitch change, but I am having some problems.

    The delay length is calculated on the control level, I don't have the option of calculating it using signal math since this would be too computationally expensive. The problem is that the signal will obviously jump every 1 ms when the control level updates, which creates a horrible ring mod esque effect.

    I tried using [line~] from the cyclone pack as follows:

    input control value
    |\
    | \
    | \
    | [1[
    | |
    [line~]
    |
    output delay line length signal

    to try and interpolate between the 1ms spaced control values. This seemed to have some benefit but the pitch shifted sounds still sounded pretty bad.

    I'm fairly sure this isn't due to aliasing in the delay line because the sound I'm using is resampled to 44.1KHz from 11.025KHz.

    Any help would be greatly appreciated.

    Ben

    posted in technical issues read more
  • stuckboy

    Hi,

    I've made an abstraction for which the argument is the table length in ms. I want to create a table of the correct length in samples. How is it possible to do the ms to samples conversion bearing in mind table size can only specified by an argument not an inlet?

    Hope that made sense.

    Thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hi,

    I want to be able to write to and read from a table at a index specified by a signal. That is to say if I have two signals x(n) and y(n), where n is the time in samples, I would like to be able to do

    table(y(n)) = x(n)

    i.e. y(n) is used as the index for the table.

    Is this at all possible in pd?

    Many thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hi,

    I have been trying to create a sample accurate timer (i.e. will always increase by 1 each sample). I've tried using phasor~ and vline~ but they seem to hiccup on the occasional sample which is unacceptable for what I'm trying to do. Do any of you know a solution?

    Many thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hi,

    A common problem I run into is that I will have an expr object evaluating an expression based on multiple inputs which are generally sent to the expr in no particular order.

    I would like to make it so that every time the expr object receives ANY input, it re-evaluates the output. There are several ways I can think of doing this, but I was wondering what is the best/neatest way?

    Thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hi all

    Is there any way to control the order of inlets that appear on an abstraction/subpatch? Other than creating them in the right order that is.

    Thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hello,

    Is there a way to generate a unique ID as a float from a symbol input?

    Thanks

    Ben

    posted in technical issues read more
  • stuckboy

    Hello all,

    I'm working on building a multichannel surround sound processor for a university project. This involves taking a description of each sound source in the scene (i.e. audio signal, position) and processing it for a large number of output channels.

    From my current limited experience of pd and the literature I have read, it seems the way to do this would be to duplicate all the processes as many times as they are needed within the patch. This seems awfully inelegant though, and limits the flexibility of the patch.

    I was wondering if there is an automatic way to carry out lots of parallel processes at once. For example I have an arbitrary process "process~" and I have 4 input signals "s#" and 4 input numbers "f#" and I want to receive 4 outputs "s#'".

    [s1 s2 s3 s4] [f1 f2 f3 f4]
    | |
    | _________
    process~
    |
    |
    [s1' s2' s3' s4']

    Which is equivalent to...

    s1 f1
    | |
    | |
    process~
    |
    |
    s1'

    s2 f2
    | |
    | |
    process~
    |
    |
    s2'

    etc...

    I hope I've made myself clear, please let me know if not.

    Thanks in advance!

    Ben

    posted in technical issues read more
  • stuckboy

    Hi,

    The attached patch dsdelay is supposed to be a variable delay line with a moving write point. vd~ uses a moving read point which is acceptable for most applications but not what I am working on. I have implemented my moving write point delay line in MATLAB and it works reasonably well. However I am experiencing issues with PD implementation.

    The patch uses a table to store the delay line values and is supposed to use a circular delay line method (i.e. the read/write points shift with time instead of the actual elements of the delay line). The intention is that the read point shifts along the delay line by one sample per sample, and the write point does the same whilst the delay is not being altered. The write point uses a simple two point extrapolation to allow writing at fractional table indices.

    I'm having two problems:

    1. I can't find a satisfactory method of wrapping signal values in an arbitrary range. I want to be able wrap a signal value between 0 and 44100 for example, but using

    |
    [/~ 44100]
    |
    [wrap~]
    |
    [*~ 44100]
    |

    gives rise to rounding errors which create artifacts in the output. This is why in the current state, the output is intermittent rather than continuous.

    2. For some reason the 2 point extrapolation seems to be not working correctly. I'm getting a ring modulation type effect on the output. In MATLAB the addition of the two point extrapolation helped to minimise artifacts when the delay time was being altered. Altering the delay time gives rise to horrible artifacts at the moment though.

    Any pointers on how to get this working properly would be greatly appreciated.

    Thanks

    Ben

    http://www.pdpatchrepo.info/hurleur/test.zip

    posted in technical issues read more
  • stuckboy

    Thanks for your response.

    I don't want to do the calculations at the signal level because the equations are pretty complicated and there are 40 instances of them, I need to save all the computing power I can really.

    Thanks for the tip about vline~, that worked perfectly with a line length of 20ms

    posted in technical issues read more
  • stuckboy

    Oh and by the way, thanks for the tip about expr~ it worked perfectly. Problem #1 solved.

    I think the problem might be that I am using multiple instances of [poke~] and I don't know if they are properly synchronised.

    posted in technical issues read more
  • stuckboy

    If you're interested, I'm working on a DSP system for wave field synthesis. WFS is an audio rendering technique where an array of loudspeakers is used to reproduce the sound field within a region.

    http://en.wikipedia.org/wiki/Wave_field_synthesis

    You can simulate Doppler effects etc using a standard variable delay, but it is not an entirely accurate way to simulate sound emitted from a moving source. For example the effects of a change in delay will be heard instantly for a standard variable delay, whereas for a real moving source a change in position will only be heard after the transit time delay.

    You are right of course about the skipping of samples. My MATLAB tests have shown me that this gives rise to a type of aliasing when the sound is slowed down by a lot. Thankfully, with the extrapolation for writing to fractional positions, the effect is rather subtle although by no means inaudible. This could be gotten around by looping through every sample between the position change, but I'm pretty sure that would be impossible in pd.

    I am doing this because I want to compare various methods of realising moving sources.

    posted in technical issues read more
  • stuckboy

    The "hiccups" were that it would occasionally skip a sample, actually I've just tried multiplying the phasor output by 44099 and it has the same problem- it occasionally plays the same sample twice. I'm going to use count~ I think.

    Thanks for your help

    posted in technical issues read more
  • stuckboy

    Thanks I've just realised my error, I multiplied th output of phasor by 44100, but I should have multiplied it by 44099. Thanks for bringing the count object to my attention though, I think I will probably use that instead.

    Thanks

    posted in technical issues read more
  • stuckboy

    Thank you for the prompt response! That is exactly what I was looking for :-)

    posted in technical issues read more
  • stuckboy

    Thanks very much.

    posted in technical issues read more
  • stuckboy

    Ok thanks, could you tell me how I send in 4 audio signals one after another and get 4 signals back out again?

    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!