David T. Lewis uploaded a new version of Chronology-Tests to project The Trunk:
http://source.squeak.org/trunk/Chronology-Tests-lrnp.31.mcz
==================== Summary ====================
Name: Chronology-Tests-lrnp.31
Author: lrnp
Time: 3 March 2022, 12:46:42.775073 am
UUID: 437b3938-ef51-494d-9dee-ba89baa669bb
Ancestors: Chronology-Tests-ct.30
adjust margin of error for millisecond timing
Given that the shortest measurable interval is 1 ms, rounded, allow up to 2 milliseconds over or under for a combination of rounding and delays introduced by taking measurements.
This makes the busyWait test harder to pass unless the millisecond precision prescribed by Delay's comment applies to the current image. If the prescription applies, the test will pass more reliably in case of rounding errors.
=============== Diff against Chronology-Tests-ct.30 ===============
Item was changed:
----- Method: DurationTest>>testBusyWait (in category 'tests') -----
testBusyWait
| duration start elapsed |
duration := Duration milliSeconds: 1.
start := DateAndTime now.
1000 timesRepeat: [duration busyWait].
+ elapsed := DateAndTime now - start roundTo: duration.
- elapsed := DateAndTime now - start.
+ self assert: elapsed >= (duration * 998).
+ self assert: elapsed <= (duration * 1002).!
- self assert: elapsed >= (duration * 1000).
- self assert: elapsed <= (duration * 1000 * 2).!
David T. Lewis uploaded a new version of Chronology-Core to project The Trunk:
http://source.squeak.org/trunk/Chronology-Core-dtl.81.mcz
==================== Summary ====================
Name: Chronology-Core-dtl.81
Author: dtl
Time: 6 September 2022, 12:01:42.15096 pm
UUID: ffc48d2d-0f38-4d45-b3b3-d973d8ed08c5
Ancestors: Chronology-Core-ct.80, Chronology-Core-dtl.80
Merge Chronology-Core-dtl.80
Reference https://github.com/squeak-smalltalk/squeak-object-memory/issues/23 DateAndTime>>offset: implementation is incorrect
=============== Diff against Chronology-Core-ct.80 ===============
Item was added:
+ ----- Method: DateAndTime>>asLocalAt: (in category 'squeak protocol') -----
+ asLocalAt: anOffset
+ "Answer a DateAndTime for a different time zone offset that has the same
+ year, month, day, hour, minute, and second as this instance, and with
+ printString that matches except for time zone offset."
+
+ | newOffset newMicros |
+ newOffset := anOffset asDuration asSeconds.
+ newMicros := localOffsetSeconds - newOffset * 1000000 + utcMicroseconds.
+ ^ self class utcMicroseconds: newMicros offset: newOffset
+ !
Item was changed:
----- Method: DateAndTime>>offset: (in category 'ansi protocol') -----
offset: anOffset
+ "Answer a <DateAndTime> equivalent to the receiver but with its local time
+ being offset from UTC by offset.
- "Answer a DateAndTime for a different time zone offset that has the same
- year, month, day, hour, minute, and second as this instance, and with
- printString that matches except for time zone offset."
+ See asLocalAt: for the earlier behavior of this method."
+
+ ^ self class
+ utcMicroseconds: utcMicroseconds
+ offset: anOffset asDuration asSeconds!
- | newOffset newMicros |
- newOffset := anOffset asDuration asSeconds.
- newMicros := localOffsetSeconds - newOffset * 1000000 + utcMicroseconds.
- ^ self class utcMicroseconds: newMicros offset: newOffset
- !
Item was changed:
----- Method: DateAndTime>>utcOffset: (in category 'squeak protocol') -----
utcOffset: anOffset
+ "Compatiblity. Answer a DateAndTime equivalent to the receiver but offset from UTC by anOffset."
+
+ ^ self offset: anOffset!
- "Answer a DateAndTime equivalent to the receiver but offset from UTC by anOffset"
- ^ self class
- utcMicroseconds: utcMicroseconds
- offset: anOffset asDuration asSeconds!
Item was changed:
----- Method: Timespan class>>current (in category 'squeak protocol') -----
current
+ ^ self starting: (DateAndTime now asLocalAt: self defaultOffset)!
- ^ self starting: (DateAndTime now offset: self defaultOffset)!
Hi all,
I have been playing around a bit with midi support and was pretty delighted that you can actually synthesize inputs from a midi keyboard using MidiInputMorph! Out of curiosity, here are a few short questions:
1. As far as I could find out, there is currently no support for recording midi in the Trunk, is it? There are MIDISynth and MidiInputMorph, but there seems not to exist any connection to the PianoKeyboardMorph or the Piano Roll yet? Imagine you could press Record in a score player and add another track by playing it on your physical midi keyboard ...
2. Also, there is not yet any file-out for midi, right? This would also be cool: Store the events from an input midi port, add them as a new track to a score, and serialize the score to a .mid file later.
3. Last but not least: Should the MIDIPlugin be fully functional on Linux? On my Ubuntu machine, I can use the output port but primitiveMidiRead always fails. On Windows, everything is fine.
Have a nice weekend!
Best,
Christoph
<http://www.hpi.de/>