Home Examples Audio via Robot Computer

Audio via Robot Computer

The purpose of this task is to demonstrate how to produce sounds in real-time using analog outputs as part of Kinarm Lab.

For an alternative method that does NOT play sounds in real-time, but instead works through the Dexterit-E computer, please see the other sample task entitled Audio via Dexterit-E Computer (prev. tone player).

This task produces sounds by sending a pre-defined waveform over one analog channel output. If that output is connected to a speaker, then the user will hear the sound.

In order to make sounds in real-time, the following are required:

  • one or more analog outputs connected to the Robot computer (e.g. via a PCI card such as NI-6229 connected to a BNC-2090A panel)
    • You will need one analog channel for each independent speaker
  • speakers with built-in amplifiers (e.g. headphones, or computer speakers)
  • method to connect the analog output(s) to the speaker(s)
    • e.g. if connecting two channels of a BNC-2090A panel to speakers that have a single 3.5 mm stereo jack, the following would work:
      • 2 BNC to RCA/phono jacks – e.g. Newark (54M7978) or Digikey (367-1013-ND)
      • An adapter with 2 RCA/phone plugs to a single 3.5 mm stereo jack – e.g. from Radioshack or the Source
  • vector containing the waveform(s) of the desired sound (e.g. download one from the internet, record one yourself, etc)
  • MATLAB R2015a is recommended, but not necessary: because Task Programs are run at 4 kHz for R2015a and later, vs 2 kHz for R2013a and prior, using R2015a doubles the frequency range of sounds that are reproduceable

How to use this task:

  1. process the desired sound using the attached processWaveformForKINARM.m
    • please read the comments in the code for how to do use this script
    • a sample waveform of a piano keyboard is included
  2. connect your speaker(s) to the analog output(s) and turn the speakers on
    • the sample code in this example uses a single analog output (DAC0OUT) of a PCI-6229 card
    • Note: if you have a different analog output card, you will need to modify the task to use the Simulink block corresponding to your card
  3. build the task and run it
    • during the build process, the sound waveform becomes embedded in the sample code. So if a different waveform is required, the Task Program will have to be re-built.

The task was last tested for Dexterit-E 3.10 and MATLAB 2015a SP1, 18-Aug-23.

Related Tasks

Coding Tips
Persistent Variables
Persistent variables are ones that hold their value between calls to the embedded MATLAB code they are defined in.
Coding Tips
Custom Control of the Trial Protocol Order
Normally, Dexterit-E manages and controls the order in which Trial Protocols (TPs) execute based on what is defined in the block table of the Task Protocol (see the Dexterit-E User Guide for more details).