Although Miller and others talk about Pd as a 'language', always with quote marks,
I don't use the quotemarks - I mean, not those that suppose some kind of illegitimacy. In a wide meaning of the word, a language doesn't have to be something verbal or written with letters. Though the etymology points back to a part of the mouth, most would consider the phrase "written language" to not be a contradiction of terms. Here I used quotemarks only as delimiters of a phrase (like I usually do anyway), and not to belittle the phrase.
Yeah, I'm with ya. For me those quotemarks say beware the usage of the word, because it does imply some illegitimacy against the commonly understood meaning. They say, if you were hoping to write a program in Pd using vi then you're in for a shitty time. Not to denigrate that word though, since as a "powerful means to express ideas" it's a language. I pretty much always call it a visual language with care to prefix with the "visual", but of course it doesn't even have to be that interface. The thing that is really Puredata is the bit we dont see, the engine plugging together and executing the objects. In that way it's like a bytecode interpreter. I think we can safely say it's not like a written language the way most people think of one. For the love of kittens please don't tell me you DO write your Pd programs in vi and only noobs use the GUI :)
it doesn't have that syntactic structure
What's missing in it, in order to have a syntax?
No, it's got syntax, at many levels, functionally, because it must have to work. But not *that* syntax, "that" being its representation, as a fixed written language with linewise ordering in a file. In Pd GUI your syntax is spacially all over the place. That's nice, it changes your thinking because you can put down the essential operators as they come to mind and then plumb them up later, whereas with a written language is forming statements like sentances starting at the left side and finishing on the right. It's a different kettle of badgers completely. And it's got a syntax in the sense of strictness, the way blocks are evaluated, so if you don't know and obey the rules it won't work just like any other language.
or computational causality either.
How can Pd execute a patch then?
I don't see a lack of causality.
Me neither, unless Millers cracked some quantum jiggerypokery without saying. I mean expression of it. Not exactly elegant in Pd is it? There's always good old [until], "only a matter of time [until] you're gonna have to reboot".
If I remember right a tracker file stores the samples as well as the timing sequences so they'd have to be read into arrays. (?)
Conceptually you need a 1-D array for the order, a 3-D array of structs for the patterns (pattern#,row,channel), and one array per sample. I say conceptually because the actual layout could be different if it makes things any easier.
For Impulse Tracker files, the 3-D array is to be replaced by a sequence of 2-D arrays because each pattern may have a different number of rows; and also there's the concept of instrument which inserts itself between the concepts of pattern and sample.
That's quite a powerful structure, and the instruments layer makes sense for a polyphonic audio sequencer that wants to deal with multi playbacks from the same table. It would be really interesting to see what ways people came up with for representing that data with a way to read and write MOD files to and from a generaly open ended datastructure sequencer like Franks.
a.