Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - thesystemera

Pages: [1] 2 3 ... 9
1
General Discussion / Project: hush.fm
« on: August 18, 2013, 04:03:48 AM »
Here's a video of VoxCommando being used in a rather unique way. Did this mashup for my 16000 word dissertation. Do enjoy. The video is quite long as it had to be extensive but if you are a power-user or any thing of that nature I think you will enjoy it.  Feedback is welcome

The final video will have all credits and bibliography attached.  Thanks James so much man.  Bloody legend!

http://youtu.be/wuTU87CVewU

2
But yeah that sounds brilliant.  Thanks for clarifying guys!  Appreciate the input.  I'll play around but yeah I will probably just wait for Map.Get. 

Thanks guys.

3
LOL sorry typo! Obviously not {item.genre} I meant {item.year} and yes is does return back with a four digit date. 

Man my typo's wrote this just before going to bed as I was hoping to catch yah in your native time zone :)

4
OMG!  It's that simple!  A few days on 13 ASCII characters!

Nah but seriously thankyou.  Going to have to read up on how to use these strings, will most likely need it in the future..

5
I'm wanting the TTS to alter style of announcing reliant on the {item.genre} payload.  

Simply put.  If a track is from the era 1995 to 2000, a response is given. "Now for some late 90s goodness" LOL!  Same goes for a track from the 1950s to the 1970s "Now for something way back"

I thought of using the new Maps functionality but I don't think Map.Get is currently sending back payloads.  Could be done with Logic Blocks if (A)Contains(B) but I would have to make a logic block for each year, would I not?

Before I spend a week trying to work this out, thought I'd ask the greater community :) aka James LOL! :D

Any idea's anyone!

6
Thanks so much James.  I do want to cry a little though, I never knew about payload 3. 

One hell of a learning curve.  Thank you for your time guys.  Will have a play with this example now..:)

7
I still have a weird issue.  The [^\w\.@-] is successfully removing the "\" symbol but it's also removing the letter "A".  Any idea's?

8
Finally done it!  I looked up how to remove invalid characters and YUS! 

If I can simplify this, do tell me, but it works, that's the important thing.

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<command id="647" name="Process ShoutOut" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>Results.SetVar</cmdType>
    <cmdString>ShoutFile&amp;&amp;{1}</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Results.SetLastResult</cmdType>
    <cmdString>{var.ShoutFile}</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Results.RegExReplace</cmdType>
    <cmdString>[^\w\.@-]</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Results.RegExReplace</cmdType>
    <cmdString>ZLibraryShoutoutsProcessing</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Results.RegExReplace</cmdType>
    <cmdString>[.wav]</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Results.SetVar</cmdType>
    <cmdString>ShoutFile</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>OSD.ShowText</cmdType>
    <cmdString>{var.ShoutFile}</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Launch.RawParam</cmdType>
    <cmdString>C:\Program Files (x86)\sox-14-4-1\sox.exe&amp;&amp;"z:\library\shoutouts\processing\{var.ShoutFile}.wav" "z:\library\shoutouts\{var.ShoutFile}.wav" gain -n -3 silence 1 0.1 0.8% -1 0.5 0.8% contrast 50</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <event>TcpMic.WavSaved</event>
</command>

9
Okay I've got it but how do I replace with nothing!  If I ender nothing in to the second field it treats it as if to do nothing!!!  AARRGG!

I'm just using Replace, not RegExReplace.  That stuff is way too confusing.  Unlesss some one can help me.  I just want

Z:\Library\ShoutOuts\Processing\Shoutout123.wav   

to become

Shoutout123

so to remove the [Z:\Library\ShoutOuts\Processing\] and the [.wav]

10
Don't worry worked it out!  Results.SetLastResult :D

11
One small problem.  The variable I have to use is {1} not {LastResult}.  How would I transfer {1} to {LastResult}?

12
Quote
Take a look here, this might be helpful - with the action "Results.Replace/Results.RegExReplace" it is possible to clear up your LastResult.

http://voxcommando.com/mediawiki/index.php?title=Actions#RegExReplace

Thanks, that's exactly what I'm after.  I don't know how I missed that! 

13
Not really much to show as I can't do any thing until I find a way to extrapolate just the "filename" and not the full path. 

But I will show you what I've got..


