HISE Logo Forum
    • Categories
    • Register
    • Login

    Wavetable Synth

    Scheduled Pinned Locked Moved General Questions
    42 Posts 8 Posters 3.1k 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.
    • orangeO
      orange @Christoph Hart
      last edited by orange

      @Christoph-Hart Also it would be great to be able to create / edit wavetables more easier. Maybe an easy integration to WaveEdit or another wavetable tool.

      develop Branch / XCode 13.1
      macOS Monterey / M1 Max

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

        The .hwt file format is just a file specification for wavetables (AFAIK there is no common file standard which is why I rolled my own).

        The conversion from anything that is created by WaveEdit into .hwt files might be trivial to implement, but that is one part of me „cleaning up“ the wavetable code.

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

          Remind me again: what's the output format of wave edit? If you can make it output a single wave file for each wavetable, we should be almost there.

          I could imagine that there is just one single function that's missing from the wavetable converter to make it work with almost any kind of wavetable input and that is a "convert to HWT without spectral resynthesis function":

          1. Make sure that your wavetables are in a proper audio format (.wav or .aiff) The length won't matter as it will be resampled during conversion anyway. The only restriction is that the audio file has to be one cycle per file
          2. Create a samplemap with the proper mapping. If you want different wavetables for notes, use multiple audio files and drag them where you want them. If you just want to make one wavetable, import a single audio file with a wavetable and map it across the entire MIDI range. Since the wavetable synthesiser has a two dimensional wavetable layout (one for the note number and one for the "table index" that can be modulated), you can map wavetables across different velocity ranges to create "morphable" wavetables.
          3. Run the conversion tool and bypass the resynthesis part. It will assume that every sample in the given samplemap is exactly one period and will resample it and store it in the .hwt format which will be read by the wavetable synthesiser module.
          ustkU 1 Reply Last reply Reply Quote 2
          • ustkU
            ustk @Christoph Hart
            last edited by

            @Christoph-Hart Yeah that's exactly what I imagined and tried: https://forum.hise.audio/topic/638/awesome-new-toy-waveedit/21
            But of course, because of resynthesis (and maybe something else), it didn't work. That would be cool to bypass this part so the wave file can be used (almost) as it is.
            Although I don't remember if WaveEdit can output a unique wave file that contains all the 64 shapes, or export them separately. Does anyone have info on this part?

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

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

              @ustk Samplemap to Wavetable convert is not working properly sometimes. I don't know why, maybe it is about the wave shape of the sample. But the same sample works on XFer Serum and other wavetable synthesizers.

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

                Samplemap to Wavetable convert is not working properly sometimes. I don't know why, maybe it is about the wave shape of the sample. But the same sample works on XFer Serum and other wavetable synthesizers.

                Yeah, obviously. The FFT Resynthesis algorithm is rather experimental. What I am trying to add right now is a system to bypass it altogether and just create the .hwt by resampling the wavetables that are mapped accordingly.

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

                  @Christoph-Hart Apparently we changed your plans for today 🤣

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

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

                    Yes, I am sitting on the train and can't get actual work done anyway, so why not do this stuff, it's seems to be quite some demand for it.

                    ustkU FortuneF 2 Replies Last reply Reply Quote 2
                    • ustkU
                      ustk @Christoph Hart
                      last edited by

                      @Christoph-Hart You rock man ;)

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

                      1 Reply Last reply Reply Quote 0
                      • FortuneF
                        Fortune @Christoph Hart
                        last edited by

                        @Christoph-Hart said in Wavetable Synth:

                        Yes, I am sitting on the train and can't get actual work done anyway, so why not do this stuff, it's seems to be quite some demand for it.

                        That's very kind of you, Thank you!

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

                          Maybe that would be an awesome example about wavetable stuff @Christoph-Hart

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

                            Alright, that's what I accomplished so far:

                            Link Preview Image
                            - added simple wavetable conversion to .hwt function in Wavetable con… · christophhart/HISE@16234f5

                            The open source framework for sample based instruments - - added simple wavetable conversion to .hwt function in Wavetable con… · christophhart/HISE@16234f5

                            favicon

                            GitHub (github.com)

                            So basically you can take the wav files from WavEdit, map them like a sampled instrument and run the wavetable converter over it. If you map the wavetables across the velocity range, they can be modulated using the table index.

                            I've also updated the wavetable demo project here:

                            Link Preview Image
                            hise_tutorial/WavetableSynth at master · christophhart/hise_tutorial

                            The Tutorial project for HISE. Contribute to christophhart/hise_tutorial development by creating an account on GitHub.

                            favicon

                            GitHub (github.com)

                            It contains a few random wavetables that WaveEdit produced after some monkey UI interaction, but it shows how to map and convert the multi-velocity wavetable maps (I omitted the converted .hwt files so you can do the process for yourself):

                            • load this project
                            • open the converter window
                            • choose FM_AB
                            • select Resample instead of "FFT Resynthesis"
                            • press OK.
                            • load up the Wavetable synthesiser
                            • pick the new sound in the drop down (ignore for now that it creates one for the left and right channel, I'll add proper multichannel wavetable support soon).

                            It's currently using linear interpolation for the resampling and I'll switch it to sinc interpolation at my next round (it's offline processing anyway so we can opt for the best interpolation here).

                            ustkU SteveRiggsS 3 Replies Last reply Reply Quote 3
                            • ustkU
                              ustk @Christoph Hart
                              last edited by

                              @Christoph-Hart Woww the train travel's been prolific 😎 I'll jump on it ASAP! 😋

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

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

                                @Christoph-Hart said in Wavetable Synth:

                                • select Resample instead of "FFT Resynthesis"

                                I don't see anything like this 🤔

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

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

                                  Oops, I forgot to push the code that actually added the combobox in the dialogue...

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

                                    Actually, hold off a little bit, I noticed there's an issue in the conversion process...

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

                                      @Christoph-Hart No worries mate ;)

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

                                      1 Reply Last reply Reply Quote 0
                                      • LindonL
                                        Lindon @Christoph Hart
                                        last edited by

                                        @Christoph-Hart great timing mate - I have a customer asking about wavetable implementation -- so count me in on the "would like it to happen".

                                        HISE Development for hire.
                                        www.channelrobot.com

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

                                          @Christoph-Hart I know it might not be ready yet, but just to help out a little bit, the last commit fails here:

                                          builFail.jpeg

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

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

                                            I know it might not be ready yet, but just to help out a little bit, the last commit fails here:

                                            Yeah I rushed the commit a bit because I changed systems, but now it should be working. I've switched the conversion process to 16x oversampling and cubic interpolation now, however if you're changing the pitch on runtime using pitch modulation some really nasty aliasing effects occur, so it's not 100% there yet.

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

                                            53

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.9k

                                            Posts