diff --git a/release-packaging/Examples/TheButton/forces-button.scd b/release-packaging/Examples/TheButton/forces-button.scd
new file mode 100644
index 0000000000000000000000000000000000000000..15f3ed8325286f7b9ebc80754e126f154a142c61
--- /dev/null
+++ b/release-packaging/Examples/TheButton/forces-button.scd
@@ -0,0 +1,65 @@
+
+/*
+
+The Button:
+Stepping through forces with the device button.
+
+The axes of the Omega device are ordered as follows:
+
+(0) x: back-front
+(1) y: left-right
+(2) z: down-upward
+
+all values are bipolar
+the center is zero
+
+*/
+
+// omega
+(
+
+s.options.blockSize = 32;
+//s.options.blockSize = 16; // not good, dropouts
+s.options.hardwareBufferSize = s.options.blockSize;
+s.options.numWireBufs = 1024;
+s.reboot;
+);
+
+
+(
+var folder = "forces/".resolveRelative;
+var load = { |which|
+	var p, paths =  (folder +/+ "*.scd").pathMatch;
+	if(paths.isEmpty) {
+		"no files found in folder '%'".format(folder).warn
+	} {
+		which = which % paths.size;
+		p = paths.at(which);
+		"\n\nSwitching to '%' (number %)\n%\n".format(p.basename, which, p).postln;
+		load(paths.at(which))
+	}
+};
+
+~ld = load;
+
+Ndef(\the_button, {
+	f = { |deviceIndex|
+		var btn = OmegaButton.kr(deviceIndex);
+		var step = Stepper.kr(btn);
+		SendTrig.kr(Changed.kr(step), value: step);
+	};
+	2.do(f);
+});
+
+// register to receive button changes
+OSCdef(\omegaButtonResponder, { arg msg, time;
+	var path, sth, sth_else, currentForce;
+	# path, sth, sth_else, currentForce = msg;
+
+	load(currentForce);
+
+},'/tr', s.addr);
+
+load.(0);
+)
+
diff --git a/release-packaging/Examples/TheButton/forces/01-inertia copy.scd b/release-packaging/Examples/TheButton/forces/01-inertia copy.scd
new file mode 100644
index 0000000000000000000000000000000000000000..38277c8d9b35925c1aa22beb74fba67ad1d05046
--- /dev/null
+++ b/release-packaging/Examples/TheButton/forces/01-inertia copy.scd	
@@ -0,0 +1,33 @@
+/*
+
+Inertia
+
+
+*/
+
+
+
+(
+Ndef(\x, {
+	var devices = 2;
+	var f;
+	var dragFactor = 0.3;
+	var mass = 0.4;
+	f = { |deviceIndex|
+		var z, v, accel, drag, inertia, surface, force;
+		z = OmegaPosition.kr(2, deviceIndex);
+		v = OmegaVelocity.kr([0,1,2], deviceIndex);
+
+		accel = Slope.kr(Smooth.kr(v, 400, 2, 64));
+		//accel = Slope.kr(v);
+		drag = v.neg * dragFactor;
+		inertia = accel.neg * mass;
+
+		force = inertia + drag;
+
+		OmegaForceOut.kr([0, 1, 2], force, deviceIndex);
+	};
+	devices.do.(f)
+
+})
+);
\ No newline at end of file
diff --git a/release-packaging/Examples/TheButton/forces/02-surface.scd b/release-packaging/Examples/TheButton/forces/02-surface.scd
new file mode 100644
index 0000000000000000000000000000000000000000..e498a307ffae7a379a1dbced9f819f9b1ade1b9c
--- /dev/null
+++ b/release-packaging/Examples/TheButton/forces/02-surface.scd
@@ -0,0 +1,24 @@
+/*
+
+Stiff surface
+
+
+*/
+
+
+
+(
+Ndef(\x, {
+	var devices = 2;
+	var strength = 16;
+	var stiffness = 300;
+	var f;
+	f = { |deviceIndex|
+		var z = OmegaPosition.kr(2, deviceIndex);
+		var force = (z < 0) * (z.neg * stiffness);
+		OmegaForceOut.kr(2, force, deviceIndex);
+	};
+	devices.do.(f)
+
+})
+);
\ No newline at end of file
diff --git a/release-packaging/Examples/TheButton/forces/03-spaceship-clutch.scd b/release-packaging/Examples/TheButton/forces/03-spaceship-clutch.scd
new file mode 100644
index 0000000000000000000000000000000000000000..77ebab32c10c0a31d64f08cbe0396eb794c2a5d7
--- /dev/null
+++ b/release-packaging/Examples/TheButton/forces/03-spaceship-clutch.scd
@@ -0,0 +1,33 @@
+/*
+
+Spaceship clutch
+
+This needs Zwirn (https://lab.al0.de/julian/nth)
+
+*/
+
+
+
+(
+Ndef(\x, {
+	var devices = 2;
+
+	var f, d, zwirn, force, forceSum;
+	d  = [0, 1, 2];
+
+	zwirn = [[1, 0, 1, 0], 2, [1, [0, [0, 1, 0, -1, 1, (0..4)], 1, 2, 0]]];
+	//zwirn = [(0..50)/10];
+
+	zwirn = zwirn ++ zwirn.neg;
+	zwirn = zwirn * 6;
+
+	f = { |deviceIndex|
+		var pos = OmegaPosition.kr(d, deviceIndex);
+		var drag = zwirn.zwirnAt(pos * 20);
+		var clutch = OmegaDrag.kr(d, drag, deviceIndex);
+		OmegaForceOut.kr(d, clutch, deviceIndex);
+	};
+	devices.do.(f)
+
+})
+);
\ No newline at end of file
diff --git a/release-packaging/Examples/TheButton/forces/04-drag-field-near-each-other.scd b/release-packaging/Examples/TheButton/forces/04-drag-field-near-each-other.scd
new file mode 100644
index 0000000000000000000000000000000000000000..144c24697502842b44ee2c44e2c849726bbf535d
--- /dev/null
+++ b/release-packaging/Examples/TheButton/forces/04-drag-field-near-each-other.scd
@@ -0,0 +1,24 @@
+/*
+
+Drag field near each other
+
+NOTE: this needs exactly __two__ devices
+
+*/
+
+
+
+(
+Ndef(\x, {
+	var stiffness = 2300;
+	var d = [0,1,2];
+	var a, b, force, dist;
+	a = OmegaPosition.kr(d, 0);
+	b = OmegaPosition.kr(d, 1);
+	dist = (b - a).squared.sum.sqrt;
+
+	force = OmegaDrag.kr(d, dist.linexp(0, 0.2, 200, 0.001), 0); // get drag force from one device plus distance
+	OmegaForceOut.kr(d, force, 0);
+	OmegaForceOut.kr(d, force, 1);
+})
+);
\ No newline at end of file