[HN Gopher] Show HN: A singing synthesizer for the browser with ...
       ___________________________________________________________________
        
       Show HN: A singing synthesizer for the browser with automatic
       3-part harmony
        
       Author : zebproj
       Score  : 157 points
       Date   : 2024-12-26 05:14 UTC (17 hours ago)
        
 (HTM) web link (pbat.ch)
 (TXT) w3m dump (pbat.ch)
        
       | ldenoue wrote:
       | This thing is amazing can you add recording?
       | 
       | Perhaps some samples you or visitors create?
       | 
       | Then add a little sampler for beat and it's a fantastic tool
        
       | _nivlac_ wrote:
       | I've also enjoyed Google's blob opera, for something similar!
       | 
       | https://artsandculture.google.com/experiment/blob-opera/AAHW...
        
         | modeless wrote:
         | And the original singing mouths made by the same guy:
         | https://www.adultswim.com/etcetera/choir/
        
           | jcmeyrignac wrote:
           | More experiments here: http://david.li/
        
         | Bluestein wrote:
         | Not to nitpick, but, it being "Arts & Culture" and all, they
         | could've at least said opera _aria_ ...
         | 
         | ... not song.-
        
           | chpatrick wrote:
           | Not to nitpick but an aria is for one voice.
        
             | Bluestein wrote:
             | Point.-
             | 
             | PS. The rest are ... what, the choir? A concertante if your
             | fingers are fast enough, I guess :)
        
         | smusamashah wrote:
         | Also pink trombone https://dood.al/pinktrombone/
        
           | bravura wrote:
           | For years, I've wished someone would port Pink Trombone to a
           | VST or something I could control through code.
        
             | whilenot-dev wrote:
             | Only thing I could find is a Eurorack module:
             | https://blog.bela.io/salt-a-bela-powered-programmable-
             | synth-...
             | 
             | I thought there was some repo public with C++ code, but I
             | can't find it anymore... (https://github.com/belaPlatform)
             | 
             | EDIT: stupid me, it's linked in the article:
             | https://github.com/giuliomoro/pink-trombone
        
       | blaufast wrote:
       | Neat!
        
       | brunorsini wrote:
       | Fun! I'd love the option to increase (double?) range. It would
       | sacrifice precision somewhat, so a toggle would be ideal.
       | 
       | A toggle for quickly visualizing notes would also be useful, as
       | well as keyboard shortcuts -- perhaps while one clicks the mouse
       | on a given note, pressing the keyboard shortcut for another
       | specific note gradually moves pitch in that direction, with
       | programmable speed.
        
         | brunorsini wrote:
         | Oh, and clicking multiple times at the leftmost portion of the
         | instrument (around 1/4th from the top) sounds exactly like
         | Laurie Anderson's classic "O Superman" :)
        
       | varunneal wrote:
       | so beautiful. I can imagine using this a lot if some buttons are
       | added (start/stop harmony, view note/resonance, etc). great job
        
       | ycombiredd wrote:
       | in Chrome, on my iphone, I can get a cool effect that looks like
       | a glitch, but I wonder if it is a feature. If I hold a note a
       | certain way, where the browser does a "select all", and then drag
       | my thumb, it drags a thumbnail of the page. When I release it, it
       | keeps the first note and starts a new one using the new position
       | of my thumb. I can create my own harmonies this way instead of
       | the default parts that appear when I hold the note in place.
        
       | fhackenberger wrote:
       | This is such a great way to practice! Thank you for creating it!
       | Could you perhaps add pitch indicators on the side and multi
       | touch support? Or maybe it's open source?
        
       | butz wrote:
       | Add "display:block;" to canvas to fix the issue with vertical
       | scroll appearing. Also, you might want to consider looking into
       | vh and vw units to fill canvas to viewport without using
       | javascript.
        
         | skykooler wrote:
         | Is there a reason to avoid using javascript for canvas layout
         | considering you need javascript to draw on the canvas in the
         | first place?
        
         | zebproj wrote:
         | Thanks, I'll look into it
        
       | MarkusWandel wrote:
       | Does anyone make a USB Midi Theremin? That would totally be the
       | right front end for this one!
        
         | vunderba wrote:
         | Moog does - I've combined it with a midi translator app to
         | customize midi (CC, etc) so that I can use it as an expression
         | input to SWAM physically modeled instruments like violin.
         | 
         | https://www.moogmusic.com/products/etherwave-theremins/there...
        
       | kitshunt wrote:
       | Source code is here: https://github.com/PaulBatchelor/Trio
       | 
       | It's written in JavaScript and Rust (compiled to WASM).
        
       | smusamashah wrote:
       | This is awesome fun. Reminds of Google Blog Opera and Pink
       | Trombone.
       | 
       | Can we have multiple voices when using multiple fingers please?
       | 
       | Edit: I can't sing or play music but this is making me feel like
       | I am making someone sing _nicely_ , it's relatively lot easy to
       | play with.
        
       | vunderba wrote:
       | Very neat. Side note, but one of the more fun aspects of
       | Garageband on the iPad is that you can load string instruments
       | such as an Erhu and play it by physically sliding your finger
       | along the string in a very similar way.
        
       | makapuf wrote:
       | I'm sorry but I can see a small keyboard with selected notes, can
       | some one describe what makes it 3 parts harmony ? Is it a song
       | thing ? Some chord thing ? There is no description on the site or
       | the github repo.
        
       | hunter2_ wrote:
       | 95% of the time, I can only get 1 voice at a time. 5% of the
       | time, I can get 2 or 3 voices at a time (1 variable pitch, the
       | others fixed pitch) but I have no idea what input causes this
       | rare behavior. Can you add some help text explaining what various
       | input sequences will achieve?
       | 
       | Android Chrome with touch input (Pixel 8 Pro).
        
         | zebproj wrote:
         | A tutorial would be helpful.
         | 
         | Holding down a note and waiting will cause a second, then a
         | third not to appear. When you move your held, note to another
         | pitch, the other pitches will follow, but with a bit of delay.
         | This produces what is known as staggered voice leading, and
         | produces interesting "in-between" chords.
        
       | zebproj wrote:
       | Thanks everyone for the suggestions and kind words.
       | 
       | Some details:
       | 
       | The source code for this project can be found on github [0].
       | 
       | I am using an AudioWorklet node with custom DSP using
       | Rust/WebAssembly. Graphics are just done with the Canvas API. The
       | voice leading is done algorithmically using a state machine with
       | some heuristics.
       | 
       | The underlying DSP algorithm is a physical model of the human
       | voice, similar to the model you'd find in Pink Trombone [1], but
       | with some added improvements. The DSP code for that is a small
       | crate [2] I've been working on just for singing synthesizers
       | based on previous work I've done.
       | 
       | 0: https://github.com/paulBatchelor/trio
       | 
       | 1: https://dood.al/pinktrombone/
       | 
       | 2: https://github.com/PaulBatchelor/voxbox
        
       ___________________________________________________________________
       (page generated 2024-12-26 23:01 UTC)