HISE Logo Forum
    • Categories
    • Register
    • Login

    useUndoManager. How does it work?

    Scheduled Pinned Locked Moved General Questions
    19 Posts 6 Posters 722 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Christoph HartC
      Christoph Hart
      last edited by

      What it basically does is to run a timer that is executed every 500ms (or something like that) and coallescate undoable actions that appear in that time frame into one undoable action. Otherwise you would have to press Cmd+Z 20 times if you moved a slider.

      Normally this time is short enough to not coallescate different parameter changes.

      That's all done behind the scenes and is the same way the undo manager in script node and the interface designer works.

      ustkU 1 Reply Last reply Reply Quote 1
      • ustkU
        ustk @Christoph Hart
        last edited by

        @Christoph-Hart Ok so that's useful for many values in one unique component (like sliderpacks), but obviously not for several components at once

        Can't help pressing F5 in the forum...

        1 Reply Last reply Reply Quote 0
        • Christoph HartC
          Christoph Hart
          last edited by

          If you think about it it still is: if you have some sort of macro button that isn't connected to the undo management system, but changes 8 parameters at the same time, you still would expect that they are being undoed with one Cmd+Z keypress.

          There's literally no scenario except for when you're monkeying around on your UI where this becomes an actual problem, but solves countless edge case things - believe me, it was implemented differently and it was buggy as hell.

          ustkU 1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @Christoph Hart
            last edited by

            @Christoph-Hart Yeah I believe you :)
            I was more thinking of the user moving parameters side than macro/behind the scene case

            Can't help pressing F5 in the forum...

            1 Reply Last reply Reply Quote 0
            • ustkU
              ustk
              last edited by

              @Christoph-Hart For an A/B comparison, I was thinking of using preset save/load via script, but we are hitting the validation window problem as soon as you want to overwrite the A or B preset...
              Maybe an array containing all values combined with component.changed() would do it for an A/B?

              Can't help pressing F5 in the forum...

              1 Reply Last reply Reply Quote 0
              • ulrikU
                ulrik @Fortune
                last edited by ulrik

                @Fortune this snippet works as a compare A and B, but is only for those parameters you assign to the function, I have 2 buttons and 2 knobs in this example and it seems to work, but storing floating tiles values like the velocity etc in an arpeggiator it will be more complicated I guess
                And this is not comparing a preset from the preset manager and modified settings, but maybe it suits your purpose, I don't know.
                For comparing you have to press the "SnapShot" button and then start modifying the settings.
                With the Compare button" you will be able to flip between the A and B

                HiseSnippet 1324.3ocsX0saaaCElJIJswatXAX.6VNewfMZlibVa2.xxlicRFLZShwbVPABZ6Xjni4hDofDcSLBBPez1dS1ivdC1NThxR1VN9m05KB.4gmy4iemORcXZGHroggh.jwFmMvmhL9byNC3xdM6QXbTqCPFaZZK77IAT79XB2A2.0XfOILj5fLLV8WTKyXi0PQ+9metAwkvsooSgPmKX1zWw7XxzYaW+kLW2iHNzyXdYV8yp2xVvaJbE8AHspoExmXeM4J5ID0xVwDYr9gNLoHnijHogHi0ZHbFzom3Fd75OmExtzkpFTC0ABT7zGIbcTHVMKpYOlqS6jsdHBhR6ThX0Xh3KMOl4vFNeJg7EQFvodjkOLV4gfWsYCOq7fmQF3sVL71zric.yWlZQgsOyrEWRC5RfRPVXEuVzJ+0iLaJfUvkU8HWSOJ.FLzixuvxZK7ysrprawBEK.EhPI98j.baR.P+vpN8x+fZKCw6guHILWQkMA8gfCCJW5k7KqUpxVEKfeveS04cVZmaH409+3Lj42r6z8NKc3GPCox8UrfxkwMzHwPVSc3DePFHAa4CgjETpxHgro9r2zbSauTbIa6sw3yf5JlfCg3EpRnnKV1ipwVHF9ijwuJL5rbHnToJydXFGWRuwJUr.i6x3Tb29baISvwBdB9TvHP3V1NACaA3zsOsRwB2ESertkilAu2d3ZUhm6tTlUmjp1tTRP4J6NtkF4XoqHnLaOqcwrebbsXUWJ+JYOvzSeZkTOtazRoNoWvdCvjiGBXVEqdtBzPZ2d63UOL.2mKPR1GyU9AVKT3Rq5GvfpVJZpraZVJjIWEKbeTAcVZkpgzjJRShq6kvkkkmnVEqMhUGI5IkjXnD4FlrGd.bkK1S3v5xnNCkI4IEzwX1JAUB6DIwlHtYzaMJkt5HQIUhUaDreRcJDKEwZUm3TDh6FH7xJXmCg2GIQTi4RDMCwyxAf7xYXRNmsnRQvCIWfQmrnnCRiJSRnV3uAOpjG+06Y8IfkmiMYib2jEte5mXFdMY9GXFUQqNujQtehPROkWtRg6JrQAHWiapa2bsoClKMHWyp9dBdHGKy66cIMH4PUxBgF.FsCi0muNLri4kLKTvawYxS8o5wObKRHMwBcirtFgvRkQ8h7DcuHcbYNz.DCBx5lpVAPQXW6773wNyziF8kRAW6g5i9KrGKTN1vTqMzNkou14w8BlI2Emi++VqCHRhp8NM2B7sOMPxTkUiCnuG5aNtYuMLOfFdsT3iLd7PUMrclE8eaZ9Nn9frsYeCyQ1Kch2VuGkcUuLcn2pNZ9yzNYxzed0GyLMY4dZ6o2ljISCGX33Y4fEIKSe+rPYYs4PVkln+1OSh9v0iDIy4QgcaVXNRnXgGK7f.QBfoMVIajeTbjKpi7qHWRciB7SxNSVZ+CWjI3.6LZAt9uOQA9mpKo2JUOsT2aZ0pUQKNF1YZb0hfguJg3ia5oitEH3EoS7BK3cdBm9tD4nO9S8hWsA395Qdkk5kT7PlbP1WDu.uHzZtev57B2MMayj18xGuqjCdgai9TiW86qKZdX2tvG3SA6ZlG85k8wzK.T9UQeU2NGSjALPQYdReuNPuu1T.IbN0MTc3dE086wisTiULSGJ2IZv+B+zFqoFanMVKwHxiXGHdmc7GHTuf+wQy.XhG8OxXCyiUiwIe8xvzzppExi4vdmsshJ9V.646yNKgOe2R3yyVBed9R3yKVBe99kvme3A8Q8+zY+9RgW7wDXh1GF84YCiC4DPkEoHQ+GuqzG+B
                

                Hise Develop branch
                MacOs 15.3.1, Xcode 16.2
                http://musikboden.se

                ulrikU 1 Reply Last reply Reply Quote 0
                • ulrikU
                  ulrik @ulrik
                  last edited by

                  @Fortune I forgot to use the .changed() formula :)
                  Here's an updated version

                  HiseSnippet 1588.3ocsY80iSaDD2937URfTApUp8ws4gpDAjymK+ohqW4H2co5DbPZCE0JDP2XuIYKN65ZuginSmDeW52j9d+Nvi8w9Re95r9+NwNwD3LRP1c1Yledle63cV55xMIddbWE0JOYpCQQ8xZ8lxDi1aDlxTNbeE0uTaO9XGrKAceDlYgZibbIdDgR6oNXOOhkhp5E9A4pUqrth+y+du1XaLyjjLkhxS4TSxCoiohjY6t6Cn11cvVjmPGmZ02b2CM4r8317I.xtflthC17U3gjGgkKaMME0MNvhJ3t8DXAwSQc81bqo8FwOlEr9mR8n8sIxAaozCLTvzc31VRDKmUYuQTaqtQQ.OEvJcShGWHHd74ZGQsnwymDWthu.ThFoiGpqsH3sUZ3oWd3olBdqG.uqp0yzk5HRjHw1kzNjIHtCvPJHMrBVqxZe1kgjJrBln0X7qHcbgAwZz3155WGcKc8laWqZspPhvSfdM1E8.V+sdJ1dBAsCJR8gDgjdvYvfF0iWQcotYzzXoZZjmlsErk3y3ULulFKUyT9rV0M2DgtQxSZi0E6BLOH.839+NwT3A17YEGBp2750phV3SwQgUVYYf3CQYvyOe6h0Nc3HnBv8kQgmu87BZGIHsndLrCrCPTX5HZAyjGip9TjZgxSkCGLgYJnfAPC3tHwHhjK34W7BBvdoywYR2x+PY1TFI1DHNSlPkd1ka2vLxsWGfFPbZVq5I0pVIl12Bd4aTWPdindzJ.TcpOxVDcQpWnO1Caa2GJ10HimCd4xEbFKGbFqN3LV.3LVB3jDxk.t3MuAfq+vfZ9Q.DsyNnstGR+Mcfm6bGc865+a4u5zYYnOX+P9nOEzV.5MVN5MJK5kO2M92AEWWB5MV.5yF6kr9m.ExQXjGrKxStMiOvm5GrizCA+kfxFFrMvC9zDQJdLhxP0C2NWOuvPztxEGJjEHnCZj7Z2LXtSRpmD5jVl1DrailaOqj14HA1+1fti91H52MaE3V1D1PwHPz0tVyDMNIaArPm9L5yg5GyZBXVYP2OCBtcyMCVchENMWjD8hTJ..gMOtMokiKExpIvI8aYnaB+mESKRJRlO0XlzU.8HffDUHUxJhYIGSEiPSARKZL2hNfRrhYJ4wFBswxICRG1ymkMmcSQ4ZWOY097Rh.IeQPNQoJOjfGPWsBbATT2kONMmsDbuOR7n1khGsL9ypgf7bpWjSymWUjZlivrgDqFEyAk4i3bAj.lOGF5x1MmO9qi9ZT18HnuZG8ygjRIBIs+nDRNs38iwm9H+siY2uHsdpMSOhKHOl0nY0SpVo5oUQyJZvfbkEZLahathkcR4tHEavlLtOwMZKazBgVJx1yhVw8rjtkJyf3RpExYGxnhG6PXE0IiRXvD5oYiPTAKU32QymF1QSOapEwUgBMtrgl7nPJ93MrIw29W+2+bOkxpqQFce2e572Eqa6IBAmEpq7bBYz0u61Rqqwr5F9puDcqD0x8podUsnuBji9+7g6iEXYyjg4.Hu3PbETYJWcexqgtzCZsrh19DuWI3NJpWNlwCuXKKM8lD+8hcmlto9ioVhQokNhPGNJ08Ab3tJk2SFo7z6b9X5o4o.IdZ2eKsmdwrd5WmyS6+93ozuSu8O9f7z5kfdUP.DFj1RZkgoUPVGLE06H9XvPX2oQ0CRr8mDX6Zg19g39DaeS+oomoXREalvBjdlMr786J64QdyVgGQtUqVq.FJlt8dfguH9xz7O3UuvigUN3bIs3FMKhP91eb4zjHrjoNZI8twrdOCI8816QUhi89EK16wsJV3lQqx680zTh5VCDtgxwmcVX00RBkEGH9PfxYgPY9656JZGwslXiEYuFR4cuFJ.9Nel66SdmdLOpXZ5udctb2jkEtWUqKUXNJe7tVN3E9R04MdCuo2ZZGLX.bfvDvttVme47+ZcU9I9D4gpOBKbo.gR6QSF2CXClD.ILFwVdVL00jryfw5xwxHSOByxe.vYNKT3VxwpgB2JRnxXroK+klAGdPdWxWzeF.SL+qTuh1Qxwn3S6noo2RWYL0h9RSSYn3F.1yWGiUPmuYEz4lqfN2ZEz41qfN2YEz4aWnNx+2Et+DAebv1DXhtG3ezMU0CXXfk4yHU9e.iud9y.
                  

                  Hise Develop branch
                  MacOs 15.3.1, Xcode 16.2
                  http://musikboden.se

                  FortuneF 1 Reply Last reply Reply Quote 1
                  • FortuneF
                    Fortune @ulrik
                    last edited by

                    @ulrik Thank you! I really appreciate that. However it gives error in my system "API couldn't found" I am using the latest Hise build.

                    ulrikU 1 Reply Last reply Reply Quote 0
                    • ulrikU
                      ulrik @Fortune
                      last edited by

                      @Fortune hmm, strange...
                      try this:

                      HiseSnippet 1807.3ocuYssaaaDDkz1LMRNtIAnOzG2nGBjPhkoYykh35Xa4KEFINQsJMnEA4BE4JoMgZoJ4p33ZXf7Gzeg9sTj9ezm6S8OvcVt7xRJRIYYmxGDD2cmcNyLmY1KromqE1220SQszyNZ.VQ8JZsNhx5scOSBUY+cTT+Zssc6OvzCi1BYRsQMPC7v9XlRiiFX56isUTUm+64iVszBJAO+6FMLcLoV3jlTTdtKwB+XReBKo0la9Hhiydl13mQ5KM56r49VtzsccbGBHadMckAlVuyrK9Il7gMmlh5k10lvb8ZwLYXeE0EZ3ZeTqdtGREi+4DeRaGL+kUUZASjn48bcr4Hl2px18HN1Mi7.9JvrzLweLuve7UZGPrIwsm3WtVPGnDIj8GpyMN3spL7zmd3oJAuEDv65Zsr7HCXI8vw1hZ6SYXuNlPHPFVhwpLW0qBAUXDTV89luCumG7RrDUumt9sQ2UWu1ZKUdoxDpkyPab0JaC9dOylf8y9Q2gLBEW+s9UDCZoxP7xmgduoG5Qz1q9bSmgXz5nHszEy3rHWJ7R0JwiHP5TRZLQIMxSxFL5DzY7HFURiIJojNkksE0b.DTYOtsSgRKMlLZNLsZbBmLjPcuxJHzxIOxSWSSOH.Awvm19sXKlOLounX2ekZ2doxnw9TbDXlElGDNOBCZ9kqUrzxtCQQps3dgWt1nczHpibhHSJbHEK5LjZwHvDf535gX8vb9jePcRvQ4KGqRE1DR+HpaazpnBFUtBRnNPhWrdQtTdzjCWOWmpVQX81f8.L1ZKU9Xg6hzoZPKnar9PpMtCLI1PukhSEqCNkpUX3OvpDILXkmDXoiiFwkKT8aa53zFpSWMEnRbVAlqw42bMNWlqwratFiwbMFwbaLjw.HuJGOKelexy14oOi21KEWlSXfs6JVDMxHQquNZ0MP5eXO3492WW+AA+m+u81aRd.Q1a9d.InMhGvX17.E4BLlrKvXZcA7mGD+ewRdSvEXLFWPZRfvI7LXAVjIxGVGvGVG.41InNgnLjOB9AVJsqnlgOrkALu69HBEUIrFVEzndF9LKVPFk0IglYma3J7TmI3giyt3txZhLtiSJKGB65VNXSup0VKaOMxoGn7YUx55qgHeW1Exp6focY8ftt0spkHwwoWGHTouf7Rn7c1o.ZkGHCXEfZWYEwnSlgSD+8DdPKqYHTO5gH8MjWwOUEjfk4CBuLHbSqWudkZOn3QmgSDLbImQxx9oEKYi32D0HOI3CWXjBlbwD43PcQr4rbAYJcDN373Xd8gDvIcDjng56ZS5Pv1Ib6Il+mKaTnkIWrmCoVAYNip4jznFURFcPtFlg31JZPDYwGwbEof1BU.qp641OIOLyZKb1O5l2LGhRw4DxjohByaw4NSlCrbFNvEdxTioJYZjjnKDDjmRiI2I450VaxhY0yj1EamGTOIgRDSG.NvnznPU1n1nT.czHLfardNLfhBnoCh+e33Zbg33FWwkn8IWPokTI17YWJq+ItL7SoUqU93xkJeRYT1t5zI29BmLGrWtcyudAuwIXU5v9swdQ0VhFHbN6zGjWq3CxKeOCVB+hz.co6SIrmN.SK538JgNS3f9ZgnBFJK3X9eY3w7a4PrwdJD3z7WRiuIak.7FdyIu42+y+ZCkoUViTx9GCV+eJVVwN4BkkuWuTxFbkOSsrFYkMzzkkconq0vjhcBDcQs3UjxQ9eZ+cLYl7qHIzIBN1AXOFgGyT2A+dhEVbgIkz1A6+Nl6.E0qDSYAjMI+7GRz2q17H4qp5PhMqmbu8vjt8jtkq82TY50jgjl96AWjZZzXXhl17MxZ5UY0zuLhl14rnIYa5i+54RSZEpoRQ2SYQNP3Eey2i2m1Tb+kppyKOyWNMy6wlsCYdPKI6iqPd.Mik.dzrVxC2jWymekhit+OkN.usE42jn05aNUv6JZIqrTH24LftqpkZalSDXeQQ.aQs3KWnHl1G+gIG+ivUpJbSo1Mxp8Truyr1ipQN4fxhZwGDuvrL6oW6yooDcLVnyKob3omFV1bJgx3cDmGnb5nPYwooFtTdTaInzbPFn.AoLPAZA1Kg6gQ6nvmyY2xwAkz.gg6mfwSCwXRqF7l+zm9TPyoLmvmLEJlSYzad+ZZG3ZOzwjk9iBv+RHgc.avH0suyugcpOgcj7xleV9RASKbutVSBypW93ctbvKrB6ma7F9cWVRa2Ncfchl.1Ez16m+7+QVTDeaitGXx7H.IU6IC62BXGVX.ITfIy2DHPH3hF7tN+ctmoElZG7BmuE14p72UC6b0nNU5aZ449ZKwld3eYmKGzBfIZvG3pj1A72QwayRSSuttRehM40VVbWwx.1yWFiYPluYFj4NyfL2cFj4dyfL2eFj4aGqL7u02VCYt8EoIPCM2MXKmpp6RMAVV.iT4+.5nw24.
                      

                      Hise Develop branch
                      MacOs 15.3.1, Xcode 16.2
                      http://musikboden.se

                      1 Reply Last reply Reply Quote 0
                      • lalalandsynthL
                        lalalandsynth @ustk
                        last edited by

                        @ustk Weirdly this works even if I turn off the useUndoManager ?

                        Also, does not seem to work on a table hooked up to a scriptnode table or rather it works on some points , sometimes ? Unless this system has been changed completely ?

                        HiseSnippet 1987.3ocuY0sbaiaEFzVvwhab5l1z64r2T4ooZDkrjkZlo0Qx16pcWaqtxwM6zYZJDIrDpIIXHgjs1LYldYeL1Gk9HzGgbUutuAsGveDgr0Oz1aK0LZHN.378gCNmCvQpW.2hFFxCPZEOepOEo8Tb+odhQcFQXdntGhzdF9DRnfFXDKp8TeRXH0Foos4WJEnUr.J54e+6aSbHdVzLQHzEblE8aYtLQlzdG7MLGmiI1zyYtJiduC5Zw85vc3iA9rItBxmXcEYH8ThbXafQZacjMSvC5KHBZHRC2laOs+H90dwi+BVHafCU1vD0GTTr3i4N1RFKe+rIzfIL50pxPcFwbr6kZKBQHsB8xrLaFaYdA9DlMal7LKzmG0gQ1LTsQZaLOk2bNJapR4JJTdATRSgREhozyw8sBX9hrdj74yvc8fMrKIvVgBU1HdrnM9Uaf6vgQ3IJ6Rthdb.zX1LJ0nRkWZTuRkce0N5weXdNLOpwki8rDLtmA2armMusvSpk.tSIKtqO2Cz2KMlPbFS2cG8OritA7vtznTrHPPQoji7FBJqrTCkjPHk8wcz+H7ZJoFREcR0XouHAquX2xgR4QH1g33L.7MJcaprJRGPyAoKtTFKmd9XbBPKiwyyicekBEOkKnm4UZW8OnWT+i5F2tqKubg8knJGZvB6VFkErpIVxar6.ZPpgHcffa1pB2LWV3lUrUQYfbutdLwY9zj1206FkXJA+b8DVACUD4k+rDu71iEBtGhANyEwwMLQQTVMiC5dL8pOtoW6dL89NLaZPzzeB9a73CLeLSt5iYx4g1edxjA25A717ahl9mgSatRxWHVE+74vuG37GojcvYBVfZrIBBR6OgarWYg840Z81y95AM5CeEdVSuIUZcds5+gF8G99uL7L30qa0CdsQmiD1AKo8WOnY8N7IUd+Y+01+wwsJeWhtSBQOmHclkb7YpRVJIqiq0n77OSNqSy1Ma8Uc61sYmn1vWW9qkc0Jt88F9pKCd37Pza5dn7cH6dR7CDS4SCDLY3p1gzIvouwGUTDeHM7JA2Go8ylkqB7HVgSdRhJzMyv9eFbvzLh7pCtlYKFkI36OHjLg10qW.Ex7IO8iEdB2E.hDLUdBDJmHmjTWA4OMTE4e6iBYbNRqjg7+36UQ9Oev3P5a.5cBwCtYRv8W2UUzsw6Uz8AOdcWSQ29e3Qn6EjsJSyn2pp4KejZV0d7i9JZ9u8X0rp0.oZMLFtFM+jblD7FUGiL8268G3Rf9vZEgVLA0EhF+EXS8p50z2SutdC880ap2BsZVbexipvDgBS9j+AKXcklw4aICnNQJKECOtM0PDkHRQi+NEM9WBSi8vZ+Kn8HJa3H4lg1KjXSuAd23NZyvlSCM73Biq4AWgT4z14LI7R3yOJx3SAMU9bLz6cMv9oW5nqcTwNQPXb7aMmiTakyTyKiTSWEox0NxVXSmAN2A.r1m.8sDkqtCb5YFxUtga7R2XvXgQnf4DsADlWNTMgCXsF.RQ3G7SC92sXFnLJt8XGhX9ZqjEYlzAbo04psRVzhWHSLUsHzaWvUg7UvUV8fK75o4jtOG2iIrFsX9twB3Kbz8+q4aR4q6fO5xKoVhLxV.e7aWYspEx288WSozp0stULWzSb0.7kDYtvPUBc5X2n.MYsGPtQDBDjk0KRJ3.hRJrU6uiyJtwOf5SBnmy64PlVJj356P+NXY8RiANbqq5y9A5cqHJI4Pa4HJYMh34QcBeHENsUtK52bkE8i9N9XAya3IDQ.SFGJM.7wAVzNIrK0xjzthrszspO0yNpw+AdR5zblAC5zLsyrRuPmREIgmZZIuCqk3snCC8SEcAMHT5aCmyVoL7A8ZGG90xLJrDudXuKRVOtyT+QbOlkTT7HRo9qc4iiNFOh+eEI7bByQFlnswovAGf1OlXAFwo8HxjMOGKqqD7coAksl4COGuxbchhU.6cOR.wkJ.9FaqkJN8GXJ1NAbxMJKHbc5TGYHRXS4HisCQbYq3eJLKo236DwI+mid+xH5A9DkUFysXTtQuPVBjyIACohvjSMbn2jdg+j.iz2PxzK1zaR07QfioMnungq8FbiJYUozZVoI+v9Jkt.eUa+xSNp1jY8Op47i+VkxnXdkw4osfLGmv7tHtrErzGAcB4lYsMg1Ry4Svwhd8XA2EBThV6HkJXtE.OUA.brBfqV4yQKGL3Tzlff45suf5KC+i8HhpbxiFEXOGhyvvcrifMGFl2BiZUUwvbNLjXtRTJDiRnEA1DWmYKogNzYql62nZ8bn4gDWWRd07NPm60Z+562zb0JOx3rMNzkyA2+Ls+B45sR7i4dspXZ1vTArswxNyv6oRxTuR8ZR3xrZKTKqaopG6N3xsy6p8oQq1l60n49qewVDCZFRJHVs+ViEr8O2nWGNaEWWy5VBy6FOWWqCAL1lE7PAXMKgshMUWQmFN0yZ0lpVqNzr+Uzqiywt1P0n8eHGZN22ymYZaLHeDW7S5VgR1snaFIaMUl7N5vrtgWH6ExEjpF3vw1b9UtjnikeP+fO+e4RDtDq.96RNCTt31NRBXR7h92aJhOQ11X1ulVrozkYydmkk7xn+F3hrKdNUe.yo1CXN68.lS8GvbZ7.ly9Of4zbkyQ9mVkbzq7JaffdGEeaAsi7jWoH973+Kn.wSbC
                        

                        https://lalalandaudio.com/

                        https://lalalandsynth.com/

                        https://www.facebook.com/lalalandsynth

                        https://www.facebook.com/lalalandsynth

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        47

                        Online

                        1.7k

                        Users

                        11.7k

                        Topics

                        101.8k

                        Posts