As Grunt doesn't support only rebuilding what has changed, I'd like to wrap a Makefile around it, to just compute the set of "input" files and not invoke grunt at all, unless any of them have changed since last build.

Can you tell grunt to just list what files a given task would depend on on stdout somehow?


Question: NRZ vs. Manchester pulse shaping filter (Modulator)
Answer: Manchester coding effectively creates a bit sequence that is twice as long as the given bit sequence and then applies NRZ pulses to the resulting bit stream.
There are two types of Manchester coding. In one form, each $0$ in the original
sequence is replaced by $01$ and each $1$ by $10$ while the other form complements
these bit patterns.  Using the first form, 
$$101011 \to 10\,01\,10\,01\,10\,10$$ while the second form gives the complementary
bit sequence $01\,10\,01\,10\,0101$. If each data bit is of duration $T$, the NRZ
waveform with Half Sine pulses has sines of period $2T$ so that each bit
pulse has duration half a period. Thus, that leading $1$ gets
modulated to $\sin(\pi t/T)$ lasting from $t = 0$ till $t = T$.
With Manchester coding, each channel bit
(of duration $T/2$) gets a Half Sine of a sine of period $T$. Put another 
way, 


with plain NRZ, that first $1$ in your bit sequence will have
pulse $\sin(\pi t/T)$ lasting from $t = 0$ to $t = T$. This is a positive
going pulse rising from $0$ at $t=0$, peaking at $1$ at $t=T/2$, and
falling to $0$ at $t = T$
with Manchester coding, that data $1$ will become channel $10$ giving a positive pulse $\sin(2\pi t/T)$ from $0$ to $T/2$. The next channel bit
$0$ has the delayed half-sine pulse $\sin(2\pi (t-T/2)/T$ from $t=T/2$
to $t = T$, but with a negative amplitude (the channel bit 
during this interval is $0$ instead of a $1$) which
works out to be
$$\begin{align*}
-\sin(2\pi(t-T/2)/T) &amp;= -\sin(2\pi t/T - \pi)\\
&amp;= -\sin(2\pi t/T)\cos(\pi) + \cos(2\pi t/T)\sin(\pi)\\
&amp;= \sin(2\pi t/T)
\end{align*}$$
lasting from $t = T/2$ to $t = T$. In short, during the entire data
bit interval $[0,T]$ the signal can be expressed as $\sin(2\pi t/T)$
and is one cycle of the sine wave of period T. If the data
bit were a $0$ instead of a $1$, the channel bits would be $01$
and we would get $-\sin(2\pi t/T)$ from $t=0$ to $t=T$. In short,
Manchester coding with half-sine pulses
effectively creates a phase-modulated signal
from the data sequence with a carrier frequency of $1/T$ Hz and
each data bit interval contains exactly one period of the sinusoid.
If you look at the figure for Thomas's Manchester coding
in Wikipedia,
what we have is the $\pm$ rectangular pulses comprising each
data bit interval, which look like a hard-limited sinusoid
of period $T$, being replaced by the sinusoid.



  The OP says, "My thoughts are that with a Half Sine ....  pulse shaping 
  filter, I will see the transitions between the 1's and 0's smooth out,..."
  but this does not happen, there will be abrupt reversals of carrier
  phase at those data bit boundaries where there is a transition
  from $0$ to $1$ or from $1$ to $0$, pretty much as happens
  in plain PSK.