Releases: vmagnin/forsynth
Releases · vmagnin/forsynth
ForSynth 0.5 "Daphne Oram"
Added
- A FORD documentation: a project file
ford.ymland a workflow.github/workflows/ford.ymlto generate GitHub Pages. - In
example/README.md: links to listen the OGG files. example/multiplication_bells.f90: a demo using theadd_bellsignal.example/four_thirty_three.f90: a minimalist ForSynth file! And a double tribute to John Cage and Joy Division.example/radioactivity.f90is a tribute to Kraftwerk. You can hear the simulation of the radioactive decay of a population of atoms heard with a Geiger counter, with chords in a whole tone scale and a Morse code message.src/morse_code.f90is offering basic Morse code support.src/signals.f90: addedadd_bell(), based on the [Risset, 1969] bell signal #430 with 11 frequencies.src/acoustics.f90module with thedB_to_linear(dB)andlinear_to_dB(amp)conversion functions.src/audio_effects.f90: a basicapply_dynamic_effect()that can be used for downward/upward compression or expansion, or as a limiter depending on the parameters.src/envelopes.f90: addedfit_exp(x, x1, y1, x2, y2)for computing an exponentially decreasing y(x) envelope between (x1,y1) and (x2,y2).- In
test/main.f90: more tests and aassert_reals_equal(a, b, tolerance)function. src/sonification.f90module withsonify_from_array()andsonify_from_file()subroutines, to transform your data into a WAV file.app/sonify.f90: the associated command to easily sonify your data.test/sonify.f90andtest/signal.dat: the associated tests.
Changed
ELECTRONIC_MUSIC_HISTORY.md: improved layout (hidden URLs).
Fixed
example/shepard_risset_glissando.f90: obtaining a good glissando was not easy, as you need to understand that each sin(omega * t) is in fact sin(omega(t) * t). Using a common time for all components was causing problems as t was increasing. In this new version, each component has its own time: sin(omega(tj) * tj). Moreover, a downward glissando can also be computed.src/tape_recorder_class.f90:- added a
self%lastvariable which is the index of the last sample on the track. In tracks, it must be used instead ofself%sampleswhich is equal toself%last+1, the first sample having a 0 index. - The final subroutine
auto_finalize()now verifies that arrays are still allocated before deallocating.
- added a
- Replaced
nint(t2*RATE)-1bymin(nint(t2*RATE), tape%last)to avoid exceeding the right limit of the tape array.