Real-time	EEG

timing	and	block	size
Robert	Oostenveld	
23	Oct	2016	
CRI	brain	control	club	-	Paris
Timing	requirements
Timing	requirements
• “realtime”	analysis	
– instantaneous	
– very	fast	
– well	controlled

Timing	requirements
• “realtime”	analysis	
– instantaneous	
– very	fast	
– well	controlled
 y	=	a*x	+	b
Timing	requirements
• “realtime”	analysis	
– instantaneous	
– very	fast	
– well	controlled
 y	=	a*x	+	b
T	=	delay																												+	jitter	
T	=	complexity*datasize	+	jitter
Timing	requirements
• “realtime”	analysis	
– instantaneous	
– very	fast	
– well	controlled

• quantifying	time	
– delay	
– jitter
y	=	a*x	+	b
T	=	delay																												+	jitter	
T	=	complexity*datasize	+	jitter
Timing	requirements
Timing	requirements
• Minimizing	delay	
– reduce	data	size	
– increase	speed	of	algorithm	
– increase	bandwith	of	transfer
Timing	requirements
• Minimizing	delay	
– reduce	data	size	
– increase	speed	of	algorithm	
– increase	bandwith	of	transfer
• Minimizing	jitter	
– ?
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
Understanding	jitter
• data	is	processed	in	blocks	everywhere	
– amplifier	
– usb	port	
– network	(tcp	packet)	
– processing	stream	step	1	
– processing	stream	step	2
Understanding	jitter
• data	is	processed	in	blocks	everywhere	
– amplifier	
– usb	port	
– network	(tcp	packet)	
– processing	stream	step	1	
– processing	stream	step	2
• unequal	block	sizes	cause	jitter
Timing	requrements
Why	not	always	use	blocks	of	1	sample?
Timing	requrements
Why	not	always	use	blocks	of	1	sample?
for	1	sample	
delay	=	speed*datasize	+	offset
Timing	requrements
Why	not	always	use	blocks	of	1	sample?
for	1	sample	
delay	=	speed*datasize	+	offset	
for	N	1-sample	blocks	
delay	=	N*speed*datasize	+	N*offset
Timing	requrements
Why	not	always	use	blocks	of	1	sample?
for	1	sample	
delay	=	speed*datasize	+	offset	
for	N	1-sample	blocks	
delay	=	N*speed*datasize	+	N*offset	
for	N	samples	in	one	block	
delay	=	N*speed*datasize	+	offset

Real-time EEG: timing and block size