HISE Logo Forum
    • Categories
    • Register
    • Login

    Wavetable Synth

    Scheduled Pinned Locked Moved General Questions
    42 Posts 8 Posters 3.2k 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

      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
                                        • ustkU
                                          ustk @Christoph Hart
                                          last edited by

                                          @Christoph-Hart Hmm the first error above still fails 🤔

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

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

                                            Damn you clang and your overly standard compliant C++ parser. Please try again :)

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

                                            26

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.5k

                                            Posts