Sonnie Parker
Senior Admin
More
- Preamp, Processor or Receiver
- StormAudio ISP Elite 24 MK3 Processor
- Main Amp
- McIntosh MC1.25KW Monoblock Amps
- Additional Amp
- StormAudio PA 16 MK3
- Other Amp
- McIntosh MA252 2-Channel Hybrid Integrated Amp
- Music Server
- ROON Nucleus One
- Universal / Blu-ray / CD Player
- Magnetar UDP800 UHD Player
- Streaming Equipment
- Kaleidescape Strato C Media Player
Kaleidescape Terra Prime 22TB Server
Lenovo X1 Carbon
Apple TV 4K
- Turntable/Cartridge
- Music Hall Stealth Turntable
Ortofon 2M Blue Cartridge
- Streaming Subscriptions
- Lifetime Roon Subscription
Tidal
qobuz
Netflix
Amazon Prime
- Other Equipment
- MediaLight Mk2 v2 Flex Bias Lighting
Zero Surge 8R15W-1
Zero Surge 2R20W
- Front Speakers
- RTJ 410
- Front Wide Speakers
- JTR Noesis 110HT
- Center Channel Speaker
- MartinLogan Focus C-18
- Surround Speakers
- JTR Noesis 210RT
- Surround Back Speakers
- JTR Noesis 210RT
- Front Height Speakers
- JTR Noesis 110HT-SL
- Middle Height Speakers
- JTR Noesis 110HT-SL
- Rear Height Speakers
- JTR Noesis 110HT-SL
- Subwoofers
- JTR Captivator - 4000ULF-TL x2 + 2400 x6
- Bass Shaker System
- Dayton Audio BSA-200 Amp
4 BST-1 Bass Shakers
- Other Speakers
- Wharfedale Super Linton
- Video Display Device
- Sony 98X90L
- Remote Control
- URC MX-890
- Cables
- AudioQuest - Various
THX PixelGen HDMI
Pangea Power Cables
Blue Jeans Cables
SVS Soundpath Cables
Custom Cables
- Satellite System
- Dish Joey 4K
- Other Equipment
- Salamander Synergy Equipment Stand
VTI Amp Stands for the Monoblocks
Solidsteel - S3 Series Amp Stand
- Network/Internet
- C-Spire 1Gig Fiber
Omada OC300 Controller
Omada ER8411 10G Router
Omada SG3218XP-M2 10G/2.5G Managed Switch
Omada SG2210XMP-M2 10G/2.5G Managed Switch
SilentPower LAN iPurifier Pro (for Nucleus One)
Asustor Flashstor NAS
- Headphones/IEMs
- HIFIMAN HE1000se
Unique Melody Mest MKII
- Headphone DAC/Amp
- Eversolo DMP-A6
RME ADI-2 DAC FS
HIFIMAN Goldenwave Serenade
- Whole House System
- HEOS System
Home-150 Speaker x6
Samsung S9 Tablet w/ HEOS
- Office/Study System
- Office System
Dell Precision Computer
Roon Networked
Vanatoo Transparent One Encore Plus Speakers
- Secondary/Additional Room System
- AV Test Room System
NAD M33 Streaming DAC Amp
MartinLogan Motion XT F200
JTR Captivator RS1
miniDSP EARS
Zero Surge 8R15W-1
Zero Surge 2R20W
Dell Optiplex
Roon Networked
- Additional Room System
- Sunroom System
Denon AVR-X1800H HEOS Roon Ready Receiver
Zu Audio DW-6 Speakers
Dayton Audio IO8XTW Outdoor Speakers
Roon Networked
Dish Joey
JVC 37" TV
- Additional Room System
- Cabin System
Onkyo TX-SR805 Receiver
Infinity Primus P163 Speakers
RSL Outsiders Outdoor Speakers
Shield TV Pro
Sony 55" TV
- Additional Room System
- Vinyl Room
Accuphase E-280 Integrated Amp
Technics SL-1210GR2 Turntable
Ortofon 2M Blue Cartridge
KLH Model Three Speakers
Zero Surge 8R15W-1
- Additional Room System
- Barn Jam
Denon AVR-X1600H HEOS Roon Ready Receiver
Soundfield Custom Speakers
I suppose since I have decided to keep the Monolith HTP-1 processor, I'll start a post with some of my experiences with it. This first post is not all inclusive by any means, but more or less a kick-off so that I can have a place to share some thoughts from time to time. The unit is a fairly good looking unit in my opinion, and the display is plenty bright. Love all the XLR pre-outs... they thought of everything it seems.
This may well be the most budget friendly 16-channel processor with Dirac Live that isn't plagued with issues. Thus far, my experience with it has been excellent. My favorite part is the IP control of the unit vs an on-screen menu. This may not be preferable for some if you don't keep a laptop in your listening room or area, but for me it's perfect since I am an avid user of Roon.
Product page from Monoprice website: https://www.monoprice.com/product?p_id=37887
Latest User Manual as of 11/10/2020: HTP-1 User Manual 11/10/2020
AVS Support Thread - You can always contact Monoprice support, however the wait times can be several days or even a week+. It's not that they have poor service, it's simply that they, like many other businesses, are working under unusual conditions during the COVID times. Posting in the AVS support thread may yield you a faster solution to any issues you may be experiencing, short of having to actually contact support.
Custom Web UI - see screenshots below.
Full specs copied from the product page at Monoprice:
The 8 presets can be set to your preference by using the HTP-1 Preset Recorder - A few guys over at AVS put this together and it's really useful. Copy and paste the code below and save as an HTML file... or paste it into a text file and rename it with a .html extension. Then load it into your browser, and enter the IP address of your HTP-1. It lets you record and edit sequences of commands that are sent by the 8 preset buttons on the remote. Or you can scroll down a little and use the HTP-1 Custom Web UI that includes the Preset Recorder.
REVIEWS
Sound&Vision
Audio Science Review (not so much a subjective review, but lots of measurements)
Audioholics
*Hopefully Todd will be doing a review for AV NIRVANA soon.
IP Control
I mentioned earlier how I really like the IP control of the unit... my favorite functionality part of the unit. It is much easier for me to setup the unit and make changes with my mouse and keyboard than it is with a remote control... especially typing names on a keyboard vs. using the up/down/left/right/select buttons on a remote to navigate an on screen keyboard. The options/settings for this unit are extremely robust. Being able to make adjustments AFTER Dirac Live has run is a welcomed function that has been missing on all other processors I've owned or tested... that I can remember.
Here's a snap shot of the main IP page, which you can customize to your liking using http://jsoosiah.com/ ... the HTP-1 Custom Web UI
And here is the Settings page (via the Custom UI)... and a few screen shots of the various settings:
There are six (6) Dirac Live presets...
The filter creation section is really a sweet feature... and being able to see the shape of the low-shelf filter... with some serious manipulations. This DOES NOT affect the initial Dirac Live calibration, so if you want to add the shelf filter prior to Dirac Live calibration, DL will not adjust for it, whereas if you simply turned the volume up on your subs, DL would adjust the level. Below is an example of a 12dB shelf filter from 70Hz with a .7 Q. You can literally make near endless adjustments.
The Macro Recorder is included in the Custom UI...
You can completely customize the main home IP screen... the list goes on and on...
You always get the latest User Manual from the Help section...
It just seems as though the number of functions and adjustments are endless. It's a very nice unit that I have really come to appreciate over the last few weeks... and I'm just beginning.

