sigmoid.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A social space for people researching, working with, or just interested in AI!

Server stats:

595
active users

#touch

0 posts0 participants0 posts today

Friction and not being touched

The journalist Karen Hao – who published an absolutely fantastic book about OpenAI called “Empire of AI” recently – coined (as far as I know) one of the best terms for describing modern “AI” systems: Everything Machines.

“AI” systems are not framed as specific tools that solve specific problems in specific ways but just as solution in itself: There is nothing “AI” cannot do, if it fails we just failed it by not prompting it right or not building large enough data centers or not waiting for […]

tante.cc/2025/07/30/friction-a

Pico Touch Board Audio

I wanted to go back to my Pico Touch Board PCB Design and see if there was a way to make it more stand-alone. The original design was to make it a MIDI controller, but that isn’t the only option.

https://makertube.net/w/tADSyrPrUdR1mx7yKRXZTC

Warning! I strongly recommend using old or second hand equipment for your experiments.  I am not responsible for any damage to expensive instruments!

These are the key Arduino tutorials for the main concepts used in this project:

If you are new to microcontrollers, see the Getting Started pages.

Parts list

  • Pico Touch Board PCB – built
  • Resistors: 1x 220Ω, 1x 1K
  • Capacitor: 1x 100nF ceramic, 1x 22uF electrolytic
  • Breadboard and jumper wires

The Circuit

Most of the GPIO are linked out to the touch pads, but the three analog inputs are still available. They are added on to the header on the right hand side of the board at the top, so we can use one of these as an audio output.

Initially, I thought of connecting it to an 8Ω speaker. If I was using an Arduino then I’d use a 220Ω resistor in series to limit the current to less than 20mA. But as I’m using a Pico, the maximum current has to be a lot less. I seem to recall it is a little complicated, and there are some options, but I have a figure of around 4mA that I tend to work to. It is also running at 3.3V, which means that it would need an in series resistor of 3.3 / 0.004 = 825Ω. This would work, but the speaker will be really quiet!

So I ditched that idea (there is a software reason too, but I’ll talk about that in a moment) and went straight to a PWM output with a low-pass filter to try to give me some vaguely useful as a line-out signal.

I’ve not done the calculations, but instead went a bit “hand-wavy”, combing a 1K and 220Ω resistor to drop the voltage, along with a 100nF capacitor. I’ve also added a 22uF capacitor to remove the DC bias.

That seems to give me something useful, but as you can see from the trace below of a square wave PWM output, there is a lot of room for improvement!

Update

Ok, so going back and doing this semi-properly as per my notes from Arduino PWM Output Filter Circuit, I can see that the 1K and 220Ω resistors can be treated as a 180Ω equivalent (take them as two in parallel) for the filter circuit, which means a cut-off of around 8kHz which ought to be pretty good….

But reducing a 3V3 signal to around 20% leaves for quite a low level of audio – around 660mV peak to peak. It would probably be better to aim for a reduction of around a half.

Using a 1K and 500Ω resistor would be an equivalent resistance of 333Ω, so putting that into a low pass filter calculator gives a cut-off frequency of around 5kHz for a 100nF capacitor.

Weirdly the only thing that really seems to improve things is to raise that capacitor value to 1uF. My calculation would suggest a cut-off frequency of around 480Hz which is pretty small for an audio signal. But it seems to work.

The PWM frequency I was seeing was coming in at around 120kHz so should be plenty high enough to get filtered out. In the Circuitpython code, it is apparently chosen to support the number of bits required at the base clock frequency whilst being inaudible. For the RP2040 running at 125MHz, and with the chosen 10 bit resolution (more here) this is:

  • 125,000,000 / 1024 = 122,070 Hz

A 5kHz (or even 8kHz) cut-off I thought ought to be fine, but Davide Bucci on Mastodon explained for me:

“120kHz is 25 times 4.7kHz, that is about 1.4 decades and with a first-order filter you have a tad less than 30dB of attenuation, that is not a lot. A signal at 3.3V peak to peak at 120kHz becomes about 100 mV on the output after the filter.”

So switching to 1uF, as Davide explains: “if you put 1µF, you are indeed filtering a decade lower, therefore you gain 20dB in the attenuation and the 100mV become 10mV, much less noticeable.”

The alternative is to repeat the 1K+100nF stage and add a second order filter which also seems to work pretty well.

