Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/_images/arc_hld_backend.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_images/arc_hld_frontend.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_images/arc_hld_overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
95 changes: 95 additions & 0 deletions docs/_sources/design/arc_design.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
.. _arc_design:

AudioReach Creator Design
##################################################

.. contents::
:local:
:depth: 3

Introduction
-------------------

AudioReach Creator (ARC), also known as Qualcomm Audio Calibration Tool (QACT) for older version, is an open source and cross-platform software providing a user interface to audio design, software, and tuning engineers for composing, configuring, tuning, and storing audio graphs into audio calibration database (ACDB) for intended use cases.


Architecture
--------------------------------------
AudioReach Creator (ARC) architecture will contain two separate parts: UI (Frontend) and ARC Engine (Backend).

.. figure:: images/arc/arc_hld_overview.png
:figclass: fig-center
:scale: 70 %

AudioReach Creator (ARC) High-Level Software Component View


ARC UI (Frontend)
^^^^^^^^^^^^^^^^^
Frontend will contain all the required user interfaces and will be developed using Electron and React.

.. figure:: images/arc/arc_hld_frontend.png
:figclass: fig-center
:scale: 80 %

AudioReach Creator (ARC) High-Level Software Component View (Frontend)

Presentation Layer
""""""""""""""""""

- React components that handle UI and user interactions.
- Communicates only with the Facade.
- They receive data via @Input() and emit events via @Output().

Major UI Features
*****************

**Start Page:** Entry page of ARC application which will holds buttons to allow users to open file, connect to a device etc.

**Graph View:** After opening a file or connecting to a device, selected usecase's graphs will be displayed. User can modify and tune usecases in Graph View.

**Calibration View:** For a selected module, its calibration data can be tuned through Calibration View.

**Log View:** Will show all log messages for each UI operation.

**Discovery Wizard:** Will provide UI workflow to import definitions for modules and some meta information so that they can be used in usecases. For those modules which are already being used in some usecases, updated module definitions can be applied to usecases automatically through Discovery Wizard.

**ACDB Merge:** Will provide workflow to compare and merge data between ACDB files. This feature will be helpful for users to manage their files between different branches.

Facade Layer
"""""""""""""""""

- Acts as an intermediary between the presentation and state layers.
- Exposes observables and methods to the components.
- Dispatches actions or calls services to update the state.

State Layer
"""""""""""""""""

- Manages application state using a store (e.g., NgRx or a custom service).
- Handles API calls and updates state accordingly.
- Exposes state as observables.


ARC Engine (Backend)
^^^^^^^^^^^^^^^^^^^^

ARC Engine will work as a web server to provide all APIs for Frontend to access/update data from database. It will contain Presentation and Domain layers.

.. figure:: images/arc/arc_hld_backend.png
:figclass: fig-center
:scale: 80 %

AudioReach Creator (ARC) High-Level Software Component View (Backend)

Presentation Layer
""""""""""""""""""

- Provides web REST apis to handle http/https requests.
- Provides gRPC apis to communicate large size data in real time for high-performance and low-latency requirement (typically used for RTM).
- Provides notification mechanism with SignalR.

