Git Product home page Git Product logo

asmara's Introduction

ASMARA

Automated System for Monitoring And Relaying Alerts

The comprehensive software EAS solution.

GitHub Workflow Status GitHub language count GitHub

Features

  • EAS Generation and Translation using stable and tested systems
  • Live and buffered audio flow systems
  • Audio file and log generation systems
  • Easy to use
  • Built-In Discord and Email logging
  • Comprehensive audio quality
  • AutoDJ for Playout, with a Tone Only mode.
  • InfiniteMonitor System for unlimited monitoring
  • Back-to-back Alert Detection on all monitors
  • MultiATTN Attention Detection on all Monitors
  • ENDEC Header Style Emulation
  • The Fastest and most reliable system on the market for over 6 monitors
  • Built-in Icecast Playout with Metadata
  • Direct stream monitoring
  • SDR monitoring

Installation

This system currently only runs on MacOS and Linux.

If you are running the Compiled ASMARA Binary, skip to step 2.

Step 1

Install Python dependencies

sudo apt update
sudo apt install python3 python3-pip python3-pyaudio
pip3 install -r requirements.txt

Step 2

Install other dependencies.

FFmpeg:

sudo apt update
sudo apt install ffmpeg

Samedec:

sudo apt update
sudo apt install curl git
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git clone https://github.com/cbs228/sameold.git
cd sameold
cargo install --path crates/samedec

NOTE: Add RUST to path with source $HOME/.cargo/env after CURL, otherwise restart your terminal or log out/in before installing sameold, otherwise cargo will not work.

Step 3

Test ASMARA's config generation by running python3 asmara.py -d if using Python, or ./asmara -d if using compiled binaries.

Configs will by default be stored in .config if not specified. To specify a config, add it after the ASMARA executable, and all flags. E.G. ./asmara -d CONFIGFILE.CFG for a file named CONFIGFILE.CFG

Configuration

DO LATER

Usage

To run ASMARA, use the executable or the raw Python script.

For the Python executable:

python3 asmara.py

For the Compiled Binary:

./asmara

Verbosity

If you would like more info in the terminal, you can increase the verbosity flag. For a higher verbosity, run -v. The more vs you add increase the verbosity. (E.G. -vvvv is higher than -vv)

For debug info, run -d for debug.

For the lowest verbosity, run -q for quiet mode.

Extra Flags:

-A gives data about ASMARA.

-V gives the current version of ASMARA.

-u updates the current version of ASMARA if there is a newer version available in the internal updater system. use -n to disable the internal updater for this session. (NOT IMPLEMENTED YET.)

-U sets your config file to always update if available. -N disables this feature, and update notifications. (NOT IMPLEMENTED YET.)

Config Files:

Adding a file on to the end of the executable after all flags will set that file as a config file.

Note: Must be a valid ASMARA config file for that version. Using an incompatible file may cause problems, and-or corruption of the said file.

Example:

python3 asmara.py -vvvv .config2

to use .config2 as the selected config file. If the file does not exist, it will be created.

Note: The config file must always come after the flags. Adding a flag after the config file may result in unexpected behavior.

Changelog

DO LATER

Copyright © 2024 MissingTextures Software

asmara's People

Contributors

a-c0rn avatar physprop avatar reggietorres avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

asmara's Issues

First Time Setup Tool

I think we should add a First Time Setup Tool, that activates when your config is blank, default, or non existant, it would eliminate people making issues that in the end is their config being bad. I'm looking for input before actually working on it, if anyone has input let me know

Icecast-based Playout (External Audio Input)

Why not add the ability to use an Icecast server to feed the AutoDJ in the software? I feel this would be very helpful for those who use external playout systems and stuff and would make it not require the presence of a silence detector and interrupter (Voicemeeter, FFMPEG, etc), handling it entirely internally.

Icecast Override feature request

A feature should be added where you can put one or more icecast servers in, where if none of them is running it will playout the playout audio, put if at least one is running (with different priority levels), it will play that over the playout audio but allow EAS alerts to be relayed over.

Improved Decoding Systems

