Set Digital icon Set Digital — Toggle a digital I/O port between TTL low (0V) and high (3.3V/5V) in ARC; select board and port, simple on/off control-signal only. Try it →
 
Microphone Playback (ezb) Robot Skill

Microphone Playback (Ezb)

by Synthiam Inc.

Records microphone audio into named slots and plays it through an EZB speaker, with recordings stored in the project.

Requires ARCx v4 (Updated 10/29/2026)
Tags: Audio
Compatible with: Compatible with Microsoft Windows 10 or 11 Windows Compatible with ARM Linux (Raspberry pi, etc) ARM Compatible with Linux Linux Compatible with MacOS MacOS

How to add the Microphone Playback (Ezb) robot skill

  1. Load the most recent release of ARCx on a compatible operating system (Get ARCx).
  2. Press the + Skills menu from the top menu bar in ARCx.
  3. Choose the Audio category tab.
  4. Press the Microphone Playback (Ezb) icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Microphone Playback (Ezb) robot skill.


How to use the Microphone Playback (Ezb) robot skill

Records the computer's microphone into numbered slots and plays those recordings out of an EZB's speaker - the robot's own voice, in your voice.

The recordings are stored inside the project, so a project carries its sounds with it. Press Rec, say something, press Stop, and the robot can say it back from a button, from a script, or from anything else that can issue a control command.

Requirements

  • A microphone selected as ARCx's audio input.
  • For playback, an EZB at the configured index that is connected and whose firmware supports EZB audio streaming. Recording works without one.

Adding it to a project

  1. Connect the EZB.
  2. Add the skill (Audio category).
  3. Press Rec on a slot, speak, and press Stop.
  4. Press Play to hear it out of the robot.
  5. Open the configuration to rename the slots - names are much easier to use from a script than numbers.

The window

Microphone Playback (ezb)  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> window

  • EZB chip - green with the board index when playback is available, amber when there is no connected controller at that index. Recording still works either way.
  • Volume slider - 1 to 200, applied to the EZB on playback and saved with the project.
  • Stop - stops the EZB speaker.
  • Slot grid - one tile per slot, showing its number, name and length:
    • Rec - record into that slot, overwriting whatever was there. Only one slot can record at a time.
    • Play - play it out of the EZB.
    • Bin - erase the recording.
    • The tile is outlined red while recording into it and green while playing it.
  • While recording, a live input level meter and a progress bar towards the maximum length are shown.
  • A short log at the bottom.

Configuration

Microphone Playback (ezb) configuration settings

Setting Meaning Default
EZB Index Which controller's speaker plays the recordings. It must support EZB audio streaming. 0
Maximum length (seconds) A recording stops on its own after this long, so a forgotten Record button cannot fill the project with room noise. Longer recordings make bigger project files - roughly 15 KB per second before compression. 15
Playback volume Volume handed to the EZB, 1 to 200. Above 100 amplifies and may clip a loud recording. Also on the main window. 100
Normalize recordings Scales each recording so its loudest moment uses the full range before it is stored. Microphones are quiet and the EZB speaker is small, so leave this on unless you are recording something already loud. on
Slots The slot table: rename, reorder with the arrows, delete with the bin, and Add Slot for more. At least one slot always exists. 6 slots

The Window tab sets the robot skill's window title, its size on the workspace and notes about what it does in this project.

Window configuration tab

How the audio is stored

Recordings are converted to 8 bit mono PCM at the EZB's sample rate - exactly what the board plays - then gzip compressed and written into the project file as base64. Speech and silence compress well, but recordings are still the biggest thing in a project that uses this skill, so keep the maximum length sensible.

Naming slots

Scripts address a slot by number (1-based) or by name, so give each slot a name that describes it:

ControlCommand("Microphone Playback (ezb)", "Play", "Greeting");
ControlCommand("Microphone Playback (ezb)", "Play", 1);

Names are matched case-insensitively. If the name does not exist, the error lists every slot, so a typo is easy to spot.

Troubleshooting

Symptom Cause
Amber "No EZB at index n" chip No connected controller at that index. Connect it, or change EZB Index.
Recording is silent The wrong microphone is selected as ARCx's audio input; watch the level meter while you speak.
Playback is quiet Turn on Normalize, raise the Volume, and re-record - normalization is applied when the recording is stored, not on playback.
Playback is distorted Volume above 100 on an already loud recording. Lower it.
Recordings cut off They hit the Maximum length. Raise it.
The project file is huge Too many long recordings. Shorten them or delete unused slots.
"There is no slot named ..." The slot name in the script does not match; the error message lists the slots.