Domain Layer
"""""""""""""""""

- Provides services with core business logic and rules to query/update data from/to database.
1 change: 1 addition & 0 deletions docs/_sources/design/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ AudioReach Designs
args_design
gpr_design
lx_design
arc_design
237 changes: 237 additions & 0 deletions docs/design/arc_design.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@


<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AudioReach Creator Design &mdash; AudioReach Documentation 1.0 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="../_static/audioreach.css?v=cd7bb9cf" />


<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=f2a433a1"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="AudioReach APIs" href="../api/index.html" />
<link rel="prev" title="Linux ASoC Architecture" href="linux_asoc_arch.html" />
</head>

<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >



<a href="../index.html" class="icon icon-home">
AudioReach Documentation
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../sdk_overview.html">AudioReach Project Overview</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">AudioReach Designs</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="arch_overview.html">AudioReach Architecture Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="design_concept.html">AudioReach Concept and Terminology</a></li>
<li class="toctree-l2"><a class="reference internal" href="arspf_design.html">AudioReach Engine</a></li>
<li class="toctree-l2"><a class="reference internal" href="args_design.html">AudioReach Graph Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="gpr_design.html">Generic Packet Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="lx_design.html">Linux Adaptation Design</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">AudioReach Creator Design</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#introduction">Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="#architecture">Architecture</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#arc-ui-frontend">ARC UI (Frontend)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#arc-engine-backend">ARC Engine (Backend)</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">AudioReach APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev/index.html">AudioReach Developer Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../platform/index.html">Platform Reference Guide</a></li>
</ul>

</div>
</div>
</nav>

<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">AudioReach Documentation</a>
</nav>

<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">AudioReach Designs</a></li>
<li class="breadcrumb-item active">AudioReach Creator Design</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/design/arc_design.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">

<section id="audioreach-creator-design">
<span id="arc-design"></span><h1>AudioReach Creator Design<a class="headerlink" href="#audioreach-creator-design" title="Link to this heading"></a></h1>
<nav class="contents local" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#introduction" id="id5">Introduction</a></p></li>
<li><p><a class="reference internal" href="#architecture" id="id6">Architecture</a></p>
<ul>
<li><p><a class="reference internal" href="#arc-ui-frontend" id="id7">ARC UI (Frontend)</a></p>
<ul>
<li><p><a class="reference internal" href="#presentation-layer" id="id8">Presentation Layer</a></p></li>
<li><p><a class="reference internal" href="#facade-layer" id="id9">Facade Layer</a></p></li>
<li><p><a class="reference internal" href="#state-layer" id="id10">State Layer</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#arc-engine-backend" id="id11">ARC Engine (Backend)</a></p>
<ul>
<li><p><a class="reference internal" href="#id1" id="id12">Presentation Layer</a></p></li>
<li><p><a class="reference internal" href="#domain-layer" id="id13">Domain Layer</a></p></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<section id="introduction">
<h2><a class="toc-backref" href="#id5" role="doc-backlink">Introduction</a><a class="headerlink" href="#introduction" title="Link to this heading"></a></h2>
<p>AudioReach Creator (ARC), also known as Qualcomm Audio Calibration Tool (QACT) for older version, is an open source and cross-platform software providing a user interface to audio design, software, and tuning engineers for composing, configuring, tuning, and storing audio graphs into audio calibration database (ACDB) for intended use cases.</p>
</section>
<section id="architecture">
<h2><a class="toc-backref" href="#id6" role="doc-backlink">Architecture</a><a class="headerlink" href="#architecture" title="Link to this heading"></a></h2>
<p>AudioReach Creator (ARC) architecture will contain two separate parts: UI (Frontend) and ARC Engine (Backend).</p>
<figure class="fig-center align-default" id="id2">
<a class="reference internal image-reference" href="../_images/arc_hld_overview.png"><img alt="../_images/arc_hld_overview.png" src="../_images/arc_hld_overview.png" style="width: 856.0999999999999px; height: 393.4px;" />
</a>
<figcaption>
<p><span class="caption-text">AudioReach Creator (ARC) High-Level Software Component View</span><a class="headerlink" href="#id2" title="Link to this image"></a></p>
</figcaption>
</figure>
<section id="arc-ui-frontend">
<h3><a class="toc-backref" href="#id7" role="doc-backlink">ARC UI (Frontend)</a><a class="headerlink" href="#arc-ui-frontend" title="Link to this heading"></a></h3>
<p>Frontend will contain all the required user interfaces and will be developed using Electron and React.</p>
<figure class="fig-center align-default" id="id3">
<a class="reference internal image-reference" href="../_images/arc_hld_frontend.png"><img alt="../_images/arc_hld_frontend.png" src="../_images/arc_hld_frontend.png" style="width: 1392.0px; height: 509.6px;" />
</a>
<figcaption>
<p><span class="caption-text">AudioReach Creator (ARC) High-Level Software Component View (Frontend)</span><a class="headerlink" href="#id3" title="Link to this image"></a></p>
</figcaption>
</figure>
<section id="presentation-layer">
<h4><a class="toc-backref" href="#id8" role="doc-backlink">Presentation Layer</a><a class="headerlink" href="#presentation-layer" title="Link to this heading"></a></h4>
<ul class="simple">
<li><p>React components that handle UI and user interactions.</p></li>
<li><p>Communicates only with the Facade.</p></li>
<li><p>They receive data via &#64;Input() and emit events via &#64;Output().</p></li>
</ul>
<section id="major-ui-features">
<h5>Major UI Features<a class="headerlink" href="#major-ui-features" title="Link to this heading"></a></h5>
<p><strong>Start Page:</strong> Entry page of ARC application which will holds buttons to allow users to open file, connect to a device etc.</p>
<p><strong>Graph View:</strong> After opening a file or connecting to a device, selected usecase’s graphs will be displayed. User can modify and tune usecases in Graph View.</p>
<p><strong>Calibration View:</strong> For a selected module, its calibration data can be tuned through Calibration View.</p>
<p><strong>Log View:</strong> Will show all log messages for each UI operation.</p>
<p><strong>Discovery Wizard:</strong> Will provide UI workflow to import definitions for modules and some meta information so that they can be used in usecases. For those modules which are already being used in some usecases, updated module definitions can be applied to usecases automatically through Discovery Wizard.</p>
<p><strong>ACDB Merge:</strong> Will provide workflow to compare and merge data between ACDB files. This feature will be helpful for users to manage their files between different branches.</p>
</section>
</section>
<section id="facade-layer">
<h4><a class="toc-backref" href="#id9" role="doc-backlink">Facade Layer</a><a class="headerlink" href="#facade-layer" title="Link to this heading"></a></h4>
<ul class="simple">
<li><p>Acts as an intermediary between the presentation and state layers.</p></li>
<li><p>Exposes observables and methods to the components.</p></li>
<li><p>Dispatches actions or calls services to update the state.</p></li>
</ul>
</section>
<section id="state-layer">
<h4><a class="toc-backref" href="#id10" role="doc-backlink">State Layer</a><a class="headerlink" href="#state-layer" title="Link to this heading"></a></h4>
<ul class="simple">
<li><p>Manages application state using a store (e.g., NgRx or a custom service).</p></li>
<li><p>Handles API calls and updates state accordingly.</p></li>
<li><p>Exposes state as observables.</p></li>
</ul>
</section>
</section>
<section id="arc-engine-backend">
<h3><a class="toc-backref" href="#id11" role="doc-backlink">ARC Engine (Backend)</a><a class="headerlink" href="#arc-engine-backend" title="Link to this heading"></a></h3>
<p>ARC Engine will work as a web server to provide all APIs for Frontend to access/update data from database. It will contain Presentation and Domain layers.</p>
<figure class="fig-center align-default" id="id4">
<a class="reference internal image-reference" href="../_images/arc_hld_backend.png"><img alt="../_images/arc_hld_backend.png" src="../_images/arc_hld_backend.png" style="width: 1147.2px; height: 502.40000000000003px;" />
</a>
<figcaption>
<p><span class="caption-text">AudioReach Creator (ARC) High-Level Software Component View (Backend)</span><a class="headerlink" href="#id4" title="Link to this image"></a></p>
</figcaption>
</figure>
<section id="id1">
<h4><a class="toc-backref" href="#id12" role="doc-backlink">Presentation Layer</a><a class="headerlink" href="#id1" title="Link to this heading"></a></h4>
<ul class="simple">
<li><p>Provides web REST apis to handle http/https requests.</p></li>
<li><p>Provides gRPC apis to communicate large size data in real time for high-performance and low-latency requirement (typically used for RTM).</p></li>
<li><p>Provides notification mechanism with SignalR.</p></li>
</ul>
</section>
<section id="domain-layer">
<h4><a class="toc-backref" href="#id13" role="doc-backlink">Domain Layer</a><a class="headerlink" href="#domain-layer" title="Link to this heading"></a></h4>
<ul class="simple">
<li><p>Provides services with core business logic and rules to query/update data from/to database.</p></li>
</ul>
</section>
</section>
</section>
</section>


</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="linux_asoc_arch.html" class="btn btn-neutral float-left" title="Linux ASoC Architecture" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../api/index.html" class="btn btn-neutral float-right" title="AudioReach APIs" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>

<hr/>

<div role="contentinfo">
<p>&#169; Copyright 2024, AudioReach.</p>
</div>

Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.


</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>

</body>
</html>
4 changes: 3 additions & 1 deletion docs/design/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->

<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
Expand Down Expand Up @@ -55,6 +55,7 @@
<li class="toctree-l2"><a class="reference internal" href="args_design.html">AudioReach Graph Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="gpr_design.html">Generic Packet Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="lx_design.html">Linux Adaptation Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="arc_design.html">AudioReach Creator Design</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">AudioReach APIs</a></li>
Expand Down Expand Up @@ -96,6 +97,7 @@
<li class="toctree-l1"><a class="reference internal" href="args_design.html">AudioReach Graph Services</a></li>
<li class="toctree-l1"><a class="reference internal" href="gpr_design.html">Generic Packet Router</a></li>
<li class="toctree-l1"><a class="reference internal" href="lx_design.html">Linux Adaptation Design</a></li>
<li class="toctree-l1"><a class="reference internal" href="arc_design.html">AudioReach Creator Design</a></li>
</ul>
</div>
</section>
Expand Down
3 changes: 2 additions & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->

<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
Expand Down Expand Up @@ -103,6 +103,7 @@ <h2>Table of Contents<a class="headerlink" href="#table-of-contents" title="Perm
<li class="toctree-l2"><a class="reference internal" href="design/args_design.html">AudioReach Graph Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="design/gpr_design.html">Generic Packet Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="design/lx_design.html">Linux Adaptation Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="design/arc_design.html">AudioReach Creator Design</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api/index.html">AudioReach APIs</a><ul>
Expand Down
Loading