Max potpourri externals

By Eric Lyon

Have been relocated to:

https://github.com/ericlyon/LyonPotpourri-MaxMSP

Object Listing:

- adsr~ a simple ADSR envelope that can be click triggered
- arrayfilt~ fft-based filtering by drawing into an array
- bashfest~ a click driven buffer player with randomized DSP
- buffet~ provides operations on a stored buffer
- bvplay~ selective playback from a stored buffer with enveloping and increment control
- cartopol~ convert a spectral frame from cartesian to polar form
- channel~ access to a precise address in the signal vector
- chopper~ munging loop playback from a buffer
- clean_selector~ like selector~ but crossfades when switching channels
- click~ converts a bang to a click
- click2float~ translates a signal click to a float message
- clickhold~ sample and hold a click
- convolver~ non-real-time convolution with impulses of arbitrary size
- distortion~ lookup function distortion
- dmach~ pattern based sample accurate drum machine prototype
- expflam~ converts a click to an exponential flam click pattern
- flanjah~ simple flanger
- function~ write various functions into an array
- granola~ granular pitch scaling
- granulesf~ granular synthesis module reading from a soundfile in a buffer
- granule~ granular synthesis module reading from a stored waveform in a buffer
- greater~ compares two signals on a per-sample basis
- kbuffer~ low sampling rate buffer to capture gestures
- killdc~ DC block filter
- latch~ sustain an incoming click with sample-accurate timing
- magfreq_analysis~ transforms a time domain signal to a magnitude/frequency spectrum
- markov~ implements a first order Markov chain
- mask~ a click driven pattern sequencer
- npan~ power-panning to an arbitrary number of output channels
- oscil~ oscillator with flexible waveform specification
- phasemod~ phase modulated waveform
- player~ click driven buffer player that can sustain multiple iterations
- poltocar~ convert spectral frame from polar to complex representation
- pulser~ pulse wave generated by additive synthesis
- quadpan~ pan an incoming sound within a quadraphonic plane
- rotapan~ rotate an array of input channels to the same number of output channels
- rtrig~ generates random click triggers
- samm~ sample accurate multiple metronomes, with click signal articulation
- sarec~ sample accurate recording
- sel~ sample-accurate implementation of the sel algorithm  
- shoehorn~ collapse from a larger number to a smaller number of audio channels
- sigseq~ signal level numerical sequencer
- splitbank~ - split an incoming sound into complementary, independently tunable spectra
- splitspec~ split an incoming sound into complementary spectra
- squash~ implementation of a compression algorithm by Chris Penrose
- stutter~ stuttering playback from an array
- vdb~ a delay line using an array for storage (no vector limit on feedback delaytime)
- vdp~ a simple, self-contained delay unit
- vecdex~ outputs the sample index within the current signal vector 
- waveshape~ a Chebychev function lookup waveshaper
- windowvec~ apply a Hann window to the input signal vector

decoding RTTY in Max

Using a local clock

(update 12/18/2013) Here is a video that shows acoustic coupling between to computers running RTTY in Max at 12.5 bits/second

Next version will have better syncing within the patch (i.e.., sample accurate timing, instead of [metro], [delay], and [snapshot]

original post

Have added stop and start bits to ascii rtty signal and reversed mark and space to the normal setting.

The current local test patches are:

tkzic/max teaching examples/

  • rtty-sim7.maxpat
  • rtty-recv7.maxpat

Accurate communication only works at very low speeds – around 11 bits/sec.  The timing on the receive side is very critical. The way it works now, is that it uses the first start bit, after a period of inactivity, to reset the clock. The ‘delay’ setting for the clock seems to be the key factor in whether the bits get read as characters.

I think that any speed increases at this point will require sample accurate timing on both send and receive sides. But as a proof of concept we have a decent start.  Its also possible that the filtering/bit detecting could be improved – but again, this is a matter now of precise timing adjustments at the sample level – and using more frequent and accurate clock adjustments on the receive side to maintain sync.

The Baudot code

http://www.dataip.co.uk/Reference/BaudotTable.php

Binary
Decimal
Hex
Octal
Letter
U.S.
Figures
CCITT No.2
Figures
00000
0
0
0
N/A
N/A
N/A
00001
1
1
1
E
3
3
00010
2
2
2
LF
LF
LF
00011
3
3
3
A
00100
4
4
4
Space
Space
Space
00101
5
5
5
S
BELL
00110
6
6
6
I
8
8
00111
7
7
7
U
7
7
01000
8
8
10
CR
CR
CR
01001
9
9
11
D
$
WRU
01010
10
A
12
R
4
4
01011
11
B
13
J
Bell
01100
12
C
14
N
,
,
01101
13
D
15
F
!
!
01110
14
E
16
C
:
:
01111
15
F
17
K
(
(
10000
16
10
20
T
5
5
10001
17
11
21
Z
+
10010
18
12
22
L
)
)
10011
19
13
23
W
2
2
10100
20
14
24
H
#
£
10101
21
15
25
Y
6
6
10110
22
16
26
P
0
0
10111
23
17
27
Q
1
1
11000
24
18
30
O
9
9
11001
25
19
31
B
?
?
11010
26
1A
32
G
&
&
11011
27
1B
33
Figures Shift
Figures Shift
Figures Shift
11100
28
1C
34
M
.
.
11101
29
1D
35
X
/
/
11110
30
1E
36
V
;
=
11111
31
1F
37
Letters Shift
Letters Shift
Letters Shift