This branch should have a more efficient decoding system, and hopefully a more structured and straightforward audio path to improve the speed, reliability, and efficiency of the entire audio stack.

Error InvalidSAME, Invalid data in SAME Message, Invalid code in FIPS data.

image

Error started yesterday and now nothing will relay after recieving this message. It will say "Relaying ASAP" but will never go over the station. Will provide full log if needed. the Discord webhook will say "Receiving Alert" but never say "Alert Sent" after getting this error.

This seems to happen on any monitor, no matter the link. Sometimes the monitor that gives the error decodes, sometimes not.

I have also uninstalled/reinstalled EAS2Text to no avail.

Thank you for your time

System Specs:
Running Ubuntu 24 in VirtualBox (host os: windows 10)
4 GB ram
50 GB storage

Merging..

Someone needs to merge the leap year fix into the web-dev branch, can someone do that?

IceCast playout crashing

The icecast playout crashes sometimes with an error of [21:35:36C] > [PLAYOUT] PLAYLOG > SENDING: HEADERS
[21:35:36C] > [PLAYOUT] ERROR > *** AL BrokenPipeError, [Errno 32] Broken pipe ***
[21:35:36C] > [PLAYOUT] ERROR > *** File: /home/one/ENDEC/ASMARA/asmara.py ***
[21:35:36C] > [PLAYOUT] ERROR > *** Func: playout ***
[21:35:36C] > [PLAYOUT] ERROR > *** Line: 2573 ***
[21:35:37C] > [PLAYOUT] ERROR > *** Icecast Playout Crashed. ***

Webserver | Translations

This will not be completed until we get the webserver done, so this should go in the backlog for now.

userdb cli | webserver

could someone work on a userdb cli, for adding and removing, or editing things in a user database

Rewrite / Redesign Output Systems

The New playout system should replace the current AutoDJ system, as it has many bugs, and is inherently flawed.
This should move the ENDEC towards more of what it should do, E.G. Handles EAS, and keeps it away from overloading the project with unnecessary bloat.

The current idea for the system will be based on Sockets, Either Unix or Network, and will allow ASMARA to accept / return a raw data stream over a socket that is controlled by the user.

It should provide something such as a 1KHz signal if there's no input, which should be enabled by default, but user configurable.

ASMARA stops relaying alerts after a few days

After a few days of running, it just refuses to relay any alert. There are no errors in the terminal, it just doesn't print out anything related to some error or EAS message or whatever. It requires me to restart the program every few days. Play out to Icecast still works.
image

Playout Bug

'[PLAYOUT] WARNING > *** UNKNOWN STATE: This is a bug! ***'
'[PLAYOUT] WARNING > *** Killing current patch ***'

Need SAME Documentation

I don't exactly remember how far up the duration number in the EAS SAME code can go up, so if someone could provide documentation for that, would be great, also need python code for generating JJJHHMM

SAMEDEC 3.0 still fails check

[11:44:36E] > [DECODER] FATAL > *** SAMEDEC is not version 0.2 or higher! Recommended version is 0.2.3. ***
[11:44:36E] > [DECODER] FATAL > *** samedec 0.3.0 *** -- this is my debug check i added, this is what it responds with, so it should work, but it doesn't so... i don't know

Taking Suggestions For Webserver

Some Suggestions would be nice, i don't want to be tunnelvisioned on one thing and one thing only, that decreases my productivity as ive seen with other projects ive done on my own time

I get this error anyone know how to fix it

Exception in thread MONITOR-1:
Traceback (most recent call last):
File "/usr/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
File "/usr/lib/python3.11/threading.py", line 982, in run
self._target(*self._args, **self._kwargs)
File "/home/one/KKWF/ASMARA/asmara.py", line 794, in recorder
self.stream = Popen(
^^^^^^
File "/usr/lib/python3.11/subprocess.py", line 1026, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.11/subprocess.py", line 1883, in _execute_child
self.pid = _fork_exec(
^^^^^^^^^^^
TypeError: expected str, bytes or os.PathLike object, not dict

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.