RMIR: Advanced Handling of Learned Signals

Discussion forum for JP1 software tools currently in use, or being developed, such as IR, KM, RemoteMaster, and other misc apps/tools.

Moderator: Moderators

Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote:
Vyrolan wrote:But the Bi-Phase dropdown in IR doesn't seem to have any effect on it...
for bi-phase, you need to enter a rounding time that is equal to one unit, so in this case you should enter 450
This is what I was missing...thanks Rob...it does what I thought it was doing so it should not be hard to replicate.
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote: Give it a whirl, though I'd be curious to see how an automated approach would deal with the double wide pair that's in the RC6 (Replay) signal, but if you think it would work, I'd certainly like to see it.
New jar at https://www.hifi-remote.com/forums/dload ... e_id=11268.

Here's Rewind signal you mentioned earlier...automatically analyzed including the double pair:
Image

One difference is that I am assuming the final +450 is part of a ( +450, -450 ) pair, and so I'm taking the -450 from the lead-out...in your quick write-up, you just assumed it was the "on" of a lead-out... How do we know which is correct?

Note: I haven't integrated this into the Timing Summary yet, so they will still show raw timings there.
Last edited by Vyrolan on Thu Aug 30, 2012 10:00 am, edited 1 time in total.
The Robman
Site Owner
Posts: 22042
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

Vyrolan wrote:One difference is that I am assuming the final +450 is part of a ( +450, -450 ) pair, and so I'm taking the -450 from the lead-out...in your quick write-up, you just assumed it was the "on" of a lead-out... How do we know which is correct?
Good point, I just counted the bits in my decode and it's 23 which is not a round number, so you're right that the last bit got combined with the leadout. As far as an automated solution goes, it's hard to say because I expect that we'll see both types, ie. some signals that just end with a leadout (like the ones above) and others that end with a leadout pair.

Whatever you come up with, I think it would be a good idea to still give the user the ability to override it, just in case the automatic solution is wrong.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote:Whatever you come up with, I think it would be a good idea to still give the user the ability to override it, just in case the automatic solution is wrong.
I plan to give 4 options in the drop down: "Auto Detect" will apply the automated solution and "Off (Show Raw)" will turn it off entirely and just show raw timing. Then there will be "Force Odd" and "Force Even" to replicate the behavior of IR (I'm not sure if we'll actually need that or no).
The Robman
Site Owner
Posts: 22042
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

Vyrolan wrote:I plan to give 4 options in the drop down: "Auto Detect" will apply the automated solution and "Off (Show Raw)" will turn it off entirely and just show raw timing. Then there will be "Force Odd" and "Force Even" to replicate the behavior of IR (I'm not sure if we'll actually need that or no).
Sounds good, and yes, I think we still need some manual controls just in case the auto-decode gets it wrong. I would also like to be able to control the minimum time that the decode routine recognizes as the leadout time because I have seen examples where it's smaller than the minimum time imlpemented in IR.exe.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
The Robman
Site Owner
Posts: 22042
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

When there is just a "sent once" string and an "extra" string, could we have them combined on the Timing Summary sheet as there's no reason for them to be broken apart and I have to manually combine them when I do a manual decode.

Furthermore, it would be nice to have a line break after each leadout time. For example, looking at the UPC file, the TV/3 button displays as...

4 TV 3 3 38461 Once: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000 +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500
Extra: +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000

So, removing the "Extra" break and adding a new "More" break between the two repeats, we would get this...

4 TV 3 3 38461 Once: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
More: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote:I would also like to be able to control the minimum time that the decode routine recognizes as the leadout time because I have seen examples where it's smaller than the minimum time imlpemented in IR.exe.
Can you give an example of what you mean? Looking through IR's code I think I may know what you're wanting to control, but some specific examples of what a signal should like with different values for the minimum would be helpful.
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote:When there is just a "sent once" string and an "extra" string, could we have them combined on the Timing Summary sheet as there's no reason for them to be broken apart and I have to manually combine them when I do a manual decode.

Furthermore, it would be nice to have a line break after each leadout time.
I can do that...and many many thanks for giving examples to illustrate.
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

Vyrolan wrote:
The Robman wrote:When there is just a "sent once" string and an "extra" string, could we have them combined on the Timing Summary sheet as there's no reason for them to be broken apart and I have to manually combine them when I do a manual decode.

Furthermore, it would be nice to have a line break after each leadout time.
I can do that...and many many thanks for giving examples to illustrate.
I've consolidated all of my jars in the Diagnostics Area to this one. It contains all of my changes, and that now includes the formatting changes you requested for the Timing Summary. It breaks to a new "More:" row whenever it sees an Off time equal to the final Off time.

For the Once + Extra when there is no repeat, the decoding in RMIR already does that...it doesn't break them up between "sent when pressed" and "sent when release", so I'm glad you don't want them that way anyway. =)
The Robman
Site Owner
Posts: 22042
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

Vyrolan wrote:
The Robman wrote:I would also like to be able to control the minimum time that the decode routine recognizes as the leadout time because I have seen examples where it's smaller than the minimum time imlpemented in IR.exe.
Can you give an example of what you mean? Looking through IR's code I think I may know what you're wanting to control, but some specific examples of what a signal should like with different values for the minimum would be helpful.
Sorry, I don't have an example. I decode hundreds of signals for people and I don't remember which one caused this problem. Let me see if I can edit one of the bi-phase learns in the FromRob.ir file to re-create it.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote: Sorry, I don't have an example. I decode hundreds of signals for people and I don't remember which one caused this problem. Let me see if I can edit one of the bi-phase learns in the FromRob.ir file to re-create it.
Even just a trivial made-up example would probably be sufficient. I just want to make sure I'm properly understanding the effect of this configurable minimum.
The Robman
Site Owner
Posts: 22042
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

ok, this should demonstrate what I was getting at. The following is a modified version of the P&P/REW code from FromRob.ir where I have converted it from a repeating code, to a "sent once" code with 2 repeats present:

0000 0073 0034 0000 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0F61 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261

when you decode this using 450/ODD you get the following:

+2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -109350; +2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -17100;

Now reduce the leadout time from 0F61 to 0261 as follows:

0000 0073 0034 0000 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261

this decodes as follows:
+2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -17100; +2700 -450; -450 +450; -450 +450; -450 +450; -450 -450; +450 -450; -450 +450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 +450; -450 -450; +450 +450; -17100

As you can see from the highlighted times, the decoder didn't realize that the -17100 was a leadout time, so the +2700 that follows wasn't reated as a leadin time and therefore, the -450 that follows was included as part of the pair and the rest of the pairs are all thrown off by 1 and are therefore useless.

When I had this example before, I had to manually edit all of the leadout times to something bigger in order to force the correct decode of the 2nd part of the string.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

I've refactored some of my additions (eliminate duplicate code, cleanup oddities, remove unnecessary code, optimize a bit)...it's probably nothing you'd notice as a user (except maybe slightly faster).

I've also lowered the granularity for the biphase auto analysis. It detects the smallest rounding that allows the signal to be recognized as biphase, and that process now goes in smaller increments. In the P&P/REW signal in FromRob.ir that was previous discussed, it now recognizes that a rounding of 20 is sufficient, and so the biphase unit becomes 440 instead of the previous 450. I assume this is "better" since less rounding probably keeps it closer to the original signal and therefore less likely to confuse the device (esp for long signals).
Image

Latest jar still found here.
The Robman
Site Owner
Posts: 22042
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

OK, I gave it a try and the bi-phase logic did not recognize that either of the edited signals that I posted earlier were bi-phase.

I couldn't find a way to edit the learned signal and upgrade the pronto hex using RMIR, so I updated the IR file instead and then opened it using RMIR.

The file below contains 3 copies of the signal from the P&P/REW button in the FromRob.ir file. The first is the vanilla signal from the original file with no changes. The second is where I have converted it to a "sent once" string with 2 repeats and the normal leadout time. The third is the same as the second, except that I've reduced the leadout time as described above so that it's small enough to fool the bi-phase logic in IR.exe

https://www.hifi-remote.com/forums/dload ... e_id=11283
Last edited by The Robman on Thu Aug 30, 2012 5:01 pm, edited 1 time in total.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Vyrolan
Posts: 168
Joined: Fri Aug 24, 2012 8:42 pm
Location: Chicago, IL

Post by Vyrolan »

The Robman wrote:ok, this should demonstrate what I was getting at. The following is a modified version of the P&P/REW code from FromRob.ir where I have converted it from a repeating code, to a "sent once" code with 2 repeats present:
<snip />
when you decode this using 450/ODD you get the following:

+2700; -450 -450; ...; +450 -109350; +2700; -450 -450; ...; +450 -17100;

Now reduce the leadout time from 0F61 to 0261 as follows:
<snip />
this decodes as follows:
+2700; -450 -450; ...; +450 -17100; +2700 -450; -450 +450; ...; +450 +450; -17100

As you can see from the highlighted times, the decoder didn't realize that the -17100 was a leadout time, so the +2700 that follows wasn't reated as a leadin time and therefore, the -450 that follows was included as part of the pair and the rest of the pairs are all thrown off by 1 and are therefore useless.
Can the leadin be just a ( + ) like that...or does it have to be a ( + - )? When you have the first Off time, how do we know if it is part of the leadin or part of the first pair? My logic is to assume it is all leadin and try to decode...if I fail, I assume part of it must be part of the first pair, so I try to decode that...

Is there a way to know which way is right? Consider these examples:

Code: Select all

Raw Data = +500 -200 +100 -100 +100 -100 +100 -1000

Possible Decode #1:
   Leadin  = +500 -200
   Leadout = +100 -1000
   +500 -200; +100 -100; +100 -100; +100 -1000
   Result = LI 11 LO

Possible Decode #2:
   Leadin  = +500 -100
   Leadout = -1000
   +500 -100; -100 +100; -100 +100; -100 +100; -1000
   Result = LI 000 LO

Possible Decode #3:
   Leadin  = +500 -100
   Leadout = -900
   +500 -200; +100 -100; +100 -100; +100 -100; -900
   Result = LI 111 LO
Now that one is either all zeroes or all ones, so that's a contrived example, but here's another:

Code: Select all

Raw Data = +500 -200 +100 -100 +200 -100 +100 -1000

Possible Decode #1:
   Leadin  = +500 -200
   Leadout = 
   +500 -200; +100 -100; +200; error decoding
   Result = error

Possible Decode #2:
   Leadin  = +500 -100
   Leadout = -1000
   +500 -100; -100 +100; -100 +100; +100 -100; +100 -1000
   Result = LI 001 LO

Possible Decode #3:
   Leadin  = +500 -100
   Leadout = -900
   +500 -100; -100 +100; -100 +100; +100 -100; +100 -100; -900
   Result = LI 0011 LO
How do we know which one is correct? My intuition is to go with "the one that results in an even number of logical pairs" since that seems most likely. So using that rule, we'd decode those two examples with the first and third possible decodes respectively... Do you agree with that?
Post Reply