def bits_to_samples(bits,samples_per_bit,
             npreamble=0,
             npostamble=0,
             v0 = 0.0,
             v1 = 1.0,
             repeat = 1):
    """ generate sequence of voltage samples:
          bits: binary message sequence
          npreamble: number of leading v0 samples
          npostamble: number of trailing v0 samples
          samples_per_bit: number of samples for each message bit
          v0: voltage to output for 0 bits
          v1: voltage to output for 1 bits
          repeat: how many times to repeat whole shebang
    """
    samples = [v0]*npreamble
    
    for i in range(len(bits)):
        vnext = v0 if bits[i] == 0 else v1
        samples = samples + [vnext]*samples_per_bit
    
    samples = samples + [v0]*npostamble

    return samples*repeat