Skip to content
  • Hjem
  • Seneste
  • Etiketter
  • Populære
  • Verden
  • Bruger
  • Grupper
Temaer
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Kollaps
FARVEL BIG TECH
  1. Forside
  2. Ikke-kategoriseret
  3. what if I made a little visual programming language for my synthesizer 🤔

what if I made a little visual programming language for my synthesizer 🤔

Planlagt Fastgjort LÃ¥st Flyttet Ikke-kategoriseret
20 Indlæg 1 Posters 0 Visninger
  • Ældste til nyeste
  • Nyeste til ældste
  • Most Votes
Svar
  • Svar som emne
Login for at svare
Denne tråd er blevet slettet. Kun brugere med emne behandlings privilegier kan se den.
  • aeva@mastodon.gamedev.placeA This user is from outside of this forum
    aeva@mastodon.gamedev.placeA This user is from outside of this forum
    aeva@mastodon.gamedev.place
    wrote on sidst redigeret af
    #1

    what if I made a little visual programming language for my synthesizer 🤔

    aeva@mastodon.gamedev.placeA 1 Reply Last reply
    0
    • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

      what if I made a little visual programming language for my synthesizer 🤔

      aeva@mastodon.gamedev.placeA This user is from outside of this forum
      aeva@mastodon.gamedev.placeA This user is from outside of this forum
      aeva@mastodon.gamedev.place
      wrote on sidst redigeret af
      #2

      I'm considering replacing the register machine I wrote with an evaluator graph as a convenience for polyphony, but this would also open up the possibility of live editing patches. My register machine allows for no flow control, and each operation has at most two inputs and exactly one output. This is geometrically very convenient, so I'm thinking maybe something grid based to hopefully keep it simple.

      aeva@mastodon.gamedev.placeA 1 Reply Last reply
      0
      • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

        I'm considering replacing the register machine I wrote with an evaluator graph as a convenience for polyphony, but this would also open up the possibility of live editing patches. My register machine allows for no flow control, and each operation has at most two inputs and exactly one output. This is geometrically very convenient, so I'm thinking maybe something grid based to hopefully keep it simple.

        aeva@mastodon.gamedev.placeA This user is from outside of this forum
        aeva@mastodon.gamedev.placeA This user is from outside of this forum
        aeva@mastodon.gamedev.place
        wrote on sidst redigeret af
        #3

        Another thing that would be nice is being able to make patch-specific touch interfaces.

        aeva@mastodon.gamedev.placeA 1 Reply Last reply
        0
        • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

          Another thing that would be nice is being able to make patch-specific touch interfaces.

          aeva@mastodon.gamedev.placeA This user is from outside of this forum
          aeva@mastodon.gamedev.placeA This user is from outside of this forum
          aeva@mastodon.gamedev.place
          wrote on sidst redigeret af
          #4

          I'm thinking something like this for the visual language frontend. The nodes are grid aligned with space between for connections to run. Placing a new node in that space would insert a new row or column into the grid. Wire paths will probably be automatic, and the whole thing would ideally have a deterministic textual representation to make revision control easier.

          aeva@mastodon.gamedev.placeA 1 Reply Last reply
          0
          • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

            I'm thinking something like this for the visual language frontend. The nodes are grid aligned with space between for connections to run. Placing a new node in that space would insert a new row or column into the grid. Wire paths will probably be automatic, and the whole thing would ideally have a deterministic textual representation to make revision control easier.

            aeva@mastodon.gamedev.placeA This user is from outside of this forum
            aeva@mastodon.gamedev.placeA This user is from outside of this forum
            aeva@mastodon.gamedev.place
            wrote on sidst redigeret af
            #5

            Also important: graph cycles are allowed. If there's a feedback loop, the value is pulled from the previous frame's computation or is zero if there is no previous frame.

            aeva@mastodon.gamedev.placeA 1 Reply Last reply
            0
            • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

              Also important: graph cycles are allowed. If there's a feedback loop, the value is pulled from the previous frame's computation or is zero if there is no previous frame.

              aeva@mastodon.gamedev.placeA This user is from outside of this forum
              aeva@mastodon.gamedev.placeA This user is from outside of this forum
              aeva@mastodon.gamedev.place
              wrote on sidst redigeret af
              #6

              Commutative instructions get to be variadic. I'm not sure what to do about non-commutative instructions syntaxwise. I'll probably have it make you select which parameter your connecting when you draw a connection, and then display information about the connection when you touch wires, and draw the name along the wire where possible. Color coding and ordering where the inputs connect also would make sense to supplement that.

              aeva@mastodon.gamedev.placeA 1 Reply Last reply
              0
              • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                Commutative instructions get to be variadic. I'm not sure what to do about non-commutative instructions syntaxwise. I'll probably have it make you select which parameter your connecting when you draw a connection, and then display information about the connection when you touch wires, and draw the name along the wire where possible. Color coding and ordering where the inputs connect also would make sense to supplement that.

                aeva@mastodon.gamedev.placeA This user is from outside of this forum
                aeva@mastodon.gamedev.placeA This user is from outside of this forum
                aeva@mastodon.gamedev.place
                wrote on sidst redigeret af
                #7

                I'm really tempted to just not have division or subtraction, and provide rcp and sign flip as instructions instead. Likewise who needs clamp when you've got min(max(v, low_bound), high_bound), right? I think I'd want lerp and some other functions that don't really fit this syntax well though so idk I'll have to think about that.

                aeva@mastodon.gamedev.placeA 1 Reply Last reply
                0
                • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                  I'm really tempted to just not have division or subtraction, and provide rcp and sign flip as instructions instead. Likewise who needs clamp when you've got min(max(v, low_bound), high_bound), right? I think I'd want lerp and some other functions that don't really fit this syntax well though so idk I'll have to think about that.

                  aeva@mastodon.gamedev.placeA This user is from outside of this forum
                  aeva@mastodon.gamedev.placeA This user is from outside of this forum
                  aeva@mastodon.gamedev.place
                  wrote sidst redigeret af
                  #8

                  One of the fun things about designing a visual programming language is "how can I put less work making this" and "what if it wasn't super annoying" can coincide on the same solutions! Like what if instead of trying to drag and drop a noodle between two nodes on opposite sides of the world, what if you just select both and enter noodle mode that temporarily puts them side by side so you can draw the connections you want.

                  aeva@mastodon.gamedev.placeA 1 Reply Last reply
                  0
                  • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                    One of the fun things about designing a visual programming language is "how can I put less work making this" and "what if it wasn't super annoying" can coincide on the same solutions! Like what if instead of trying to drag and drop a noodle between two nodes on opposite sides of the world, what if you just select both and enter noodle mode that temporarily puts them side by side so you can draw the connections you want.

                    aeva@mastodon.gamedev.placeA This user is from outside of this forum
                    aeva@mastodon.gamedev.placeA This user is from outside of this forum
                    aeva@mastodon.gamedev.place
                    wrote sidst redigeret af
                    #9

                    also graph travel mode. zoom in on one thing and just see what's connected to it and travel to neighbors

                    aeva@mastodon.gamedev.placeA 1 Reply Last reply
                    0
                    • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                      also graph travel mode. zoom in on one thing and just see what's connected to it and travel to neighbors

                      aeva@mastodon.gamedev.placeA This user is from outside of this forum
                      aeva@mastodon.gamedev.placeA This user is from outside of this forum
                      aeva@mastodon.gamedev.place
                      wrote sidst redigeret af
                      #10

                      i have no share holders! no KPIs! no customers! the ux only has to be awesome for meeeee! bweeehehehe!

                      aeva@mastodon.gamedev.placeA 1 Reply Last reply
                      0
                      • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                        i have no share holders! no KPIs! no customers! the ux only has to be awesome for meeeee! bweeehehehe!

                        aeva@mastodon.gamedev.placeA This user is from outside of this forum
                        aeva@mastodon.gamedev.placeA This user is from outside of this forum
                        aeva@mastodon.gamedev.place
                        wrote sidst redigeret af
                        #11

                        playing around with the rules for automatic wire placement tonight and i got a marvelous idea. normally i'd want to avoid parallel runs of wires when it improves readability to do so, but the exception to this rule is if the destination is the same then its better to consolidate. here's a mock up

                        aeva@mastodon.gamedev.placeA 1 Reply Last reply
                        0
                        • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                          playing around with the rules for automatic wire placement tonight and i got a marvelous idea. normally i'd want to avoid parallel runs of wires when it improves readability to do so, but the exception to this rule is if the destination is the same then its better to consolidate. here's a mock up

                          aeva@mastodon.gamedev.placeA This user is from outside of this forum
                          aeva@mastodon.gamedev.placeA This user is from outside of this forum
                          aeva@mastodon.gamedev.place
                          wrote sidst redigeret af
                          #12

                          my current wire placement rule set is this:

                          1. groups of wires that all connect to the same parameter on one node are evaluated to see if a wire wrap path makes sense. if so, these are placed first, and the cost of the path is raised arbitrarily high for other wires.

                          2. wires that travel the farthest go second and search for the shortest path with the fewest bends

                          3. wires that have the shortest path go last, avoid parallel runs, but favor perpendicular crossings

                          aeva@mastodon.gamedev.placeA 1 Reply Last reply
                          0
                          • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                            my current wire placement rule set is this:

                            1. groups of wires that all connect to the same parameter on one node are evaluated to see if a wire wrap path makes sense. if so, these are placed first, and the cost of the path is raised arbitrarily high for other wires.

                            2. wires that travel the farthest go second and search for the shortest path with the fewest bends

                            3. wires that have the shortest path go last, avoid parallel runs, but favor perpendicular crossings

                            aeva@mastodon.gamedev.placeA This user is from outside of this forum
                            aeva@mastodon.gamedev.placeA This user is from outside of this forum
                            aeva@mastodon.gamedev.place
                            wrote sidst redigeret af
                            #13

                            ideally things will be color coded by destination and wires will have different colors and textures to make it easier to tell them apart, as well as UV animation. Also highlighting / isolating connections when you select things.

                            aeva@mastodon.gamedev.placeA 1 Reply Last reply
                            0
                            • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                              ideally things will be color coded by destination and wires will have different colors and textures to make it easier to tell them apart, as well as UV animation. Also highlighting / isolating connections when you select things.

                              aeva@mastodon.gamedev.placeA This user is from outside of this forum
                              aeva@mastodon.gamedev.placeA This user is from outside of this forum
                              aeva@mastodon.gamedev.place
                              wrote sidst redigeret af
                              #14

                              another thing I want is a mode for isolating parts of the patch. stuff like selecting a node and having it highlight it's connections is common place, but I'd also like to have a mode for isolating the entire expression tree that roots on that node. dunno if anything does that.

                              aeva@mastodon.gamedev.placeA 1 Reply Last reply
                              0
                              • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                                another thing I want is a mode for isolating parts of the patch. stuff like selecting a node and having it highlight it's connections is common place, but I'd also like to have a mode for isolating the entire expression tree that roots on that node. dunno if anything does that.

                                aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                aeva@mastodon.gamedev.place
                                wrote sidst redigeret af
                                #15

                                I figure the eagle eye view of a patch can be a little obtuse if I have reasonable tools for examining, navigating, and organizing what I have.

                                aeva@mastodon.gamedev.placeA 1 Reply Last reply
                                0
                                • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                                  I figure the eagle eye view of a patch can be a little obtuse if I have reasonable tools for examining, navigating, and organizing what I have.

                                  aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                  aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                  aeva@mastodon.gamedev.place
                                  wrote sidst redigeret af
                                  #16

                                  also I am delighted that people keep thinking of examples of games instead of other visual programming languages in response to this thread. it's one of the ways I know I'm on the golden path.

                                  aeva@mastodon.gamedev.placeA 1 Reply Last reply
                                  0
                                  • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                                    also I am delighted that people keep thinking of examples of games instead of other visual programming languages in response to this thread. it's one of the ways I know I'm on the golden path.

                                    aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                    aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                    aeva@mastodon.gamedev.place
                                    wrote sidst redigeret af
                                    #17

                                    I put it to the test by translating my test patch from my python fronted to a hypothetical equivalent node based representation without regard for wire placement and then stepped through my wire placement rules by hand. I'm very pleased with the results, it's a lot clearer to me what it does than the python version is at a glance.

                                    aeva@mastodon.gamedev.placeA 1 Reply Last reply
                                    0
                                    • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                                      I put it to the test by translating my test patch from my python fronted to a hypothetical equivalent node based representation without regard for wire placement and then stepped through my wire placement rules by hand. I'm very pleased with the results, it's a lot clearer to me what it does than the python version is at a glance.

                                      aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                      aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                      aeva@mastodon.gamedev.place
                                      wrote sidst redigeret af
                                      #18

                                      I want this to be real so bad XD

                                      aeva@mastodon.gamedev.placeA 1 Reply Last reply
                                      0
                                      • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                                        I want this to be real so bad XD

                                        aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                        aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                        aeva@mastodon.gamedev.place
                                        wrote sidst redigeret af
                                        #19

                                        Test grid background and placeholder tiles. I wasn't quite aiming for windows 9x buttons but it sorta veered that way. dunno if I'll keep them

                                        aeva@mastodon.gamedev.placeA 1 Reply Last reply
                                        0
                                        • aeva@mastodon.gamedev.placeA aeva@mastodon.gamedev.place

                                          Test grid background and placeholder tiles. I wasn't quite aiming for windows 9x buttons but it sorta veered that way. dunno if I'll keep them

                                          aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                          aeva@mastodon.gamedev.placeA This user is from outside of this forum
                                          aeva@mastodon.gamedev.place
                                          wrote sidst redigeret af
                                          #20

                                          now, this may seem like I'm just fussing around on trivial details, but i assure you this is all going according to plan

                                          1 Reply Last reply
                                          1
                                          0
                                          • cwebber@social.coopC cwebber@social.coop shared this topic
                                          Svar
                                          • Svar som emne
                                          Login for at svare
                                          • Ældste til nyeste
                                          • Nyeste til ældste
                                          • Most Votes


                                          • Log ind

                                          • Har du ikke en konto? Tilmeld

                                          • Login or register to search.
                                          Powered by NodeBB Contributors
                                          Graciously hosted by data.coop
                                          • First post
                                            Last post
                                          0
                                          • Hjem
                                          • Seneste
                                          • Etiketter
                                          • Populære
                                          • Verden
                                          • Bruger
                                          • Grupper