This is for the recording of ShoutOuts and Reply's and dealing with the processing of the wavs after being recorded (cleanup)
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="Shoutout" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="979" name="ShoutOut" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>TcpMic.SaveNext</cmdType>
      <cmdString>Z:\Library\Shoutouts\Processing\shoutouts</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>TTS.SetVoiceName</cmdType>
      <cmdString>IVONA Amy</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>VC.Pause</cmdType>
      <cmdString>300</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.SoftMute</cmdType>
      <cmdString>80</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>TTS.SpeakSync</cmdType>
      <cmdString>{M:TTS.Go for it}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.SoftUnMute</cmdType>
      <cmdString />
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>Shout Out</phrase>
  </command>
  <command id="994" name="Reply" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>TcpMic.SaveNext</cmdType>
      <cmdString>Z:\Library\Shoutouts\Processing\R1{var.ShoutFile}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>TTS.SetVoiceName</cmdType>
      <cmdString>IVONA Amy</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>VC.Pause</cmdType>
      <cmdString>300</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.SoftMute</cmdType>
      <cmdString>80</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>TTS.SpeakSync</cmdType>
      <cmdString>{M:TTS.Go for it}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.SoftUnMute</cmdType>
      <cmdString />
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>Reply</phrase>
  </command>
  <command id="647" name="Process ShoutOut" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Results.SetVar</cmdType>
      <cmdString>ShoutFile&amp;&amp;{1}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Launch.RawParam</cmdType>
      <cmdString>"C:\Program Files (x86)\sox-14-4-1\sox.exe"&amp;&amp;"C:\Program Files (x86)\sox-14-4-1C:\sox.exe" "z:\library\shoutouts\processing\{var.ShoutFile}" "z:\library\shoutouts\{var.ShoutFile}" gain -n -3 silence 1 0.1 0.8% -1 0.5 0.8% contrast 50</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>TcpMic.WavSaved</event>
  </command>
</commandGroup>


This is the track announcing section.  You only need to focus on the ShoutOut action to see what I'm doing. 
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="Announcer" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="571" name="Ducker" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>XJson.SoftMute</cmdType>
      <cmdString>90</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>XBMC.Player.OnPlay.song</event>
  </command>
  <command id="552" name="ShoutOuts" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>Z:\Library\Stings\ShoutOut - Snap In.wav&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>File.GetRandFile</cmdType>
      <cmdString>Z:\Library\ShoutOuts\&amp;&amp;shoutout*.wav</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Results.SetVar</cmdType>
      <cmdString>ShoutFile</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>{var.ShoutFile}&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>Z:\Library\Stings\ShoutOut - Snap In.wav&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>R1{var.ShoutFile}&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>R2{var.ShoutFile}&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>R3{var.ShoutFile}&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Sound.PlayWav</cmdType>
      <cmdString>Z:\Library\Stings\ShoutOut - Snap Out.wav&amp;&amp;True</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>XBMC.Player.OnPlay.song</event>
  </command>
  <command id="553" name="TTS Announce" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>XJson.Raw</cmdType>
      <cmdString>Player.GetItem&amp;&amp;"playerid":0, "properties": ["title", "album", "artist","genre"]</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.ParseTokens</cmdType>
      <cmdString>{item.genre}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)Contains(B)</ifType>
      <ifParams>{LastResult}&amp;&amp;Podcast</ifParams>
      <then />
      <else>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>Z:\Library\Stings\TTS fade in.wav</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.SetVoiceName</cmdType>
          <cmdString>IVONA Amy</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>XJson.ParseTokens</cmdType>
          <cmdString>Now playing. {item.title}. |Now for. {item.title}.  |Lets enjoy. {item.title}.  |Now for some. {item.title}.  |Time to enjoy. {item.title}. </cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.Pause</cmdType>
          <cmdString>300</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.SpeakSync</cmdType>
          <cmdString>{LastResult}</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.SetVoiceName</cmdType>
          <cmdString>IVONA Brian</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>XJson.ParseTokens</cmdType>
          <cmdString>From the band. {item.artist[[ &amp; ]]}|From the artist. {item.artist[[ &amp; ]]}|The group. {item.artist[[ &amp; ]]}|{item.artist[[ &amp; ]]}</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>TTS.SpeakSync</cmdType>
          <cmdString>{LastResult}</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>Z:\Library\Stings\TTS fade out.wav</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>VC.Pause</cmdType>
          <cmdString>300</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </else>
    </if>
    <event>XBMC.Player.OnPlay.song</event>
  </command>
  <command id="589" name="Sting - Podcast" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>XJson.Raw</cmdType>
      <cmdString>Player.GetItem&amp;&amp;"playerid":0, "properties": ["title", "album", "artist","genre"]</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.ParseTokens</cmdType>
      <cmdString>{item.genre}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)Contains(B)</ifType>
      <ifParams>{LastResult}&amp;&amp;Podcast</ifParams>
      <then>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>Z:\Library\Stings\Sting - Snap In.wav&amp;&amp;True</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>XJson.ParseTokens</cmdType>
          <cmdString>{item.artist[[, also, ]]}</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>File.GetRandFile</cmdType>
          <cmdString>Z:\Library\Stings\&amp;&amp;{LastResult}*.wav</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>{LastResult}&amp;&amp;True</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>Z:\Library\Stings\Sting - Snap Out.wav&amp;&amp;True</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>XJson.Raw</cmdType>
          <cmdString>Input.ExecuteAction&amp;&amp;"action":"skipprevious"</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <event>XBMC.Player.OnPlay.song</event>
  </command>
  <command id="592" name="Sting - Music" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>XJson.Raw</cmdType>
      <cmdString>Player.GetItem&amp;&amp;"playerid":0, "properties": ["title", "album", "artist","genre"]</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.ParseTokens</cmdType>
      <cmdString>{item.genre}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <if ifBlockDisabled="False" ifNot="True">
      <ifType>(A)Contains(B)</ifType>
      <ifParams>{LastResult}&amp;&amp;Podcast</ifParams>
      <then>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>Z:\Library\Stings\Sting - Snap In.wav&amp;&amp;True</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>XJson.ParseTokens</cmdType>
          <cmdString>{item.artist[[, also, ]]}</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>File.GetRandFile</cmdType>
          <cmdString>Z:\Library\Stings\&amp;&amp;{LastResult}*.wav</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>{LastResult}&amp;&amp;True</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
        <action>
          <cmdType>Sound.PlayWav</cmdType>
          <cmdString>Z:\Library\Stings\Sting - Snap Out.wav&amp;&amp;True</cmdString>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <event>XBMC.Player.OnPlay.song</event>
  </command>
  <command id="549" name="Ducker" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>XJson.Raw</cmdType>
      <cmdString>Input.ExecuteAction&amp;&amp;"action":"skipprevious"</cmdString>
      <cmdRepeat>0</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.SoftUnMute</cmdType>
      <cmdString />
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>XJson.SetVol</cmdType>
      <cmdString>100</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>XBMC.Player.OnPlay.song</event>
  </command>
