--- Frank Barknecht fbar@footils.org wrote: > Hallo,
Claudius Maximus hat gesagt: // Claudius Maximus wrote:
- [block~ 1] doesn't work
The block size is set to 64 instead. Moreover:
block~ can not be used in the patch with the adc~/dac~, you need a subpatch then. Block also does not change the lowest message speed in objects like [del], which is limited below by 64 samples.
Is there a list of objects which do not behave in a continuous way as you decrease the block size below 64? I'd hate to run into trouble again when I least expect it. Perhaps [bang~] or [timer] are some of these objects, which would break the [block~ 1] tests I detailed below.
- How do I read bytes from a binary file into an
array?
Treating them as integers from 0 to 255.
I don't know an object that opens files in bin-mode, but it could be written as an external.
I do not have a Windows C compiler. I need to investigate whether there are any freely available, can you recommend one?
- How do I build messages out of symbol
arguments?
|set $1( doesn't work as expected when I send it
a
symbol.
What did you expect it to work like?
Well, as I describe below it wasn't a symbol I was sending it anyway, but an identifier. I expected it to replace $1 with the identifier name that was input.
- How do I send messages to $0-name arrays?
|;$0-name x y z( doesn't work.
There is no $0 in messages, you just invented this. ;) To send to local variable, need to make a message that accepts a variable:
[; $1-name x y z(
and send $0 as first argument to that:
[f $0] | | [; $1-name x y z(
you also could use [symbol $0-name] directly. Example attached.
Many thanks, that's exactly what I needed.
Frank Barknecht _
--- zmoelnig@iem.at wrote:
Zitiere Claudius Maximus
gloriousclaudiusmaximus@yahoo.co.uk:
- [block~ 1] doesn't work
it does. (at least in pd-0.36; i'll have to make the pc i am sitting at compile first, before i can try 0.37)
The block size is set to 64 instead. Moreover:
how do you know ? i tested it with [pack~].
I tried 3 methods of getting [block ~1] to work, all failed.
1: block1test1.pd Window with a [block~ 1] and objects to display the block size. Doesn't work, block size is actually 64.
2: block1test2.pd Window with a [pd ...] subpatch, subpatch contains a [block~ 1] and objects to display the block size. Doesn't work, block size is actually 64.
3: block1test3a.pd, block1test3b.pd 3a is a window with a [block1test3b] use of an abstraction and a number box to display the block size coming from the outlet. 3b is a window with a [block~ 1] and objects to display the block size, together with an outlet outputting the block size. Doesn't work, block size is actually 64.
I first noticed this bug trying to output audio (sound was way lower in pitch than it should have been with mid-freq aliasing noise), but I've since modified those patches to use a workaround so I'm afraid I can't post them here.
C:>pd -blocksize 1
i don't think that this is a working setting. pd's dac/adc-blocksize used to be somewhat hardcoded to 64 samples (but this might have changed with 0.37; i'm a little bit behind in that matters) and of course your soundcard/driver would have to support such small blocksizes.
I see. A friendly error message would have been nicer ;-)
- How do I read bytes from a binary file into an
array?
Treating them as integers from 0 to 255.
there was something like [read16 /path/to/my/file.dat(
I guess I could use [soundfiler] to read the data as a raw 8-bit sound file, and then calculate the real byte values. Not very elegant though ;-)
- How do I build messages out of symbol
arguments?
|set $1( doesn't work as expected when I send it
a
symbol.
depends on what you expect. you might argue, that when setting a message with [set $1( where $1 is a symbol the set message should output a symbol when banged/clicked. However you easily acchieve this by using [set symbol $1(.
It is often quite hard to distinguish between "symbols" and so called anythings , especially for newbies. There is really a difference between [hallo( (being an identifier "hallo") and [symbol hallo( (being the symbol (identified by "symbol") "hallo")
I think I understand now: [sawtooth( is sent as an identifier rather than a symbol, so I need to put it through a [symbol] object to turn it into a real symbol. After that, routing it into a [set $1( works as I expected, outputting "set sawtooth". As a diagram:
[sawtooth( | | "sawtooth" | [symbol] | | "symbol sawtooth" | [set $1( | | "set sawtooth" v
- How do I send messages to $0-name arrays?
|;$0-name x y z( doesn't work.
to send something to your array named "$0-name" use:
[x y z( | [send $0-name]
Thanks, I've got that working :)
mfg.as.dr IOhannes
What I am trying to do is create an oscillator with switchable waveforms, and the ability to synchronize the oscillators (osc2 restarts when osc1 restarts, need better resolution than 64 samples for this).
I want the subpatch to be able to receive messages like [waveform square( or [waveform sawtooth(, which it converts to messages like [set X( where X is the name of a local array like $0-sawtooth or $0-square. The [set X( message is then
sent to a [tabosc4~]. See symboltest1*.pd - it uses $1 from the abstraction arguments because $0 was invisible and I wanted to see what was happening).
I was doing it wrong when I first tried, but now I think I've found a bug in the message box:
[set $1 $2( -> "set aardvark sawtooth" when I feed it a pair of symbols "aardvark sawtooth". But when I try to put a "-" instead of the space between the variables:
[set $1-$2( -> "set aardvark-$2" instead of "set aardvark-sawtooth". A problem.
Are there prizes awarded for finding bugs? I would like my prize to be an umbrella - I need to go to the post office but it's raining.
A solution to the waveform selection problem is:
[route sawtooth square ...]
| | ... |
|
[trigger bang]
|
|
[symbol $0-sawtooth]
|
|
[set $1(
|
|
[whatever wants to read the array]
which would mean more work when adding new waveforms (need to create new waveform array, modify route and create a new trigger-symbol-message trio, instead of just creating the new waveform array), but has the advantage that I can add a sensible error message for unrecognised waveform names.
Many thanks to both of you for your swift and helpful replies.
http://www.claudiusmaximus.tk Each unsolicited commercial email received is subject to a US$50 handling fee.
Want to chat instantly with your online friends? Get the FREE Yahoo! Messenger http://mail.messenger.yahoo.co.uk