See also

  • Sound Board (ezb) - play audio files, with scripts scheduled on a timeline
  • Ezb Connection - connecting the controller whose speaker is used

Control Commands for the Microphone Playback (Ezb) robot skill

There are Control Commands available for this robot skill which allows the skill to be controlled programmatically from scripts or other robot skills. These commands enable you to automate actions, respond to sensor inputs, and integrate the robot skill with other systems or custom interfaces. If you're new to the concept of Control Commands, we have a comprehensive manual available here that explains how to use them, provides examples to get you started and make the most of this powerful feature.

Control Command Manual

This robot skill has 10 control commands, listed below. Send them from a JavaScript or Python script, from Blockly, or from another robot skill.

The first value is always the window title, which is the name in the title bar of the robot skill on your workspace. It starts out as Microphone Playback (ezb), which is what every example below uses. If you rename the robot skill, or add a second copy of it to the project, use the title as it appears on that window instead.

ControlCommand() can be shortened to CC(), and both spellings work in JavaScript and in Python. The examples are JavaScript; Python is the same call, except that true and false are written True and False.

Clear

Erase a slot's recording

Syntax

ControlCommand("Microphone Playback (ezb)", "Clear", (String)slot)

Parameters

# Name Type What to pass
1 slot Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "Clear", "slot");

GetLength

Length of a slot's recording in seconds, 0 when empty

Syntax

ControlCommand("Microphone Playback (ezb)", "GetLength", (String)slot)

Parameters

# Name Type What to pass
1 slot Text Your text, in quotes

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Microphone Playback (ezb)", "GetLength", "slot");

IsPlaying

Is one of this skill's slots playing?

Syntax

ControlCommand("Microphone Playback (ezb)", "IsPlaying")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "IsPlaying");

IsRecording

Is a recording in progress?

Syntax

ControlCommand("Microphone Playback (ezb)", "IsRecording")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "IsRecording");

Play

Play a slot out of the ezb speaker and return immediately

Syntax

ControlCommand("Microphone Playback (ezb)", "Play", (String)slot)

Parameters

# Name Type What to pass
1 slot Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "Play", "slot");

PlayWait

Play a slot out of the ezb speaker and return when it has finished

Syntax

ControlCommand("Microphone Playback (ezb)", "PlayWait", (String)slot)

Parameters

# Name Type What to pass
1 slot Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "PlayWait", "slot");

Record

Start recording the PC microphone into a slot. The slot is its number (1 based) or its name. Recording stops with StopRecording or at the configured maximum length.

Syntax

ControlCommand("Microphone Playback (ezb)", "Record", (String)slot)

Parameters

# Name Type What to pass
1 slot Text Your text, in quotes

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "Record", "slot");

SetVolume

Set the ezb playback volume, 1 to 200

Syntax

ControlCommand("Microphone Playback (ezb)", "SetVolume", (Number)volume)

Parameters

# Name Type What to pass
1 volume Number A number, without quotes

Returns: Integer [-2,147,483,648 to 2,147,483,647]

Example

var result = ControlCommand("Microphone Playback (ezb)", "SetVolume", 0);

Stop

Stop the ezb speaker

Syntax

ControlCommand("Microphone Playback (ezb)", "Stop")

Returns: Boolean [true or false]

Example

var result = ControlCommand("Microphone Playback (ezb)", "Stop");

StopRecording

Finish the recording in progress and store it in its slot. Returns the length in seconds, or 0 when nothing was recording.

Syntax

ControlCommand("Microphone Playback (ezb)", "StopRecording")

Returns: Double [5.0e324 to 1.7e308]

Example

var result = ControlCommand("Microphone Playback (ezb)", "StopRecording");

This list is read out of the robot skill itself each time its package is uploaded, so it matches the published version (v4).


ARC Pro

Upgrade to ARC Pro

ARC Pro will give you immediate updates and new features needed to unleash your robot's potential!

#3  

This robot skill has been updated to v3.

What has changed

updated to support latest audio service of ARCx 2026.09.28.02

#4  

This robot skill has been updated to v4.

What has changed

updated to use some new ARCx UI features for improved performance.