</commandGroup>

14
I will post new features here (LEGACY BOARD ONLY) / Re: Version 1.132
« on: August 05, 2013, 10:24:06 PM »
Quote
or you don't need to use Map.Get action at all and can instead access values using:
{M:MAPTABLENAME.KEY}

Using the above method was my first method but I quickly realaized that you can not use {var.ShoutFile} or other variables such as {LastResult} from within the {M:MAPTABLENAME.KEY}. 

Basically I've got a database of file-names associated to people's names, so as to when you ask "Who posted that last ShoutOut".  The system returns the answer "Andrew" for example if "Andrew" is associated in the table with the filename provided by the variable {var.shoutfile}.  But to get the filename sent to the table I require the variable {var.shoutfile} to be sent to {M:SHOUTFILES.{var.shoutfile}}. This doesn't work. Hence why I was looking into Map.Get instead.. 

Thanks.  Good to know I'm not completely daft and found you a bug. :D

15
Quote
I think you are talking about the payload that is attached to the event that is fired when the wav is actually saved, not the "the {1} variable when the SaveWav action takes place" because I don't know what that means.

You want to extrapolate only the filename, but in fact ShoutOut2013_8_2_23_18.wav is the filename.  What you really want to do is to remove the date I guess.  You can do this using regex.

I understand that "ShoutOut2013_8_2_23.18.wav" is the filename, but the variable {1} returns the full path and extension as well, so I'm left with something that looks this "Z:/Library/Shoutouts/ShoutOut2013_8_2_23.18.wav"  What I am wanting to work out how to do is extrapolate just the file-name, specifically the date saved to that file-name.

The payload {1} returns the fullpath/filename/extention.  I don't know how to be any clearer. Sorry.

Quote
I'm not familiar with the expression "where I only carry the", and I'm not sure what format of filename you ultimately want to end up with.  Anyway.  Why don't you just add reply1 to the end of the filename?  Why does it need to be in front of the date?

It could be at the end, trust me I tried that first, but I can't work out how to remove the ".wav" so I get "ShoutOUt2013_8_2_23.18.wav.reply1.wav" and this causes havoc on the playback of the wave file for reasons unknown. 

The expression "where I only carry the"? Okay, where I only keep the, where I only retain the, where I only hold on to the.  :D

Quote
Not even close. That format only relates to the xJson.Parsetokens action, which is used to parse the json result returned by XBMC.  This does not relate to what you are doing here at all.

Well I'm trying to understand :bonk !!! I'll look into regex.  hopefully there's some documentation regarding it.  I have no issue with reading on documentation when trying to understand all this if you could be so kind as to point me in the right direction. 

Pages: [1] 2 3 ... 9