# CMOS: New Good Synchronized Cubing Timer



## CMOS (Jan 26, 2018)

Over the past year I have been developing and testing a cubing software which you can find here.

Advantages of CMOS over other cubing timers:
- CMOSTimer automatically saves your times on a server and creates backups every three days so that deleted solves (by software or human error) can be recovered, thus you won't ever lose all of your times again.
- Your times are synchronized between all your devices automatically.
- CMOS combines actually gathering times by solving and analyzing them. Some examples include counting the amount of times below a reference time or getting statistics per session, to just name a few.
- CMOSTimer has a lot of options, nearly everything is configurable.
- CMOS receives updates and bugfixes multiple times every month to ensure both the safety of your data and top-notch user experience.
- You can choose any combination of any random-moves NxNxN, NxNxP, and N-layer minx scramblers to produce any relay scrambler.
- WCA Scramblers are used for 2x2x2, 3x3x3, Pyraminx, Megaminx, Skewb, Clock and FMC
- CMOS includes a algorithm database which shows a lot of statistics and allows you to practice algorithms.

If you need your times transferred from any of the other major cube timing systems, send me an email

If you find any bugs or have suggestions on how to improve CMOS, please post them here or contact me at [email protected]


----------



## TipsterTrickster (Jan 26, 2018)

This is a great timer! I love all of the features (my favorite being all of the different scrambles and ability to make relay scrambles). Also Is there any way to make splits like on cs timer?


----------



## CMOS (Jan 27, 2018)

Thank you!
Currently, the only splits are between inspection and solve timing, but I will implement multiple solve time splits soon, as it seems to be a useful feature.


----------



## CMOS (Jan 27, 2018)

Splitting your solve time into any number of phases is now implemented. You can view the individual phase times in the solve details.

I also fixed a bug, where a time over a minute entered by typing with centisecond precision would be interpreted incorrect.


----------



## TipsterTrickster (Jan 27, 2018)

I can not figure out how to look at my split times.


----------



## CMOS (Jan 27, 2018)

Split times only show if there was more than one phase done on that, so make sure the option "Time phases" is set to something greater than 1 when doing the solve you want to have split times on.
Assuming you have a solve done with multiple times in the current session, select it by clicking on the time of that solve in the timelist. The solve time and id should now show up in the middle. Now click the details button below the big time. Below the scramble (or the buttons to show or change the scramble), you will find the total time, followed by the individual phase times.


----------



## TipsterTrickster (Jan 27, 2018)

Ok thanks!!


----------



## Petro Leum (Jan 28, 2018)

Good timer, and it's just getting better it seems!


----------



## CMOS (Jan 28, 2018)

Because there were some problems with the current WCA scramblers, CMOSTimer uses tnoodle (=WCA) scramblers for 2x2x2, 3x3x3, Pyraminx, Megaminx, Skewb, FMC and Clock now. There are also new scramble images available for Pyraminx, Megaminx, Skewb and Clock. The new WCA scramblers are selected as default scramblers in the corresponding session.


----------



## FJT97 (Jan 28, 2018)

Wow, nice timer! Love it that its so easy to use it on multiple devices! cstimer's export and import was so annoying 

Keep up the great work!


----------



## Overclocked (Jan 28, 2018)

The timer is really great! I guess I will use it in the future because I just hate it when cs deletes my sessions without a reason. Thanks for importing my times from cs!
I really like the features beside just the timer. Like the alg section or the cube collection. I’m hyped for the improving of these and new features
What are all of the shortcuts in the timer? I only have figured out „1“ for Enter by typing and „esc“ for cancel a unintentionally started solve. Are there some for +2 or DNF as well? Also self defined shortcuts for selecting another session would be awesome. 
Thanks for this awesome timer and keep your good work man!Hope I can get some nice pbs with it. (Special thanks for the clock Scramble images. There are not many timers out there which have these ^^)


----------



## CMOS (Jan 29, 2018)

Thank you, @FJT97 and @Overclocked!

@Overclocked: As you also can see in the help file, the shortcuts currently implemented are Escape to abort inspection, 1 for Enter time by typing and Backspace to delete the selected solve.
Based on your suggestion, I will implement some to toggle +2 penalty, toggle DNF, go to the next session and go to the previous session.


----------



## Overclocked (Jan 29, 2018)

CMOS said:


> Thank you, @FJT97 and @Overclocked!
> 
> @Overclocked: As you also can see in the help file, the shortcuts currently implemented are Escape to abort inspection, 1 for Enter time by typing and Backspace to delete the selected solve.
> Based on your suggestion, I will implement some to toggle +2 penalty, toggle DNF, go to the next session and go to the previous session.



Ok thank you . I’m lolking forward for updates which make the timer even better ^^. It’s in a really early state right now so it will be interesting how the timer will look after some time has passed!


----------



## CMOS (Jan 30, 2018)

Shortcuts for next scramble (2), toggle +2 (3) and toggle DNF (4) are now available.

There now is a new statistic available, time distribution, which displays the number of solves in a configurable interval and the percentage of the total number of solves. All intervals with 0 solves lower than the best and higher than the worst solve and optionally also between displayed data are not displayed. It can be configured to only include the last x solves to only include relevant data. You can change the statistic displayed in each statistic region by clicking the word "Statistics" at the top left.


----------



## CMOS (Feb 14, 2018)

A few things have been updated during the last two weeks.
- the statistics now support success streaks and success averages, the average of n successes, without counting the DNFs. These may be useful for BLD or onelooking practise.
- the statistics can be selected different for 2H, OH, BLD, FMC and Feet. This is useful if you want to show success rate only for BLD or show ao1000 only for 2H and OH Events, not for BLD (as you usually don't get a ao1000 there)
- subsessions, a selection of solves defined by a start index and ranging to the end of all solves of the session, are now implemented. They have seperate statistics if enabled, so you can track your best times today and compare them to the best overall times. The range of the current subsession is shown below the current session in the sessionselect, you can hide it if you want or display all subsessions done, it is all configurable.
- The timelist can now switch to a text mode, similar to qqTimer
- As many people prefer a simpler interface, CMOS can now switch the component layout. There currently are the two CMOS layouts, the normal one and one a bit similar to csTimer, and one simulating qqTimer. The last one is experimental, but combining the automatic time saving and the statistics (time statistics, session statistics, sub-x, pb list) missing in qqTimer with the good layout of qqTimer seems like a good combination.


----------



## ItzSomebody (Feb 15, 2018)

This is a really nice timer. Would definitely recommend 100%


----------



## CMOS (Feb 18, 2018)

The timer can now be accessed without registration, if you want to test it out before registration. You can access it from the menu on the website or with the direct link.
Warning: Your solve times are saved on your computer, but are not synchronized to the server. That means, that no backups of your solves can be taken. If you mess up and somehow the file containing localStorage of your browser gets deleted, there is no way to get your solves back. Your settings are also not saved and there is no session configuration. If you want to do more than just trying it out, creating an account is recommended.


----------



## CMOS (Mar 5, 2018)

Updates:
- There now is a option for a small delay after finishing solving to prevent accidentally starting the next solve by hitting spacebar twice.
- There now is a scramble font size option.
- Statistics can now be sorted and more customized. Custom averages and means are also possible now. New statistics (session average and session mean) have been added.
- FMC sessions now have a counter counting backwards from 1 hour.

A quick note since I get asked this quite often: It is possible to import from almost any cubing timer into CMOS. Just send me a message containing your username, the timer export and instructions, if you want only some sessions imported or something else special.


----------



## CMOS (Sep 20, 2018)

*I am looking for people to test the timer and find some of the few remaining bugs. If you want to test, join the **Discord** and assign yourself the tester role.*

CMOS has progressed and improved a lot in the past half year. The whole thing has been rewritten and more than one hundred bugs have been fixed. There also are a few new features.

Try it out here: https://speed-cmos.com
CMOS Discord: https://discord.gg/TUpeTMg (after joining, type -agree to be able to see everything)
You can view images of the new CMOS here: http://imgur.com/a/8bOQZUy

Here's what the main features currently are:

flexible configuration
detailed statistics
stackmat support
solves saved in cloud so you'll never lose them
importing times from most timers



Spoiler: Detailed feature list



Sessions:

Unlimited number
Each session has a scrambler and event assigned
Defining subsessions to select the statistic range is possible
Merging sessions is possible.
Statistics:

Single, mean of x, average of x, session mean, session average, success streak, success rate, subsession single, subsession mean of x and subsession average of x can be displayed directly in the timer.
Inspection distribution graph
PB graph
time graph
PB history list (single, mean and averages)
Number of solves sub-x
Longest streak of sub-x solves
Scramblers:

tNoodle scramblers for 2x2x2,3x3x3,5x5x5, Pyraminx, Megaminx, Skewb, Clock and BLD
Random moves scramblers for any NxNxN, NxNxP, N-layered Minx, NxN clock and 40 other events including PLL, LSLL, ZBLL, 2GLL, LL and F2L
All scramblers can be combined into relay scramblers.
Options: Around 65 options for really anything
Other features:

FMC timer and input
MBLD timer and input
Enter time by typing
Stackmat input
PB Prediction
Time and solve based Goals
Fake solve time detection
Importing times from any major timer


----------



## genericcuber666 (Sep 21, 2018)

Wow! This timer looks amazing, I think this is the first time I've considered not using cstimer. Is there anyway for me to import my cstimer times?


----------



## CMOS (Sep 21, 2018)

On the first page you see after loading CMOS there is a button called "import times from other timers" below the total number of solves. Click that, select one of the two csTimer methods and then follow the instructions there. The imported times will appear on your account a few hours after you submitted them.


----------



## AbsoRuud (Sep 22, 2018)

Hello, I joined cmos and imported my cstimer stuff. After it was imported, I can't log in anymore. This happens on Windows 10 + Chrome, Windows 10 + Edge, as well as Android + Chrome. It worked fine before importing.

*CMOS encountered an internal error!*


----------



## CMOS (Sep 22, 2018)

I think it has to do with the captialisation of your username. You logged in as absoruud when you got the error, but registered as absoRuud. Please try again using the correct username.
There seems to be a bug there still letting you log case-insensitive in but failing to read the data, as it is stored case-sensitive. I will fix it, but this should be enough to get CMOS working again for you.


----------



## CMOS (Sep 24, 2018)

@AbsoRuud It is fixed now, which means you can't log in anymore, if you don't use the 100% correct username. This will prevent the situation, in which the timer did not load, from happening


----------



## AbsoRuud (Sep 25, 2018)

Thank you. I logged in and it's working!

I would like to note that when I signed up I typed my username "AbsoRuud" and the site automatically changed it to "absoRuud". So I am guessing you do something automatic that changes the capitalization of the username when registering. Perhaps there's a way to store the username in all lowercase and always convert any and all usernames typed in also to lowercase? That way it doesn't matter how you type it, it will always work. I used to do similar stuff in database programming.


----------



## CMOS (Sep 27, 2018)

@AbsoRuud
I changed it now so that login with any lowercase and uppercase letters is permitted. The username is still stored the exact way you enter it and will be displayed to you that way after logging in, not in lowercase.


----------



## AbsoRuud (Sep 27, 2018)

CMOS said:


> @AbsoRuud
> I changed it now so that login with any lowercase and uppercase letters is permitted. The username is still stored the exact way you enter it and will be displayed to you that way after logging in, not in lowercase.



That's great!


----------



## Brayden Gilland (Jan 13, 2020)

Hey! Is this timer still used by people and still updated?


----------



## ProStar (Feb 5, 2020)

I tried to import my sessions from csTimer, but it never imported any solves


----------



## AbsoRuud (Feb 5, 2020)

They have to do it manually for some reason. It took a few days for me when I first tried it.


----------



## Etotheipi (Feb 5, 2020)

AbsoRuud said:


> They have to do it manually for some reason. It took a few days for me when I first tried it.


Well, if they have different database types and formats then it'd be fairly hard to automate it, so it kinda makes sense.


----------



## CodingCuber (Feb 5, 2020)

I love this timer, however, is it possible to optimise the layout and website for ios devices? If not, that’s ok .


----------



## brododragon (Feb 6, 2020)

On my iPhone, I can't delete times when I go into the timelist. The delete button just doesn’t work.

Edit: nvm


----------



## brododragon (Feb 6, 2020)

Can you add a gear ball?


----------



## SpeedCMOS (Feb 6, 2020)

ProStar said:


> I tried to import my sessions from csTimer, but it never imported any solves



Solves from other timers need to be checked manually as the import scripts can't rely on documentation of the used formats I've just done that and the solves should appear now once you (re)load. This is also noted on the page where you select the timer format, but you're not the first to overlook that.



Etotheipi said:


> Well, if they have different database types and formats then it'd be fairly hard to automate it, so it kinda makes sense.



Exactly. Every timer has it's own format with the maximum amount of incompatibilities to other ones. My csTimer conversion script works pretty well now after doing quite a few imports with it and correcting what was wrong, so I might change it to do that automatically in the next major update.



CodingCuber said:


> I love this timer, however, is it possible to optimise the layout and website for ios devices? If not, that’s ok .



That's possible, I don't own an ios device so I need to rely on feedback like yours to see if it is good to use there. Could you screenshot the non-optimal part(s) and send me those (here or PM)? I'll then take a look and see what I can improve



brododragon said:


> Can you add a gear ball?



If you want a scrambler for a gear ball, take a look at the 3x3x3 half turns scrambler. As far as I know that should work as a random moves scrambler.


----------



## brododragon (Feb 6, 2020)

SpeedCMOS said:


> Could you screenshot the non-optimal part(s) and send me those (here or PM)? I'll then take a look and see what I can improve


I have 
suggestions for iOS.

1. Can you make the parts that need Y/N confirmation (like this:
),
have an alert confirmation (like this:
?

2. Just a small thing, but can you make the buttons change color/brightness when you click then

Also, there is bug where the word 'solve' won't go away. Ex:
.
It happens consistently.


----------



## LNBFilms (Feb 6, 2020)

I am curious to see how this turns out. Maybe this has already been said, but could you make an iOS app, please? I have a little C++ knowledge if you need some input!

---------------------------------------
Co-Founder of WeCubeTeam
---------------------------------------
Lukas Batema
---------------------------------------


----------



## brododragon (Feb 6, 2020)

LNB Films said:


> I am curious to see how this turns out, could you send me the timer’s link?
> 
> 
> ---------------------------------------
> ...


The link is in the first line of the original post.


----------



## ProStar (Feb 6, 2020)

For csTimer, I had a bunch of sessions for different ways to solve one puzzle(i.e 3x3 with 4 different methods). With the ability to make subsessions, is there an easy way to make them subsessions of a singular session? (so I want a 3x3 session to have a subsession for roux, zz, CFOP, all of the stuff I have multiple sessions for)


----------



## Etotheipi (Feb 7, 2020)

Also, it'd be great if there was a delay on starting the timer, so you have to hold the space bar for a second or so before starting the inspec/solve, because when i went on the site on mobile every time i tapped anywhere the timer would immediatly start.


----------



## ProStar (Feb 7, 2020)

Can I make a green light appear after the timer is ready to be activated? Because I just hold space and don't think it's ready, then when I let go the timer starts.


----------



## SpeedCMOS (Feb 7, 2020)

brododragon said:


> I have
> suggestions for iOS.
> 
> 1. Can you make the parts that need Y/N confirmation have an alert confirmation?
> ...



1.: I have thought about that before, but with a y/n option the probability of accidentally deleting a solve is much lower than with a simple yes/no dialog. Deleting solves should not be necessary that often and hitting y and then enter is not much slower than just enter.
2.: Yes! Some buttons already do that but it is not consistent at the moment.
3.: I'm not sure if I understand what you mean. The word "solve" which overlaps at the bottom should be inside of the middle top button, I'll fix that.



LNB Films said:


> I am curious to see how this turns out. Maybe this has already been said, but could you make an iOS app, please? I have a little C++ knowledge if you need some input!



If you know a way to have a website (HTML, CSS, JS) running inside an iOS app and a way to build such an app using Linux or Windows and free tools, I will consider making it. But I won't rewrite the whole code in C++ or any other language other than Javascript based ones just for one app.



Etotheipi said:


> Also, it'd be great if there was a delay on starting the timer, so you have to hold the space bar for a second or so before starting the inspec/solve, because when i went on the site on mobile every time i tapped anywhere the timer would immediatly start.



That's useful, and that is also the reason it already exists. Go to Options, Timer and check the box next to start delay. Starting a solve will then require some delay, similar to a stackmat. And if you accidentally start inspection you can abort that.



ProStar said:


> Can I make a green light appear after the timer is ready to be activated? Because I just hold space and don't think it's ready, then when I let go the timer starts.



Go to options, inspection, color inspection timer and set that to red/green if start is allowed. If you have start delay enabled, the time will be red if releasing the start key would not start the timer and green otherwise.



ProStar said:


> For csTimer, I had a bunch of sessions for different ways to solve one puzzle(i.e 3x3 with 4 different methods). With the ability to make subsessions, is there an easy way to make them subsessions of a singular session? (so I want a 3x3 session to have a subsession for roux, zz, CFOP, all of the stuff I have multiple sessions for)



Subsessions in CMOS are subdivisions of the global time list of a session, which is not what you want. You need a seperate session for each method/event combination. What will be added is the ability to group sessions, which could be useful for your case, as it will allow you to add a group named 3x3x3 methods containing the sessions which contain solves for each one method. That way they are grouped together but have independent timelists and statistics. I'll maybe also add group statistics to get your 3x3x3 PB independent of which method you used.


----------



## LNBFilms (Feb 7, 2020)

I also know HTML and CSS, but use GitHub. 


---------------------------------------
Co-Founder of WeCubeTeam
---------------------------------------
Lukas Batema
---------------------------------------


----------



## The Cubing Fanatic (Feb 8, 2020)

Can you use a Stackmat Timer through a wired connection?


----------



## brododragon (Feb 8, 2020)

I found this for converting the website to an app: 




You must be online, though.


----------



## G0ingInsqne (Feb 8, 2020)

The Cubing Fanatic said:


> Can you use a Stackmat Timer through a wired connection?



Curious about this too.


----------



## LNBFilms (Feb 8, 2020)

I’ll work on this tomorrow then. If you need it though. 


Co-Founder of WeCubeTeam, Lukas Batema


----------



## SpeedCMOS (Feb 8, 2020)

The Cubing Fanatic said:


> Can you use a Stackmat Timer through a wired connection?



Yes. When loading CMOS it asks for microphone permission. If you grant that and have a stackmat timer connected and the correct microphone selected, it should automatically use it. The hardware setup and OS microphone settings are the same as for csTimer, so if you have it working there it should also work using CMOS.
Audio connections are not intended to transfer binary data to arbitrary devices, that's why it sometimes requires a bit of work to get it working (on some mobile devices it may not work at all); there is a thread about such issues on csTimer here which should also fix most problems using stackmat and CMOS.




brododragon said:


> I found this for converting the website to an app: [...]
> 
> You must be online, though.



Thanks, but I don't know if it makes sense to have an app that basically is a browser that can just load one site. Opening CMOS in a web browser is not more complicated than loading an app, and adding the website to the homescreen (open in safari and there is a button for that) is also a thing one could do.
For Android I have a thing that takes my website code and converts that into code that can run natively, so no loading of the website files is required. It also allows me to access internal interfaces




LNB Films said:


> I’ll work on this tomorrow then. If you need it though.



What are you planning to work on and how to you want to do it?


----------



## LNBFilms (Feb 9, 2020)

SpeedCMOS said:


> Yes. When loading CMOS it asks for microphone permission. If you grant that and have a stackmat timer connected and the correct microphone selected, it should automatically use it. The hardware setup and OS microphone settings are the same as for csTimer, so if you have it working there it should also work using CMOS.
> Audio connections are not intended to transfer binary data to arbitrary devices, that's why it sometimes requires a bit of work to get it working (on some mobile devices it may not work at all); there is a thread about such issues on csTimer here which should also fix most problems using stackmat and CMOS.
> 
> 
> ...



I am planning to work on creating the app form. I will send you the final code when I finish. I would suggest you send me a copy of the code, not original, to make sure it doesn't like getting messed up on accident. Thanks for asking. 


Co-Founder of WeCubeTeam, Lukas Batema


----------

