Again, this is not yet the big update announced a while ago. But there have been so many minor fixes, improvements and new ideas, that it’s time to publish another minor update. The sum turns out to be an update which is not so small after all, so let’s have a look at a few highlights…
New experiment: Inelastic collision
This amazing experiment has been suggested to me by Mirko Zeppmeisel, a physics teacher from Munich. It is based on the acoustic stopwatch and analyses the sound from a bouncing ball. From the timing of these collisions the experiment derives the initial height, the maximum height between the bounces and the ratio of energy preserved on each collision.
Timer experiments
Also suggested by Mirko Zeppmeisel, some more stopwatches have been added based on different sensor inputs. Besides the acoustic stopwatch already in phyphox, we now have a motion stopwatch (based on the accelerometer), an optical stopwatch (based on the light sensor) and a proximity stopwatch. Oh, by the way, the latter one uses the proximity sensor, which is also supported since this version.
Raw sensor experiments
The basic sensor experiments don’t have a rate limit any more and work at the maximum rate supported by your device. The downside might be, that these experiments hence have become more device specific and the amount of data might be heavy on slow phones, but many have asked for this and it might be worth a try. Also, these experiments now give the absolute value of the 3D data as well.
Resonance and string length
The oscillator experiments “spring” and “pendulum” have a new tab, which plots the amplitude vs. frequency. This way you can directly measure the resonance of a driven oscillator (there will be a video on this soon). Also, the pendulum experiment has yet another new page, which allows you to determine the length of the string of the pendulum. So, instead of calculating g for a given string, you can assume g = 9.81 m/s² and calculate the length.
Elevator with acceleration
The elevator experiment now shows the acceleration from the accelerometer along with the height and velocity from the barometer.
Full Changelog
The full changelog for those who want to know every little detail…
Changes for both Android and iOS
- New experiment: Inelastic collision.
- New timer experiments: Motion stopwatch, proximity stopwatch and optical stopwatch. The existing acoustic stopwatch has been moved to this section.
- Support for the proximity sensor.
- Raw sensor experiments now also give the absolute value of 3D data.
- The info button at the top now opens a small menu with links to our FAQ, help and experiment collection.
- Added resonance page to the experiments “spring” and “pendulum”.
- The “pendulum” experiment now has a page, which allows estimating the length of the string.
- Added a third view to the “sonar”, plotting the correlation against the raw time axis.
- Performance improvements for “sonar” and “acoustic stopwatch” for slower devices.
- The “elevator” experiment now also shows the acceleration using the accelerometer.
- The remote interface starts in a new “narrow” layout, similar to a phone screen. You can still switch to the old full-screen layouts via the menu of the remote interface.
- The rate limit for the raw data experiments has been removed, so they acquire data at the maximum rate allowed by your device.
- Fix: Graph scaling not applied on remote interface.
Changes for Android
- We now read the recording from the mic in smaller chunks to improve the timing of the analysis cycle.
- Default margins removed from all view elements as these are now controlled by the new separator view module. (See file format changes below.)
- Name the sensor which is not available when trying to open an experiment.
- Fix: Crashes when experiments use string icons with less than three character.
- Fix: Rare crash when showing hint tooltip.
- Fix: Do not show save-locally dialog if the experiment was not loaded successfully. Trying to save in such cases led to a crash.
- Fix: The optimization for the analysis assumes it can skip empty buffers as there is no data to be processed, resulting in problems, when a buffer is empty because it has been cleared intentionally. Instead we now keep track if a buffer has been touched.
- Fix: When averaging, the first sensor value is returned immediately without averaging.
- Fix: The edit box in the experiment “Magnetic ruler” resets to the default value.
- Fix: Repeatable inputs were not mapped correctly if they were not used in the first period of repeatable inputs. This affected the rangefilter in a way, that it would not behave correctly if the second input should be filtered, but not the first one.
Changes for iOS
- Audio recordings are buffered internally and only exposed to the analysis buffers just before an analysis cycle starts. This way, it is guaranteed, that the buffer will not be changed during the analysis process and you do not need to create a local copy. This makes it consistent with the behavior of the Android version.
- Display a hyphen instead of “NaN”.
- Added a default text when sharing a screenshot. This hopefully prevents some third-party apps from inserting the image file path as default text.
- Fix: Range filter does not work correctly in cases in which the first value of the second input is filtered.
- Fix: Remote access stops working after leaving the app and returning to the existing session.
File format update to version 1.4
- New absolute output for all sensors, so you do not have to calculate it yourself in your analysis.
- New separator view element. This allows to add margins or lines to group your views.
- New analysis module: subrange. This simply returns the values within an index range. Much faster than using the rangefilter for this task.
- The analysis modules “if” and “append” as well as the view “button” now allow a new input type. Besides “value” and “buffer”, you may now set them to “empty”, practically being a constant buffer of length zero.
- Slightly change behavior for “if” module: If the output is flagged to be cleared before writing, this is only done if the condition for an input has been met. This means, that the output is not cleared if there was no input for a certain case and you can conditionally clear an output by assigning an input of type “empty” to a case.