TOP Contributors

  1. MIKROE (2663 codes)
  2. Alcides Ramos (358 codes)
  3. Shawon Shahryiar (307 codes)
  4. jm_palomino (112 codes)
  5. Chisanga Mumba (90 codes)
  6. S P (73 codes)
  7. dany (71 codes)
  8. MikroBUS.NET Team (35 codes)
  9. NART SCHINACKOW (34 codes)
  10. Armstrong Subero (27 codes)

Most Downloaded

  1. Timer Calculator (137081 times)
  2. FAT32 Library (70223 times)
  3. Network Ethernet Library (56095 times)
  4. USB Device Library (46418 times)
  5. Network WiFi Library (42032 times)
  6. FT800 Library (41378 times)
  7. GSM click (29109 times)
  8. mikroSDK (26557 times)
  9. PID Library (26487 times)
  10. microSD click (25486 times)
Libstock prefers package manager

Package Manager

We strongly encourage users to use Package manager for sharing their code on Libstock website, because it boosts your efficiency and leaves the end user with no room for error. [more info]

< Back
mikroSDK Library

REC-PLAY click

Rating:

5

Author: MIKROE

Last Updated: 2019-03-05

Package Version: 1.0.0.0

mikroSDK Library: 1.0.0.0

Category: Signal processing

Downloaded: 3599 times

Not followed.

License: MIT license  

Rec&amp;Play Click is a digital voice recorder on a Click board. It is based around the ISD3900, a multi-message record and playback device.

No Abuse Reported

Do you want to subscribe in order to receive notifications regarding "REC-PLAY click" changes.

Do you want to unsubscribe in order to stop receiving notifications regarding "REC-PLAY click" changes.

Do you want to report abuse regarding "REC-PLAY click".

  • mikroSDK Library 2.0.0.0
  • Comments (0)
DOWNLOAD LINK RELATED COMPILER CONTAINS
mikroBasic PRO for ARM
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroBasic PRO for AVR
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroBasic PRO for dsPIC30/33 & PIC24
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroBasic PRO for FT90x
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroBasic PRO for PIC
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroBasic PRO for PIC32
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroC PRO for ARM
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroC PRO for AVR
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroC PRO for dsPIC30/33 & PIC24
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroC PRO for FT90x
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroC PRO for PIC
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroC PRO for PIC32
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroPascal PRO for ARM
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroPascal PRO for AVR
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroPascal PRO for dsPIC30/33 & PIC24
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroPascal PRO for FT90x
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroPascal PRO for PIC
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc
mikroPascal PRO for PIC32
  • lib
  • src
  • exa
  • hlp
  • hex
  • sch
  • pcb
  • doc

mikroSDK Library Blog

Rec-Play click

Rec-Play click

Native view of the Rec-Play click board.

View full image
Rec-Play click

Rec-Play click

Front and back view of the Rec-Play click board.

View full image

Library Description

Library offers a choice to perform control of the REC&PLAY Click board by sending commands to the ISD3900 via SPI interface. Commands include message recording, recorded message playing, sending or receiving compressed audio data, digital reading and writting, device configuration, device status and interrupt checking... All functions return device status byte, so on that way user can check status of the device and SPI interface after each sent command. For more details check documentation.

Key functions:

  • T_RECPLAY_RETVAL recplay_recordMsg( void ) - Function initiates a managed record at first available location in memory.
  • T_RECPLAY_RETVAL recplay_playMsg( uint32_t memAddr, uint16_t sectorOffset ) - Function initiates a play of a recorded message starting at a specified address, with a specified sector offset.
  • T_RECPLAY_RETVAL recplay_stop( void ) - Function stops any current audio command.
  • T_RECPLAY_RETVAL recplay_eraseMsg( uint32_t memAddr ) - Function erases the message starting at the specified address.

Examples description

The application is composed of the three sections :

  • System Initialization - Initializes peripherals and pins.
  • Application Initialization - Initializes SPI interface in properly mode and performs the all necessary commands to put device in properly working mode (chip reset, chip power up, chip erasing, clock configuration).
  • Application Task - (code snippet) - Performs the chip configuration for recording message via microphone, then records a message for 8 seconds to specified memory location. After that reads the recorded message address with message length and then plays a recorded message. When playback is done erases a recorded message from memory. Repeats the all operation every 10 seconds. Note : The ISD3900 must be properly configured to work in record mode every time when user wants to record a message. When user wants to play a recorded message, then ISD3900 must be properly configured, but now to work in play mode.
void applicationTask()
{
    mikrobus_logWrite( "Preparing to record a message...", _LOG_LINE );
    for (i = 0; i < 32; i++)
    {
        if ((i != _RECPLAY_CFG0A_REG) && (i != _RECPLAY_CFG1C_REG) && (i != _RECPLAY_CFG1E_REG))
        {
            waitReady();
            tempVar = configRecMic[ i ];
            statusByte = recplay_writeCnfgReg( i, &tempVar, 1 );
        }
    }
    waitReady();
    Delay_ms( 2000 );

    mikrobus_logWrite( "Message Recording", _LOG_TEXT );
    statusByte = recplay_recordMsgAddr( 0x12000 );
    timeRecord( 8 );
    statusByte = recplay_stop();
    waitCmdFin();
    mikrobus_logWrite( "End of recording", _LOG_LINE );
    
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    statusByte = recplay_readMsgAddr( &messageAddr, &messageLength );
    LongWordToHex( messageAddr, text );
    mikrobus_logWrite( "Message Address: 0x", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    WordToStr( messageLength, text );
    mikrobus_logWrite( "Message Length: ", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    Delay_ms( 1000 );

    mikrobus_logWrite( "Preparing to play a message...", _LOG_LINE );
    setVolume( 100 );
    for (i = 0; i < 32; i++)
    {
        if ((i != _RECPLAY_CFG0A_REG) && (i != _RECPLAY_CFG1C_REG) && (i != _RECPLAY_CFG1E_REG))
        {
            waitReady();
            if (i == _RECPLAY_CFG03_REG)
            {
                tempVar = volume;
            }
            else
            {
                tempVar = configPlayPwmSpk[ i ];
            }
            statusByte = recplay_writeCnfgReg( i, &tempVar, 1 );
        }
    }
    waitReady();
    Delay_ms( 2000 );

    mikrobus_logWrite( "Message is playing...", _LOG_LINE );
    statusByte = recplay_playMsg( 0x12000, 0 );
    waitCmdFin();
    mikrobus_logWrite( "End of playing", _LOG_LINE );
    
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    ByteToHex( statusByte, text );
    mikrobus_logWrite( "Status Byte: 0x", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    ByteToHex( interrByte, text );
    mikrobus_logWrite( "Interrupt Byte: 0x", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    Delay_ms( 1000 );
    
    mikrobus_logWrite( "Message Erasing...", _LOG_LINE );
    statusByte = recplay_eraseMsg( 0x12000 );
    waitCmdFin();
    mikrobus_logWrite( "End of erasing", _LOG_LINE );
    
    mikrobus_logWrite( "***************************************", _LOG_LINE );
    mikrobus_logWrite( "", _LOG_LINE );
    Delay_ms( 10000 );
}

Additional Functions :

  • void waitCmdFin( - Waits until current command has properly finished.
  • void waitReady() - Waits until SPI interface was ready for new command.
  • void waitPowerUp() - Waits until ISD3900 has powered up.
  • void timeRecord( uint32_t secondsTime ) - Performs the desired time in seconds for message recording.
  • void setVolume( uint8_t volumeSel )  - Sets a volume on the desired value (0 - 100%) for a message playing.

Other mikroE Libraries used in the example:

  • Conversions
  • SPI
  • UART

Additional notes and informations

Depending on the development board you are using, you may need USB UART clickUSB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.

ALSO FROM THIS AUTHOR

Expand 13 click

0

Expand 13 Click is a compact add-on board that contains a multi-port I/O expander. This board features the PI4IOE5V96248, a 48-bit general-purpose I/O expander providing remote I/O expansion for most MCU’s families from Diodes Incorporated. The PI4IOE5V96248 comes in a 6-channel configuration and allows easy addition of I/O through a standard I2C serial interface. It has a built-in level shifting feature that makes it highly flexible in power supply systems where communication between incompatible I/O voltages is required.

[Learn More]

ClockGen 2 demo example

0

This example is made to demonstrate the operation of the ClockGen 2 click.

[Learn More]

M-BUS Master click

5

The M-Bus Master is a Click board is complete solution for a master node in M-Bus networks. The M-Bus (&amp;quot;Meter-Bus&amp;quot;) is a new European standard for remote reading of heat meters and it is also usable for all other types of consumption meters as well as for various sensors and actuators.

[Learn More]