HISE Logo Forum
    • Categories
    • Register
    • Login

    Recreating Roland Alpha Juno PWM Saw oscillator - ideas?

    Scheduled Pinned Locked Moved General Questions
    15 Posts 5 Posters 150 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.
    • dannytaurusD
      dannytaurus @griffinboy
      last edited by

      @griffinboy said in Recreating Roland Alpha Juno PWM Saw oscillator - ideas?:

      So, the easiest way to achieve it in a 'pretend' hacky manner, would be to record the original waveform output from the synth while sweeping the PWM, and extract frames to create a wavetable. You could then use the built in Hise wavetable synthesiser module to play it back.

      Wavetable was my first thought too. Mainly so I can stick with built-in modules for now but also because I'm not looking for 100% accuracy or an emulation that interacts with other components of the system.

      I'll be doing a lot of processing after the oscillator section, so any 'flaws' of the wavetable approach will likely be very lost in the mix.

      So now I just have to dig into the Wavetable Synthesizer module.

      Any tips on the fastest/easiest way to take a power-of-2 WAV and convert it for use in the WT module? I'll read the docs, of course, but if there's a standard 'quick' conversion method I'll use it! 😀

      Meat Beats: https://meatbeats.com
      Klippr Video: https://klippr.video

      griffinboyG 1 Reply Last reply Reply Quote 0
      • dannytaurusD
        dannytaurus @modularsamples
        last edited by

        @modularsamples said in Recreating Roland Alpha Juno PWM Saw oscillator - ideas?:

        Here's a bargain basement approach using the file player in signal-in mode. Just drop a single cycle waveform into the file player and boom, something that sounds like pwm. Watch out when changing waveforms though, the file player really doesn't like this when using single cycle waveforms and will make loud, unpleasant noises.

        Crikey! That's a bit too brute force for me! 😂

        Love the simplicity though! 👏

        Meat Beats: https://meatbeats.com
        Klippr Video: https://klippr.video

        1 Reply Last reply Reply Quote 0
        • griffinboyG
          griffinboy @dannytaurus
          last edited by griffinboy

          @dannytaurus said in Recreating Roland Alpha Juno PWM Saw oscillator - ideas?:

          I'll be doing a lot of processing after the oscillator section,

          That emphasises differences rather than obscures them. Everything downstream is affected by the source.

          But if accuracy to the original is not the goal, this isn't a problem whatsoever.

          As for creating wavetables, use python. You can code custom tools to take your cycles and stitch them into a wavetable. You can even generate PWM in python.

          (it takes a bit of setup to get python up and running though, with all the right libraries and versions, it can be a pain) After it's setup though it's great, and ChatGPT is good at writing python code, so you basically have an unlimited supply of little audio dev tools that you can generate.

          Or... if you own Serum2, use that. The wavetable editor is good and it can extract cycles and stitch them using different morphs.

          1 Reply Last reply Reply Quote 2
          • dannytaurusD
            dannytaurus @Orvillain
            last edited by

            @Orvillain said in Recreating Roland Alpha Juno PWM Saw oscillator - ideas?:

            kindly ask @Christoph-Hart to implement PWM for the sawtooth shapes in the waveform generator 😉

            Oof! That would be nice! 🙏

            I was very pleasantly surprised to find PWM on all the oscillator waveforms in the Synthstrom Deluge synth. Really opens up a lot of sound design stuff.

            Meat Beats: https://meatbeats.com
            Klippr Video: https://klippr.video

            1 Reply Last reply Reply Quote 0
            • OrvillainO
              Orvillain
              last edited by Orvillain

              In the context of sawtooth shapes, PWM is really just a per-voice phase reset (IE: Hey.... we've hit our threshold... reset the saw to zero....) - that's how most people do it anyway, iirc. So I actually don't think it would be too hard to add that to the existing waveform generator. If I knew the code, I'd have a go myself!!

              Musician - Instrument Designer - Sonic Architect - Creative Product Owner
              Crafting sound at every level. From strings to signal paths, samples to systems.

              dannytaurusD 1 Reply Last reply Reply Quote 1
              • modularsamplesM
                modularsamples @griffinboy
                last edited by

                @griffinboy Good point!

                What about this? it should be pretty close to how the AJ works (I think) as it's splitting the signal and "chopping" the output of the saw. The PWM still happens on the pulse..

                HiseSnippet 2170.3oc6Z0CaibbEdVRM5+KN14rgSQ.HBRw4fCBj5uyBo3n90VHG0QHJqjq5xvcGRNf6tylcWJIlf.b.oIcIsFHEtxUAHAoKEA45R.xkBCi.jJiz3B2cEI.oy9Myrq3rjKEonH44CWj.DzNuY1468226MCYYetIMHf6iLV7j1dTjwx3JscCaraCByEc3dHir3yQ6z1iDDPsPFFYeOg.iElAI+442eGhMw0j1YHD5TNyj9.lCKrynkK9CY11GPrnmvbzl85EOzj6tK2l2xWrY4QdDylj5ziHhokAideRPCjw2Gug4VaZZUcqplVadupqs0FEJrV97qs9ZE1vZMR002vZqUWkr4VHiY22hEx8qDRBoAHiY1ga0tRC94tpM3TV.qpMU7PATEXmUCe.21RnhhQQ61fYaUN15DfPF3xcrUYU1paiKwrXWNdGa12TJHWmUna.MxjDdYS.uB5vKuF7RARFZPZFEjdcbESelWXGIB7rD9P2PpeMB3mzghZtHimh2kCSvMbEGRS5A9vCWtf6rY972MG7m24GTqkqYHi6li6dDOj9P267NK9yWbgE+EKlqaQ0pkpLw13ysso9oJVDZ3eUK7NtsbpR8uatyH1snWNQP8SZSw82lp6xMUZs1D4tG5xBenG0seABnHSE7eevg6QBIBGQzXv77n9gLADL1idFjFnbKKf2iFzLj6AIB83yfnEtUKaRXxPHQhVj.vFjvuIbNtArv15Ihis3pgEhuNtLKzrQ5XLSJXDrTSBLFkMdK790pQMC6.vYvG7imLod5a+BwauJaRReJ29uczHtbKZN4vz.V.0uP+3S+2+9+4ecX4S8FZ9z3j76huNITyNRITIiY0l+COi5eFiddGR1TYzlcRQxNyv4ou5Z.uDj6lnlvBwXrBywyltu6YTaffRhw2.XjpQZYGFOZxnxRbWtWCtKyTOP7XZnOqdcpuN1SUg1NLDJi2YjaW7XpMkDnEo98J9.lKk3C1I5HZKJbsqOlp+5swJ3lSjJk6l32lpgYWI+a1gh+cri2QmKdpZ5lGu+Eg9jBCph0KXObDLW8EELOl2Jj4VuDAR6u.JBbTKmJPcESJ.QWWpsnvfQFQOQpmyKdV.nJTWK4CeI7SjvBhmMhDVHVnV6TGQCOm62Tl4F8+fIPXGlCGPNe6Rnsss4muK2wiEEvCwQxwJysaGSWYjQMiXPtsCuE79iPZmrkcr4lMqv9YzXPCGz3DByV7FpzJ.ZAz5gtUf2irZrQ1So9Ax8bNb9UfegjoijTWye.wDL8sKSfB+PVonqRvCR8Ww7ROYrFnmAnNgSrDw6JtrsBOfZ3HrLhCAIbkkI9vJf1xEcWlI10AYRY056Tw5IdBhOxH15kwGFbpPpIwFcpnLuX4x8SL8rJkXNwT+F3ZhsX0GWUXaPIzq2VSuRLqdUotdMWslMtziHmwrhot.1qAAhgWMoJbKPE7oqnjkBtmOZYC.wFYzwIRys.4cW9Dbh5RL2Hb1gAtD4htF642uRH0SEHpMVSnYII3STqETtYgtKBonSnWDdBW9tfTHn8J4dtD9Cbsn0.ujE.r5pSPWoU02ym2xS9PO6dTe.8LN5pUk0K1ip7q9zhcoJezG9g+odUkh+Rm+w8UmK8.e5OsEjg0dLoOOoYwT0GX7AnOO+985ZxW754ZVVpO4NVvu7B2AMrwZ.gbeUn4vkaHZZaLoKHT55hf7uCKDvH5YCm0ouzpJwoRkJkLZDNoxjLGVwgO.J9zvhRx.nRtQTdFZ.cVb8dv4RJ9t5oivnUL5bcY0h+Vd3h+d2gif3o0+CuYwXtN.iS7vusaExc.V0nFrj6fzTc8ywJ9qGNc7m7s16SiHAq3v4gMfFslzJ55ChD7QOsWeFvObs7YKiOlFPi15wjB8nm1WhC8PRcVj4UIfElTotiq9VlUCyKhc3VoP3baMTe4L5E3ZKe5fcbBBHvO3kJAjTPZDPRACf.ZlDDPcZe+DhecZn5BYE2twEw2E6dLnJ.o8NsfSfptFfDiHzLH36h3CfruSUpEXMjKO9PI8kmq6bFYtvHyAn03PYpOiaIuKuwPNy+6Sd1uyJ8NgPOp3TnwgkvOfy8fSi5GNEZdXxqOSslt0xnvXOVWzWKfgpTMVwikR5jZ5id4bioQ6ji0pB8yLhJlzLFzMe5hJyXPprnp4+pjcDUbXriyg8njlERkgWHI0JopkbSo3ke.atTS0c9H6O+PKYDuCoiwWLTrkYRWTPuSCEL54lFje9JqHDkZtJL9HdNkg2.MmrE+BIMQQ8T2+ZbK8xQP6v0LO5pUrm+Wt4J1h3R.LXd1sm70G5qts7jwogwaaY80hye0IoKpcyZPytcSFIo0kBRqcSofwCw9W2yQNwe8u3K+6e1PFGkfkudumZ5E6EIj1My89WyFrGiWj.qVsLoTv7IYQnbE0ic6at5KGWjvS9jm8ruawWctHgjmkEpklJ4hTPpmkUH3+28culRYugWilFiVwDpmwHxpT6HZ5zyX78JaSI9IsKKqBwTRR8dojRdk5nIng6h+5+CZF8agc3t7UC.ITdRS+anBI0k2qCH45GY2fNj.WNyhk1MU9l524W7bRATK04ML09vFdMLOvjYaC+U9MGJAveKLwkX2Nfth9jR8iINwDtNferlpBu8gLXJQmJyMoRf1sA2KnShvi9a67V+wey+purs5DcWEumr62zOr7zPq9QLKH53xWy+8iu2e9KJ8Q2PsJka.PchEcUZ9Iyw9vhaauiB8a+r+yGeuuym2WEZvDhirJqc.TzNbdSGh7aQyn88SdZ7c9wgX5yebzUjHT04ki.4WtRlgEvkDOmq.5rtMiBxtGaZl7U0yBWcTW3Zi5BWeTW3Fi5B2bTW38F0E9tCdghuRtQm6QD1BTGk2WwxZruKopczo5+J38.PLC
                

                This is a pretty good read once you get past the flame war:

                https://www.kvraudio.com/forum/viewtopic.php?t=420194

                dannytaurusD 1 Reply Last reply Reply Quote 1
                • HISEnbergH
                  HISEnberg @dannytaurus
                  last edited by HISEnberg

                  @dannytaurus I am a bit late to the party here, but there is actually some wonderful open source resources for getting started on this (not in HISE, but it translates).

                  The main one that comes to mind is The Audio Programmer's Creating Synthesizer Plug-Ins with C++ and JUCE where you reconstruct the Roland JX11. They guide you on building the oscillators from scratch and there's a section on PWM as well.

                  I think this would be highly valuable for what you are trying to achieve!

                  dannytaurusD 1 Reply Last reply Reply Quote 1
                  • dannytaurusD
                    dannytaurus @HISEnberg
                    last edited by

                    @HISEnberg Awesome! Thanks!

                    Meat Beats: https://meatbeats.com
                    Klippr Video: https://klippr.video

                    1 Reply Last reply Reply Quote 0
                    • dannytaurusD
                      dannytaurus @Orvillain
                      last edited by dannytaurus

                      @Orvillain said in Recreating Roland Alpha Juno PWM Saw oscillator - ideas?:

                      In the context of sawtooth shapes, PWM is really just a per-voice phase reset (IE: Hey.... we've hit our threshold... reset the saw to zero....) - that's how most people do it anyway, iirc. So I actually don't think it would be too hard to add that to the existing waveform generator. If I knew the code, I'd have a go myself!!

                      I don't think this is how the PWM Saw is created in the AJ2. From the front panel diagrams, and some initial scope readings, it looks more like a regular (non-resetting) saw wave with chunks chopped out of it during each cycle. The chunks chopped out are dictated by a variable pulse-width wave.

                      This could mean it's even simpler to implement in the Waveform Generator. We would set a duty cycle between 0-100% in the UI and during each generation of the saw (or other shape) wave the code would say shall we output the waveform or silence, based on the duty cycle high/low state.

                      Does that make sense?

                      EDIT: this is very simplified, of course, and only takes into account one pulse, but multiplying up to 2/4/8/etc pluses doesn't sound like it would be that much more work.

                      Also, I have no idea if I'm using any of the correct terminology here. Just words that sound about right! 😜

                      Meat Beats: https://meatbeats.com
                      Klippr Video: https://klippr.video

                      1 Reply Last reply Reply Quote 0
                      • dannytaurusD
                        dannytaurus @modularsamples
                        last edited by

                        @modularsamples said in Recreating Roland Alpha Juno PWM Saw oscillator - ideas?:

                        @griffinboy Good point!

                        What about this? it should be pretty close to how the AJ works (I think) as it's splitting the signal and "chopping" the output of the saw. The PWM still happens on the pulse..

                        HiseSnippet 2170.3oc6Z0CaibbEdVRM5+KN14rgSQ.HBRw4fCBj5uyBo3n90VHG0QHJqjq5xvcGRNf6tylcWJIlf.b.oIcIsFHEtxUAHAoKEA45R.xkBCi.jJiz3B2cEI.oy9Myrq3rjKEonH44CWj.DzNuY1468226MCYYetIMHf6iLV7j1dTjwx3JscCaraCByEc3dHir3yQ6z1iDDPsPFFYeOg.iElAI+442eGhMw0j1YHD5TNyj9.lCKrynkK9CY11GPrnmvbzl85EOzj6tK2l2xWrY4QdDylj5ziHhokAideRPCjw2Gug4VaZZUcqplVadupqs0FEJrV97qs9ZE1vZMR002vZqUWkr4VHiY22hEx8qDRBoAHiY1ga0tRC94tpM3TV.qpMU7PATEXmUCe.21RnhhQQ61fYaUN15DfPF3xcrUYU1paiKwrXWNdGa12TJHWmUna.MxjDdYS.uB5vKuF7RARFZPZFEjdcbESelWXGIB7rD9P2PpeMB3mzghZtHimh2kCSvMbEGRS5A9vCWtf6rY972MG7m24GTqkqYHi6li6dDOj9P267NK9yWbgE+EKlqaQ0pkpLw13ysso9oJVDZ3eUK7NtsbpR8uatyH1snWNQP8SZSw82lp6xMUZs1D4tG5xBenG0seABnHSE7eevg6QBIBGQzXv77n9gLADL1idFjFnbKKf2iFzLj6AIB83yfnEtUKaRXxPHQhVj.vFjvuIbNtArv15Ihis3pgEhuNtLKzrQ5XLSJXDrTSBLFkMdK790pQMC6.vYvG7imLod5a+BwauJaRReJ29uczHtbKZN4vz.V.0uP+3S+2+9+4ecX4S8FZ9z3j76huNITyNRITIiY0l+COi5eFiddGR1TYzlcRQxNyv4ou5Z.uDj6lnlvBwXrBywyltu6YTaffRhw2.XjpQZYGFOZxnxRbWtWCtKyTOP7XZnOqdcpuN1SUg1NLDJi2YjaW7XpMkDnEo98J9.lKk3C1I5HZKJbsqOlp+5swJ3lSjJk6l32lpgYWI+a1gh+cri2QmKdpZ5lGu+Eg9jBCph0KXObDLW8EELOl2Jj4VuDAR6u.JBbTKmJPcESJ.QWWpsnvfQFQOQpmyKdV.nJTWK4CeI7SjvBhmMhDVHVnV6TGQCOm62Tl4F8+fIPXGlCGPNe6Rnsss4muK2wiEEvCwQxwJysaGSWYjQMiXPtsCuE79iPZmrkcr4lMqv9YzXPCGz3DByV7FpzJ.ZAz5gtUf2irZrQ1So9Ax8bNb9UfegjoijTWye.wDL8sKSfB+PVonqRvCR8Ww7ROYrFnmAnNgSrDw6JtrsBOfZ3HrLhCAIbkkI9vJf1xEcWlI10AYRY056Tw5IdBhOxH15kwGFbpPpIwFcpnLuX4x8SL8rJkXNwT+F3ZhsX0GWUXaPIzq2VSuRLqdUotdMWslMtziHmwrhot.1qAAhgWMoJbKPE7oqnjkBtmOZYC.wFYzwIRys.4cW9Dbh5RL2Hb1gAtD4htF642uRH0SEHpMVSnYII3STqETtYgtKBonSnWDdBW9tfTHn8J4dtD9Cbsn0.ujE.r5pSPWoU02ym2xS9PO6dTe.8LN5pUk0K1ip7q9zhcoJezG9g+odUkh+Rm+w8UmK8.e5OsEjg0dLoOOoYwT0GX7AnOO+985ZxW754ZVVpO4NVvu7B2AMrwZ.gbeUn4vkaHZZaLoKHT55hf7uCKDvH5YCm0ouzpJwoRkJkLZDNoxjLGVwgO.J9zvhRx.nRtQTdFZ.cVb8dv4RJ9t5oivnUL5bcY0h+Vd3h+d2gif3o0+CuYwXtN.iS7vusaExc.V0nFrj6fzTc8ywJ9qGNc7m7s16SiHAq3v4gMfFslzJ55ChD7QOsWeFvObs7YKiOlFPi15wjB8nm1WhC8PRcVj4UIfElTotiq9VlUCyKhc3VoP3baMTe4L5E3ZKe5fcbBBHvO3kJAjTPZDPRACf.ZlDDPcZe+DhecZn5BYE2twEw2E6dLnJ.o8NsfSfptFfDiHzLH36h3CfruSUpEXMjKO9PI8kmq6bFYtvHyAn03PYpOiaIuKuwPNy+6Sd1uyJ8NgPOp3TnwgkvOfy8fSi5GNEZdXxqOSslt0xnvXOVWzWKfgpTMVwikR5jZ5id4bioQ6ji0pB8yLhJlzLFzMe5hJyXPprnp4+pjcDUbXriyg8njlERkgWHI0JopkbSo3ke.atTS0c9H6O+PKYDuCoiwWLTrkYRWTPuSCEL54lFje9JqHDkZtJL9HdNkg2.MmrE+BIMQQ8T2+ZbK8xQP6v0LO5pUrm+Wt4J1h3R.LXd1sm70G5qts7jwogwaaY80hye0IoKpcyZPytcSFIo0kBRqcSofwCw9W2yQNwe8u3K+6e1PFGkfkudumZ5E6EIj1My89WyFrGiWj.qVsLoTv7IYQnbE0ic6at5KGWjvS9jm8ruawWctHgjmkEpklJ4hTPpmkUH3+28culRYugWilFiVwDpmwHxpT6HZ5zyX78JaSI9IsKKqBwTRR8dojRdk5nIng6h+5+CZF8agc3t7UC.ITdRS+anBI0k2qCH45GY2fNj.WNyhk1MU9l524W7bRATK04ML09vFdMLOvjYaC+U9MGJAveKLwkX2Nfth9jR8iINwDtNferlpBu8gLXJQmJyMoRf1sA2KnShvi9a67V+wey+purs5DcWEumr62zOr7zPq9QLKH53xWy+8iu2e9KJ8Q2PsJka.PchEcUZ9Iyw9vhaauiB8a+r+yGeuuym2WEZvDhirJqc.TzNbdSGh7aQyn88SdZ7c9wgX5yebzUjHT04ki.4WtRlgEvkDOmq.5rtMiBxtGaZl7U0yBWcTW3Zi5BWeTW3Fi5B2bTW38F0E9tCdghuRtQm6QD1BTGk2WwxZruKopczo5+J38.PLC
                        

                        This is a pretty good read once you get past the flame war:

                        https://www.kvraudio.com/forum/viewtopic.php?t=420194

                        Yeah, I read a lot of that thread. Pity about the flame war! 😂 🔥

                        The snippet sounds awesome! Great starting point for me to learn how all this stuff works.

                        Thanks! 🙏

                        Meat Beats: https://meatbeats.com
                        Klippr Video: https://klippr.video

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

                        25

                        Online

                        2.0k

                        Users

                        12.7k

                        Topics

                        110.2k

                        Posts