howdy, although it makes perfect intuitive sense that the initial waveform of triangle~ is a triangular function when no argument is present, that implies a "0,5" argument.
I found out that in Max, if no argument is present, it considers it to be "0", and then loads the waveform according to that argument (a saw like waveform).
I was copying a Max patch to Pd and it took me a while to figure that this was the issue/bug. The Pd object needs to be fixed to be made compatible.
cheers