Commit Graph

450 Commits

Author SHA1 Message Date
xenakios
29bc7bd5ee Initial work to implement offline render in stand alone build 2018-05-07 20:21:42 +03:00
xenakios
b71eea227d Update plugin title 2018-05-07 18:53:44 +03:00
xenakios
0859d8cdb4 Remove useless code. Read me change. 2018-05-07 15:51:50 +03:00
xenakios
dd333faf2c Bump version to 1.2.0 2018-05-03 15:26:48 +03:00
xenakios
35b3203d4e Draw pitch band numbers in ratiomixer 2018-05-02 13:14:02 +03:00
xenakios
cfbbad0e74 The stretch source doesn't really need to do anything except inc the param change count when the spectral module enabled parameters have changed. However this could get messed up if the spectral module order isn't correctly set in the stretcher instances already...Hmm. 2018-05-01 19:17:59 +03:00
xenakios
fa2564f908 Added dedicated timer for perf meter component 2018-05-01 18:35:00 +03:00
xenakios
60293c6a84 Calculate smoothed prebuffering available amount in the processor 2018-05-01 18:22:21 +03:00
xenakios
d42971e09f Added simple signal smoother class. Use that to smooth out the buffer amount component display. 2018-05-01 17:54:20 +03:00
xenakios
9afca36d64 Updated the buffering audio source from the new JUCE code that removed the use of volatile 2018-05-01 15:11:45 +03:00
xenakios
c4b2ead50d Avoid creating parameter components that are needed in the main GUI 2018-04-29 18:48:28 +03:00
xenakios
2f4c8d4075 foo 2018-04-29 17:04:21 +03:00
xenakios
d898b54ea7 Deserialize should now work 2018-04-26 23:20:16 +03:00
xenakios
81882b9ecb Remove the now unneeded map 2018-04-26 23:15:39 +03:00
xenakios
c8f865dd4a Almost getting there but some still is still messed up... 2018-04-26 23:07:08 +03:00
xenakios
cd15a0ea48 Messy attempt to make the spectral module enabled parameters be tied to particular modules, this needs to be seriously examined... 2018-04-26 21:45:37 +03:00
xenakios
40fcc1bdb0 Remove kiss fft files from repo 2018-04-26 18:03:41 +03:00
xenakios
cf27d43705 Clean up extra opcode stuff 2018-04-26 14:01:46 +03:00
xenakios
2d493d6d81 Add support for some custom VST opcodes 2018-04-25 15:25:29 +03:00
xenakios
2f3a526291 Remove the freeze seek code as it wasn't working. Best to postpone until the stretcher code has been rewritten. 2018-04-23 20:55:25 +03:00
xenakios
2d5064743c Comment out inactive code 2018-04-19 22:57:47 +03:00
xenakios
d294ff7171 Some useless testing with 64 bit floating point stuff 2018-04-17 23:39:26 +03:00
xenakios
d101d4f766 Init the ratio parameters with sensible ratios 2018-04-13 15:36:11 +03:00
xenakios
9f7b288fd6 Readme. Remove the octave mixer sliders from the main GUI. It's kind of nasty creating the parameter components for all the parameters even when they are not visible in the GUI. Should probably redesign how all that is handled... 2018-04-13 15:24:18 +03:00
xenakios
266f2b8e61 GUI tweak 2018-04-03 22:04:10 +03:00
xenakios
fe0fd35021 Store and recall some settings that were not previously handled in the plugin state 2018-04-03 20:08:56 +03:00
xenakios
f45c914c51 GUI tweak 2018-04-03 18:54:28 +03:00
xenakios
08398392ca Implement more ratiomixer parameters etc 2018-04-03 18:32:53 +03:00
xenakios
941ebf31a5 Initial work to change octave mixer spectral module to a more generic ratio mixer module that has more shifters and allows changing the shift ratios. Also added a separate tab page in the GUI for it. 2018-04-03 16:34:20 +03:00
xenakios
3729c4ec28 Glah 2018-04-03 02:07:47 +03:00
xenakios
3401384eff Remove the global processor pointer set. If communication between the plugin instances is needed, it should be implemented properly in a way which also supports the plugins running in different processes... 2018-04-02 20:20:22 +03:00
xenakios
890c568155 Attempt implementing seek while frozen, doesn't work too well like this...Don't use opengl stuff at all if the opengl module isn't set available. 2018-04-02 20:07:55 +03:00
xenakios
ce30e2afd9 Up version number 2018-04-01 18:01:05 +03:00
xenakios
bca5cc5dcf Clean up the non working VST manufacturer specific stuff 2018-03-26 19:31:23 +03:00
xenakios
8421269565 Use global constant for pi instead of define. Calculate sinus transform in envelope transform only if amount more than zero. 2018-03-26 15:40:30 +03:00
xenakios
52ebb38415 Attempt to provide extra data for a special host, not working like this 2018-03-24 01:01:40 +02:00
xenakios
d5f6a99261 Up version 2018-03-21 17:46:21 +02:00
xenakios
faf84a7233 Commented out parameter check. Damn, this got included in the public release... 2018-03-21 17:26:00 +02:00
xenakios
557c16b11c Up version 2018-03-21 16:23:35 +02:00
xenakios
97dfcedf4d Disable the non working waveform mousewheel zoom 2018-03-21 15:36:15 +02:00
xenakios
5f1a04043b Setting spectral module enabled no longer needs to notify host of generic state change. Repaint spectral module chain with timer to keep up to date with parameter changes done from the host. 2018-03-21 14:37:15 +02:00
xenakios
a45136e818 Use native file dialog again. Readme. 2018-03-21 13:48:01 +02:00
xenakios
6b09d11d49 Change the initial order of spectral modules to make the compressor be the last module. This is way too messy like this...But maybe this was the last time this needed to be done... 2018-03-21 13:43:03 +02:00
xenakios
6747d20aa8 Consolidate and clean up storing and recalling parameters. Enable storing and recalling of spectral module order again, using different state IDs. So old states will be discarded, but oh well... 2018-03-21 13:15:48 +02:00
xenakios
a16da5e445 foo 2018-03-16 20:41:44 +02:00
xenakios
3543b80f3a Initialize the module enabled parameters manually. Remove section from the constructor that made VS intellisense not work. 2018-03-16 18:40:59 +02:00
xenakios
88ad2e0de0 GUI size tweaks 2018-03-13 00:33:47 +02:00
xenakios
d4b1bffe7a Kind of working now, but maybe not in the best way... 2018-03-09 19:39:39 +02:00
xenakios
6d7671e8cf The spectral module enabled parameters still not doing so great... 2018-03-09 18:05:33 +02:00
xenakios
7fe4ea982e Remove the spectral module selection and move parameters. Initial attempt to implement the module enabled parameters. Might need to redesign this a bit... 2018-03-06 13:44:36 +02:00
xenakios
4f148a322d blah 2018-03-03 23:06:06 +02:00
xenakios
e1b0f6aaad Remove import file parameter and replace with spectrum module select parameter 2018-03-03 22:48:24 +02:00
xenakios
e5825f52dc OK, it's not going to work... 2018-03-03 22:32:44 +02:00
xenakios
47bf763408 Try adding parameter to open the import file dialog, but now working right at the moment 2018-03-03 22:19:02 +02:00
xenakios
d813794ea9 Added linear interpolation option for envelope random transform, fixes etc 2018-03-03 17:55:02 +02:00
xenakios
c391a2c0af Added free filter envelope random transform 2018-03-03 17:22:23 +02:00
xenakios
536b1ccaf1 Allow free filter to attenuate more 2018-03-03 15:57:24 +02:00
xenakios
71221b41a1 Allow toggling envelope transform X axis wrap 2018-03-03 15:25:16 +02:00
xenakios
cfe2a2b971 Hide the offline render feature for now 2018-03-03 14:36:45 +02:00
xenakios
9212069e65 Blah 2018-03-02 23:37:52 +02:00
xenakios
f474b022f0 A bit better but not much 2018-03-02 23:14:08 +02:00
xenakios
0d6eb09958 Attempt implementing mousewheel zoom into waveform. Badly. 2018-03-02 22:49:32 +02:00
xenakios
0b52559ab1 Stuff 2018-03-02 19:33:47 +02:00
xenakios
595b5992f6 Probably worth upping the version number for the free filter... 2018-02-28 23:10:41 +02:00
xenakios
634f612d9a Make the GUI wider 2018-02-28 20:58:55 +02:00
xenakios
23d8621c83 Remove the original free edit code and the binaural beats code 2018-02-28 19:32:17 +02:00
xenakios
b651e9f064 Parameter group highlight for free filter parameters 2018-02-28 18:57:28 +02:00
xenakios
3c58844266 Explicitly update the envelope minmax values at some places 2018-02-28 18:34:34 +02:00
xenakios
310f549643 Do envelope y scaling based on envelope point min and max values 2018-02-28 16:34:16 +02:00
xenakios
b2944afbab Yet another tilt fix. Change mouse cursor when at envelope segment. Envelope segment hit detection tweak. 2018-02-28 16:01:16 +02:00
xenakios
3816194fbf Fix envelope tilt. Add envelope y scale and tilt as plugin parameters 2018-02-28 14:36:13 +02:00
xenakios
f5995807f4 Add free filter envelope transforms as plugin parameters etc! 2018-02-28 14:20:26 +02:00
xenakios
9774af6e62 Member renames and clean ups 2018-02-28 13:32:46 +02:00
xenakios
b17131fa79 Use lambda for envelope drawing. Ignore using envelope tilt transform for now because it's not correctly implemented. 2018-02-28 13:04:44 +02:00
xenakios
b0e0cd673e Allow changing envelope sin transform frequency 2018-02-28 05:58:22 +02:00
xenakios
b4c3b026e1 Added tilt transform for envelopes 2018-02-28 05:38:19 +02:00
xenakios
e7011d4acb Draw the envelope name 2018-02-28 04:30:28 +02:00
xenakios
8f747819e9 Added sinus transform to envelope. Return proper value when not transformed. 2018-02-28 02:14:27 +02:00
xenakios
d95c41e8aa Improved envelope component keyboard handling logic 2018-02-28 01:16:30 +02:00
xenakios
c6c2855a56 Added scaling transform for envelope 2018-02-28 00:32:18 +02:00
xenakios
ff35bce695 Add envelope transform feature 2018-02-28 00:05:35 +02:00
xenakios
0f70453c3a Simplify the envelope drawing, might come at a slight performance cost 2018-02-27 23:11:03 +02:00
xenakios
3dfb6a3c80 Place both the waveform component and the zoomscrollbar inside the tab component page. Needs a bit more tweaking. 2018-02-27 22:15:14 +02:00
xenakios
d624b2370d Formatting tweaks 2018-02-27 20:14:09 +02:00
xenakios
657c3d6c20 Argh, what a mistake 2018-02-27 20:11:14 +02:00
xenakios
aca3667888 Lock mutex in envelope component. Draw frequency values on x axis. 2018-02-27 19:44:35 +02:00
xenakios
b672213e98 Tweaks to free filter calculations but don't seem to be working correctly yet 2018-02-27 19:21:00 +02:00
xenakios
51049e4ae1 Mutex protect the envelope when manipulating the amount of nodes from the GUI. Should probably redesign this stuff a bit...Init envelope reset nodes. 2018-02-27 15:21:36 +02:00
xenakios
195a630060 Implemented free filter processing. Note that the envelope manipulation from the GUI is not handled thread safely yet 2018-02-27 15:02:34 +02:00
xenakios
e8d134ce48 More work on free filter 2018-02-27 04:06:53 +02:00
xenakios
7c61a552c2 Store and restore free filter state 2018-02-27 03:41:54 +02:00
xenakios
cf9b54d19b Initial work to add back the free filter feature 2018-02-27 02:33:41 +02:00
xenakios
600f2d1251 Added some new source files 2018-02-27 01:59:22 +02:00
xenakios
51d40c6daf MacOS build 2018-02-27 00:32:33 +02:00
xenakios
104d1bfd2e Store and recall the number of harmonics parameter. Seriously, have to make this stuff work in a more robust manner... 2018-02-26 22:39:30 +02:00
xenakios
d76ac6118a Allow cancelling offline render 2018-02-26 20:09:47 +02:00
xenakios
ba067f7d4a Do offline render in a thread, show render progress etc 2018-02-26 19:55:32 +02:00
xenakios
46a74c2c51 Offline render might be working more or less now 2018-02-26 18:08:09 +02:00
xenakios
909b61922b Attempt implementing offline rendering from the plugin but not going so great. Looks like the StretchAudioSource doesn't really work that robustly... 2018-02-26 17:49:19 +02:00
xenakios
47638ba0c6 Prepare to allow adding offline rendering feature 2018-02-26 16:34:13 +02:00
xenakios
13d03ecaeb Handle corner case in hasProperties 2018-02-25 21:06:59 +02:00
xenakios
ebffc66e90 Upped version number 2018-02-23 21:27:55 +02:00
xenakios
101825df59 Fix for clang 2018-02-23 21:12:16 +02:00
xenakios
a988086ec6 Whoops, almost forgot the smoothed play range stuff for multiple channels 2018-02-23 21:01:39 +02:00
xenakios
3a8da6de0c Make seeking work again. Some variadic template, fold expression etc trickery for value tree etc. Readme change. 2018-02-23 20:46:51 +02:00
xenakios
3c20facdbc Improve time selection dragging behavior 2018-02-23 18:21:28 +02:00
xenakios
6f6670b2d4 Parameter store and recall stuff 2018-02-23 18:09:01 +02:00
xenakios
1f24ffb1b6 Moved dry source playback into its own method. Allow moving waveform time selection without having to press shift 2018-02-23 17:43:29 +02:00
xenakios
531d2e221b Also allow moving time selection by dragging it from the top 2018-02-23 02:16:41 +02:00
xenakios
f47e848f19 Shorter range change fade length. Readme change. 2018-02-22 22:20:06 +02:00
xenakios
122c90bf3f Smooth play range change almost working... 2018-02-22 21:03:46 +02:00
xenakios
a8079b277f Attempt to do fade outs and fade ins when seeking source sound, but not working yet. Readme changes. 2018-02-22 20:01:29 +02:00
xenakios
615f870490 Try improving the spectral module dragging logic but didn't really improve yet. Readme changes. 2018-02-22 15:15:11 +02:00
xenakios
017957b7ae Limit shift dragged time selection properly 2018-02-22 14:56:18 +02:00
xenakios
e502906d4f Shift dragging the time selection moves it 2018-02-22 14:49:53 +02:00
xenakios
7cd5251516 Added methods for the normalized time position to/from view x coordinate mappings 2018-02-22 14:22:06 +02:00
xenakios
3d53c4fb91 Shift dragging time selection edge moves whole time selection. Should do this more properly... 2018-02-22 05:23:39 +02:00
xenakios
c98b7c70e4 Report unstretched play range length when playing original source 2018-02-22 02:04:30 +02:00
xenakios
a3b034ac44 Count calls to prepareToPlay 2018-02-22 01:54:21 +02:00
xenakios
1a8bddeb9b Added convenience functions to deal with storing and getting audio parameters and use them 2018-02-22 01:09:36 +02:00
xenakios
73c58f6067 Save and restore more parameters 2018-02-21 20:41:51 +02:00
xenakios
715a753893 Resample unprocessed source sound as needed 2018-02-21 20:16:07 +02:00
xenakios
3b6e309232 Add parameter for stretch bypass 2018-02-21 19:49:16 +02:00
xenakios
e6a7d26d27 Preliminary work to play the sound source unprocessed 2018-02-21 19:34:39 +02:00
xenakios
f424a6a305 Lower number of supported channels for imported file. Remove commented out code. 2018-02-19 21:12:54 +02:00
xenakios
efe5781271 Don't reset thumbnail in prepareToPlay 2018-02-19 21:09:09 +02:00
xenakios
f2d0d3617a Use unique pointers for parameter components 2018-02-19 20:47:32 +02:00
xenakios
0f1742fbbf Show approximate output duration in info label 2018-02-19 17:39:10 +02:00
xenakios
d1cf25782a Increase version 2018-02-16 14:33:17 +02:00
xenakios
dd30bd3cae Forget using the gradient for now 2018-02-16 13:51:48 +02:00
xenakios
974f55dcad Experiment with a colour gradient fill in the performance meter 2018-02-16 01:55:33 +02:00
xenakios
3171940a67 Experimented with adding a sound play range offset parameter but not going to be able to support it properly for now. Show debug build title in about screen. 2018-02-15 16:03:00 +02:00
xenakios
178d68b0ec Store and restore zoomscrollbar positions. Readme change. 2018-02-14 18:38:54 +02:00
xenakios
e3d893ee9e Added zoomscrollbar for waveform. Removed unused code. 2018-02-14 15:18:35 +02:00
xenakios
b6f5c0ea7d Shorten the FFT switch crossfade length. Remove commented out code. Formatting change. 2018-02-13 22:16:18 +02:00
xenakios
acbbe693bd Boolean stuff 2018-02-13 19:41:52 +02:00
xenakios
3a36e35903 Store and restore tech info toggle via settings file 2018-02-13 17:52:45 +02:00
xenakios
c9a3a3ab03 Show additional technical info in label optionally. Added utility function to toggle a bool variable. 2018-02-13 16:51:57 +02:00
xenakios
53029555d0 Parameter layout tweaks etc 2018-02-13 15:47:17 +02:00
xenakios
103a085304 Use the input channel count parameter when initing capture. Readme change. 2018-02-13 15:37:16 +02:00
xenakios
c65812f709 Performance improvements for painting waveform during capture mode etc 2018-02-12 20:51:05 +02:00
xenakios
07a54c4cdc Preliminary work to allow more input channels 2018-02-12 16:44:21 +02:00
xenakios
05a6eb21f0 Init playposition info seconds to zero to try avoiding garbage value to show 2018-02-09 15:34:39 +02:00
xenakios
10a36338b8 Upped version number 2018-02-09 13:55:54 +02:00
xenakios
52d8b4d664 Change plugin title to final 1.0.0 2018-02-09 13:29:01 +02:00
xenakios
b8c70ddd30 Mark plugin dirty when changing spectral module order or module enabled state. Readme change. 2018-02-09 13:02:10 +02:00
xenakios
aed9e459cf Removed factory presets. Readme edits. 2018-02-07 16:55:48 +02:00
xenakios
0a9a087cb2 Added dummy parameter to mark the plugin state dirty for the host. Readme change. 2018-02-07 16:00:49 +02:00
xenakios
e7d34a026d Moved prebuffering amount menu to performance component 2018-02-07 15:12:10 +02:00
xenakios
ccf47720ab Waveform length display improvement. Draw waveform texts brighter. 2018-02-07 14:52:22 +02:00
xenakios
af8ab1eba1 More space for time text 2018-02-06 22:20:08 +02:00
xenakios
a589f133d2 Format waveform duration in a nicer way 2018-02-06 21:15:20 +02:00
xenakios
85f3552af4 Control click on waveform seeks if click within active play range. Draw waveform length in seconds. (Should format into hours:minutes:seconds.milliseconds or something...) 2018-02-06 17:38:26 +02:00
xenakios
ff130c6c29 Up number of thumbnails in cache. Formatting fix. 2018-02-06 17:04:36 +02:00
xenakios
ac18c12ae7 Clean up unused code 2018-02-05 23:28:36 +02:00
xenakios
185cd27bef Upped version number. Reverse order of version history in readme. 2018-02-02 14:19:48 +02:00
xenakios
c9b287dc13 Move code to cpp file. Readme change. 2018-02-02 12:23:57 +02:00
xenakios
c7f5636634 Readme change. Draw text on perf component. 2018-02-01 21:31:23 +02:00
xenakios
e8b16839da Added function to create parameter. Set value step amount for most parameters. Enable double click to reset parameter slider. 2018-02-01 20:09:12 +02:00
xenakios
e6fb981e01 Highlight parameters of spectral module when clicked in the spectral chain editor 2018-02-01 15:11:41 +02:00
xenakios
0e997e1d43 Avoid showing nonsense play position value 2018-02-01 13:17:15 +02:00
xenakios
d119439f76 Avoid mouse drag when the spectral module enable button has been clicked 2018-02-01 00:06:32 +02:00
xenakios
ad86b46f95 Added a separate performance meter component 2018-01-31 20:58:16 +02:00
xenakios
6f89b544ab Draw prebufferred amount in main GUI component. Does not refresh properly in stand alone app build and probably not in all plugin hosts either. 2018-01-31 20:43:27 +02:00
xenakios
b179285b93 Added method to sound source to get playback position percent. Avoid seeking sound source when changing FFT size. Readme change. 2018-01-31 20:06:12 +02:00
xenakios
42061670a8 Clean up. Removed the MultiStretchAudioSource, hopefully it doesn't need to be restored later... 2018-01-30 18:56:00 +02:00
xenakios
f414f19e01 Remove the bool enabled members from the spectral process parameters 2018-01-30 18:49:00 +02:00
xenakios
65545c96b6 Make num harmonics parameter an integer parameter 2018-01-30 18:07:47 +02:00
xenakios
ced5a5e22a Increase spec process enabled button size. Init spread spec process to disabled. Remove checks for spec process enabled states from processBlock 2018-01-30 17:54:06 +02:00
xenakios
84164da2d7 Finally added enabled buttons for the spectral steps. 2018-01-30 17:32:23 +02:00
xenakios
0253b335f5 Fix release build crash in Reaper and Ableton Live 2018-01-20 22:54:26 +02:00
xenakios
a2ab8d285f glah 2018-01-20 22:39:33 +02:00
xenakios
fcbd99d4ed Double click on waveform selects whole buffer 2018-01-20 22:21:26 +02:00
xenakios
bc3f456485 Again draw file name in waveform component 2018-01-20 21:50:24 +02:00
xenakios
99127c79bb Increase thumbnailcache thread priority. Readme change. 2018-01-20 21:27:29 +02:00
xenakios
f4aef4bcac Remove redundant code and change about box text 2018-01-18 06:56:23 +02:00
xenakios
620f59c4f4 remove commented out stuff 2018-01-17 22:03:43 +02:00
xenakios
8bf3225b83 Restore ability to set capture buffer lengthm now via settings menu. Use AudioProcessor owned thumbnail for live input captured audio. Still need to clean up some of the old messy code that is now commented out. 2018-01-17 21:53:26 +02:00
xenakios
f6274f19be When changing audio file, seek to beginning of play range 2018-01-17 19:34:12 +02:00
xenakios
daf17f2ea3 Initial work to make the AudioProcessor own the AudioThumbNail etc 2018-01-17 18:57:56 +02:00
xenakios
3e2ce4ad45 Update version number 2018-01-08 18:04:28 +02:00
xenakios
f2275d49eb About text change 2018-01-05 21:57:43 +02:00
xenakios
a24d5c8c81 Make callGUI more generic and move it to globals.h. Readme change. 2018-01-05 17:49:54 +02:00
xenakios
cf17390293 Move methods to cpp file 2018-01-03 19:32:53 +02:00
xenakios
85875d96f4 Remove the unneeded Mutex.h file 2018-01-03 18:28:14 +02:00
xenakios
96a88e8016 Use new JUCE button callback stuff 2018-01-03 17:15:57 +02:00
xenakios
64ad16f8cb Clean up parameter components initing 2017-12-29 19:31:12 +02:00
xenakios
fbd337bf5d Removed the redundant spectrum processing methods 2017-12-29 05:12:03 +02:00
xenakios
0c394e9e36 Info labal justification change. Show prebuffered amount multiplied. 2017-12-28 22:50:52 +02:00
xenakios
2eedb1963f Factory presets stuff 2017-12-27 22:56:27 +02:00
xenakios
7d8ba0c15f Allow getting state tree without imported file and options. Update spectral order component from timer. 2017-12-27 22:43:07 +02:00
xenakios
843af8a8f9 Attempt to provide some factory presets, but getting messy...Readme changes. 2017-12-27 22:20:44 +02:00
xenakios
22aaaeb836 Got rid of unnecessary buffers. There may have at some point been some reason to do it like that though... 2017-12-27 17:57:00 +02:00
xenakios
7dcf9831f2 Try zeroing even more buffers, but no help... 2017-12-27 17:43:36 +02:00
xenakios
a6ec40904c Rename member. Attempt clearing buffers more thoroughly but old audio still appears to be present when restarting playback... 2017-12-27 17:35:30 +02:00
xenakios
f9cce79f49 Added support for dropping audio files into the plugin GUI 2017-12-27 16:56:37 +02:00
xenakios
21b06b8353 Add option for loading imported file with plugin's state. Use a small loop xfade amount as default. 2017-12-26 20:24:10 +02:00
xenakios
29e46bd008 Add menu action to reset parameters to initial values, except for main volume and input pass through 2017-12-26 18:12:22 +02:00
xenakios
34002da183 Add about dialog 2017-12-24 16:56:22 +02:00
xenakios
9630daba15 Use standalone functions for all spectral processors. Readme change. 2017-12-23 21:46:37 +02:00