jblond / morse
PHP morse code and wav(e) sound file generation
1.2.3
2023-08-10 13:12 UTC
Requires
- php: >= 8.0
- ext-mbstring: *
Requires (Dev)
- ext-fileinfo: *
- phpunit/phpunit: ^9 || ^10
- squizlabs/php_codesniffer: *
README
Supported character sets
- Arabic, Cyrillic, Greek (needs conversion to upper case letters (function included)), Hebrew, Japanese Korean, Latin, Persian, and Thai.
composer require jblond/morse
Example UI: https://github.com/JBlond/maas
Examples
<?php use jblond\morse\Morse; use jblond\morse\Wave; require './vendor/autoload.php'; $morse = new Morse(); $morseBinary = $morse->stringToMorse('SOS'); $morse = $morse->dotDash($morseBinary); echo $morse; $wave = new Wave(); file_put_contents('sos.wav', $wave->generate('SOS'));
Non latin example
<?php use jblond\morse\Morse; require './vendor/autoload.php'; $morse = new Morse(); $morse->setLetters('Cyrillic'); $morse->stringToMorse('Запомнить');
Morse API
setLetters
Change the origin character set (letters / language)- available: Arabic, Cyrillic, Greek, Hebrew, Japanese, Korean (SKATS), Latin (default), Persian, and Thai.
getLetters
Get an array of the current selected character setgetCharacter
Convert a single character into morse binary code. An invalid character will return a#
.stringToMorse
Convert a string into binary morse code.dotDash
Convert binary morse code into dot and dash / dit and dah.
Greek characters
Since the PHP strtoupper
function fails for Greek, an extra function to do so has been added.
<?php use jblond\morse\Morse; use jblond\morse\CharacterSet\Greek; require './vendor/autoload.php'; $morse = new Morse(); $morse->setLetters('Greek'); $morse->stringToMorse((new Greek())->stringToUpper('Τέλος εκπομπής'));
Wav(e) API
setCwSpeed
set words per minute (cw speed). Default is 25.setSampleRate
default is 11050. An audio CD would be 44100 aka 44.1 kHz (16 bit).setFrequency
set the tone height. Default is 700 (cw tone).generate
get the audio as binary.
License: MIT