Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Synthesis #13

Closed
trentgill opened this issue Sep 24, 2018 · 5 comments
Closed

Synthesis #13

trentgill opened this issue Sep 24, 2018 · 5 comments
Labels
Milestone

Comments

@trentgill
Copy link
Collaborator

@trentgill trentgill commented Sep 24, 2018

Fixed architecture dsp functionality.

Likely needs to be a global setting to switch the module into acting as a full polysynth.

(Triangle (ramp/waveshape) -> Filter | Noise -> Amplifier). 4-voice goal. Making a 2op FM option would be maximum suggested spec.

Smoothing on the control-rate inputs (from ADCs, or MIDI, or via USB).

LFO and Envelopes should be provided, potentially by the ASL language if that's possible. Might require something far weirder under the hood, so just start with the basics here.

Use as much from JF as will fit on the flash / in ram / in cpu time.

last feature on the sales pitch hah.

@trentgill trentgill added the feature label Sep 24, 2018
@trentgill trentgill added this to the 1 milestone Sep 24, 2018
@trentgill trentgill modified the milestone: 1 Dec 24, 2018
@trentgill trentgill modified the milestones: 1.0, 2.0 Mar 1, 2019
@trentgill
Copy link
Collaborator Author

@trentgill trentgill commented Apr 11, 2020

--- audio processors
osc{ freq = _
   , wave = _ -- a string ('sine', 'pulse' etc) or a number (-1,1) to xfade
   , symmetry = _
   , fm_source = _
   }
osc( freq <opt., wave, symmetry, fm_source> )
-- backend is chosen based on args (re: CPU)

filter( input, freq, resonance, mode, model)
volume( input, level )
gate( input, level, mode )
input( channel )
noise()

-- controls
vactrol( level, time, symmetry )
slew( input, speed, linear/expo )

-- arithmetic
add() -- or mix()
mul() -- or gain()
@trentgill
Copy link
Collaborator Author

@trentgill trentgill commented Apr 11, 2020

Make a synthdef and apply it like an ASL:

output[1].action =
  volume( env()
    , filter( freq
      , mix( osc( freq )
           , osc( freq ))))
@trentgill
Copy link
Collaborator Author

@trentgill trentgill commented Apr 11, 2020

Feels like i'm reinventing the wheel here... perhaps we could just use another lang's syntax?

Perhaps it should be fixed architecture synthesis and have a way to set the parameters from Lua such that they are applied in realtime. This would be particularly interesting if the modulation sources (LFOs/envelopes), could be ASL structures.

@trentgill
Copy link
Collaborator Author

@trentgill trentgill commented Apr 11, 2020

Coming back to the initial comment up top. Fixed architecture is the way to go:
2xVCO (either in parallel or 2op FM)

noise * level +
 wave * level +
 wave * level +
        input + filter -> gate ->|

-- or
wave * level -> wave * level +
               noise * level +
                       input + filter -> gate ->|
@trentgill trentgill mentioned this issue Apr 17, 2020
@trentgill
Copy link
Collaborator Author

@trentgill trentgill commented Aug 3, 2020

Close in favour of algorithmic waveforms in ASL2

@trentgill trentgill closed this Aug 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant