openyou / emokit

Open source driver for accessing raw data from the Emotiv EPOC EEG headset
http://www.openyou.org
Other
520 stars 235 forks source link

Is the Epoc+ supported? #138

Open blackening opened 9 years ago

blackening commented 9 years ago

Hi,

Can anyone confirm that the Epoc+ is supported, if not, what steps are required to support it? I don't have much experience in hardware, but would not mind trying to help.

Sorry if this has already been answered elsewhere, but i haven't managed to find it.

olorin commented 9 years ago

I'm not actually sure if the EPOC+ is different from the old research/dev model or if it's just a marketing change. I would be surprised if it didn't work, but can't confirm. Anyone else? @qdot @nh2 @bschumacher

nh2 commented 9 years ago

I've never had an EPOC+ - I don't think we will find out until somebody gets one and tries it out.

qdot commented 9 years ago

Yeah, no idea, didn't even know it existed until this thread, heh. Looks like the only thing that changes in the epoc+ is bt4 support?

olorin commented 9 years ago

Alright, thanks. @blackening: looks like we don't know; if you have one, please try it out and get back to us. I'll leave this open until support is confirmed/disconfirmed.

blackening commented 9 years ago

Ok, if i get one, should i bother with the actual (emotiv approved) eeg support? As in, will it help with making it compatible for everyone? On 7 Dec 2014 12:36, "Sharif Olorin" notifications@github.com wrote:

Alright, thanks. @blackening https://github.com/blackening: looks like we don't know; if you have one, please try it out and get back to us. I'll leave this open until support is confirmed/disconfirmed.

— Reply to this email directly or view it on GitHub https://github.com/openyou/emokit/issues/138#issuecomment-65926307.

olorin commented 9 years ago