The final circuit that works fine for me at present, will be on of the following.

The first is less components but assumes that the frequencies won’t go much about ~1KHz or so. That is ok for my current setup but would limit the audio range a fair bit.

This is the output of the two-stage filter. It is so much better!

The Code

I wanted to stick with Circuitpython, so my initial thought was to use simpleio.tone() to generate a tone based on a frequency from an IO pin. However, this has the problem that the code is blocking whilst the tone is playing which isn’t very useful.

Instead I went straight to synthio. It turns out that using synthio was actually a lot easier than the “simple” simpleio…

Here is the basic code to generate an ASR-shaped square wave on a PWM audio output on GPIO 28 based on the touch pads as input.

import board
import touchio
import synthio
import audiopwmio
from adafruit_debouncer import Debouncer, Button

audio = audiopwmio.PWMAudioOut(board.GP28)
synth = synthio.Synthesizer(sample_rate=22050)
audio.play(synth)
synth.envelope = synthio.Envelope(attack_time=0.1, release_time=0.6, sustain_level=1.0)

touchpins = [
board.GP2, board.GP3, board.GP4, board.GP5,
board.GP6, board.GP7, board.GP8, board.GP9,
board.GP10, board.GP11, board.GP12, board.GP13,
board.GP14, board.GP15, board.GP16, board.GP17,
board.GP18, board.GP19, board.GP20, board.GP21, board.GP22
]

THRESHOLD = 1000
touchpads = []
for pin in touchpins:
t = touchio.TouchIn(pin)
t.threshold = t.raw_value + THRESHOLD
touchpads.append(Button(t, value_when_pressed=True))

while True:
for i in range (len(touchpads)):
t = touchpads[i]
t.update()

if t.rose:
synth.press(60+i)

if t.fell:
synth.release(60+i)

Battery Power

One last thing I wanted to explore was if it was possible to power the touchboard with batteries. I left in a number of power options, so for this one I’m using the 5V/GND pin header. I’ve included a couple of capacitors for smoothing, and need to add the 1N5817 diode as shown below.

This requires the following additional components:

  • 1x 1N5817 Schottky diode.
  • 1x 100nF ceramic capacitor.
  • 1x 47uF electrolytic capacitor.
  • Jumper wires.
  • 3 or 4 battery box.

The 5V/GND header pins connect to the Raspberry Pi Pico’s VSYS pin via the Schottky diode. The 1N5817 has a typical voltage drop of 0.45V, so combined with the Raspberry Pi’s accepted input voltage of 1.8V to 5.5V this means that ideally two or three AA batteries (at 1.5V each) would work. Four 1.2V rechargeables might be an option too.

It might be possible to get away with four 1.5V AAs, but that would give an input voltage of just over 5.5V, so I think that is probably pushing things too far. It might be a good use for some spent AAs though that are no longer reading a full 1.5V…

One of the downsides of battery power is that the touch works best when your fingers are at the same GND potential as the board. It works best if the GND pin of the (unpopulated) barrel jack is touched when using the board.

Closing Thoughts

With hindsight it would have been useful to have included a simple PWM output stage on the original board, but it is relatively straight forward to add one.

It might even be worth me making an add-on board that will connect to the header pins of the power and analog pins containing the simple passive filter components.

What is pretty impressive though, is how easy it is to use synthio with Circuitpython.

Kevin

Continued thread

I was also glad one of the #Pride organizers reminded the participants they should NOT assume that all people want to be hugged, but instead must ask first.

