AC to DC trigger pulse for AudioScope.sh.

Hi all...
Has _below_ ever been done in UNIX shell scripting before?
(I have done this easily in Python but this is using purely the shell.)
The DEMO version IS built and has been tested.

Pre-amble...
I now need at least one control pulse for the AudioScope.sh when in PURELY audio I/O mode, NOT using Arduino...
There are in fact two of them, the L & R earphone outputs.
This is a simple test version that converts a crude 2KHz squarewave into a DC trigger voltage,
in this case +ve going, using the earphone output(s) in MONO mode in this DEMO. It generates
over +3V DC which can be used to switch a transistor (OFF/)ON/OFF for one second.
If the transistor is connected across a 5V rail with a collector load of say 4.7 KilOhms
then +ve logic TTL level switching is made easy. TTL level is NOT needed in my case but
this working and tested idea is needed however.
Hard coding for it looks dead easy and with two possible outputs from the L & R connections,
2 off +ve going pulses AND/OR -ve going pulses are easily possible...

Enjoy finding simple solutions to often very difficult problems...

Bazza...

#!/bin/bash
# ac2dc.sh
# *********************************************************
# Generate a 1 second squarewave pulse and _voltage_double_ the output to DC.
# This is to be used as a set/reset pulse for the AudioScope.sh.
# Issued as Public Domain, CC0. You may do with it as you please.
# *********************************************************
if [ ! -e "/tmp/squarewave.wav" ]
then
	> /tmp/squarewave.wav
	printf "\x52\x49\x46\x46\x64\x1F\x00\x00\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x01\x00\x40\x1F\x00\x00\x40\x1F\x00\x00\x01\x00\x08\x00\x64\x61\x74\x61\x40\x1F\x00\x00" >> /tmp/squarewave.wav
	for n in {0..1999}
	do
		printf "\x00\x00\xFF\xFF" >> /tmp/squarewave.wav
	
	done
fi
# *********************************************************
# The line below uses various Linux flavours, "aplay"...
# aplay /tmp/squarewave.wav
# *********************************************************
# Use the OSX default basic command line audio player, "/usr/bin/afplay".
afplay /tmp/squarewave.wav
# *********************************************************
exit 0
# *********************************************************
# A very simple voltage doubler and passive filter for a control output.
# This will be used to set and reset a microphone input Analogue to Digital Converter, (ADC).
# Two ARE available and MIGHT be needed, but only ONE for definite.
# (Connect DC OUT & GND to a DC coupled oscilloscope to see it working.)
#
# Headset O/P. C1              |\|D2 
#  O--------o--||--o-------o---| +---o-------o-------O +VE DC OUT.
#           |      |       |   |/| + |       |
#  O        \      | +     \         |       \
#  |        /    --+--     /         | +     /
#  |   * R1 \     / \ D1   \ R2     === C2   \ R3
#  |        /    '---'     /        -+-      /
#  |        \      |       \         |       \
#  |        /      |       /         |       /
#  |        |      |       |         |       |
#  +--------o------o-------o---------o---o---o-------O -VE.
#                                      __|__
#                                      /////
# Parts List:-
# C1 ......... 1.0 uF, 50V.
# C2 ......... 10 uF, electrolytic, 10V.
# R1 ......... 47 KilOhms, (* this can be ommitted), 1/8W, 5% tolerence resistor.
# R2 ......... 1 MegOhm, 1/8W, 5% tolerence resistor.
# R3 ......... 100 KilOhms, 1/8W, 5% tolerence resistor.
# D1, D2 ..... OA90 or any similar germanium diode.
# 3.2 mm stereo jack plug for headset socket.
# Coaxial connecting cable.
# Sundries as required, stripboard, etc, (similar to above).
# *********************************************************
# I'll bet no one thought that the shell would become the basis of a testgear suite...

I thought about asking this back in your Audioscope post, why do you need this line?

printf "\x52\x49\x46\x46\x64\x1F\x00\x00\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x01\x00\x40\x1F\x00\x00\x40\x1F\x00\x00\x01\x00\x08\x00\x64\x61\x74\x61\x40\x1F\x00\x00" >> /tmp/squarewave.wav

Thanks

That part is the 44 byte header to make the waveform a ".WAV" file, otherwise it would be a ".RAW" file instead.

There is/are reams of info on the ".WAV" format and it is dead easy to create all sorts of waveforms, (within limits of course), and generate differing headers for the differing ".WAV" formats; e.g. 16 bit, stereo, various sample rates, ect, etc...

Hope this helps...

1 Like