This may well be the most budget friendly 16-channel processor with Dirac Live that isn't plagued with issues. Thus far, my experience with it has been excellent. My favorite part is the IP control of the unit vs an on-screen menu. This may not be preferable for some if you don't keep a laptop in your listening room or area, but for me it's perfect since I am an avid user of Roon.
Product page from Monoprice website: https://www.monoprice.com/product?p_id=37887
Latest User Manual as of 11/10/2020: HTP-1 User Manual 11/10/2020
AVS Support Thread - You can always contact Monoprice support, however the wait times can be several days or even a week+. It's not that they have poor service, it's simply that they, like many other businesses, are working under unusual conditions during the COVID times. Posting in the AVS support thread may yield you a faster solution to any issues you may be experiencing, short of having to actually contact support.
Custom Web UI - see screenshots below.
Full specs copied from the product page at Monoprice:
Model | HTP-1 |
Part Number | 37887 |
Video Inputs | 8x HDMI® |
Audio‑Only Inputs | 2x analog stereo RCA, 3x digital coaxial, 3x digital optical, 1x AES/EBU, 1x HDMI ARC/eARC |
Streaming Inputs | Bluetooth® and Roon® |
Video Outputs | 1x HDMI ARC/eARC, 1x HDMI |
Audio Outputs | 16-channels balanced XLR line outputs, unbalanced stereo analog RCA |
Triggers | 1x 12V trigger input, 4x 12V trigger outputs |
HDMI Version | 2.0b |
HDCP™ Version | 2.3 |
Maximum Video Resolution | 4K@60Hz UHD |
Audio Frequency Response | 20Hz ~ 20kHz |
Supported Audio Codecs | Dolby Atmos®, Dolby TrueHD™, Dolby Digital®, Dolby Surround®, DTS:X®, DTS Neural:X®, DTS-HD Master Audio™, Auro-3D®, Auro-Matic® |
Crossover | Variable 4th order Linkwitz-Riley |
Room Correction/Equalization | Dirac Live® (licensed with HTP-1 ownership) |
Built‑in Audio Correction | Bass and Treble tone controls, 16-band parametric equalizer with independent speaker control on each band |
Connectivity | Wired Gigabit 10/100/1000Mbps Ethernet, Wi-Fi® |
Input Power | 100 ~ 240 VAC, 50/60 Hz |
Dimensions | 17.1" x 5.7" x 12.0" |
The 8 presets can be set to your preference by using the HTP-1 Preset Recorder - A few guys over at AVS put this together and it's really useful. Copy and paste the code below and save as an HTML file... or paste it into a text file and rename it with a .html extension. Then load it into your browser, and enter the IP address of your HTP-1. It lets you record and edit sequences of commands that are sent by the 8 preset buttons on the remote. Or you can scroll down a little and use the HTP-1 Custom Web UI that includes the Preset Recorder.
Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTP-1 Macro Recorder</title>
<!--
<link href="style.css" rel="stylesheet">
<script src="index.js" defer></script>
-->
<link rel="manifest" href="manifest.webmanifest">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<!-- <link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/materia/bootstrap.min.css" rel="stylesheet" integrity="sha384-1tymk6x9Y5K+OF0tlmG2fDRcn67QGzBkiM3IgtJ3VrtGrIi5ryhHjKjeeS60f1FA" crossorigin="anonymous"> -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/open-iconic/1.1.1/font/css/open-iconic-bootstrap.min.css" rel="stylesheet">
<style type="text/css">
div#cmd_editor {
display: none;
}
.table-secondary, .table-secondary > th, .table-secondary > td {
background-color: #f6f6f6;
}
.table-secondary th, .table-secondary td, .table-secondary thead th, .table-secondary tbody + tbody {
border-color: #ddd;
}
</style>
<script>
var IP_ADDR_STORAGE_KEY = 'ipaddr';
var ws;
var ipaddr = localStorage.getItem(IP_ADDR_STORAGE_KEY);
var recordings = [];
// Render table of all Current CMDs and PRESETs
function renderAllOpTable(svronly, tableName) {
var oldTable = document.getElementById(tableName),
newTable = document.createElement('table');
newTable.setAttribute('id', tableName);
newTable.classList.add('tabletable-sm', 'table-hover');
var tbodyCmdA = createOpRows(svronly.cmda);
var tbodyCmdB = createOpRows(svronly.cmdb);
var tbodyCmdC = createOpRows(svronly.cmdc);
var tbodyCmdD = createOpRows(svronly.cmdd);
var tbodyPreset1 = createOpRows(svronly.preset1);
var tbodyPreset2 = createOpRows(svronly.preset2);
var tbodyPreset3 = createOpRows(svronly.preset3);
var tbodyPreset4 = createOpRows(svronly.preset4);
newTable.appendChild(createSectionThead('CMD A'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyCmdA);
newTable.appendChild(createSectionThead('CMD B'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyCmdB);
newTable.appendChild(createSectionThead('CMD C'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyCmdC);
newTable.appendChild(createSectionThead('CMD D'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyCmdD);
newTable.appendChild(createSectionThead('PRESET 1'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyPreset1);
newTable.appendChild(createSectionThead('PRESET 2'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyPreset2);
newTable.appendChild(createSectionThead('PRESET 3'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyPreset3);
newTable.appendChild(createSectionThead('PRESET 4'));
newTable.appendChild(createThead());
newTable.appendChild(tbodyPreset4);
oldTable.parentNode.replaceChild(newTable, oldTable);
}
// Render table of current recordings
function renderOpTable(recordings, tableName) {
var oldTable = document.getElementById(tableName),
newTable = document.createElement('table');
newTable.setAttribute('id', tableName);
newTable.classList.add('tabletable-sm', 'table-hover');
var thead = createThead(true);
newTable.appendChild(thead);
var tbody = createOpRows(recordings, true);
newTable.appendChild(tbody);
oldTable.parentNode.replaceChild(newTable, oldTable);
}
// Create a <tbody> consisting of one set of recordings
function createOpRows(recordings, showDeleteColumn) {
var tbody = document.createElement('tbody');
for(let i = 0; i < recordings.length; i++){
var tr = document.createElement('tr');
var rowNumTd = document.createElement('td');
rowNumTd.appendChild(document.createTextNode(i + 1));
tr.appendChild(rowNumTd);
tr.classList.add('table-secondary
var opTd = document.createElement('td');
opTd.appendChild(document.createTextNode(recordings[i].op));
tr.appendChild(opTd);
var pathTd = document.createElement('td');
pathTd.appendChild(document.createTextNode(recordings[i].path));
tr.appendChild(pathTd);
var valueTd = document.createElement('td');
valueTd.appendChild(document.createTextNode(JSON.stringify(recordings[i].value)));
tr.appendChild(valueTd);
if (showDeleteColumn) {
var deleteTd = document.createElement('td');
var deleteButton = document.createElement('button');
deleteButton.setAttribute('type', 'button');
deleteButton.setAttribute('class', 'btn btn-sm btn-outline-danger');
deleteButton.setAttribute('aria-label', 'Close');
deleteButton.addEventListener('click', function(){ eraseatrow(i) }, false);
var deleteSpan = document.createElement('span');
deleteSpan.setAttribute('class', 'oi oi-x');
deleteButton.appendChild(deleteSpan);
deleteTd.appendChild(deleteButton);
tr.appendChild(deleteTd);
}
tbody.appendChild(tr);
}
return tbody;
}
// Create a <thead> consisting of the op, path, and value column headers
function createThead(showDeleteColumn) {
var thead = document.createElement('thead');
var headerRow = document.createElement('tr');
var rowNumTh = document.createElement('th');
rowNumTh.appendChild(document.createTextNode('#'));
headerRow.appendChild(rowNumTh);
var opTh = document.createElement('th');
opTh.appendChild(document.createTextNode('op'));
headerRow.appendChild(opTh);
var pathTh = document.createElement('th');
pathTh.appendChild(document.createTextNode('path'));
headerRow.appendChild(pathTh);
var valueTh = document.createElement('th');
valueTh.appendChild(document.createTextNode('value'));
headerRow.appendChild(valueTh);
if (showDeleteColumn) {
var valueTh = document.createElement('th');
valueTh.appendChild(document.createTextNode('×'));
headerRow.appendChild(valueTh);
}
thead.appendChild(headerRow);
return thead;
}
// Create a <thead> consisting of the CMD / PRESET name
function createSectionThead(sectionName) {
var thead = document.createElement('thead');
var headerRow = document.createElement('tr');
var sectionNameTh = document.createElement('th');
sectionNameTh.setAttribute('colSpan', 4);
var h3 = document.createElement('h4');
h3.appendChild(document.createTextNode(sectionName));
sectionNameTh.appendChild(h3);
headerRow.appendChild(sectionNameTh);
thead.appendChild(headerRow);
return thead;
}
window.onload = function restoreIpAddr() {
var ipaddr;
try {
ipaddr = localStorage.getItem(IP_ADDR_STORAGE_KEY);
} catch (e) {
console.log("Couldn't from local storage");
}
if (!ipaddr) {
ipaddr = '192.168.1.26';
}
$(usr_ipaddr).val(ipaddr);
}
function wsInit() {
// Get HTP-1 IP address from the user
ipaddr = $(usr_ipaddr).val();
console.log ('ipaddr:', ipaddr);
if ('WebSocket' in window || 'MozWebSocket' in window) {
ws = new WebSocket('ws://' + ipaddr + '/ws/controller');
ws.onopen = function() {
$(p_banner).attr('class', 'alert alert-success').html("Websocket connected to HTP-1 at "+ipaddr+" at "+new Date());
showunit();
$(cmd_editor).show();
try {
// save successful IP addr
localStorage.setItem(IP_ADDR_STORAGE_KEY, ipaddr);
} catch (e) {
console.log("Couldn'tlocal storage");
}
}
ws.onerror= function(evt) {
$(p_banner).attr('class', 'alert alert-danger').html("Websocket ERROR connecting to HTP-1 at "+ipaddr+" at "+new Date());
$(cmd_editor).hide();
}
ws.onclose = function() {
$(p_banner).attr('class', 'alert alert-warning').html("Websocket disconnected to HTP-1 at "+ipaddr+" at "+new Date());
$(cmd_editor).hide();
}
ws.onmessage = function (evt) {
console.log (evt.data);
if(evt.data.search(/^msoupdate \[/) >= 0) {
// an msoupdate verb: drop the verb
var json = evt.data.replace(/^.*?\[/, '[');
console.log('evt.data json);
// to ignore non operative branches?
if (json.search(/"path" *: *"\/(status|videostat|stat|svronly|versions|ipInfo|hostip|bluetooth)/) < 0) {
// no, these are operative branches, record them
// parse JSON and record them
var updates = JSON.parse(json);
updates.forEach(el => { recordings.push(el); });
// generate an output of current recordings
renderOpTable(recordings, 'currentRecordingData');
}
else {
// non operative branches being ignored
var html = '';
recordings.forEach(el => { html = html + JSON.stringify(el) + "\n"; });
html = html + " Ignore: " + json;
}
} else if (evt.data.search(/^mso {/) >= 0) {
// just received an MSO
var json = evt.data.replace(/^.*? {/, '{');
console.log('evt.data json);
var mso = JSON.parse(json);
renderAllOpTable(mso.svronly, 'allData');
} else {
document.getElementById('data').innerHTML = evt.data;
}
}
}
else {
alert("Your browser does not support websockets");
}
}
// clear recordings
function clrrec() {
recordings = [];
$(currentRecordingData).html('');
}
// erase last entry
function eraselast() {
recordings.pop();
renderOpTable(recordings, 'currentRecordingData');
}
// erase entry at index i
function eraseatrow(i) {
recordings.splice(i, 1);
renderOpTable(recordings, 'currentRecordingData');
}
// send recordings to CMD A/B/C/D and PRESET 1/2/3/4
function send2cmda() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/cmda", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to CMD A.</div>');
showunit();
}
function send2cmdb() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/cmdb", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to CMD B.</div>');
showunit();
}
function send2cmdc() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/cmdc", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to CMD C.</div>');
showunit();
}
function send2cmdd() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/cmdd", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to CMD D.</div>');
showunit();
}
function send2preset1() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/preset1", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to PRESET 1.</div>');
showunit();
}
function send2preset2() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/preset2", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to PRESET 2.</div>');
showunit();
}
function send2preset3() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/preset3", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to PRESET 3.</div>');
showunit();
}
function send2preset4() {
var cmd ='changemso ' + JSON.stringify([
{"op":"replace", "path":"/svronly/preset4", "value": recordings }
]);
ws.send(cmd);
clrrec();
$(currentRecordingData).html('<div class="alert alert-success">Sent to PRESET 4.</div>');
showunit();
}
function showunit() {
var cmd = 'getmso';
console.log (cmd); // for debug
ws.send(cmd);
}
</script>
</head>
<body>
<div ng-app = "" class="container">
<h1>HTP-1 Macro Recorder</h1>
<p>This is a trivial macro recorder for the Monoprice HTP-1 Processor.
An undocumented feature allows an array of commands to be triggered
by pushing the CMD A/B/C/D or the PRESET 1/2/3/4 buttons on the IR
remote controller.
</p>
<p>
This Javascript application embedded in an HTML file allows you to record
your actions and push to the CMD A/B/C/D and PRESET 1/2/3/4 buttons.
There is no known risk of permanent harm to your HTP-1 but the standard
disclaimers apply and you are using it at your own risk.
</p>
<p>
Procedure:
</p>
<ol>
<li>Enter the IP address of your HTP-1 below and click 'Connect'. An alert should say "Websocket is open"</li>
<li>Click 'Clear Recordings' to clear the recordings</li>
<li>Issue the desired HTP-1 commands, using either the web GUI or the IR remote</li>
<li>Watch the list below. Click the delete button to any undesirable entries</li>
<li>When you are done, click one of the 'Save as' buttons to save</li>
</ol>
<form>
<div class="form-group row">
<label for="usr_ipaddr" class="col-sm-3 col-form-label">Enter the IP address of HTP-1:</label>
<div class="col-sm-9">
<input type="text" class="form-control" type="text" id="usr_ipaddr" minlength="7" maxlength="15" size="15" accesskey="p">
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="button" class="btn btn-primary mb-2" id="btn_ip" onclick="javascript:wsInit()" accesskey="c">Connect</button>
</div>
</div>
</form>
<div class="alert alert-info" id="p_banner">Waiting for websocket to open</div>
<div id="cmd_editor">
<h2>Create New Recording</h2>
<button class="btn btn-danger" type="button" id="btn_clr" onclick="javascript:clrrec()">Clear Recordings</button>
<!-- <button class="btn btn-warning" type="button" id="btn_bksp" onclick="javascript:eraselast()">Erase Last Entry</button> -->
<!-- <button class="btn btn-primary" type="button" id="btn_show" onclick="javascript:showunit()">Show HTP-1 CMDs and PRESETs</button> -->
<br>
<br>
<button class="btn btn-info" type="button" id="btn_cmda" onclick="javascript:send2cmda()">Save as CMD A</button>
<button class="btn btn-info" type="button" id="btn_cmdb" onclick="javascript:send2cmdb()">Save as CMD B</button>
<button class="btn btn-info" type="button" id="btn_cmdc" onclick="javascript:send2cmdc()">Save as CMD C</button>
<button class="btn btn-info" type="button" id="btn_cmdd" onclick="javascript:send2cmdd()">Save as CMD D</button>
<br>
<br>
<button class="btn btn-info" type="button" id="btn_preset1" onclick="javascript:send2preset1()">Save as PRESET 1</button>
<button class="btn btn-info" type="button" id="btn_preset2" onclick="javascript:send2preset2()">Save as PRESET 2</button>
<button class="btn btn-info" type="button" id="btn_preset3" onclick="javascript:send2preset3()">Save as PRESET 3</button>
<button class="btn btn-info" type="button" id="btn_preset4" onclick="javascript:send2preset4()">Save as PRESET 4</button>
<br>
<br>
<table id="currentRecordingData"></table>
<h2>Current CMDs and PRESETs</h2>
<table id="allData"></table>
</div>
</div>
</body>
</html>
REVIEWS
Sound&Vision
Audio Science Review (not so much a subjective review, but lots of measurements)
Audioholics
*Hopefully Todd will be doing a review for AV NIRVANA soon.
IP Control
I mentioned earlier how I really like the IP control of the unit... my favorite functionality part of the unit. It is much easier for me to setup the unit and make changes with my mouse and keyboard than it is with a remote control... especially typing names on a keyboard vs. using the up/down/left/right/select buttons on a remote to navigate an on screen keyboard. The options/settings for this unit are extremely robust. Being able to make adjustments AFTER Dirac Live has run is a welcomed function that has been missing on all other processors I've owned or tested... that I can remember.
Here's a snap shot of the main IP page, which you can customize to your liking using http://jsoosiah.com/ ... the HTP-1 Custom Web UI
And here is the Settings page (via the Custom UI)... and a few screen shots of the various settings:
There are six (6) Dirac Live presets...
The filter creation section is really a sweet feature... and being able to see the shape of the low-shelf filter... with some serious manipulations. This DOES NOT affect the initial Dirac Live calibration, so if you want to add the shelf filter prior to Dirac Live calibration, DL will not adjust for it, whereas if you simply turned the volume up on your subs, DL would adjust the level. Below is an example of a 12dB shelf filter from 70Hz with a .7 Q. You can literally make near endless adjustments.
The Macro Recorder is included in the Custom UI...
You can completely customize the main home IP screen... the list goes on and on...
You always get the latest User Manual from the Help section...
It just seems as though the number of functions and adjustments are endless. It's a very nice unit that I have really come to appreciate over the last few weeks... and I'm just beginning.
Attachments
Last edited: