Skip to main content

A python (Dual-Tone) Multi-Frequency (DTMF) tone generator.

Project description

Python 3 Blue Box DTMF Tone Generator

Modernized python bluebox DTMF tone generator / dialer.

image

How it works

In essence, this is a simple utility that creates dual tone multi-frequency sine waves (50/50 mixed, but that can easily be adjusted). What does this mean? Well you know the sounds that you hear if you have the touchpad tones turned on when you dial a number in your phone? That's what this is. It's able to generate the tones that correspond to the number and output it to an audio device or a python list (for example).

This tool has a CLI interface which allows you to send a sequence of codes via stdin, pipes, files, as an argument, or in an interactive mode.

Why?

Well, initially this was a fun little python 3 project from 2015, but I thought it would be nice to make it modern and extensible, essentially showcasing it as a framework, but this doesn't have to be limited to DTMF / MF, in theory with ease you could turn this into something that reads in code sequences (str) and outputs waves. Also due to issue #3 https://github.com/zeyus/Python3BlueBox/issues/3 it was clear that there were some bugs, so what better way to deal with it than adding tests and a way to decouple things!

Installation

git clone https://github.com/zeyus/Python3BlueBox.git
cd PythonBlueBox
pip install -r requirements.txt

Requirements

  • Python 3 (tested on 3.9 - 3.11)

Usage

CLI

python ./bluebox.py -h

Output:

usage: bluebox.py [-h] [-l LENGTH] [-p PAUSE] [-a AMPLITUDE] [-s SAMPLE_RATE] [-m MF] [-d] [-b BACKEND] [-r PAD_PAUSE_DURATION] [-f FILE] [-P PIPE] [-S] [-i] [-v] [sequence]

Generate tone sequences.

positional arguments:
  sequence              The sequence of tones to generate.

options:
  -h, --help            show this help message and exit
  -l LENGTH, --length LENGTH
                        The length of each tone in milliseconds.
  -p PAUSE, --pause PAUSE
                        The length of the pause between tones in milliseconds.
  -a AMPLITUDE, --amplitude AMPLITUDE
                        The combined amplitude of the waveforms.
  -s SAMPLE_RATE, --sample-rate SAMPLE_RATE
                        The sample rate of the waveforms.
  -m MF, --mf MF        The MF to use e.g. dtmf, mf.
  -d, --debug           Enable debug logging.
  -b BACKEND, --backend BACKEND
                        The backend to use for playing the waveforms.
  -r PAD_PAUSE_DURATION, --pad-pause-duration PAD_PAUSE_DURATION
                        The duration (ms) of the pause before/after sequence.
  -f FILE, --file FILE  The file to read the sequence from.
  -P PIPE, --pipe PIPE  Read the sequence from a pipe.
  -S, --stdin           Read the sequence from stdin.
  -i, --interactive     Enter interactive mode.
  -v, --version         show program's version number and exit

Examples

python ./bluebox.py -i
python ./bluebox.py 123456789

API

You mainly need an BaseMF subclass instance and a Sequencer instance.

from bluebox import DTMF
from bluebox.box import Sequencer

mf = DTMF()
seq = Sequencer(mf = mf)

seq('12345')

Development

Development of different MF implementations and audio backends is extremely easy now. Just create a new class that inherits from the MF class, and register it. Same thing for audio backends.

Currently there are two MF implementations (DTMF and MF), and two audio backends (PyAudio and Dummy).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mfbluebox-0.1.1.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mfbluebox-0.1.1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file mfbluebox-0.1.1.tar.gz.

File metadata

  • Download URL: mfbluebox-0.1.1.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for mfbluebox-0.1.1.tar.gz
Algorithm Hash digest
SHA256 db22ba33c28034d7f5bcd90714a2ae8e4a3de7bd77ff13013779f30b71e6a240
MD5 e6349b4d0a465237ca236c3ca8279b52
BLAKE2b-256 1887340259dbc73dd4406220f7fc64e3d97d4147565075f902295f38874d4145

See more details on using hashes here.

File details

Details for the file mfbluebox-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mfbluebox-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for mfbluebox-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6de16ee4a51b12a30ffbc6ab48115b3b0df0369cd490a346e48ceede0d100135
MD5 94be61199c18b4505bc5efea3030d5b8
BLAKE2b-256 7c6977078d5cf331500b066ab20fc60e44de1e9617ba84903d0d074c4820ac76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page