If it's the same as the dev version, then no. If they've changed it in other ways, then maybe but we'd need to see to be sure; if you do get the plus version and find it's incompatible with emokit I'd be interested in working on making it compatible. I've been meaning to get another EPOC for a while now, the electrodes on mine have rusted (either Emotiv doesn't understand conductors or optimised for obsolescence), it might happen this year.

d4l-w4r commented 9 years ago

From the specs listed on their website there are a number of differences between the two devices:

It would be important to know I think whether the switches between 128/256Hz and 14/16bit are happening on the software side or if there are physical hardware switches on the device/the receiver. The difference that could cause the most problems I think is probably the added sensors on the EPOC+, because they would have to have altered the way information is represented in the packets. So the logic by which the current version of emokit gets information out of the packets would be broken. Also I imagine that they might have updated the data encryption as they are aware of this project.

@blackening: Because of these points I would expect that the EPOC+ would not work correctly with the current version of emokit.

olorin commented 9 years ago

Those are good points (I hadn't seen the specsheet), I suspect you're right about that - the wireformat would almost certainly have changed.

forrestbao commented 9 years ago

Has anyone tried EPOC+ with emokit? I was thinking about taking a risk to try emokit with EPOC+.

warrenarea commented 9 years ago

i would be interested to see the results of it forrestbao. it is likely the USB device name at very least may be different, which would be a very easy fix.

toniorte commented 9 years ago

So.. any update on this?

I have a new EPOC+ (Premium) with 'raw EEG data' option:

The headset also has a USB port, for battery charging. If I connect it to the PC, it says:

I'm running Windows, and using Python. Inside emokit.py I have changed the _vendorid line: if device.vendor_id != 0x1234 and device.product_id != 0xED02:

And I have added the line: elif device.product_name == 'EEG Signals':

and the devices.append(device)... following lines inside that elif statement.

If I run the example.py script, it seems to work. But I think that the values must not be correct, as EPOC+ has different sensors than EPOC. What about sample rate and resolution? There are no physical hardware switches. And what about the data encryption?

Any intention to make emokit compatible with EPOC+ ? Thank you.

warrenarea commented 9 years ago

are you sure there are no physical hardware switches, on the USB dongle or epoc+ device? I thought i remember reading you could switch between different modes of 14bit(0.51µV) or 16bit(0.31µV) and that the compromise was you couldnt use bluetooth.

this may be done by an internal software switch. you might try connecting to their software and looking for that option, and then running emokit (or cykit) as well to see if there are changes in the data output. (try both with the software running and closed).

right now i have cykit setup to display all of the USB vendor id's and devices. might be a good idea to show us all of your device id's and then on your own you might try modifying your emotiv.py to ignore or force a connection to some id's.

an issue i had with mine was that it was connecting to both the bci id as well as the 00000000 id, and because emokit does (simulated) multi-threading it was connecting to both and drastically slowing down my results. so you may want to check if its connecting to more than one.

i tried looking for a close-up pictures of the epoc+ headset, but i couldnt find one showing off the buttons.

toniorte commented 9 years ago

Setting sample rate, resolution, etc. is done via software, but I can't find information about how. EPOC+ has no buttons/switches other than the power switch. There are a lot of parameters which are supposed to be user configurable, for instance:

I own a license for Ubuntu of their software with raw data, but until next week I won't be able to use it. So I'm just checking the headset with "EPOC Control Panel" in Windows.

They may have changed the key generation algorithm, but I don't know how to debug "EPOC Control Panel 2.0.0.21" (ConsumerControlPanel.exe) and that Rijndael cyphering thing.

warrenarea commented 9 years ago

you'll want to get a program called PEiD and then a plugin for it called Kanal - Krypto Analyzer it is able to search for known cryptographic functions and should be able to determine if its still using Rjindael, but you already said that it "seems to work", so its a good indicator that it still does.

you should post a screenshot of the render.py graph. try changing the resolution in the software while running emokit and post screenshots.

toniorte commented 9 years ago

Here you are: render If you move the headset, even slightly, almost all the signals do what you can see in the horizontal center of the screenshot.

'EPOC Control Panel 2.0.0.21' certainly uses Rijndael constants. But I don't know how to debug it. rijndael Anyone?

I think they may have changed the key, because it is supposed to be a "research headset", but if I use that mode of key-generation (is_research=True in emotiv.py), 'render.py' does not work.

I don't understand the function is_old_model(serial_number). What is it for? Did new models' serial end with GM? My serial starts with UD (I guess it comes from 'Universal Dongle') and ends with E4.

ghost commented 9 years ago

It is dividing the signal quality by a higher number if it's a newer model without the GM in the serial.

Emotiv changed the quality output a while back. It does not affect the actual signal levels.

ghost commented 9 years ago

Can you run emotiv.py and post the output?

toniorte commented 9 years ago

I'm sorry if my English is bad and I can't explain myself right, and I'm making the topic quite messy.

First of all, remember that I changed the VID to 1234 and added the product name 'EEG Signals' in the emotiv.py code, which was pretty straightforward.

This is example.py output in that situation (which is emotiv.py output plus gyro values, right?): example

Thanks bschumacher, I've found the line where quality_bits are divided by 540 or 1024 depending on old or new model. But actually 'is_old_model' is False if it has GM, the opposite of what you said. But obviously EPOC+ is way newer than the newest EPOC. In fact, render.py does not work if I put the headset on my head (Exception in thread Thread-2). The screenshot I attached this morning was with the headset over the table, and now I know that even the official TestBench software shows the same behaviour of shaking all the signals when you move the headset with no proper reference signal. If I modify is_old_model to return that my EPOC+ headset is not old (False), render.py then seems to work with the headset on my head, colouring some signals, depending of the quality I guess. Screenshot example: render2

The coloured signals look similar to the signals that TestBench present, although too big in amplitude.

So up to here, at least 3 things have to be changed in the emotiv.py code for EPOC+ to seem to work. Vendor ID, Product Name, and serial number starting with UD (Universal Dongle) is NOT old model.

Two more things to highlight. If I quickly nod my head to the right, the render.py window shows briefly a small white box at the bottom moving to the right. The gyro sensors, but this is working bad. mouse_control.py presents the same behaviour: the mouse pointer always is at the lower left corner of the screen, and if I shake my head, the cursor is pushed up and to the right, but immediately goes to the corner.

The other thing is that if I set to True the 'is_research' variable, which would be the logical thing (my EPOC+ is "Premium/Developer/Research/with raw data" or whatever the name is), then render.py does not work.

That is why I thought that checking with a debugger the decoding key would be nice, just to be sure that it is the same algorithm as for previous EPOC "Consumer models". Anyway, if some signals given by render.py look like the signals given by TestBench, it seems that the key algorithm is not a new one, right? :+1:


I've found online (chinese webpage) and been able to install 'Xavier TestBench 3.0.0.22' on Windows (Xavier SDK v3.0.0.40-PREMIUM). It seems there are newer versions, but I can't update or find them. It has no option to change sample rate, resolution, magnetometer/accelerometer, etc. WTF? They sell the EPOC+ as being able to change that and as having 3 inertial sensors. It just says sample rate is 128.

Screenshot: xavier

So... next steps?

warrenarea commented 9 years ago

It looks like you've got the right neighborhood for the rjindael encryption, but i don't think theres enough of the code provided to say for certain where it might fit in the key.

If you really wanted to figure it out, you would want to 'step into' the rjindael as its working, you should create a breakpoint at the beginning of the rjindael code (and run the program) then press f7 i believe? to go step by step through the instructions. There should be another window that gives the memory output as its executing the code. Even when you know what you're looking for it can be difficult, because one instruction can replace all the values, so you have to be paying attention. What you're looking for is the consumer key that should look similar to:

consumer_key = '\x31\x00\x35\x54\x38\x10\x37\x42\x31\x00\x35\x48\x38\x00\x37\x50' research_key = '\x31\x00\x39\x54\x38\x10\x37\x42\x31\x00\x39\x48\x38\x00\x37\x50' (or look at the code for emotiv.py k[] array)

its a 16 character key, what I provided is actually from an old version of emotiv, but it should be pretty close.

all dev epocs start with SN the serial numbers ended typically with a number in the range of 86 If you ordered an epoc after april 2014, the serial numbers ended with GM so your epoc+ starts with UD and ends with E4

Moving the headset slightly will result in a huge spike of data, this is from static interference and is normal for all headsets. I typically use this to test my headset without putting it on. i would expect yours to spike even more being it is supposed to be more sensitive.

it appears the values for the quality sensors are a bit off which could be presenting part of the problem.

you say that you can't even wear the headset though without it crashing... I'm thinking that its from a sensor value thats going out of its range, or the rjindael encryption has been changed.

If you could provide detailed information, or a screenshot of the crashing information, this might be more helpful.

i know the is_research never worked for me, but then again i never had a research license/dongle.

the signals will appear more 'exxagerated' in render.py because its not fixing the height. programs like xavier, typically resize the signal height based on the peak data sample received.

the data looks 'almost' like it should, but i think until the quality values are fixed, it'd be tough to say.

what Render.py was the first screenshot? it appears to be windows 7, and what concerns me about that one is that after the spikes, the data appears to be cyclic, which i've seen before as to be typical of offset data packets.

the second Render.py appears to be in Windows 10, and looks to be healthier signals. i recommend taking a few more screenshots, some with it being worn. also without it being worn, and tapping the headset to create the static.

i dont know what to tell you about the 128 samples.. oh... see if there isn't an option to 'disable bluetooth' i remember it won't provide 256 samples if bluetooth is running.

warrenarea commented 9 years ago

From emotiv's XAVIER SDK WIKI:

Every time you attach a USB dongle receiver to the computer or connect through Bluetooth LE, the Xavier SDK program automatically checks to see if the Epoc or Insight neuroheadset has been attached and changes the user interface accordingly.

So it should have reset the sample rate on its own automatically to 256 so either testbench hasn't been updated thoroughly, or there is an issue, try plugging in dongle again? Also, this might be limited to testbench, I don't recall emotiv displaying a sample rate like testbench, but see if it displays there.

They say there is still bugs, and they hope to have all of them resolved by January, 2015 I would recommend asking nicely on the Emotiv Forums, maybe the old man can help you out. lol if you dont, i will.. i like talking to geoff

ghost commented 9 years ago

The output in the test bench is probably normalized a bit, to make it look pretty. The data in render.py is raw, without some signal processing you will see spikes like that. Your right about the logic in the is old headset try changing that and see if your quality is fixed.

toniorte commented 9 years ago

As I don't know how to trace the code, what I've done is just set a breakpoint at the first instruction which uses a Rijndael constant, and then search the hex-dump (memory) for which was supposed to be the consumer key (from my serial number). And it was found! So "EPOC+ research" uses the "EPOC consumer" key generation algorithm. They have no modified that.

How can I get python's crash information for render.py? It just says "Exception in thread". Anyway, that was BEFORE changing the python code so EPOC+ is not taken as OLD version. Remember that the first render.py screenshot (Windows 7) was before solving that, and the headset was just on the table (so the periodic signals and spikes are from static interference..).

The example.py screenshot (Windows 8.1) was also BEFORE changing the OLD version thing, so quality values are wrong, although wearing the headset never crashes example.py regardless quality divider. The sencond render.py screenshot (Windows 8.1) was AFTER changing the OLD version thing, but I was not wearing the headset properly, so just a couple of electrodes were green.

I will take more screenshots. I will capture data from both TestBench and emokit python (I've noticed they can be running simultaneously).

I've installed the legitimate Linux SDK, latest version, and its TestBench looks just like the Xavier Windows version I downloaded. It displays 128 as sample rate, shows 2 gyro axis, and there is no option for anything else (no Bluetooth option). I will ask on the Emotiv forums about the differences between EPOC and EPOC+, because up to now they just seem to be on the $100 difference. :confused: People have asked about EPOC+ sampling and SDK, but received no answer: https://emotiv.com/forum/forum14/topic4679/messages/ https://emotiv.com/forum/forum15/topic4674/messages/ Actually I don't really know how to use the SDK... I'm not software developer. I just want to acquire raw values of electrodes an accelerometer, and then do some signal processing.

ghost commented 9 years ago

Remove the try statements and it will stack trace.

toniorte commented 9 years ago

I've tried some reverse-engineering. I've seen that the first data byte is the counter, from 0 to 127 and then a higher value, which is the battery level. The funny thing is that Emotiv's TestBench, in both Windows and Linux, reports battery level in a wrong way. For instance emokit was saying 4% while TestBench reported more than 50%. I thought that they had changed that byte or something. But then emokit said 0% while TestBench was reporting still more than 50%, and suddenly the headset switched off by its own.

I'm getting very disappointed with Emotiv.

Bytes 29 and 30 keep being X and Y gyroscope coords, but the problem was that "the center value" is 127, and the code has as center of 105. That's why the white box was always at the left bottom of the screen. self.gyro_x = ord(data[29]) - 127 and self.gyro_y = ord(data[30]) - 127 solves this and now the white box or the mouse moves as my head moves :+1:

warrenarea commented 9 years ago

the battery problem could be an intermittent issue, possibly having more than one program accessing data from the device might be glitching it, next time try restarting testbench and see if it changes.

razorblade, on your emotiv post, you might try mentioning that it should auto-detect the 256 sample rate when connecting in testbench, as mentioned here: http://wiki.emotiv.com/tiki-index.php?page=EmoEngine+Status+Pane

You might try also opening up the Xavier Control Panel both on its own and with testbench running, and try plugging in your USB device again.

It may already be in 256 sampling rate and just not be reporting it as well, they do indicate that the Xavier SDK still has issues to be corrected.

the difference in devices probably isn't as noticable, but you will have all the latest features. such as connecting to bluetooth and using their USB extender device which will be coming soon. its slightly more sensitive than the epoc which is supposed to aid the sdk in detecting another level of facial expressions/state of mind.

toniorte commented 9 years ago

Well.. after realising that signals plotted by TestBench are upside-down and with a high-pass filter applied respect to the signals shown by render.py, I can say that the signals are exactly the same. They have changed nothing about the data structure or the encryption (and it's the same sample rate and resolution).

The positive side: Emokit works with EPOC+ fixing the three items I explained:

The negative side: by the moment, EPOC+ is the same as EPOC.

warrenarea, the battery problem is persistent. TestBench always shows incorrectly the battery level. Emokit 1 - Emotiv 0

warrenarea, I can't find that paragraph you quote mentioning that sample-rate should be auto-detected. Where is it? In fact, they never talk about EPOC+. They mention, and show example code for, EPOC and Insight (which is funny, because nobody has still a Inisght), but no EPOC+.

warrenarea commented 9 years ago

its in the site i listed in the previous post. i've also read several references to bluetooth LE not being supported on the forums, and the 256 sample rate being supported with the USB dongle.

i think you should mention on your post that your sampling rate is 128, and you thought it should be reporting 256

toniorte commented 9 years ago

I'm sorry I still can't find any reference to the sample rate there, warrenarea. Did you link the correct page? Or please, could you read it again if you are assuming more than they say?

I don't say it should report 256 sampl/s, I say they sell EPOC+ as offering the option to switch between 128 or 256 sampl/s, etc.., but it seems that they are counting their chickens before they're hatched.

I bet the new hardware is there, inside the headset (if not, it would be fraud). But I'm starting to understand that it will need a firmware update and a new software SDK in order to be able to exploit the new features. When? Who knows... They seem to be paying more attention to the future release of Insight, rather than to the present EPOC+ buyers.

By the moment EPOC+ acts just as an EPOC, $100 more expensive. What bothers me most is the fact that they don't tell that on their webpage, neither when you are buying the headset, and if you ask, you get silence as an answer. WTF! Why are they acting like this? At most, the explanatory page is this: http://wiki.emotiv.com/Control%20Panel It says "EPOC+ gyroscope (pending - Jan 2015)" And it is May 2015 now....

warrenarea commented 9 years ago

the reference i gave says nothing about the 256 sample rate, but mentions that the interface will be switched automatically based on what you plug in. ie, you connect bluetooth, it should switch to 128 and usb (in theory) it should switch to 256, as thats what the specifications suggest, the improvement from 128samples to 256. so while it doesn't say specifically anywhere thats what its supposed to be, the specs imply thats what it should be.

perhaps we should just wait until our questions are answered on the forums, in the meantime work on some other aspect. I wouldn't be so quick to judge the company either, if as you say they are focusing more on the insight model release, as well as it looks like updating the Wiki, they are quite busy. I think its a classic case of one or two people doing all of the work, so might give them a break there. When i talked to the tech guru from emotiv, he had just come from china and was pretty sleep deprived, so you got to figure they are fairly busy.

in the mean-time you can enjoy the similar capabilities of the epoc, and see what you can come up with. You said you were looking into signal processing, perhaps check out the http://openvibe.inria.fr/downloads/ OpenViBE suite, that has a lot of signal processing built in. https://github.com/CymatiCorp/CyKit you may check out my page for a TCP interface to connect to OpenViBE.

ghost commented 9 years ago

The best way to find out would be to look at the ADC chip(s) inside the headset. Compare the part numbers. I'll pop mine open if you want.

toniorte commented 9 years ago

Phew! It has cost $800 and if I opened the headset my partners would kill me. :laughing:

I have finally received an 'official' response via direct complaint:

Emotiv Support Actually, the new features in EPOC+ are not available yet because the SDK for it is not available. EPOC+ now is using EPOC SDK. Our team is working hard to release the updated SDK this Summer. EPOC+ is enabled with those features (inside the firmware). The issue is that the SDK for it has some problem that we need to fix before release it to users. We are very sorry for that.

Well.. they are very busy and very sorry.. but they are not having a professional behavior! Selling a product which is not finished, as if it were. And if people ask in public, they do not answer. I think the legislation of more than one country would punish them for that...

Thank you warrenarea for the links.

morbann commented 9 years ago

If I'm buying a non-EEG epoc+ than will I be able to use the the device to get raw data or the test bench tool? or I need to buy the EEG version, the support told me to get raw data firmware needs to be updated first (from non eeg version)

thanks!

manavbhushan commented 9 years ago

@Razorblade2k : I have bought the EPOC+ and I have had EXACTLY the same problems as you. No sampling switch for 256 Hertz, problems with the battery signs, problems in using it with Emokit, etc. I am also extremely disappointed with Emotiv.

Now my immediate problem is- how to get the live output of the raw EEG signals in Python. Did you manage to solve this by changing the 'emotiv.py' file as you have said above? I only get zeros for all channels, so looks like the signals are not being read by the emokit.py function at all, even though it shows no error. Can you help me with this?

toniorte commented 9 years ago

@morbann : If your device is non-EEG, I guess Testbench will not work for you, but you will be able to read raw data with Emokit as long as you don't update device's firmware (when Emotiv tricksters - sorry, developers - release the update... this summer?).

@manavbhushan : Yes. Implementing the changes I described regarding the following:

device.vendor_id device.product_name devices.append( is_old_model( self.gyro_x self.gyro_y

worked for me. Did you change all of that in the code? Maybe I could upload the .py code somewhere.

Regards.

ghost commented 9 years ago

@Razorblade2k I am also trying to hack emotiv epoc+ using emokit. I followed the instruction you have given. I have a doubt regarding the self.gyro_x and self.gyro_y values The original code was : self.gyroX = ((ord(data[29]) << 4) | (ord(data[31]) >> 4)) self.gyroY = ((ord(data[30]) << 4) | (ord(data[31]) & 0x0F))

How to rewrite this for the new epoc+ hardware. I am little bit confused with your explanation,

self.gyro_x = ord(data[29]) - 127 self.gyro_y = ord(data[30]) - 127

can I replace the old code with this one?

toniorte commented 9 years ago

@Aswin21 : The current code from this repository (Emokit) is: self.gyro_x = ord(data[29]) - 106 self.gyro_y = ord(data[30]) - 105 https://github.com/openyou/emokit/blob/master/python/emokit/emotiv.py It assumes that each gyro value is a single byte (8 bits), with zero located in 105 or 106 (so there are positive and negative values). My solution is logical thinking that zero should be right in the middle, 127. And it works flawlessly for me and my EPOC+.

The other code, which is true to be the one in other repos, assumes that each gyro value is 12 bits. Didn't work for me.

mhrahmani commented 9 years ago

@Razorblade2k to be clear, i bought an epoc+ this spring and just got it. it's Non-RAW version. haven't even turned it on yet.

will i be able to read RAW data off of it using emokit or testbench? without installing emotiv's upcoming firmware?

valenzine commented 9 years ago

@mhrahmani as far as I understand:

jestern77 commented 8 years ago

HI there I'm not a programmer but I have a question, from the serial number which is in the form SN838545..GM how do I get the consumer key in the form research_key = '\x31\x00\x39\x54\x38\x10\x37\x42\x31\x00\x39\x48\x38\x00\x37\x50' ? I can't find it in the code.. I woudl do it by hand.. or if there's a script to translate that, cause I have a program that can extract the data given the consumer key! Thanks alot.

jestern77 commented 8 years ago

It's the emokit_get_crypto_key in the emokit function i think. I can try... but I'd love some help :)

jestern77 commented 8 years ago

Ok think I got it it takes the last four numbers of the serial number only and converts them into hexadecimal with a specific pattern (for who's passing by here and doesn't know already, like me)

a455bcd9 commented 8 years ago

@Razorblade2k Hi! Did you manage to find the bytes corresponding to gyro_z and the 3 accelerometers and 3 magnetometers?

BTW I created a fork for the EPOC+ only https://github.com/a455bcd9/emokit

jestern77 commented 8 years ago

Yes sorry I was busy, all good now :)

ghost commented 8 years ago

I'm going to say that the EPOC+ is not supported yet because of the new 9-axis gyro and the recent issues opened. Will need some data dumped in order to figure it out and of course get the dumping feature added to the code base first.

ivankras commented 6 years ago

I'm confused. On this issue, it is said that in order to get the EPOC+ working, these lines should be modified (on emotiv.py?):

VID/PID and name Serial identified as new model Gyro axes center at 127

First of all, that information is not anywhere in the repo Right now, I'm trying to get EPOC+ to work with emokit and it just returns wrong information (bad quality on render.py, only values around 4000 on example.py, no quality, no battery, doesn't matter if on my head or not) Is this repo no longer maintained or supported?

warrenarea commented 6 years ago

This repository is still supported. However, most of us who work on it, are often busy on other projects or other work. Bill schumacher is the lead programmer for this repository, but I think he has just been busy with something else. Also, it is difficult for him, because he does not have the Epoc+ version, so has to rely on information from others... which can be a tedious when troubleshooting.

Basically, I wouldn't plug it in and expecting it to just 'work' with this current arrangement, i have made some code suggestions in the Issues pages, which can get you pointed in the 'right' direction, and at least get some of the decoded data.

I am working on a new project that should be really beneficial for the Eopc, Epoc+ and Insight models.

I have another job though, which has been slowing me down, but soon, I will have more time to work on it, and put out this new project. Should really revolutionize how we use the headsets.

so be patient, in fact, i plan on working tomorrow on it.

warrenarea commented 6 years ago

i currently host the project CyKIT on github, which is designed to stream the Epoc models data.

Currently it does not support the Epoc+ but when I release my new project, I'll be updating it there. so you might keep checking that repository for updates.

ivankras commented 6 years ago

Great. Thanks

warrenarea commented 6 years ago

https://github.com/CymatiCorp/CyKITv2

warrenarea commented 6 years ago

https://discordapp.com/invite/gTYNWc7 If anyone would like to assist me in the Epoc+ data I have a Discord chat server setup here.

You can either download the discord chat messenger, or just click the link to use the browser interface.

Basically we have the input and the output.... and just need to sort out how it operates.

I have pinned a few of these files on the chat.

I also compiled a list of floating point numbers that correspond to each Decimal value (ie.4200) and there seems to be a pattern, that I have yet to sort out....

The floating point numbers actually repeat and are not unique at all.... i think if someone with a bit more knowledge than I about this sort of math could take a look, they could easily tell what is going on.

also, it seems like if you multiply or add some of them together, they match up, but with a slight variance.

would appreciate it if you could take a look...