A small but important gesture. (I'm touch-repulsed btw.)

This is something that all prides should do. #Consent includes stuff like hugs.

It is always LESS awkward to ask first, and then get told no and respect that no than to randomly hug strangers without warning. Yes, even at Pride!

Viva's Hands.
G.
Two hands with their backs facing up, reaching upwards, ready to seize life . This is a black and white hand portrait drawing in charcoal on paper . Permission graciously ceded from an original photo 

[ Prints : james-mccormack.pixels.com/fea ]

#vivashands #viva #hands #blackandwhite #portrait #hands #exoerience #touch #emotion
#texture #line #monochrome #draw #realistic #buyintoart #FediGiftShop #MastoArt

🚨 Public Service Announcement to everyone going to attend #Pride events:

🚫 DO NOT randomly #hug strangers at Pride (or anywhere) unless you have explicit #consent. No matter how "well" you mean it.

While you may have luck and the hug ends up well and wholesome, it is SUPER #AWKWARD when it happens to people who don’t want it. Some people are repulsed by any kind of #touch and feel 😨 distressed by it. Remember that.

⚠️ No consent = no hug! ⚠️

Thank you for coming to my TEDx talk.

Replied in thread

@Daojoan

"“When two hands touch, there is a sensuality of the flesh, an exchange of warmth, a feeling of pressure, of presence, a proximity of otherness that brings the other nearly as close as oneself. Perhaps closer."

— Karen Barad, On Touching the Stranger Within – The Alterity that therefore I Am

#quotes
#touch

#Ubuntu #touch auf dem #Fairphone ist im Alltag nicht zu gebrauchen. Logins werden sich nicht gemerkt. Für Paranoia Computing okay, aber wie gesagt nichts für den Alltag für unterwegs am vollen Bahnhof usw.
Lokale Musik hören ist in Ordnung. Online ist es unbrauchbar.
Und ganz klar, das Ubuntu für Server und PCs hat rein gar nichts mit Smartphones zu tun. Andere Menschen, anderes Software Produkt, nur Branding ist gleich.

UC Berkeley News: Why did medieval readers kiss, smudge and deface their books?. “Examine a medieval text, and you’ll see images of certain characters with their faces erased of all detail or entire scenes that are cloudy from repeated touch. It may seem like such imperfections were accrued over centuries of wear and tear, but often these defacements came directly from medieval readers, who […]

https://rbfirehose.com/2025/05/17/uc-berkeley-news-why-did-medieval-readers-kiss-smudge-and-deface-their-books/

ResearchBuzz: Firehose | Individual posts from ResearchBuzz · UC Berkeley News: Why did medieval readers kiss, smudge and deface their books? | ResearchBuzz: Firehose
More from ResearchBuzz: Firehose
Continued thread

3/n

The Midas Touch reconsidered: Will robots make money for companies so humans won't? 🤖 💶

'The #robots will be able to identify objects by #touch using #AI to work out what they can and can’t handle and figuring out how best to pick them up.

They will work alongside #humans who now stash and retrieve items from shelving units which are manoeuvred to them at picking stations by wheeled robots – of which #Amazon now has more than 750,000 in operation.'

theguardian.com/technology/202

The Guardian · Amazon makes ‘fundamental leap forward in robotics’ with device having sense of touchBy Sarah Butler

Viva's Hands.
G.
Two hands with their backs facing up, reaching upwards, ready to seize life . This is a black and white hand portrait drawing in charcoal on paper . Permission graciously ceded from an original photo 

[ Prints : james-mccormack.pixels.com/fea ]

#vivashands #viva #hands #blackandwhite #portrait #hands #exoerience #touch #emotion
#texture #line #monochrome #draw #realistic #buyintoart #FediGiftShop #MastoArt

"[T]ouch concerns a smorgasbord of stimuli, including pokes, pulls, puffs, caresses and vibrations, as well as a range of temperatures and chemicals, such as capsaicin in chili peppers or menthol in mint. From these inputs arise perceptions of pressure, pain, itchiness, softness and hardness, warmth and cold, and the awareness of the body in space."

quantamagazine.org/touch-our-m

Quanta Magazine · Touch, Our Most Complex Sense, Is a Landscape of Cellular Sensors | Quanta MagazineEvery soft caress of wind, searing burn and seismic rumble is detected by our skin’s tangle of touch sensors. David Ginty has spent his career cataloging the neurons beneath everyday sensations.

Ubuntu 24.04 Update Fixes Several Touchscreen Quirks

An update to the Mutter display manager is primed to begin rolling out to users of Ubuntu 24.04 LTS — with much-needed touchscreen fixes in tow. I don’t know how many of you use Ubuntu desktop on a touch-enabled device—not many, I’d wager. I do have; I have a touchscreen laptop that runs Ubuntu 24.04 LTS and I do prod, poke, and push the screen a bit whilst using Ubuntu 24.04 LTS. While my device is able to fold resemble on, I don’t use it as a tablet since, despite some folks’ assumption, GNOME Shell is not what I’d described :sys_more_orange:
#News #Mutter #Touch #Ubuntu24_04Lts

:sys_omgubuntu: omgubuntu.co.uk/2025/03/ubuntu