Extending ISA Soundcard
As a part of the overall PhD project, this project takes a vintage ISA card design by Joe D. Reeder, and uses it as a base to test the viability of using analog (bilateral) switches as software controlled gates - able to bypass the filter section of the analog input. Such a functionality would allow sound-cards to acquire DC-biased signals on demand - and thus allow sound-cards to be used as generic sensor interfaces, working at audio sampling rates.
Note however, that the implementation demonstrates the project intent only conceptually - as the ISA card has been utilized mostly as a signal generator and sampler (rather than as a generic soundcard). Schematics and source code related to this project will be posted on this page, as well.
- NIME2010 (full paper, 6pg) version here: ExtendingSoundcard_nime2010_submission_68.pdf
- Find the original (unpublished, 11 pg) version of the paper here: ExtendingSoundcard.pdf
- See below for videos (for help with videos, click ).
- An older page with one of the videos, using the DivX plugin, can be seen here.
Find link to schematics and PCB layout below.
- ZIP archive of KiCad schematic and layout files, including the PDF's below.
- Schematic (PDF).
- PCB layout (PDF) for the printed circuit board.
- Note that the zip archive is a mess
- The PDF schematic shows the connection of the CD4066 switch - however, that connection is not in the originating KiCad schematic file.
- The actual layout of the implemented card is on the first few pages of the PDF layout (be careful, the correct mirroring may not be in order). Those pages have been manually edited from the originating KiCad layout (pads removed, etc).
- Note there are errors on the implemented card layout (some of them can be seen corrected on the back side of the board on this image)
Find links to C source files, as well as captures produced by respective executables, below.
|OS||Source||Capture file||Build notes|
|MS-DOS||experisa-djgpp.c||ADCCAPTR_ppi_dc_test.DAT||Use the following as a batch script for a DJGPP build:
:: compile gcc -Wall -o experisa.exe experisa.c pause :: This creates file experisa: exe2coff experisa.exe :: delete old backup, and make new backup del experisa_org.exe ren experisa.exe experisa_org.exe :: make full stubbed exe COPY /B C:\DJGPP\bin\CWSDSTUB.EXE+experisa experisa.exe :: set settings - set swap file to "" when asked C:\DJGPP\bin\cwsparam experisa.exe :: done
gcc -I/usr/src/linux-headers-2.6.27-11-generic/include -I/usr/include -O2 -lm -Wall -g -o experisa-lin experisa-lin.c 2>&1| tee out.txt
gcc -O2 -lm -Wall -g -o experisa-lin experisa-lin.c
In both cases, run the executable with:
- The code is a single .c file.
- Expect getting warnings for unused variables when building.
- Here is a patch showing differences between the dos and linux versions of the program.
- The .DAT files are captures - recordings of data sampled by the card's ADC. They can be imported in Audacity - import as 8 bit unsigned, and set the sampling rate to 12725 Hz (and note that the Linux one is quite boring since it shows a simple DC test )
- For Linux, the functions that emulate dos keyboard functions sometimes freeze the command shell, after the program is finished.
Complete list of references
- Find the complete list (> 80 refs.) at the references page.
Link to development notes
- [Here link to development notes]