hsc3-graphs 0.12 → 0.14
raw patch · 437 files changed
+12292/−2920 lines, 437 filesdep +data-defaultdep +hsc3-graphsdep −hcg-minusdep ~basedep ~hlsdep ~hmtnew-component:exe:hsc3-birds-hpnew-component:exe:hsc3-bs-070705-mnew-component:exe:hsc3-ccomb-mnew-component:exe:hsc3-cds-070701-mnew-component:exe:hsc3-chain-saw-mnew-component:exe:hsc3-clustered-sines-mnew-component:exe:hsc3-cut-outs-mnew-component:exe:hsc3-dark-sea-horns-hpnew-component:exe:hsc3-data-space-hpnew-component:exe:hsc3-dial-history-mnew-component:exe:hsc3-diffraction-mnew-component:exe:hsc3-f-lets-mnew-component:exe:hsc3-feedr-mnew-component:exe:hsc3-fm-kltr-mnew-component:exe:hsc3-forest-sounds-mnew-component:exe:hsc3-fwalk-mnew-component:exe:hsc3-graphsnew-component:exe:hsc3-h-chatter-mnew-component:exe:hsc3-harmonic-tumbling-mnew-component:exe:hsc3-implosion-mnew-component:exe:hsc3-insects-mnew-component:exe:hsc3-k2ws-hpnew-component:exe:hsc3-lg-timed-mnew-component:exe:hsc3-lso-061101-mnew-component:exe:hsc3-nharm-mnew-component:exe:hsc3-oscillator-cluster-mnew-component:exe:hsc3-pattern-buffer-mnew-component:exe:hsc3-plucked-strings-mnew-component:exe:hsc3-police-state-mnew-component:exe:hsc3-pond-life-hpnew-component:exe:hsc3-random-sine-waves-hpnew-component:exe:hsc3-random-sine-waves-shenew-component:exe:hsc3-red-frik-mnew-component:exe:hsc3-resonant-dust-hpnew-component:exe:hsc3-reverberated-sine-percussion-hpnew-component:exe:hsc3-reverberated-sine-percussion-mnew-component:exe:hsc3-rzblp-hpnew-component:exe:hsc3-rzblp-mnew-component:exe:hsc3-shifting-pulses-mnew-component:exe:hsc3-sidereal-time-hpnew-component:exe:hsc3-sosc-lp-mnew-component:exe:hsc3-tank-hpnew-component:exe:hsc3-tgb-mnew-component:exe:hsc3-tgr-rpr-mnew-component:exe:hsc3-three-cpsw-mnew-component:exe:hsc3-tr-out-mnew-component:exe:hsc3-tremulate-hpnew-component:exe:hsc3-trkl-mnew-component:exe:hsc3-trmlo-unew-component:exe:hsc3-uplink-hpnew-component:exe:hsc3-vlc-distrtn-mnew-component:exe:hsc3-voscil-unew-component:exe:hsc3-what-was-i-thinking-mnew-component:exe:hsc3-wial-m
Dependencies added: data-default, hsc3-graphs
Dependencies removed: hcg-minus
Dependency ranges changed: base, hls, hmt, hosc, hps, hsc3, hsc3-cairo, hsc3-lang, hsc3-sf, hsc3-unsafe, hsharc, sc3-rdu
Files
- Makefile +34/−0
- README +20/−1
- Sound/SC3/Graph/ADC_bit_reduction.hs +27/−0
- Sound/SC3/Graph/ADC_kabelscahden.hs +25/−0
- Sound/SC3/Graph/ADC_shepard_tones.hs +40/−0
- Sound/SC3/Graph/AM_karplus_strong.hs +48/−0
- Sound/SC3/Graph/AV_rm_octaver.hs +16/−0
- Sound/SC3/Graph/F0_1_4Q6.hs +46/−0
- Sound/SC3/Graph/F0_buffer_display.hs +134/−0
- Sound/SC3/Graph/F0_f0_2012_04_19.hs +15/−0
- Sound/SC3/Graph/F0_f0_tw0011.hs +14/−0
- Sound/SC3/Graph/F0_f0_tw0014.hs +21/−0
- Sound/SC3/Graph/F0_f0_tw0020.hs +21/−0
- Sound/SC3/Graph/F0_f0_tw0028.hs +23/−0
- Sound/SC3/Graph/F0_f0_tw0030.hs +15/−0
- Sound/SC3/Graph/F0_f0_tw0033.hs +17/−0
- Sound/SC3/Graph/F0_f0_tw0045.hs +15/−0
- Sound/SC3/Graph/F0_f0_tw0049.hs +17/−0
- Sound/SC3/Graph/F0_f0_tw0051.hs +21/−0
- Sound/SC3/Graph/F0_f0_tw0077.hs +16/−0
- Sound/SC3/Graph/F0_f0_tw0084.hs +15/−0
- Sound/SC3/Graph/F0_hansm.hs +106/−0
- Sound/SC3/Graph/F0_pkt_26.hs +22/−0
- Sound/SC3/Graph/F0_pkt_28.hs +25/−0
- Sound/SC3/Graph/F0_red_frik_m.hs +25/−0
- Sound/SC3/Graph/F0_sinusdeklinationen.hs +47/−0
- Sound/SC3/Graph/JJ_bohlen_pierce_140.hs +20/−0
- Sound/SC3/Graph/JL_bitwise.hs +20/−0
- Sound/SC3/Graph/JL_dark_sea_horns.hs +18/−0
- Sound/SC3/Graph/JL_dark_sea_horns_hp.hs +18/−0
- Sound/SC3/Graph/JL_jl_1_Z.hs +17/−0
- Sound/SC3/Graph/JL_pwm_crossfade.hs +18/−0
- Sound/SC3/Graph/JL_rain_thunder.hs +20/−0
- Sound/SC3/Graph/JMCC_aleatoric_quartet_m.hs +32/−0
- Sound/SC3/Graph/JMCC_alien_froggies.hs +14/−0
- Sound/SC3/Graph/JMCC_alien_meadow.hs +17/−0
- Sound/SC3/Graph/JMCC_analog_bubbles.hs +14/−0
- Sound/SC3/Graph/JMCC_babbling_brook_m.hs +19/−0
- Sound/SC3/Graph/JMCC_birds_hp.hs +23/−0
- Sound/SC3/Graph/JMCC_birds_m.hs +29/−0
- Sound/SC3/Graph/JMCC_bowed_string_m.hs +26/−0
- Sound/SC3/Graph/JMCC_choip.hs +30/−0
- Sound/SC3/Graph/JMCC_clustered_sines.hs +19/−0
- Sound/SC3/Graph/JMCC_clustered_sines_m.hs +19/−0
- Sound/SC3/Graph/JMCC_comb_delay_sweeps.hs +30/−0
- Sound/SC3/Graph/JMCC_contamination_zone.hs +34/−0
- Sound/SC3/Graph/JMCC_coolant.hs +18/−0
- Sound/SC3/Graph/JMCC_cymbalism_accelerando.hs +25/−0
- Sound/SC3/Graph/JMCC_cymbalism_m.hs +27/−0
- Sound/SC3/Graph/JMCC_data_space.hs +23/−0
- Sound/SC3/Graph/JMCC_data_space_hp.hs +24/−0
- Sound/SC3/Graph/JMCC_deep_trip.hs +21/−0
- Sound/SC3/Graph/JMCC_default.hs +18/−0
- Sound/SC3/Graph/JMCC_demanding_studies.hs +20/−0
- Sound/SC3/Graph/JMCC_doppler.hs +31/−0
- Sound/SC3/Graph/JMCC_early_space_music_lp_side_two.hs +80/−0
- Sound/SC3/Graph/JMCC_harmonic_swimming.hs +20/−0
- Sound/SC3/Graph/JMCC_harmonic_swimming_m.hs +19/−0
- Sound/SC3/Graph/JMCC_harmonic_tumbling_m.hs +18/−0
- Sound/SC3/Graph/JMCC_hell_is_busy.hs +14/−0
- Sound/SC3/Graph/JMCC_lfo_modulation.hs +11/−0
- Sound/SC3/Graph/JMCC_modal_space.hs +31/−0
- Sound/SC3/Graph/JMCC_moto_rev.hs +13/−0
- Sound/SC3/Graph/JMCC_mridangam.hs +62/−0
- Sound/SC3/Graph/JMCC_noise_burst_sweep.hs +22/−0
- Sound/SC3/Graph/JMCC_noise_modulated_sines.hs +18/−0
- Sound/SC3/Graph/JMCC_overlap_add.hs +22/−0
- Sound/SC3/Graph/JMCC_plucked_strings_m.hs +28/−0
- Sound/SC3/Graph/JMCC_police_state.hs +25/−0
- Sound/SC3/Graph/JMCC_police_state_m.hs +25/−0
- Sound/SC3/Graph/JMCC_pond_life.hs +15/−0
- Sound/SC3/Graph/JMCC_pond_life_hp.hs +17/−0
- Sound/SC3/Graph/JMCC_pulsing_bottles.hs +25/−0
- Sound/SC3/Graph/JMCC_pulsing_bottles_m.hs +22/−0
- Sound/SC3/Graph/JMCC_rails.hs +24/−0
- Sound/SC3/Graph/JMCC_random_panning_sines.hs +17/−0
- Sound/SC3/Graph/JMCC_random_panning_sines_m.hs +18/−0
- Sound/SC3/Graph/JMCC_random_pulsations.hs +15/−0
- Sound/SC3/Graph/JMCC_random_sine_waves.hs +14/−0
- Sound/SC3/Graph/JMCC_random_sine_waves_hp.hs +11/−0
- Sound/SC3/Graph/JMCC_random_sine_waves_she.hs +12/−0
- Sound/SC3/Graph/JMCC_resonant_dust.hs +16/−0
- Sound/SC3/Graph/JMCC_resonant_dust_hp.hs +16/−0
- Sound/SC3/Graph/JMCC_reverberated_sine_percussion_hp.hs +21/−0
- Sound/SC3/Graph/JMCC_reverberated_sine_percussion_m.hs +25/−0
- Sound/SC3/Graph/JMCC_ring_modulated_klank.hs +23/−0
- Sound/SC3/Graph/JMCC_sample_and_hold_liquidities.hs +18/−0
- Sound/SC3/Graph/JMCC_saucer_base.hs +18/−0
- Sound/SC3/Graph/JMCC_sawed_cymbals.hs +20/−0
- Sound/SC3/Graph/JMCC_scratchy.hs +13/−0
- Sound/SC3/Graph/JMCC_scratchy_m.hs +13/−0
- Sound/SC3/Graph/JMCC_sidereal_time.hs +26/−0
- Sound/SC3/Graph/JMCC_sidereal_time_hp.hs +29/−0
- Sound/SC3/Graph/JMCC_slow_beating_harmonic_sines.hs +45/−0
- Sound/SC3/Graph/JMCC_slow_beating_sines.hs +42/−0
- Sound/SC3/Graph/JMCC_snare_909.hs +32/−0
- Sound/SC3/Graph/JMCC_spe_m.hs +25/−0
- Sound/SC3/Graph/JMCC_spe_p.hs +29/−0
- Sound/SC3/Graph/JMCC_sprinkler.hs +14/−0
- Sound/SC3/Graph/JMCC_sprinkler_m.hs +14/−0
- Sound/SC3/Graph/JMCC_string_wander_cluster.hs +24/−0
- Sound/SC3/Graph/JMCC_strummable_guitar.hs +20/−0
- Sound/SC3/Graph/JMCC_sweepy_noise.hs +17/−0
- Sound/SC3/Graph/JMCC_synthetic_piano_m.hs +27/−0
- Sound/SC3/Graph/JMCC_tank.hs +50/−0
- Sound/SC3/Graph/JMCC_tank_hp.hs +37/−0
- Sound/SC3/Graph/JMCC_tank_m.hs +46/−0
- Sound/SC3/Graph/JMCC_theremin.hs +19/−0
- Sound/SC3/Graph/JMCC_tremulate.hs +21/−0
- Sound/SC3/Graph/JMCC_tremulate_hp.hs +18/−0
- Sound/SC3/Graph/JMCC_tremulate_m.hs +23/−0
- Sound/SC3/Graph/JMCC_tsort.hs +27/−0
- Sound/SC3/Graph/JMCC_uplink.hs +20/−0
- Sound/SC3/Graph/JMCC_uplink_hp.hs +18/−0
- Sound/SC3/Graph/JMCC_what_was_i_thinking_m.hs +25/−0
- Sound/SC3/Graph/JMCC_why_supercollider.hs +20/−0
- Sound/SC3/Graph/JMCC_wind_metals_m.hs +24/−0
- Sound/SC3/Graph/JP_record_scratcher.hs +26/−0
- Sound/SC3/Graph/JRHB_black_atlantic_currents.hs +109/−0
- Sound/SC3/Graph/JRHB_chain_saw_m.hs +47/−0
- Sound/SC3/Graph/JRHB_deep_sea.hs +34/−0
- Sound/SC3/Graph/JRHB_dial_history_m.hs +36/−0
- Sound/SC3/Graph/JRHB_half_life.hs +15/−0
- Sound/SC3/Graph/JRHB_sam_i_am.hs +55/−0
- Sound/SC3/Graph/LJP_one_line.hs +15/−0
- Sound/SC3/Graph/MN_k2ws.hs +22/−0
- Sound/SC3/Graph/MN_k2ws_hp.hs +19/−0
- Sound/SC3/Graph/NC_after_goeyvaerts.hs +367/−0
- Sound/SC3/Graph/NC_arpeggio.hs +87/−0
- Sound/SC3/Graph/NC_ellipse_based_synthesis.hs +40/−0
- Sound/SC3/Graph/NP_pebble_beach.hs +44/−0
- Sound/SC3/Graph/NV_nv_tw_1.hs +17/−0
- Sound/SC3/Graph/NV_nv_tw_41.hs +17/−0
- Sound/SC3/Graph/NV_nv_tw_54.hs +32/−0
- Sound/SC3/Graph/PC_thx.hs +47/−0
- Sound/SC3/Graph/PJ_forest_sounds_m.hs +17/−0
- Sound/SC3/Graph/RB_hh_808.hs +32/−0
- Sound/SC3/Graph/RD_adso.hs +45/−0
- Sound/SC3/Graph/RD_bs_070705_m.hs +74/−0
- Sound/SC3/Graph/RD_ccomb_m.hs +22/−0
- Sound/SC3/Graph/RD_cds_070701_m.hs +112/−0
- Sound/SC3/Graph/RD_chrd_m.hs +26/−0
- Sound/SC3/Graph/RD_chrd_t.hs +37/−0
- Sound/SC3/Graph/RD_cricket_m.hs +23/−0
- Sound/SC3/Graph/RD_crotale.hs +177/−0
- Sound/SC3/Graph/RD_crotale_sine.hs +138/−0
- Sound/SC3/Graph/RD_cut_outs_m.hs +20/−0
- Sound/SC3/Graph/RD_diffraction_m.hs +29/−0
- Sound/SC3/Graph/RD_discretion.hs +22/−0
- Sound/SC3/Graph/RD_discretion_m.hs +20/−0
- Sound/SC3/Graph/RD_e_lamell.hs +64/−0
- Sound/SC3/Graph/RD_e_lamell_p.hs +43/−0
- Sound/SC3/Graph/RD_eggcrate.hs +23/−0
- Sound/SC3/Graph/RD_eggcrate_m.hs +20/−0
- Sound/SC3/Graph/RD_f_lets_m.hs +31/−0
- Sound/SC3/Graph/RD_fb_090531.hs +48/−0
- Sound/SC3/Graph/RD_fbl_fbf.hs +37/−0
- Sound/SC3/Graph/RD_feedr_m.hs +37/−0
- Sound/SC3/Graph/RD_fm_iter.hs +25/−0
- Sound/SC3/Graph/RD_fm_kltr_m.hs +60/−0
- Sound/SC3/Graph/RD_fm_kltr_p.hs +41/−0
- Sound/SC3/Graph/RD_fwalk_m.hs +40/−0
- Sound/SC3/Graph/RD_h_chatter_m.hs +30/−0
- Sound/SC3/Graph/RD_implosion_m.hs +35/−0
- Sound/SC3/Graph/RD_k_ppr.hs +26/−0
- Sound/SC3/Graph/RD_k_ppr_m.hs +25/−0
- Sound/SC3/Graph/RD_klink.hs +20/−0
- Sound/SC3/Graph/RD_lf_pulses.hs +17/−0
- Sound/SC3/Graph/RD_lg_timed_m.hs +25/−0
- Sound/SC3/Graph/RD_lin_sosc.hs +93/−0
- Sound/SC3/Graph/RD_lso_061101_m.hs +111/−0
- Sound/SC3/Graph/RD_mouse_clatter_m.hs +33/−0
- Sound/SC3/Graph/RD_nharm_m.hs +36/−0
- Sound/SC3/Graph/RD_nharm_p.hs +38/−0
- Sound/SC3/Graph/RD_pattern_buffer_m.hs +55/−0
- Sound/SC3/Graph/RD_rzblp.hs +37/−0
- Sound/SC3/Graph/RD_rzblp_hp.hs +32/−0
- Sound/SC3/Graph/RD_rzblp_m.hs +35/−0
- Sound/SC3/Graph/RD_rzblp_u.hs +36/−0
- Sound/SC3/Graph/RD_s_chirp.hs +32/−0
- Sound/SC3/Graph/RD_scritto.hs +48/−0
- Sound/SC3/Graph/RD_scritto_m.hs +29/−0
- Sound/SC3/Graph/RD_seqr.hs +32/−0
- Sound/SC3/Graph/RD_shifting_pulses_m.hs +53/−0
- Sound/SC3/Graph/RD_sosc_lp_m.hs +50/−0
- Sound/SC3/Graph/RD_tgb_m.hs +44/−0
- Sound/SC3/Graph/RD_tgr_rpr_m.hs +63/−0
- Sound/SC3/Graph/RD_tgrn.hs +26/−0
- Sound/SC3/Graph/RD_thb.hs +191/−0
- Sound/SC3/Graph/RD_three_cpsw_m.hs +19/−0
- Sound/SC3/Graph/RD_tipnso.hs +20/−0
- Sound/SC3/Graph/RD_tr_out_m.hs +33/−0
- Sound/SC3/Graph/RD_trkl_m.hs +36/−0
- Sound/SC3/Graph/RD_trmlo.hs +52/−0
- Sound/SC3/Graph/RD_trmlo_u.hs +53/−0
- Sound/SC3/Graph/RD_urandom.hs +46/−0
- Sound/SC3/Graph/RD_vla_addtn.hs +148/−0
- Sound/SC3/Graph/RD_vla_addtn_sharc.hs +79/−0
- Sound/SC3/Graph/RD_vlc_distrtn_m.hs +150/−0
- Sound/SC3/Graph/RD_voscil.hs +38/−0
- Sound/SC3/Graph/RD_voscil_u.hs +39/−0
- Sound/SC3/Graph/RD_waveset.hs +155/−0
- Sound/SC3/Graph/RD_wial_m.hs +27/−0
- Sound/SC3/Graph/RD_xy_interference.hs +18/−0
- Sound/SC3/Graph/RD_xy_interference_m.hs +17/−0
- Sound/SC3/Graph/SC_bottle_m.hs +27/−0
- Sound/SC3/Graph/SP_insects_m.hs +22/−0
- Sound/SC3/Graph/TM_drummer.hs +19/−0
- css/emacs.css +16/−0
- gr/1-1Ni.hs +6/−7
- gr/1-4Q6.hs +15/−17
- gr/1-4QM.hs +11/−11
- gr/1-4QN.hs +23/−22
- gr/1-4Qx.hs +2/−2
- gr/1-Td.hs +26/−28
- gr/acid-otophilia.hs +10/−10
- gr/after-goeyvaerts.hs +8/−8
- gr/aleatoric-quartet-m.hs +1/−4
- gr/alien-froggies.hs +2/−2
- gr/alien-meadow.hs +0/−1
- gr/ambient1.hs +33/−31
- gr/analog-bubbles.hs +0/−1
- gr/arpeggio.hs +36/−34
- gr/babbling-brook-m.hs +2/−2
- gr/birds-hp.hs +22/−0
- gr/birds-m.hs +2/−8
- gr/bit-reduction.hs +4/−4
- gr/bitwise.hs +0/−1
- gr/black-atlantic-currents.hs +8/−8
- gr/bohlen-pierce-140.hs +5/−4
- gr/bottle-m.hs +2/−4
- gr/bowed-string-m.hs +1/−2
- gr/bs-070705-m.hs +73/−0
- gr/bs-070705.hs +0/−73
- gr/buffer-display.hs +11/−9
- gr/ccomb-m.hs +21/−0
- gr/ccomb.hs +0/−21
- gr/cds-070701-m.hs +111/−0
- gr/cds-070701.hs +0/−111
- gr/chain-saw-m.hs +46/−0
- gr/chain-saw.hs +0/−50
- gr/choip.hs +7/−7
- gr/clustered-sines-m.hs +18/−0
- gr/clustered-sines.hs +1/−1
- gr/contamination-zone.hs +11/−11
- gr/coolant.hs +3/−4
- gr/crotale-sine.hs +9/−5
- gr/crotale.hs +7/−7
- gr/cut-outs-m.hs +19/−0
- gr/cut-outs.hs +0/−20
- gr/cymbalism-accelerando.hs +3/−3
- gr/dark-sea-horns-hp.hs +17/−0
- gr/dark-sea-horns.hs +4/−5
- gr/data-space-hp.hs +23/−0
- gr/data-space.hs +9/−12
- gr/deep-sea.hs +3/−3
- gr/deep-trip.hs +8/−8
- gr/default.hs +11/−18
- gr/demanding-studies.hs +3/−3
- gr/dial-history-m.hs +35/−0
- gr/dial-history.hs +0/−36
- gr/diffraction-m.hs +28/−0
- gr/diffraction.hs +0/−28
- gr/discretion-m.hs +0/−1
- gr/discretion.hs +6/−7
- gr/doppler.hs +1/−1
- gr/drummer.hs +1/−1
- gr/e-lamell-p.hs +22/−23
- gr/e-lamell.hs +3/−6
- gr/early-space-music-lp-side-two.hs +21/−22
- gr/eggcrate.hs +3/−3
- gr/f-lets-m.hs +30/−0
- gr/f-lets.hs +0/−30
- gr/f0-tw0028.hs +1/−1
- gr/f0-tw0045.hs +0/−0
- gr/f0-tw0077.hs +0/−1
- gr/f0-tw0084.hs +0/−1
- gr/fb-090531.hs +1/−1
- gr/fbl-fbf.hs +1/−1
- gr/feedr-m.hs +36/−0
- gr/feedr.hs +0/−36
- gr/fm-iter.hs +8/−5
- gr/fm-kltr-m.hs +59/−0
- gr/fm-kltr-p.hs +18/−16
- gr/fm-kltr.hs +0/−59
- gr/for-ann.hs +4/−5
- gr/forest-sounds-m.hs +16/−0
- gr/forest-sounds.hs +0/−16
- gr/fwalk-m.hs +39/−0
- gr/fwalk.hs +0/−39
- gr/h-chatter-m.hs +29/−0
- gr/h-chatter.hs +0/−33
- gr/half-life.hs +1/−1
- gr/hansm.hs +1/−1
- gr/harmonic-swimming.hs +1/−1
- gr/harmonic-tumbling-m.hs +17/−0
- gr/harmonic-tumbling.hs +0/−17
- gr/hell-is-busy.hs +3/−3
- gr/hh-808.hs +1/−1
- gr/implosion-m.hs +34/−0
- gr/implosion.hs +0/−36
- gr/insects-m.hs +21/−0
- gr/insects.hs +0/−21
- gr/jl-1-Z.hs +0/−1
- gr/k-ppr-m.hs +1/−3
- gr/k-ppr.hs +3/−4
- gr/k2ws-hp.hs +18/−0
- gr/k2ws.hs +6/−7
- gr/kabelscahden.hs +5/−5
- gr/karplus-strong.hs +2/−2
- gr/klink.hs +3/−3
- gr/laser-bubble.hs +1/−1
- gr/lf-pulses.hs +2/−2
- gr/lg-timed-m.hs +24/−0
- gr/lg-timed.hs +0/−25
- gr/lin-sosc.hs +2/−2
- gr/lso-061101-m.hs +110/−0
- gr/lso-061101.hs +0/−111
- gr/m21360.hs +4/−4
- gr/microhelix.hs +12/−20
- gr/modal-space.hs +1/−1
- gr/mridangam.hs +7/−6
- gr/music-box.hs +25/−26
- gr/nharm-m.hs +35/−0
- gr/nharm-p.hs +8/−9
- gr/nharm.hs +0/−35
- gr/noise-modulated-sines.hs +2/−2
- gr/nokia.hs +22/−27
- gr/non-real-time.hs +3/−4
- gr/nv-tw-1.hs +4/−4
- gr/nv-tw-54.hs +7/−4
- gr/nx102.hs +6/−7
- gr/one-line.hs +1/−1
- gr/oscillator-cluster-m.hs +35/−0
- gr/oscillator-cluster.hs +0/−34
- gr/overlap-add.hs +6/−7
- gr/pattern-buffer-m.hs +54/−0
- gr/pattern-buffer.hs +0/−54
- gr/pkt-00.scd +9/−0
- gr/pkt-07.scd +37/−0
- gr/plucked-strings-m.hs +27/−0
- gr/plucked-strings.hs +0/−27
- gr/police-state-m.hs +24/−0
- gr/police-state.hs +19/−19
- gr/pond-life-hp.hs +16/−0
- gr/pond-life.hs +4/−4
- gr/proxy-mixer-m.hs +0/−1
- gr/proxy-mixer.hs +4/−5
- gr/pulsing-bottles-m.hs +1/−1
- gr/pwm-crossfade.hs +1/−2
- gr/rails.hs +4/−5
- gr/rain-thunder.hs +4/−5
- gr/random-panning-sines-m.hs +0/−1
- gr/random-panning-sines.hs +4/−5
- gr/random-sine-waves-hp.hs +10/−0
- gr/random-sine-waves-she.hs +11/−0
- gr/random-sine-waves.hs +2/−2
- gr/record-scratcher.hs +1/−1
- gr/red-frik-m.hs +24/−0
- gr/red-frik.hs +0/−25
- gr/resonant-dust-hp.hs +15/−0
- gr/resonant-dust.hs +3/−3
- gr/reverberated-sine-percussion-hp.hs +20/−0
- gr/reverberated-sine-percussion-m.hs +24/−0
- gr/reverberated-sine-percussion.hs +0/−27
- gr/ring-modulated-klank.hs +1/−1
- gr/rm-octaver.hs +1/−1
- gr/rzblp-hp.hs +31/−0
- gr/rzblp-m.hs +34/−0
- gr/rzblp-u.hs +26/−18
- gr/rzblp.hs +2/−7
- gr/s-chirp.hs +7/−7
- gr/sam-i-am.hs +10/−8
- gr/saucer-base.hs +3/−3
- gr/scritto.hs +1/−1
- gr/seqr.hs +8/−8
- gr/shifting-pulses-m.hs +52/−0
- gr/shifting-pulses.hs +0/−20
- gr/sidereal-time-hp.hs +28/−0
- gr/sidereal-time.hs +7/−7
- gr/sinusdeklinationen.hs +13/−13
- gr/snare-909.hs +2/−2
- gr/sosc-lp-m.hs +49/−0
- gr/sosc-lp.hs +0/−50
- gr/spe-m.hs +2/−5
- gr/spe-p.hs +9/−11
- gr/synthetic-piano-m.hs +0/−1
- gr/tank-hp.hs +36/−0
- gr/tank-m.hs +4/−13
- gr/tank.hs +5/−5
- gr/tgb-m.hs +43/−0
- gr/tgb.hs +0/−41
- gr/tgr-rpr-m.hs +62/−0
- gr/tgr-rpr.hs +0/−63
- gr/thb.hs +18/−17
- gr/three-cpsw-m.hs +18/−0
- gr/three-cpsw.hs +0/−19
- gr/tipnso.hs +3/−3
- gr/tr-out-m.hs +32/−0
- gr/tr-out.hs +0/−33
- gr/train.hs +3/−3
- gr/tremulate-hp.hs +17/−0
- gr/tremulate-m.hs +0/−1
- gr/tremulate.hs +5/−6
- gr/trkl-m.hs +35/−0
- gr/trkl.hs +0/−36
- gr/trmlo-u.hs +52/−0
- gr/trmlo.hs +23/−21
- gr/uplink-hp.hs +17/−0
- gr/uplink.hs +4/−5
- gr/urandom.hs +1/−1
- gr/vla-addtn-sharc.hs +18/−16
- gr/vla-addtn.hs +17/−15
- gr/vlc-distrtn-m.hs +149/−0
- gr/vlc-distrtn.hs +0/−149
- gr/voscil-u.hs +38/−0
- gr/voscil.hs +8/−9
- gr/waveset.hs +6/−9
- gr/what-was-i-thinking-m.hs +24/−0
- gr/what-was-i-thinking.hs +0/−25
- gr/why-supercollider.hs +7/−8
- gr/wial-m.hs +26/−0
- gr/wial.hs +0/−27
- gr/wind-metals-m.hs +0/−1
- gr/xy-interference-m.hs +1/−2
- gr/xy-interference.hs +2/−2
- hs/L.hs +13/−0
- hs/hsc3-graphs.hs +428/−0
- hs/mk-ix.hs +75/−0
- hs/mk-lib.hs +89/−0
- hsc3-graphs.cabal +1404/−647
- sh/mk-dependencies.sh +5/−0
- sh/mk-html.sh +5/−0
- sh/mk-packages.sh +32/−0
- sh/mk-pdf.sh +5/−0
- sh/mk-svg.sh +17/−0
- sh/statistics.sh +8/−0
@@ -0,0 +1,34 @@+mk-html:+ mkdir -p html+ cp -f css/emacs.css html/hscolour.css+ (cd gr ; sh ../sh/mk-html.sh)++mk-pdf:+ mkdir -p pdf+ (cd dot.gz ; sh ../sh/mk-pdf.sh)++mk-svg:+ mkdir -p svg+ sh sh/mk-svg.sh++mk-ix:+ mkdir -p md+ (cd hs; runhaskell mk-ix.hs sw/hsc3-graphs)++mk-lib:+ mkdir -p Sound/SC3/Graph+ (cd hs; runhaskell mk-lib.hs)++# mk-pdf fails at sp.org+all: mk-html mk-svg mk-ix++clean:+ (cd gr; make clean)+ cabal clean+ rm -f pdf/*.pdf+ rm -f svg/*.svg+ rm -R Sound+ rm -f hs/hsc3-graphs.hs++remote-update:+ ssh rd@slavepianos.org "(cd sw/hsc3-graphs; make all)"
@@ -17,10 +17,21 @@ - Nick Collins ([nc][nc], 3) - Nathaniel Virgo ([nv][nv], 3) - Alex McLean ([am][am], 1)+- Andrea Valle ([av][av], 1)+- Jacob Joaquin ([jj][jj], 1)+- Josh Parmenter ([jp][jp], 1)+- Juan A. Romero ([jar][jar], 1)+- Lance J. Putnam ([ljp][ljp], 1)+- Ryan Brown ([rb][rb], 1)+- Sam Pluta ([sp][sp], 1)+- Thor Magnusson ([tm][tm], 1) In most cases the `sclang` variants have been re-written prior to transliteration to haskell. +The graphs can be compiled into a library by typing `make mk-lib` and+built by typing `cabal install`.+ There is a `Makefile` at `gr`, type `make dep; make all`. [hs]: http://haskell.org/@@ -31,13 +42,21 @@ [adc]: http://medienhaus.udk-berlin.de/pages/Dr._Alberto_De_Campo [am]: http://yaxu.org/+[av]: http://www.fonurgia.unito.it/ [f0]: http://fredrikolofsson.com/+[jar]: http://rukano.de/+[jj]: http://codehop.com/ [jl]: http://kymatica.com/+[jp]: http://www.realizedsound.net/josh/ [jrhb]: http://musikundmedien.net/index.php?id=454&L=1+[ljp]: http://www.mat.ucsb.edu/l.putnam/ [nc]: http://www.sussex.ac.uk/Users/nc81/ [nv]: http://nathanielvirgo.com/+[rb]: http://www.wabdo.com/+[sp]: http://www.sampluta.com/+[tm]: http://www.sussex.ac.uk/Users/thm21/ -© [rohan drape][rd] and others, 2006-2012, [gpl]+© [rohan drape][rd] and others, 2006-2013, [gpl] [rd]: http://rd.slavepianos.org/ [gpl]: http://gnu.org/copyleft/
@@ -0,0 +1,27 @@+-- bit reduction (adc)+module Sound.SC3.Graph.ADC_bit_reduction where++import Sound.SC3.ID {- hsc3 -}++sample_rate_decrease :: UGen+sample_rate_decrease =+ let f = lfNoise2 'α' KR 8+ nh = lfNoise2 'β' KR 3+ src = blip AR (f * 200 + 300) (nh * 10 + 20)+ sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2+ in latch src (impulse AR sr 0)++bit_rate_decrease :: UGen+bit_rate_decrease =+ let f = lfNoise2 'γ' KR 8+ nh = lfNoise2 'δ' KR 3+ src = blip AR (f * 200 + 300) (nh * 10 + 20)+ sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2+ bit_sz = mouseY KR 1 24 Exponential 0.2+ down_sample = latch src (impulse AR sr 0)+ bit_redux = roundTo down_sample (0.5 ** bit_sz)+ in mce2 down_sample bit_redux++-- > Sound.SC3.UGen.Dot.draw (sample_rate_decrease + bit_rate_decrease)+main :: IO ()+main = audition (out 0 (sample_rate_decrease + bit_rate_decrease))
@@ -0,0 +1,25 @@+-- march 2003 (adc) / (jrhb)+module Sound.SC3.Graph.ADC_kabelscahden where++import Sound.SC3.ID {- hsc3 -}++kabelScahden :: UGen+kabelScahden =+ let freq = 50+ sustain = 1+ amp = 0.5+ hum = let t = dust 'α' KR (7 ** lfNoise1 'β' KR 0.3)+ h = toggleFF (coinGate 'γ' 0.4 t) * rlpf (lfPulse AR freq 0 0.5 + (lfNoise1 'δ' KR 2 * 0.5 - 0.5)) 6000 0.15+ n = trig t (tRand 'ε' 0 0.01 (coinGate 'ζ' 0.4 t)) * whiteNoise 'η' AR+ m = trig t (tRand 'θ' 0 0.01 (coinGate 'ι' 0.4 t)) * brownNoise 'κ' AR+ k = trig t (lfNoise1 'λ' KR (mce2 4 4.2) * 0.1 + 0.11) * lfClipNoise 'μ' AR (lfNoise0 'ν' KR 7 * 30 + 40)+ in distort (leakDC ((h + n + m + k) * 10) 0.995)+ e = envGen KR 1 1 0 1 RemoveSynth (Envelope [amp,amp,0] [sustain,0] [] Nothing Nothing)+ in out 0 (clip2 hum 1 * e * 0.25)++main :: IO ()+main = audition kabelScahden++-- Local Variables:+-- truncate-lines:t+-- End:
@@ -0,0 +1,40 @@+-- shepard tones, alberto de campo (adc)+module Sound.SC3.Graph.ADC_shepard_tones where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++interp :: (Fractional t,Enum t) => t -> t -> t -> [t]+interp n l r =+ let i = (r - l) / n+ in [l,l + i .. r - i]++hanningWindow :: (Floating b,Enum b) => b -> [b]+hanningWindow n =+ let lp = pi * (-0.5)+ rp = lp + 2 * pi+ hf i = sin i * 0.5 + 0.5+ in map hf (interp n lp rp)++shepard_tones :: UGen+shepard_tones =+ let ratescale = 1024 / 44100 / 10+ rate = 0.1+ ph = phasor AR 0 (rate * ratescale) 0 1024 0+ phases = mce (map (\n -> n * 0.1 * 1024 + ph) [0..9])+ freqs = bufRdC 1 AR 1 phases Loop+ amps = bufRdC 1 AR 2 phases Loop+ in mix (sinOsc AR freqs 0 * amps) * 0.1++run :: Transport m => m ()+run = do+ let square x = x * x+ ampTable = map square (hanningWindow 1024)+ amp_f i = (0.5 ** i) * 20000+ freqTable = map amp_f (interp 1024 0 10)+ _ <- async (b_alloc_setn1 1 0 freqTable)+ _ <- async (b_alloc_setn1 2 0 ampTable)+ play (out 0 shepard_tones)++main :: IO ()+main = withSC3 run
@@ -0,0 +1,48 @@+-- http://doc.gold.ac.uk/~ma503am/alex/vocable-source-released/ (am)+module Sound.SC3.Graph.AM_karplus_strong where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++-- x = delay, y = blend / gain+karplus_strong :: UGen+karplus_strong =+ let vf i s = let f = in' 5 KR i+ a = in' 5 KR (i + 5)+ b = in' 5 KR (i + 10)+ in mix (resonz s f (b / f) * dbAmp a)+ x = mouseX KR 0 0.01 Linear 0.1+ y = mouseY KR 0.85 1 Linear 0.1+ ugenIf a b c = (a * b) + ((1 - a) * c)+ n = whiteNoise 'α' AR+ d = dust 'β' KR 4+ n0 = (n * 0.5) + 0.5+ probSwitch i prob = ugenIf (n0 >* prob) i (negate i)+ laggedDelay = lag x 0.01+ o = sinOsc AR 200 0+ a0 = decay d 0.025 * o+ a1 = localIn 1 AR + (a0 * (y - 0.25))+ a2 = delayN a1 0.01 laggedDelay+ a3 = delay1 a2+ a4 = (a2 + a3) * 0.5+ a5 = probSwitch a4 y+ a6 = vf (toggleFF d * 15) a5+ a7 = a6 * 1.5+ in mrg [localOut (a5 * 0.99),out 0 (mce2 a7 a7)]++act :: Transport m => m ()+act = do+ let aA = ("aA"+ ,[800,1150,2800,3500,4950]+ ,[0,-4 ,-20,-36,-60]+ ,[80,90, 120,130,140])+ aU = ("aU"+ ,[325,700,2530,3500,4950]+ ,[0,-12,-30,-40,-64]+ ,[50,60, 170,180,200])+ cs (_,c1,c2,c3) = c1 ++ c2 ++ c3+ send (c_setn [(0,cs aA),(15,cs aU)])+ play karplus_strong++main :: IO ()+main = withSC3 act
@@ -0,0 +1,16 @@+-- rm-octaver (av), courtesy miller puckette+module Sound.SC3.Graph.AV_rm_octaver where++import Sound.SC3 {- hsc3 -}++defaultPitch :: UGen -> UGen+defaultPitch x = pitch x 440 60 4000 100 16 1 0.01 0.5 1++rm_octaver :: UGen -> UGen+rm_octaver i =+ let p = defaultPitch i+ f = mceChannel 0 p+ in sinOsc AR (f * 0.5) 0 * i + i++main :: IO ()+main = audition (out 0 (rm_octaver (soundIn 4)))
@@ -0,0 +1,46 @@+-- http://sccode.org/1-4Q6 (f0)+module Sound.SC3.Graph.F0_1_4Q6 where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition risset+--+-- let set p = withSC3 (\fd -> send fd (n_set (-1) p))+-- set [("trig",1)]+-- set [("freq",midiCPS 100),("sustain",3),("trig",1)]+-- set [("freq",midiCPS 60),("sustain",9),("trig",1)]+-- set [("freq",midiCPS 40),("sustain",15),("trig",1)]+risset :: Synthdef+risset =+ let k = control KR+ pan = k "pan" 0+ f = k "freq" 400+ ampl = k "amp" 0.1+ d = k "sustain" 2+ tr = tr_control "trig" 1+ amps = [1,0.67,1,1.8,2.67,1.67,1.46,1.33,1.33,1,1.33]+ durs = [1,0.9,0.65,0.55,0.325,0.35,0.25,0.2,0.15,0.1,0.075]+ frqs = [0.56,0.56,0.92,0.92,1.19,1.7,2,2.74,3,3.76,4.07]+ dets = [0,1,0,1.7,0,0,0,0,0,0,0]+ fn i =+ let shp = let c = EnvNum (-4.5)+ in envPerc' 0.005 (d * durs!!i) (amps!!i) (c,c)+ env = envGen AR tr 1 0 1 DoNothing shp+ in sinOsc AR (f * frqs!!i + dets!!i) 0 * ampl * env+ src = mixFill 11 fn+ in synthdef "risset" (out 0 (pan2 src pan 1))++pattern :: P_Bind+pattern =+ [(K_instr,pinstr' (Instr_Def risset False))+ ,(K_id,1000)+ ,(K_note,prand 'α' [0,2,5,7,11] inf)+ ,(K_octave,prand 'β' [4,5,6,7,9] inf)+ ,(K_legato,1)+ ,(K_dur,prand 'γ' [2,3,5,7] inf)+ ,(K_amp,pwhite 'δ' 0.025 0.15 inf)+ ,(K_param "trig",1)]++main :: IO ()+main = audition (pmono pattern)
@@ -0,0 +1,134 @@+-- http://sccode.org/1-1HR (f0)+module Sound.SC3.Graph.F0_buffer_display where++import Control.Concurrent {- base -}+import qualified Graphics.Rendering.Cairo as C {- cairo -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Cairo.Scope.Shell {- hsc3-cairo -}++-- * Type++type R = Double+data BD_Type = BD_Line | BD_Warp | BD_Flower+data BD = BD {gain :: R+ ,theta :: R+ ,theta_incr :: R+ ,trails :: R+ ,version :: BD_Type}++bd_default :: BD+bd_default = BD 0.5 0 0 1 BD_Line++-- * Render++rotate_about :: R -> R -> R -> C.Render ()+rotate_about a x y = do+ C.translate x y+ C.rotate a+ C.translate (-x) (-y)++render_line :: R -> R -> [R] -> C.Render ()+render_line n a d = do+ C.translate 0 (n/2)+ let f (x,y) = let y' = (y * n * a)+ in if x == 0 then C.moveTo x y' else C.lineTo x y'+ mapM_ f (zip [0..] d)+ C.stroke++pt_rotate :: Floating a => a -> (a,a) -> (a,a)+pt_rotate a (x,y) =+ let s = sin a+ c = cos a+ in (x * c - y * s,y * c + x * s)++render_warp :: R -> R -> [R] -> C.Render ()+render_warp n a d = do+ C.translate (n/2) (n/2)+ let f (x,y) = let (x',y') = pt_rotate (y * 2 * pi) (x * a,y * a)+ in if x == 0 then C.moveTo x' y' else C.lineTo x' y'+ mapM_ f (zip [0..] d)+ C.stroke++render_flower :: R -> R -> [R] -> C.Render ()+render_flower n t d = do+ let d0 = d !! 0+ C.translate (n/2) (n/2)+ C.moveTo (d0 * d0) 0+ let f (x,y) = let a = ((x `modE` n) / n) * 2 * pi + t+ (x',y') = pt_rotate a (y * y,x * y)+ in C.lineTo x' y'+ mapM_ f (zip [0..] d)+ C.stroke++bd_render :: Render_F BD+bd_render sh bd = do+ let n = fromIntegral (sh_nf sh)+ a = gain bd+ t = theta bd+ v = version bd+ r = case v of+ BD_Flower -> return ()+ _ -> rotate_about t (n/2) (n/2)+ C.rectangle 0 0 n n+ C.setSourceRGBA 0 0 0 (trails bd)+ C.fill+ C.setSourceRGBA 0 1 0 1+ let f d = case version bd of+ BD_Line -> render_line n a d+ BD_Warp -> render_warp n a d+ BD_Flower -> render_flower n t d+ g d = C.save >> r >> f d >> C.restore+ mapM_ g (sh_data sh)+ return (bd {theta = t + theta_incr bd})++-- * Key++bd_key :: Key_F BD+bd_key k bd =+ case k of+ 'T' -> bd {trails = trails bd + 0.025}+ 't' -> bd {trails = trails bd - 0.025}+ 'S' -> bd {theta_incr = theta_incr bd + 0.025}+ 's' -> bd {theta_incr = theta_incr bd - 0.025}+ 'w' -> bd {version = BD_Warp}+ 'l' -> bd {version = BD_Line}+ 'f' -> bd {version = BD_Flower}+ 'z' -> bd {theta = 0}+ _ -> bd++-- * Audio...++instr :: UGen+instr =+ let x = mouseX KR 1 1000 Linear 0.2+ y = mouseY KR 50 5000 Linear 0.2+ v = varSaw AR x 0 0.5+ f = bpf v y 0.5+ s = sinOsc AR 0 f+ n = brownNoise 'α' AR * 0.1+ in out 0 (mce2 s n)++bd_shell :: Int -> Shell BD+bd_shell nc = sh_default nc bd_render bd_key++main :: IO ()+main = do+ audition instr+ _ <- forkIO (shell (bd_shell 2) bd_default)+ return ()++{-++import Sound.SC3.ID++let s = saw AR (mouseX KR 20 800 Exponential 0.2)+in audition (out 0 s)++let {v = varSaw AR (mouseX KR 1 1000 Linear 0.2) 0 0.5+ ;f = bpf v (mouseY KR 50 5000 Linear 0.2) 0.5+ ;s = sinOsc AR 0 f}+in audition (out 0 s)++Control.Concurrent.forkIO (shell (bd_shell 1) bd_default)++-}
@@ -0,0 +1,15 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg17536.html (f0)+module Sound.SC3.Graph.F0_f0_2012_04_19 where++import Sound.SC3 {- hsc3 -}++f0 :: UGen+f0 = let s0 = lfSaw AR 10 0 * 0.01+ t0 = lfTri AR (mce2 5 6 * 0.1) 0+ t1 = lfTri KR 0.1 0 * 0.05 + 0.05+ s1 = limiter (brf s0 t0 1) 1 0.01+ o = combN s1 0.1 (roundTo t1 0.01) 1+ in out 0 (o * 0.1)++main :: IO ()+main = audition f0
@@ -0,0 +1,14 @@+-- instance of unworkable graph given current Eq implementation (f0)+module Sound.SC3.Graph.F0_f0_tw0011 where++import Sound.SC3 {- hsc3 -}++f0_0011 :: UGen+f0_0011 =+ let ifE a b c = (a * b) + ((1 - a) * c)+ s o i = sinOsc AR (mce [i,i + 1e-4] ** 2 * f o (i - 1)) (f o (i - 1) * 1e-4) * f o (i - 1)+ f o i = ifE (i >* 0) (s o i) o+ in out 0 (f 60 6 / 60)++main :: IO ()+main = audition f0_0011
@@ -0,0 +1,21 @@+-- http://fredrikolofsson.com/f0blog/?q=node/478 (f0)+module Sound.SC3.Graph.F0_f0_tw0014 where++import Sound.SC3 {- hsc3 -}++f0_tw0014 :: UGen+f0_tw0014 =+ let a = sinOscFB AR+ k = 1/9+ f i = let a0 = a (i+1) k * 999+ a1 = a k 1 * k+ a2 = a a0 k * a1+ a3 = a 0.1 3+ a4 = a a2 a3 * ((i+2) * 999)+ a5 = a k k+ in a a4 a5 * k+ s = sum (map f [0..9])+ in out 0 (mce2 s s)++main :: IO ()+main = audition f0_tw0014
@@ -0,0 +1,21 @@+-- http://fredrikolofsson.com/f0blog/?q=node/478 (f0)+module Sound.SC3.Graph.F0_f0_tw0020 where++import Sound.SC3 {- hsc3 -}++f0_tw0020 :: UGen+f0_tw0020 =+ let a n = lfPulse AR n 0 0.5+ b = mce [1..4]+ a1 = (a (b/32) + 1) / 8+ a2 = (a a1 + 1) * b+ a3 = a (b/64)+ a4 = a (a (b/8)) * 2 + b+ a5 = a (4/b)+ a6 = a a2+ a7 = a ((a6 + ((mix a3 + a5) * a4)) * 100)+ s = mix a7 / 8+ in out 0 (mce2 s s)++main :: IO ()+main = audition f0_tw0020
@@ -0,0 +1,23 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0028 where++import Sound.SC3.ID {- hsc3 -}++fib :: Integral i => [i]+fib = 0 : scanl (+) 1 fib++-- sc3_fib 16 == [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987]+sc3_fib :: Integral a => Int -> [a]+sc3_fib n = take n (tail fib)++f0_0028 :: UGen+f0_0028 =+ let n = map ((* 99) . (`mod` 8)) (sc3_fib 16)+ p = dseq 'α' dinf (dshuf 'β' 8 (mce (map fromInteger n)))+ q = combN (duty AR (1/8) 0 DoNothing p) 4 4 16+ o = lfTri AR q 0 / 4+ f = lfTri KR (1/16) 0 * 2e3 + 3e3+ in out 0 (pan2 (moogFF o f 2 0) 0 1)++main :: IO ()+main = audition f0_0028
@@ -0,0 +1,15 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0030 where++import Sound.SC3.ID {- hsc3 -}++f0_0030 :: UGen+f0_0030 =+ let a i j k l = lfPar AR i j * k + l+ f = a 1 0 5 (a (mce2 0.05 0.04) 0 50 160 `roundTo` 50)+ w = a 0.2 0 0.5 (a 3 0 0.2 0.5)+ o = varSaw AR f 0 w / 8+ in out 0 (gVerb o 80 3 0.5 0.5 15 1 0.7 0.5 300)++main :: IO ()+main = audition f0_0030
@@ -0,0 +1,17 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0033 where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++f0_0033 :: UGen+f0_0033 =+ let f = roundE (lfPar AR (1/14) 0) * 20 + 80+ a = pulse AR (mce [1..4]) 0.35+ n = uclone 'α' 4 (brownNoise 'α' AR) * a+ z i = mce2 (i + 1 * f) (i * f + (i + 1 / 3))+ o = lfPar AR (mce (map z [0..3])) 0+ in out 0 (splay ((o >* n) / 3) 1 1 0 True)++main :: IO ()+main = audition f0_0033
@@ -0,0 +1,15 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0045 where++import Sound.SC3 {- hsc3 -}++f0_0045 :: UGen+f0_0045 =+ let a i j k l = sinOsc AR i j * k + l+ f = a (a 0.11 0 1 0) 0 1 0+ p_f = a (95 * a 0.01 0 1 1) 0 (a 5e-3 0 50 0) 100+ p = a p_f (a (mce2 98 97) 0 1 0) (pi + a 5e-4 0 1 0) 0+ in out 0 (tanh (a f p 1 0))++main :: IO ()+main = audition f0_0045
@@ -0,0 +1,17 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg18379.html (f0)+module Sound.SC3.Graph.F0_f0_tw0049 where++import Data.Bits {- base -}+import Sound.SC3 {- hsc3 -}++f0_0049 :: UGen+f0_0049 =+ let t = t2A 0 0+ o0 = lfSaw AR 3 0 * 9 + 99+ s0 = sweep t (mce [3..9]) `modE` o0+ s1 = sweep t (mce [33,32..3]) `modE` 128 .&. s0+ o1 = sinOsc AR (midiCPS (s1+33)) 0 * pi+ in out 0 (splay (sinOsc AR 9 o1) 1 1 0 True / 3)++main :: IO ()+main = audition f0_0049
@@ -0,0 +1,21 @@+-- http://sccode.org/1-4Qy (f0)+module Sound.SC3.Graph.F0_f0_tw0051 where++import Sound.SC3 {- hsc3 -}++-- > ascii "sunday" == mce (map constant [115,117,110,100,97,121])+ascii :: String -> UGen+ascii = mce . map (constant.fromEnum)++-- > Sound.SC3.UGen.Dot.draw (out 0 f0_tw0051)+f0_tw0051 :: UGen+f0_tw0051 =+ let i = a (ascii "sunday")+ f = a (9 / ascii "slow") * 400 + 500+ w = a (7 / ascii "coding") + 1.1+ a = saw AR+ l = splay (bBandPass i f w / 5) 1 1 0 True+ in gVerb l 10 3 0.5 0.5 15 1 0.7 0.5 300++main :: IO ()+main = audition (out 0 f0_tw0051)
@@ -0,0 +1,16 @@+-- http://sccode.org/1-4Qy (f0)+module Sound.SC3.Graph.F0_f0_tw0077 where++import Sound.SC3 {- hsc3 -}++f0_tw0077 :: UGen+f0_tw0077 =+ let a = sinOsc AR+ f = a (1 / mce2 5 6) 0 + mce2 798 912+ p = (a (1 / 16) 0 * 19 + 99) * a (mce2 9 8) 0+ m = a (a 6 0 * a 0.009 0) 0+ b = a f p * m+ in tanh (a (mce2 201 301) b)++main :: IO ()+main = audition (out 0 f0_tw0077)
@@ -0,0 +1,15 @@+-- http://sccode.org/1-4Qy (f0)+module Sound.SC3.Graph.F0_f0_tw0084 where++import Sound.SC3 {- hsc3 -}++f0_tw0084 :: UGen+f0_tw0084 =+ let a = saw AR+ f = a (mce [5,7..15] * 19) * 99 + 199+ g = a (mce [1,3..13] * 29) * 199 + 299+ w = a (mce [3,5..11] * (a 3 * 2 + 3)) * 299 + 399+ in splay (formant AR f g w) 1 1 0 True / 3++main :: IO ()+main = audition (out 0 f0_tw0084)
@@ -0,0 +1,106 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/457 (f0)+-- http://obiwannabe.co.uk/tutorials/html/tutorial_birds.html+module Sound.SC3.Graph.F0_hansm where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++type T3 a = (a,a,a)+type Bird_Call_Param a = (T3 a,T3 a,T3 a,T3 a,T3 a)++bird_call :: Transport m => Bird_Call_Param UGen -> m ()+bird_call ((freq,atk,dcy)+ ,(fmod1,atkf1,dcyf1)+ ,(fmod2,atkf2,dcyf2)+ ,(amod1,atka1,dcya1)+ ,(amod2,atka2,dcya2)) =+ let mk_env a aT dT g lS md =+ let x = EnvNum (-4)+ c = Envelope [0,a,0] [aT,dT] [x,x] Nothing Nothing+ in envGen AR g lS 0 1 md c+ e = mk_env 0.5 atk dcy 1 1 RemoveSynth+ freq1 = mk_env fmod1 atkf1 dcyf1 1 3000 DoNothing+ freq2 = mk_env fmod2 atkf2 dcyf2 1 3000 DoNothing+ amp1 = mk_env amod1 atka1 dcya1 1 1 DoNothing+ amp2 = mk_env amod2 atka2 dcya2 1 1 DoNothing+ fmodc = sinOsc AR freq1 0 * amp1 + 1+ amod = 1 - sinOsc AR freq2 0 * amp2+ z = sinOsc AR ((freq * 7000 + 300) * fmodc) 0 * amod+ in play (out 0 (pan2 z 0 e))++triple_tailed_tree_troubler :: (Fractional a) => Bird_Call_Param a+triple_tailed_tree_troubler =+ ((0.387755, 0.0204082, 0.204082)+ ,(0.367347, 0.571429, 0.734694)+ ,(0.918367, 1, 0.77551)+ ,(0.571429, 0.367347, 0.22449)+ ,(0.0204082, 0.183673, 0.44898))++speckled_throated_spew :: (Fractional a) => Bird_Call_Param a+speckled_throated_spew =+ ((0.183673, 0.591837, 0.387755)+ ,(0.0104082, 0.530612, 0.346939)+ ,(0.244898, 0.55102, 0.122449)+ ,(0.387755, 1, 0.612245)+ ,(0.346939, 0.816327, 0.653061))++lesser_spotted_grinchwarbler :: (Fractional a) => Bird_Call_Param a+lesser_spotted_grinchwarbler =+ ((0.55102, 0.591837, 0.387755)+ ,(0.0716327, 0.0204082, 0.346939)+ ,(0.0204082, 0.55102, 0.122449)+ ,(0.632653, 1, 0.612245)+ ,(0.346939, 0.816327, 0.653061))++long_toed_mudhopper :: (Fractional a) => Bird_Call_Param a+long_toed_mudhopper =+ ((0.163265, 0.22449, 0.183673)+ ,(0.00306122, 0.122449, 1)+ ,(0.0612245, 1, 0.77551)+ ,(0.979592, 0.204082, 0.734694)+ ,(1, 0.142857, 0.612245))++yellow_yiffled_yaffle :: (Fractional a) => Bird_Call_Param a+yellow_yiffled_yaffle =+ ((0.0204082, 0.367347, 0.183673)+ ,(0.0612245, 0, 1)+ ,(0.285714, 0.22449, 0.489796)+ ,(0.367347, 0.387755, 0.734694)+ ,(0.204082, 0.428571, 0.142857))++pointy_beaked_beetlefiend :: (Fractional a) => Bird_Call_Param a+pointy_beaked_beetlefiend =+ ((0.428571, 0.204082, 0.489796)+ ,(0.0204082, 0.795918, 0.591837)+ ,(0.285714, 0.22449, 0.489796)+ ,(0.204082, 0.836735, 0.734694)+ ,(0.77551, 0.428571, 0.142857))++african_boojuboolubala :: (Fractional a) => Bird_Call_Param a+african_boojuboolubala =+ ((0.306122, 0.959184, 0.0408163)+ ,(1, 0, 0.591837)+ ,(0.285714, 0.22449, 0.489796)+ ,(0.204082, 0.836735, 0.734694)+ ,(0.77551, 0.428571, 0.142857))++common_muckoink :: (Fractional a) => Bird_Call_Param a+common_muckoink =+ ((0.0204082, 0.8, 0.0816327)+ ,(0.0204082, 0.001, 0.99)+ ,(0.0204082, 0.01, 1)+ ,(1, 0.142857, 0.734694)+ ,(1, 0.0612245, 0.530612))++main :: IO ()+main = do+ let xs = [triple_tailed_tree_troubler+ ,speckled_throated_spew+ ,lesser_spotted_grinchwarbler+ ,long_toed_mudhopper+ ,yellow_yiffled_yaffle+ ,pointy_beaked_beetlefiend+ ,african_boojuboolubala+ ,common_muckoink]+ fn x = bird_call x >> wait 1.25+ withSC3 (mapM_ fn xs)
@@ -0,0 +1,22 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)+module Sound.SC3.Graph.F0_pkt_26 where++import Sound.SC3 {- hsc3 -}++grid :: UGen -> UGen -> UGen+grid n i =+ let t = i / n+ a = abs (varSaw AR 0.02 t 0.5 * 7.5)+ b = varSaw AR 0.16 t (2/3) * a + 300+ c = varSaw AR 0.064 t 0.5 * 25 + 50+ d = varSaw AR 0.012 t 0.75 * c + 200+ e = varSaw AR 0.024 t 0.25 * 0.475 + 0.5+ f = varSaw AR (100 + i) t e+ g = varSaw AR 0.048 0 0.5 * 25 + 150+ h = varSaw AR ((i + 1) * g) t (1/3) * 150+ o = sinOsc AR h (f * pi) * d + b+ z = leakDC (varSaw AR o t 0.5) 0.995+ in pan2 z (varSaw AR 0.02 t 0.5) (1 / n)++main :: IO ()+main = audition (out 0 (mixFill 8 (grid 8)))
@@ -0,0 +1,25 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)+module Sound.SC3.Graph.F0_pkt_28 where++import Sound.SC3 {- hsc3 -}++rnd :: UGen -> UGen -> UGen+rnd n i =+ let a = lfSaw AR ((i + 1) * 5) 0 * 0.5 * pi+ b = sinOsc AR ((i + 1) * 0.001) 0 * 0.5+ c = max (lfSaw AR (0.2 + b) (i / n) * 0.4) 0+ d = sinOsc AR 0.03 (i + 1) * 0.5 + 1+ e = sinOsc AR (200 + i) 0 * d+ f = sinOsc AR 0.04 (i + 2) * 0.5 + 1+ g = sinOsc AR (400 + i) 0 * f+ h = sinOsc AR 0.05 (i + 3) * 0.5 + 1+ j = sinOsc AR (800 + i) 0 * h+ k = linExp i 0 (n - 1) 70 1500+ z = sinOsc AR k a * c * e * g * j+ l = linLin i 0 (n - 1) (-0.925) 0.925+ in pan2 z l (1 / n)++main :: IO ()+main =+ let y = limiter (leakDC (mixFill 28 (rnd 28)) 0.995) 1 1e-2+ in audition (out 0 (gVerb y 3 5 0.2 0.8 20 0.1 0.7 0.5 300))
@@ -0,0 +1,25 @@+-- red_frik (f0)+module Sound.SC3.Graph.F0_red_frik_m where++import Sound.SC3.Monad {- hsc3 -}++red :: UId m => UGen -> UGen -> m UGen+red tr n = do+ r1 <- tRand 0.3 3 tr+ r2 <- tRand 0.3 5 tr+ r3 <- tRand 0 0.5 tr+ r4 <- tRand 0.49 0.56 tr+ r5 <- tRand 0.3 0.6 tr+ r6 <- tRand 0.3 0.5 tr+ let o1 = fSinOsc KR r2 0 * r3 + r4+ o2 = fSinOsc KR o1 r5 * r6+ return (rhpf n r1 o2)++red_frik :: UId m => m UGen+red_frik = do+ n <- clone 2 (brownNoise AR)+ let tr = impulse KR 0.1 0+ red tr n++main :: IO ()+main = audition . out 0 =<< red_frik
@@ -0,0 +1,47 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/488 (f0)+module Sound.SC3.Graph.F0_sinusdeklinationen where++import Data.List.Split {- split -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++sinuscell :: UGen+sinuscell =+ let ctl = control KR+ b = ctl "out" 0+ p = ctl "pan" 0+ a = ctl "amp" 0.5+ fre = ctl "fre" 400+ atk = ctl "atk" 1+ sus = ctl "sus" 0.2+ rel = ctl "rel" 1+ e_d = envLinen atk sus rel a+ e = envGen KR 1 0.1 0 1 RemoveSynth e_d+ s = sinOsc AR fre 0+ in out b (pan2 s p e)++pattern :: Enum e => (Field,[e]) -> P_Bind+pattern (c,z) =+ case z of+ [z0,z1,z2,z3] ->+ let a = pwhite z0 0 1 inf+ s = 0.2+ r = pwhite z1 0 1 inf+ i = psynth (synthdef "sinuscell" sinuscell)+ in [(K_instr,i)+ ,(K_dur,a+s+r)+ ,(K_amp,pwhite z3 0 1 inf)+ ,(K_param "fre",pwhite z2 0 1100 inf)+ ,(K_param "atk",a)+ ,(K_param "sus",s)+ ,(K_param "rel",r)+ ,(K_param "pan",prepeat c)]+ _ -> undefined++cells :: Fractional n => [n]+cells = [-1,-0.6,-0.5,0,0.2,0.5,0.4,1]++main :: IO ()+main =+ let c = zip cells (chunksOf 4 ['α'..])+ in audition (ppar (map (pbind . pattern) c))
@@ -0,0 +1,20 @@+-- http://sccode.org/1-W (jj)+module Sound.SC3.Graph.JJ_bohlen_pierce_140 where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++bp140u :: UGen+bp140u =+ let f z n = n * (3 ** (rand z 0 17 / 13))+ e = envGen AR 1 0.3 0 1 RemoveSynth (envPerc 0.01 1)+ o = pmOsc AR (f 'α' (mce2 438 442)) (f 'β' 880) (f 'γ' e) 0+ in o * e++bp140 :: Synthdef+bp140 = synthdef "bp140" (out 0 bp140u)++main :: IO ()+main = do+ let p = pbind [(K_instr,psynth bp140),(K_dur,prand 'δ' [1/6,1/3] inf)]+ audition p
@@ -0,0 +1,20 @@+-- a0f253ff89f6b244ea29a1e431dd9e5df5571a8b (jl)+module Sound.SC3.Graph.JL_bitwise where++import Data.Bits+import Sound.SC3 {- hsc3 -}++(.%.) :: UGen -> UGen -> UGen+(.%.) = modE++bitwise_operators :: UGen+bitwise_operators =+ let t = pulseCount (impulse AR 8e3 0) 0+ s = ((((t * 15) .&. (t .>>. 5)) .|.+ ((t * 5) .&. (t .>>. (mce2 3 4))) .|.+ ((t * 2) .&. (t .>>. 9)) .|.+ ((t * 8) .&. (t .>>. 11))) - 3) .%. 256+ in tanh (hpf (((s / 127) - 1) * 3) 20)++main :: IO ()+main = audition (out 0 bitwise_operators)
@@ -0,0 +1,18 @@+-- http://sccode.org/1-j#c51 (jl)+module Sound.SC3.Graph.JL_dark_sea_horns where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++dark_sea_horns :: UGen+dark_sea_horns =+ let n = lfNoise1+ x = localIn 2 AR+ a = tanh (sinOsc AR 65 (x * n 'α' AR 0.1 * 3) * n 'β' AR 3 * 6)+ f i = allpassN i 0.3 (randN 2 'γ' 0.1 0.3) 5+ o = tanh (useq 'δ' 9 f a)+ in mrg2 o (localOut o)++main :: IO ()+main = audition (out 0 dark_sea_horns)
@@ -0,0 +1,18 @@+-- http://sccode.org/1-j#c51 (jl)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JL_dark_sea_horns_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.UGen.External.RDU.Monad {- sc3-rdu -}++dark_sea_horns :: UId m => m UGen+dark_sea_horns = do+ let n = lfNoise1+ let x = localIn 2 AR+ let a = tanh (sinOsc AR 65 (x * #(n AR 0.1) * 3) * #(n AR 3) * 6)+ let f i = do return (allpassN i 0.3 #(randN 2 0.1 0.3) 5)+ let o = tanh #(chainM 9 f a)+ return (mrg2 o (localOut o))++main :: IO ()+main = audition . out 0 =<< dark_sea_horns
@@ -0,0 +1,17 @@+-- http://sccode.org/1-Z (jl)+module Sound.SC3.Graph.JL_jl_1_Z where++import Sound.SC3 {- hsc3 -}++jl_z_1 :: UGen+jl_z_1 =+ let a = lag (impulse KR 8 0) 0.1+ b = crackle AR (lag (abs (lfSaw KR 3 0)) 0.1 * 1.8)+ c = a * b+ d = lag (impulse KR 2 0 + impulse KR 4 0.5) 0.1+ e = blip AR 4.9 7 * 0.4+ f = d * e+ in tanh (c + gVerb f 1 1 0.5 0.5 15 1 0.7 0.5 300 * 5) * 2++main :: IO ()+main = audition (out 0 jl_z_1)
@@ -0,0 +1,18 @@+-- http://sccode.org/1-L (jl)+module Sound.SC3.Graph.JL_pwm_crossfade where++import Sound.SC3.ID {- hsc3 -}++urangeM :: UGen -> UGen -> UGen+urangeM u = let [u0,u1] = mceChannels u in urange u0 u1++pwm_crossfade :: UGen+pwm_crossfade =+ let n = mce [400,500,450,376,600]+ d = 1/20+ f = demand (impulse KR d (mce2 0 0.5)) 0 (dseq 'α' dinf n)+ f_ = urangeM f (lfPulse KR 8 0 (range 0 1 (lfTri KR d 1)))+ in lpf (saw AR (max 376 f_ * mce2 1 0.99) * 0.5) 8000++main :: IO ()+main = audition (out 0 pwm_crossfade)
@@ -0,0 +1,20 @@+-- http://sccode.org/1-e (jl)+module Sound.SC3.Graph.JL_rain_thunder where++import Sound.SC3.ID {- hsc3 -}++rain_thunder :: UGen+rain_thunder =+ let n0 = pinkNoise 'α' AR * (0.08 + lfNoise1 'β' KR 0.3 * 0.02)+ d0 = lpf (dust2 'γ' AR (range 40 50 (lfNoise1 'δ' KR 0.2))) 7000+ e0 = line KR 0 1 10 DoNothing+ p0 = tanh (3 * gVerb (hpf (n0+d0) 400) 250 100 0.25 0.5 15 0.3 0.7 0.5 300 * e0)+ lfNoise1C e r f = clip (lfNoise1 e r f) 0 1+ n1 = pinkNoise 'ε' AR * ((lfNoise1C 'ζ' KR 3 * lfNoise1C 'η' KR 2) ** 1.8)+ f1 = linExp (lfNoise1 'θ' KR 1) (-1) 1 100 2500+ e1 = line KR 0 0.7 30 DoNothing+ p1 = gVerb (tanh (lpf (10 * hpf n1 20) f1)) 270 30 0.7 0.5 15 0.5 0.7 0.5 300 * e1+ in limiter (p0 + p1) 1 0.01++main :: IO ()+main = audition (out 0 rain_thunder)
@@ -0,0 +1,32 @@+-- aleatoric quartet (jmcc)+module Sound.SC3.Graph.JMCC_aleatoric_quartet_m where++import Sound.SC3.Monad {- hsc3 -}++aleatoric_quartet :: UId m => m UGen+aleatoric_quartet = do+ let base_mn = control KR "note" 66+ amp = control KR "ampl" 0.07+ density = mouseX KR 0.01 1 Linear 0.1+ dmul = recip density * 0.5 * amp+ dadd = amp - dmul+ rapf i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 1)+ mk_f = do i0 <- iRand 0 2+ let r0 = select i0 (mce [1, 0.5, 0.25])+ r1 <- rand (-30) 30+ n0 <- lfNoise0 KR r0+ let m = n0 * 7 + base_mn + r1+ m' = lag (roundTo m 1) 0.2+ return (midiCPS m')+ mk_s = do f <- fmap recip mk_f+ r <- rand (-1) 1+ x <- do n0 <- pinkNoise AR+ n1 <- lfNoise1 KR 8+ return (n0 * max 0 (n1 * dmul + dadd))+ return (pan2 (combL x 0.02 f 3) r 1)+ g <- chainM 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))+ return (leakDC g 0.995)++main :: IO ()+main = audition . out 0 =<< aleatoric_quartet
@@ -0,0 +1,14 @@+-- alien froggies (jmcc)+module Sound.SC3.Graph.JMCC_alien_froggies where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++alien_froggies :: UGen -> (UGen,UGen)+alien_froggies r =+ let r' = fold (r * exp (linRand 'α' (-0.2) 0.2 0)) 1 30+ o = formant AR r' (expRand 'β' 200 3000) (rand 'γ' 0 9 * r' + r')+ in (o * 0.05,r')++main :: IO ()+main = overlapTextureS (0.25,0.5,5,maxBound) alien_froggies 11
@@ -0,0 +1,17 @@+-- alien meadow (jmcc)+module Sound.SC3.Graph.JMCC_alien_meadow where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++alien_meadow :: UGen+alien_meadow =+ let a = rand 'α' 0 20+ b = rand 'α' 0 5000+ c = rand 'α' 0 20+ p = rand 'α' (-1) 1+ f = sinOsc AR a 0 * b * 0.1 + b+ in pan2 (sinOsc AR f 0) p (sinOsc AR c 0 * 0.05 + 0.05)++main :: IO ()+main = overlapTextureU (2,6,6,maxBound) alien_meadow
@@ -0,0 +1,14 @@+-- analog bubbles (jmcc)+module Sound.SC3.Graph.JMCC_analog_bubbles where++import Sound.SC3 {- hsc3 -}++analog_bubbles :: UGen+analog_bubbles =+ let o = lfSaw KR (mce2 8 7.23) 0 * 3 + 80+ f = lfSaw KR 0.4 0 * 24 + o+ s = sinOsc AR (midiCPS f) 0 * 0.04+ in combN s 0.2 0.2 4++main :: IO ()+main = audition (out 0 analog_bubbles)
@@ -0,0 +1,19 @@+-- babbling brook (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+module Sound.SC3.Graph.JMCC_babbling_brook_m where++import Sound.SC3.Monad {- hsc3 -}++babbling_brook :: UId m => m UGen+babbling_brook = do+ let b f m a g = do n1 <- brownNoise AR+ n2 <- brownNoise AR+ let n3 = lpf n2 f * m + a+ n4 = onePole n1 0.99+ return (rhpf n4 n3 0.03 * g)+ x <- clone 2 (b 14 400 500 0.006)+ y <- clone 2 (b 20 800 1000 0.010)+ return (x + y)++main :: IO ()+main = audition . out 0 =<< babbling_brook
@@ -0,0 +1,23 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_birds_hp where++import Sound.SC3.Monad {- hsc3 -}++node :: UId m => m UGen+node = do+ let f = lag (lfSaw AR (7 + #(rand (-1.5) 1.5)) #(rand 0 1) * #(rand 11 15)) 0.1 + #(rand 94 102)+ let a = lfPulse KR (1 / #(rand 12 15.6)) #(rand 0 1) 0.16 * 0.05+ let b = sinOsc AR (midiCPS f) #(rand 0 1) * a+ return (rotate2 b (silent 1) #(rand (-1) 1))++birds :: UId m => m UGen+birds = do+ d <- return . sum =<< sequence (replicate 6 node)+ let apf i = do return (allpassL i 0.07 #(rand 0 0.06) #(rand 0.7 2.0))+ w <- chainM 12 apf d+ return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
@@ -0,0 +1,29 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+module Sound.SC3.Graph.JMCC_birds_m where++import Sound.SC3.Monad {- hsc3 -}++birds :: UId m => m UGen+birds = do+ let node = do r1 <- rand 94.0 102.0+ r2 <- rand (-1.5) 1.5+ r3 <- rand 0.0 1.0+ r4 <- rand 11.0 15.0+ r5 <- rand 0.0 1.0+ r6 <- rand 12.0 15.6+ r7 <- rand 0.0 1.0+ r8 <- rand (-1.0) 1.0+ let f = r1 + lag (lfSaw AR (7 + r2) r3 * r4) 0.1+ a = lfPulse KR (1.0 / r6) r7 0.16 * 0.05+ b = sinOsc AR (midiCPS f) r5 * a+ return (rotate2 b (silent 1) r8)+ apf i = do r1 <- rand 0.0 0.06+ r2 <- rand 0.7 2.0+ return (allpassL i 0.07 r1 r2)+ d <- return . sum =<< sequence (replicate 6 node)+ w <- chainM 12 apf d+ return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
@@ -0,0 +1,26 @@+-- bowed string (jmcc)+module Sound.SC3.Graph.JMCC_bowed_string_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++bowed_string :: UId m => m UGen+bowed_string = do+ let root = 5+ scale = map (+ root) [0,2,4,5,7,9,11]+ oct = [24,36,48,60,72,84]+ n0 <- clone 2 (brownNoise AR)+ r0 <- expRand 0.125 0.5+ r1 <- rand 0.7 0.9+ r2 <- sequence (replicate 12 (rand 1.0 3.0))+ f <- midiCPS `fmap` (lchoose scale .+. lchoose oct)+ n1 <- lfNoise1 KR r0+ let x = n0 * 0.007 * max 0 (n1 * 0.6 + 0.4)+ geom n i z = take n (iterate (* z) i)+ iota n i z = take n (iterate (+ z) i)+ d = klankSpec (iota 12 f f) (geom 12 1 r1) r2+ k = klank x 1 0 1 d+ return (softClip (k * 0.1))++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< bowed_string
@@ -0,0 +1,30 @@+-- choip (jmcc)+module Sound.SC3.Graph.JMCC_choip where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++xl :: ID a => a -> a -> UGen -> UGen -> UGen -> UGen+xl e0 e1 l r t = xLine KR (expRand e0 l r) (expRand e1 l r) t DoNothing++r2 :: ID a => a -> UGen -> UGen+r2 e n = rand e (-n) n++choip :: UGen+choip =+ let t = 12+ i = impulse AR (xl 'α' 'β' 1 30 t) 0+ f = xl 'γ' 'δ' 600 8000 t+ a = sinOsc AR (decay2 i 0.05 0.5 * (-0.9 * f) + f) 0+ l = line KR (r2 'ε' 1) (r2 'ζ' 1) t DoNothing+ in pan2 (decay2 (i * xl 'η' 'θ' 0.01 0.5 t) 0.01 0.2 * a) l 1++choip_pp :: UGen -> UGen+choip_pp =+ let f x = allpassN x 0.1 (randN 2 'ι' 0 0.05) 4+ in useq 'κ' 4 f++main :: IO ()+main = overlapTextureU_pp (1,10,8,maxBound) choip 2 choip_pp
@@ -0,0 +1,19 @@+-- clustered sines (jmcc)+module Sound.SC3.Graph.JMCC_clustered_sines where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > synthstat cs+cs :: UGen+cs =+ let n = 80+ f1 = rand 'α' 100 1100+ f2 = 4 * f1+ sp = let y = uclone' 'α' n (f1 + rand 'α' 0 f2)+ in klangSpec y (map (f1 /) y) (replicate n 0)+ in uclone 'α' 2 (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) cs
@@ -0,0 +1,19 @@+-- clustered sines (jmcc)+module Sound.SC3.Graph.JMCC_clustered_sines_m where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > fmap synthstat (clone 2 cs)+cs :: UId m => m UGen+cs = do+ let n = 80+ f1 <- rand 100 1100+ let f2 = 4 * f1+ y <- replicateM n (f1 +. rand 0 f2)+ let sp = klangSpec y (map (f1 /) y) (replicate n 0)+ return (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) =<< clone 2 cs
@@ -0,0 +1,30 @@+-- comb delay sweeps (jmcc)+module Sound.SC3.Graph.JMCC_comb_delay_sweeps where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import System.Random {- random -}++type ST = (Double,Double,StdGen)++wander :: ST -> ST+wander (s,e,g) =+ let (s',g') = randomR (-7,8) g+ (e',g'') = randomR (-7,8) g'+ in (foldToRange 50 120 (s + s')+ ,foldToRange 50 120 (e + e')+ ,g'')++-- > Sound.SC3.UGen.Dot.draw (fst (cds (60,61,mkStdGen 3567824)))+cds :: ST -> (UGen,ST)+cds st =+ let (s,e,g) = wander st+ l = line KR (constant s) (constant e) 4 DoNothing+ w = whiteNoise 'α' AR * 0.005+ d = 1 / midiCPS l+ c = 1 / midiCPS (constant s)+ o = combC w 0.01 d (c * 1000)+ in (pan2 o (rand 'α' (-1) 1) 1,(s,e,g))++main :: IO ()+main = overlapTextureS (4/3,4/3,9,maxBound) cds (60,61,mkStdGen 3567824)
@@ -0,0 +1,34 @@+-- contamination zone (jmcc)+module Sound.SC3.Graph.JMCC_contamination_zone where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++cz :: UGen+cz =+ let f = expRand 'α' 800 8000+ p = let e = lfNoise1 'β' KR (rand 'γ' 0 3) * 0.0008 + 0.0022+ in pinkNoise 'δ' AR * e+ s = sinOsc KR (linRand 'ε' 0 1 0) 0 * (0.7 * f) + f+ k = let sp = klankSpec_mce (randN 4 'ζ' 50 2000)+ (mce [1,1,1,1])+ (randN 4 'η' 0.2 4)+ in abs (klank p 1 0 1 sp) * choose 'θ' (mce2 (-1) 1)+ r = rlpf k s 0.1+ a = lfPulse KR (linRand 'ι' 0 150 0) 0 (rand 'κ' 0.2 0.4)+ in pan2 r (lfNoise1 'λ' KR (rand 'μ' 0 1)) a++cz_pp :: UGen -> UGen+cz_pp =+ let f x = allpassN x 0.04 (randN 2 'ν' 0 0.04) 16+ in useq 'ξ' 6 f++main :: IO ()+main = overlapTextureU_pp (3,8,4,maxBound) cz 2 cz_pp++{-+audition (out 0 cz)+audition (out 0 (cz_pp cz))+-}
@@ -0,0 +1,18 @@+-- coolant (jmcc)+module Sound.SC3.Graph.JMCC_coolant where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++coolant :: UGen+coolant =+ let p = 20+ s = onePole (uclone 'α' p (brownNoise 'β' AR) * 0.0015) 0.95+ n = replicate p 1+ sp = mce [klankSpec (uclone' 'γ' p (rand 'δ' 40 2400)) n n+ ,klankSpec (uclone' 'ε' p (rand 'ζ' 40 2400)) n n]+ in klank s 1 0 1 (mceTranspose sp)++main :: IO ()+main = xfadeTextureU (4,4,maxBound) coolant
@@ -0,0 +1,25 @@+-- cymbalism accellerando (jmcc)+module Sound.SC3.Graph.JMCC_cymbalism_accelerando where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++enumFromN :: Enum a => a -> Int -> [Int]+enumFromN e i = let j = fromEnum e in [j .. j + i]++cymbalism_accellerando :: UGen+cymbalism_accellerando =+ let y n = let f1 = rand n 500 2500+ f2 = rand n 0 8000+ f = map (\e -> rand e f1 (f1 + f2)) (enumFromN n 15)+ rt = map (\e -> rand e 1 5) (enumFromN n 15)+ in klankSpec f (replicate 15 1) rt+ z = mce2 (y 'α') (y 'β')+ w = whiteNoise 'γ' AR * 0.02+ tf = xLine KR (linRand 'δ' 0.5 4.5 0) (rand 'ε' 0.5 35.5) 12 DoNothing+ t = impulse AR tf 0+ s = decay t 0.004 * w+ in klank s 1 0 1 (mceTranspose z)++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) cymbalism_accellerando
@@ -0,0 +1,27 @@+-- cymbalism (jmcc)+module Sound.SC3.Graph.JMCC_cymbalism_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++cymbalism :: (Functor m,UId m) => m UGen+cymbalism = do+ let p = replicate 15+ f1 <- rand 500 2500+ f2 <- rand 0 8000+ let y = do f <- sequence (p (rand f1 (f1 + f2)))+ rt <- sequence (p (rand 1 5))+ return (klankSpec f (p 1) rt)+ z <- clone 2 y+ n <- fmap (* 0.03) (whiteNoise AR)+ tf <- rand 0.5 3.5+ let t = impulse AR tf 0+ s = decay t 0.004 * n+ return (klank s 1 0 1 (mceTranspose z))++main :: IO ()+main = overlapTextureU (3,6,6,maxBound) =<< cymbalism++{-+main = audition . out 0 =<< cymbalism+-}
@@ -0,0 +1,23 @@+-- data space (jmcc)+module Sound.SC3.Graph.JMCC_data_space where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++data_space :: UGen+data_space =+ let r e = rand e 0+ p0 = lfPulse KR (r 'α' 200) 0 (r 'β' 1)+ p1 = lfPulse KR (r 'γ' 40) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+ p2 = lfPulse KR (r 'η' 20) 0 (r 'θ' 1)+ p3 = lfPulse KR (r 'ι' 4) 0 (r 'κ' 1) * r 'λ' 8000 + r 'μ' 2000+ p4 = lfPulse KR (r 'ν' 20) 0 (r 'ξ' 1)+ p5 = lfPulse KR (r 'ο' 4) 0 (r 'π' 1) * r 'ρ' 8000 + r 'σ' 2000+ f = p0 * p1 + p2 * p3 + p4 * p5+ dt = rand 'τ' 0.15 0.35+ o = lfPulse AR f 0 0.5 * 0.04+ l = lfNoise0 'υ' KR (r 'φ' 3) * 0.8+ in combL (pan2 o l 1) dt dt 3++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) data_space
@@ -0,0 +1,24 @@+-- data space (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_data_space_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++data_space :: UId m => m UGen+data_space = do+ let r = rand 0+ let p0 = lfPulse KR #(r 200) 0 #(r 1)+ p1 <- lfPulse KR #(r 40) 0 #(r 1) *. r 8000 .+. r 2000+ let p2 = lfPulse KR #(r 20) 0 #(r 1)+ p3 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+ let p4 = lfPulse KR #(r 20) 0 #(r 1)+ p5 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+ let f = p0 * p1 + p2 * p3 + p4 * p5+ dt <- rand 0.15 0.35+ let o = lfPulse AR f 0 0.5 * 0.04+ l <- lfNoise0 KR #(r 3) .* 0.8+ return (combL (pan2 o l 1) dt dt 3)++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) =<< data_space
@@ -0,0 +1,21 @@+-- deep trip (jmcc)+module Sound.SC3.Graph.JMCC_deep_trip where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++deep_trip :: UGen+deep_trip =+ let f = midiCPS (lfNoise1 'α' KR (rand 'β' 0 0.3) * 60 + 70)+ a'' = sinOsc KR (rand 'γ' 0 40) 0 * 0.1+ a' = max 0 (lfNoise1 'δ' KR (rand 'ε' 0 8) * a'')+ a = lfNoise2 'ζ' AR (f * rand 'η' 0 0.5) * a'+ z = sinOsc AR f 0 * a+ s = pan2 z (lfNoise1 'θ' KR (rand 'ι' 0 5)) 1+ c0 = combN s 0.5 (randN 2 'κ' 0.3 0.5) 20+ c1 = combN s 0.5 (randN 2 'λ' 0.3 0.5) 20+ in s + c0 + c1++main :: IO ()+main = overlapTextureU (4,12,4,maxBound) deep_trip
@@ -0,0 +1,18 @@+-- default (jmcc)+module Sound.SC3.Graph.JMCC_default where++import Data.Default {- data-default -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++pattern :: P_Bind+pattern =+ [(K_instr,psynth def)+ ,(K_note,pxrand 'α' [0,1,5,7,9] inf)+ ,(K_octave,prand 'β' [3,4,5,6] inf)+ ,(K_dur,pwrand 'γ' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)+ ,(K_amp,pbrown 'δ' 0.01 0.2 0.01 inf)+ ,(K_param "pan",pbrown 'ε' (-1) 1 0.25 inf)]++main :: IO ()+main = audition (pbind pattern)
@@ -0,0 +1,20 @@+-- demanding studies (jmcc)+module Sound.SC3.Graph.JMCC_demanding_studies where++import Sound.SC3.ID {- hsc3 -}++demanding_studies :: UGen+demanding_studies =+ let s1 = drand 'α' dinf (mce [72, 75, 79, 82])+ s2 = drand 'β' 1 (mce [82, 84, 86])+ s3 = dseq 'γ' dinf (mce [72, 75, 79, s2])+ x = mouseX KR 5 13 Linear 0.2+ tr = impulse KR x 0+ f = demand tr 0 (mce [midiCPS (s1 - 12), midiCPS s3])+ o1 = sinOsc AR (f + mce2 0 0.7) 0+ o2 = saw AR (f + mce2 0 0.7) * 0.3+ o3 = cubed (distort (log (distort (o1 + o2))))+ in o3 * 0.1++main :: IO ()+main = audition (out 0 demanding_studies)
@@ -0,0 +1,31 @@+-- doppler (jmcc)/(rd)+module Sound.SC3.Graph.JMCC_doppler where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++-- observer at origin, signal 's' at coordinates ('x','y')+doppler :: (UGen,UGen) -> UGen -> UGen+doppler (x,y) s =+ let d = hypot x y+ a = 40 / squared d+ maxd = 110+ in delayL s (maxd / 344) (d / 344) * a++-- straight line at x axis from (-y,y) over dt seconds+line_x :: UGen -> UGen -> UGen -> (UGen,UGen)+line_x x y dt = (x,line KR (-y) y dt RemoveSynth)++-- ellipse centered at origin and interecting x at +-a and y at +-b.+-- traversal is over dt seconds+ellipse :: UGen -> UGen -> UGen -> (UGen,UGen)+ellipse a b dt =+ let t = line KR (-pi/2) (pi * 3/2) dt RemoveSynth+ in (a * cos t,b * sin t)++main :: IO ()+main = do+ let s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3+ withSC3 (do play (out 0 (doppler (line_x 10 100 6) s))+ wait 8+ play (out 0 (doppler (ellipse 10 75 12) s)))
@@ -0,0 +1,80 @@+-- early space music LP, side 2 (jmcc)+module Sound.SC3.Graph.JMCC_early_space_music_lp_side_two where++import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Random.Gen as R {- hsc3-lang -}+import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import qualified System.Random as R {- random -}++m1 :: UGen+m1 =+ let a = rand 'α' 0 20+ b = rand 'β' 0 5000+ c = rand 'γ' 0 20+ p = rand 'δ' (-1) 1+ in pan2 (sinOsc AR (sinOsc AR a 0 * 0.1 * b + b) 0 * sinOsc KR c 0 * 0.08 + 0.08) p 1++m2 :: UGen+m2 =+ let a0 = rand 'ε' 40 240+ a1 = a0 + rand 'ζ' (-1) 1+ a = mce2 a0 a1+ b = expRand 'η' 50 2400+ c = mce2 (a0 + rand 'θ' (-1) 1) (a1 + rand 'ι' (-1) 1)+ in sinOsc AR (sinOsc AR a 0 * rand 'κ' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025++m3 :: UGen+m3 =+ let f = midiCPS (rand 'λ' 60 100)+ in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'μ' KR (f * mce2 0.15 0.16) * 0.1++-- audition (out 0 m4)+m4 :: UGen+m4 =+ let a = lfPulse KR (expRand 'ν' 0.2 1.2) 0 (rand 'ξ' 0.1 0.2)+ o i = let r = let (p,q) = mce2c (expRandN 2 i 0.1 20)+ in xLine KR p q 25.6 DoNothing+ f = midiCPS (rand i 24 96)+ e = max 0 (sinOsc KR (r * rand i 0.9 1.1) (rand i 0 (2 * pi)) * 0.1 - 0.05)+ s = fSinOsc AR (f * i + f) 0 * e * (1 / (i + 1))+ in pan2 s (rand i (-1) 1) 1+ in sum (map o [0..11]) * a++-- audition (out 0 (m6 * 0.5))+m6 :: UGen+m6 =+ let f = midiCPS (lfNoise1 'ο' KR (rand 'π' 0 0.3) * 60 + 70)+ a0 = lfNoise2 'ρ' AR (f * rand 'σ' 0 0.5)+ a1 = max 0 (lfNoise1 'τ' KR (rand 'υ' 0 8) * sinOsc KR (rand 'φ' 0 40) 0 * 0.1)+ z = sinOsc AR f 0 * a0 * a1+ in pan2 z (lfNoise1 'χ' KR (rand 'ψ' 0 5)) 1++enumFromN :: Enum a => a -> Int -> [Int]+enumFromN e i = let j = fromEnum e in [j .. j + i]++-- audition (out 0 m7)+m7 :: UGen+m7 =+ let p = 15+ k = let y z = let fr = mceChannels (expRandN p z 100 6000)+ rt = mceChannels (randN p z 2 6)+ in klankSpec fr (replicate p 1) rt+ in mce2 (y 'ω') (y 'Α')+ f = xLine KR (expRand 'Β' 40 300) (expRand 'Γ' 40 300) 12 DoNothing+ t = lfPulse AR f 0 (rand 'Δ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'Ε' KR (rand 'Ζ' 0 8))+ in distort (klank t 1 0 1 (mceTranspose k)) * 0.3++esmlp2 :: R.RandomGen g => g -> (UGen, g)+esmlp2 = R.choose (map (* 0.3) [m1,m2,m3,m4,m6,m7])++-- Sound.SC3.UGen.Dot.draw (esmlp2_pp (sinOsc AR 440 0))+esmlp2_pp :: UGen -> UGen+esmlp2_pp i =+ let c z = combN i 0.3 (mce2 (rand z 0.1 0.3) (rand z 0.12 0.32)) 8+ in sum (map c ['Η'..'Θ']) * 0.3++main :: IO ()+main = do+ let g = R.mkStdGen 0+ overlapTextureS_pp (4,2,6,maxBound) esmlp2 g 2 esmlp2_pp
@@ -0,0 +1,20 @@+-- harmonic swimming (jmcc)+module Sound.SC3.Graph.JMCC_harmonic_swimming where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++harmonic_swimming :: UGen+harmonic_swimming =+ let a = 0.02+ f = 50+ p = 20::Int+ l = line KR 0 (- a) 60 DoNothing+ o h = let r = randN 2 h 2 8+ n = lfNoise1 h KR r+ e = max 0 (n * a + l)+ in fSinOsc AR (f * (fromIntegral h + 1)) 0 * e+ in sum (map o [0..p])++main :: IO ()+main = audition (out 0 harmonic_swimming)
@@ -0,0 +1,19 @@+-- harmonic swimming (jmcc)+module Sound.SC3.Graph.JMCC_harmonic_swimming_m where++import Sound.SC3.Monad {- hsc3 -}++harmonic_swimming :: UId m => m UGen+harmonic_swimming =+ let a = 0.02+ f = 50+ p = 20+ l = line KR 0 (- a) 60 DoNothing+ o h = do r <- clone 2 (rand 2 8)+ n <- lfNoise1 KR r+ let e = max 0 (n * a + l)+ return (fSinOsc AR (f * (h + 1)) 0 * e)+ in fmap sum (mapM o [0..p])++main :: IO ()+main = audition . out 0 =<< harmonic_swimming
@@ -0,0 +1,18 @@+-- harmonic tumbling (jmcc)+module Sound.SC3.Graph.JMCC_harmonic_tumbling_m where++import Sound.SC3.Monad {- hsc3 -}++harmonic_tumbling :: UId m => m UGen+harmonic_tumbling = do+ let f = 80+ p = 10+ t = xLine KR (mce2 10 11) 0.1 60 DoNothing+ o h = do n <- dust KR t+ r <- rand 0 0.5+ let e = decay2 (n * 0.02) 0.005 r+ return (fSinOsc AR (f * (h + 1)) 0 * e)+ fmap sum (mapM o [0..p])++main :: IO ()+main = audition . out 0 =<< harmonic_tumbling
@@ -0,0 +1,14 @@+-- hell is busy (jmcc)+module Sound.SC3.Graph.JMCC_hell_is_busy where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++hib :: UGen+hib =+ let o = fSinOsc AR (400 + rand 'α' 0 2000) 0+ a = lfPulse KR (1 + rand 'β' 0 10.0) (rand 'γ' 0 0.7) 0.04+ in pan2 (o * a) (rand 'δ' (-1) 1) 1++main :: IO ()+main = overlapTextureU (4,4,8,maxBound) hib
@@ -0,0 +1,11 @@+-- lfo modulation (jmcc)+module Sound.SC3.Graph.JMCC_lfo_modulation where++import Sound.SC3 {- hsc3 -}++main :: IO ()+main =+ let o = fSinOsc KR 0.05 0 * 80 + 160+ p = fSinOsc KR (mce2 0.6 0.7) 0 * 3600 + 4000+ s = rlpf (lfPulse AR o 0 0.4 * 0.05) p 0.2+ in audition (out 0 (combL s 0.3 (mce2 0.2 0.25) 2))
@@ -0,0 +1,31 @@+-- modal space (jmcc)+module Sound.SC3.Graph.JMCC_modal_space where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++ms :: UGen -> UGen -> UGen+ms n r =+ let x = mouseX KR 0 15 Linear 0.1+ k = degreeToKey 0 x 12+ o = sinOsc AR (midiCPS (r + k + n * 0.04)) 0 * 0.1+ t = lfPulse AR (midiCPS (mce2 48 55)) 0.15 0.5+ f = midiCPS (sinOsc KR 0.1 0 * 10 + r)+ d = rlpf t f 0.1 * 0.1+ m = o + d+ in combN m 0.31 0.31 2 + m++modal_space :: UGen+modal_space =+ let n = uclone 'α' 2 (lfNoise1 'β' KR 3)+ in (ms n 48 + ms n 72) * 0.25++run :: Transport m => m ()+run = do+ let p = [0,2,3.2,5,7,9,10]+ _ <- async (b_alloc_setn1 0 0 p)+ play (out 0 modal_space)++main :: IO ()+main = withSC3 run
@@ -0,0 +1,13 @@+-- moto rev (jmcc)+module Sound.SC3.Graph.JMCC_moto_rev where++import Sound.SC3 {- hsc3 -}++moto_rev :: UGen+moto_rev =+ let f = sinOsc KR 0.2 0 * 10 + 21+ s = lfPulse AR f (mce2 0 0.1) 0.1+ in clip2 (rlpf s 100 0.1) 0.4++main :: IO ()+main = audition (out 0 moto_rev)
@@ -0,0 +1,62 @@+-- mridangam (jmcc)+module Sound.SC3.Graph.JMCC_mridangam where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++spe3_mridangam :: Synthdef+spe3_mridangam =+ let t_amp = tr_control "t_amp" 1+ n = whiteNoise 'α' AR * 70+ e = decay2 t_amp 0.002 0.1+ o = distort (resonz (n * e) (midiCPS 60) 0.02 * 4) * 0.4+ in synthdef "mridangam" (out 0 o)++spe3_drone :: Synthdef+spe3_drone =+ let s1 = saw AR (midiCPS (mce2 60 60.04))+ s2 = saw AR (midiCPS (mce2 67 67.04))+ o = lpf (s1 + s2) (midiCPS 108) * 0.007+ in synthdef "drone" (out 0 o)++p :: Fractional n => [P n]+p =+ [pseq [0.0] 10+ -- intro+ ,pseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 2+ ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.0] 2+ ,pseq [0.9,0.0,0.0,0.2,0.0,0.2,0.0,0.2,0.0,0.0] 2+ ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.2] 2+ -- solo+ ,prand 'β' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.2,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.2] 1+ ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.2,0.7,0.2,0.0] 1+ ,pseq [0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.2,0.2] 1+ ,pseq [0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.2,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.4,0.0,0.4,0.0,0.4,0.0,0.4,0.0] 1+ ,pseq [0.9,0.0,0.0,0.4,0.0,0.0,0.4,0.2,0.4,0.2] 1+ ,pseq [0.9,0.0,0.2,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.0,0.0,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.7,0.7,0.0,0.0,0.2,0.2,0.2,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 1] 30+ -- tehai+ ,pseq [2.0,0.0,0.2,0.5,0.0,0.2,0.9+ ,1.5,0.0,0.2,0.5,0.0,0.2,0.9+ ,1.5,0.0,0.2,0.5,0.0,0.2] 3+ -- sam+ ,pseq [5] 1]++act :: Transport m => m ()+act = do+ play spe3_drone+ _ <- async (d_recv spe3_mridangam)+ let i = Instr_Def spe3_mridangam False+ play (pmono [(K_instr,pinstr' i),(K_id,100)+ ,(K_param "t_amp",pseq p 1),(K_dur,1/8)])++main :: IO ()+main = withSC3 act
@@ -0,0 +1,22 @@+-- noise burst sweep (jmcc)+module Sound.SC3.Graph.JMCC_noise_burst_sweep where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++nbs :: ID a => a -> UGen+nbs e =+ let n = uclone e 2 (whiteNoise e AR)+ lfoRate = rand e (-1) 1 + mouseX KR 10 60 Exponential 0.2+ amp = max 0 (lfSaw KR lfoRate (-1))+ cfreq = mouseY KR 400 8000 Exponential 0.2+ freq = sinOsc KR 0.2 0 * cfreq + (1.05 * cfreq)+ in resonz (n * amp) freq 0.1++main :: IO ()+main = overlapTextureU (4,2,4,maxBound) (nbs 'α')++{-+audition (out 0 (nbs 'α'))+-}
@@ -0,0 +1,18 @@+-- noise modulated sines (jmcc)+module Sound.SC3.Graph.JMCC_noise_modulated_sines where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++nms :: UGen+nms =+ let f = midiCPS (rand 'α' 60 100)+ o = fSinOsc AR (mce2 f (f + 0.2)) 0+ a = lfNoise2 'β' KR (f * mce2 0.15 0.16) * 0.1+ in o * a++nms_pp :: (UGen -> UGen)+nms_pp i = combN i 0.3 0.3 4 + mceReverse i++main :: IO ()+main = overlapTextureU_pp (4,4,4,maxBound) nms 2 nms_pp
@@ -0,0 +1,22 @@+-- overlap-add (jmcc)+module Sound.SC3.Graph.JMCC_overlap_add where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++sine :: UGen+sine =+ let r0 = expRand 'α' 500 1400+ r1 = rand 'β' (-1) 1+ in pan2 (sinOsc AR r0 0) r1 0.01++noise :: UGen+noise =+ let n0 = whiteNoise 'γ' AR+ r0 = expRand 'δ' 800 8400+ r1 = rand 'ε' (-1) 1+ in pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25++main :: IO ()+main = audition (ppar [overlapTextureP (4,4,6,maxBound) sine+ ,overlapTextureP (4,4,6,maxBound) noise])
@@ -0,0 +1,28 @@+-- plucked strings (jmcc)+module Sound.SC3.Graph.JMCC_plucked_strings_m where++import Sound.SC3.Monad {- hsc3 -}++plucked_strings :: UId m => m UGen+plucked_strings = do+ let dt = do r0 <- rand 60 90+ return (1 / midiCPS (floorE r0))+ i = do r0 <- rand 2 2.2+ n0 <- dust AR 0.5+ r1 <- rand 0.05 0.15+ r2 <- rand 0 (pi * 2)+ r3 <- iRand 0 2+ let s0 = impulse AR r0 0.3+ s1 = n0 * 0.3+ s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3+ return (select r3 (mce [s0,s1,s2]))+ s = do n0 <- pinkNoise AR+ r1 <- rand (-1) 1+ im <- i+ dt' <- dt+ let t = decay im 0.1 * n0 * 0.1+ return (pan2 (combL t dt' dt' 4) r1 1)+ fmap sum (sequence (replicate 5 s))++main :: IO ()+main = audition . out 0 =<< plucked_strings
@@ -0,0 +1,25 @@+-- police state (jmcc)+module Sound.SC3.Graph.JMCC_police_state where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect {- hsc3 -}++nd :: UGen+nd =+ let n = lfNoise2 'α' AR (rand 'β' 80 120)+ f = sinOsc KR (rand 'γ' 0.02 0.12) (rand 'δ' 0 (pi * 2)) *+ rand 'ε' 0 600 ++ rand 'ζ' 700 1300+ in pan2 (sinOsc AR f 0 * n * 0.1) (rand 'η' (-1) 1) 1++police_state :: UGen+police_state =+ let ns = uclone 'θ' 4 nd+ n0 = uclone 'ι' 2 (lfNoise2 'κ' KR 0.4)+ n1 = lfNoise2 'λ' AR (n0 * 90 + 620)+ n2 = lfNoise2 'μ' KR (mce2 0.3 0.301)+ e = n1 * (n2 * 0.15 + 0.18)+ in combL (mix ns + e) 0.3 0.3 3++main :: IO ()+main = audition (out 0 police_state)
@@ -0,0 +1,25 @@+-- police state (jmcc)+module Sound.SC3.Graph.JMCC_police_state_m where++import Sound.SC3.Monad {- hsc3 -}++police_state :: UId m => m UGen+police_state = do+ let nd = do r0 <- rand 0.02 0.12+ r1 <- rand 0 (pi * 2)+ r2 <- rand 0 600+ r3 <- rand 700 1300+ r4 <- rand (-1) 1+ r5 <- rand 80 120+ n0 <- lfNoise2 AR r5+ let f = sinOsc KR r0 r1 * r2 + r3+ return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)+ ns <- clone 4 nd+ n0 <- clone 2 (lfNoise2 KR 0.4)+ n1 <- lfNoise2 AR (n0 * 90 + 620)+ n2 <- lfNoise2 KR (mce2 0.3 0.301)+ let e = n1 * (n2 * 0.15 + 0.18)+ return (combL (mix ns + e) 0.3 0.3 3)++main :: IO ()+main = audition . out 0 =<< police_state
@@ -0,0 +1,15 @@+-- pond life (jmcc)+module Sound.SC3.Graph.JMCC_pond_life where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pond_life :: UGen+pond_life =+ let f0 = 20 + rand 'α' 0 30+ f1 = fSinOsc KR f0 0 * rand 'β' 100 400 + linRand 'γ' 500 2500 0+ a = lfPulse KR (3 / rand 'δ' 1 9) (rand 'ε' 0.2 0.5) 0.04+ in pan2 (sinOsc AR f1 0 * a) (rand 'ζ' (-1) 1) 0.5++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) pond_life
@@ -0,0 +1,17 @@+-- pond life (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_pond_life_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pond_life :: UId m => m UGen+pond_life = do+ let f = fSinOsc KR (20 + #(rand 0 30)) 0+ * #(rand 100 400)+ + #(linRand 500 2500 0)+ let a = lfPulse KR (3 / #(rand 1 9)) #(rand 0.2 0.5) 0.04+ return (pan2 (sinOsc AR f 0 * a) #(rand (-1) 1) 0.5)++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) =<< pond_life
@@ -0,0 +1,25 @@+-- pulsing bottles (jmcc)+module Sound.SC3.Graph.JMCC_pulsing_bottles where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pulsing_bottles :: UGen+pulsing_bottles =+ let r = let n = whiteNoise 'α' AR+ r0 = rand 'α' 4 14+ r1 = rand 'α' 0 0.7+ r2 = rand 'α' 400 7400+ in resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01+ s = let f = rand 'β' 0.1 0.5+ p = rand 'β' 0 (pi * 2)+ in sinOsc KR f p+ in sum (zipWith3 pan2 (uclone' 'α' 6 r) (uclone' 'β' 6 s) (repeat 1))++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) pulsing_bottles++{-+audition (out 0 pulsing_bottles)+-}
@@ -0,0 +1,22 @@+-- pulsing bottles (jmcc)+module Sound.SC3.Graph.JMCC_pulsing_bottles_m where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pulsing_bottles :: UId m => m UGen+pulsing_bottles = do+ let r = do n <- whiteNoise AR+ r0 <- rand 4 14+ r1 <- rand 0 0.7+ r2 <- rand 400 7400+ return (resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01)+ s = do f <- rand 0.1 0.5+ p <- rand 0 (pi * 2)+ return (sinOsc KR f p)+ u = liftM2 (\x y -> pan2 x y 1) r s+ fmap sum (sequence (replicate 6 u))++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
@@ -0,0 +1,24 @@+-- rails (jmcc)+module Sound.SC3.Graph.JMCC_rails where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rand2 :: ID a => a -> UGen -> UGen+rand2 e n = rand e (-n) n++rails :: UGen+rails =+ let n = 20 -- resonant modes+ e = dust 'α' AR 100 * 0.04 -- excitation+ f = xLine KR 3000 300 8 DoNothing -- sweep filter down+ l = line KR (rand2 'β' 1) (rand2 'γ' 1) 8 DoNothing -- sweep pan+ r = uclone' 'δ' n (200 + linRand 'ε' 0 3000 0) -- resonant frequencies+ a = replicate n 1+ t = uclone' 'ζ' n (0.2 + rand 'η' 0 1) -- ring times+ k = klank (resonz e f 0.2) 1 0 1 (klankSpec r a t)+ in pan2 k l 1++main :: IO ()+main = overlapTextureU (3,2,4,maxBound) rails
@@ -0,0 +1,17 @@+-- random panning sines (jmcc)+module Sound.SC3.Graph.JMCC_random_panning_sines where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rps :: UGen+rps =+ let nd = let o = fSinOsc AR (linRand 'α' 80 2000 0) 0+ l = lfNoise1 'β' KR (rand 'γ' 0.8 1.2)+ a = lfNoise1 'δ' KR (rand 'ε' 0.82 0.98)+ in pan2 o l a+ in mix (uclone 'ζ' 8 nd) * (0.4 / 8)++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) rps
@@ -0,0 +1,18 @@+-- random panning sines (jmcc)+module Sound.SC3.Graph.JMCC_random_panning_sines_m where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rps :: UId m => m UGen+rps = do+ let nd = do r0 <- linRand 80 2000 0+ let o = fSinOsc AR r0 0+ l <- lfNoise1 KR =<< rand 0.8 1.2+ a <- lfNoise1 KR =<< rand 0.82 0.98+ return (pan2 o l a)+ r <- clone 8 nd+ return (mix r * (0.4 / 8))++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) =<< rps
@@ -0,0 +1,15 @@+-- random pulsations (jmcc)+module Sound.SC3.Graph.JMCC_random_pulsations where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rp :: UGen+rp =+ let o1 = fSinOsc AR (rand 'α' 0 2000) 0 * 0.02+ o2 = sinOsc AR (linRand 'α' 8 88 0) 0+ o3 = sinOsc KR (rand 'α' 0.3 0.8) (rand 'α' 0 (2 * pi)) * 0.7+ in pan2 (o1 `amClip` o2) o3 1++main :: IO ()+main = overlapTextureU (5,2,8,maxBound) rp
@@ -0,0 +1,14 @@+-- random sine waves (jmcc)+module Sound.SC3.Graph.JMCC_random_sine_waves where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rsw :: UGen+rsw =+ let f = rand 'α' 0 2000+ o = fSinOsc AR f 0 * 0.02+ in pan2 o (rand 'β' (-1) 1) 1++main :: IO ()+main = overlapTextureU (2,5,12,maxBound) rsw
@@ -0,0 +1,11 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_random_sine_waves_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+ let rsw = pan2 (fSinOsc AR #(rand 0 2000) 0 * 0.02) #(rand (-1) 1) 1+ overlapTextureU (2,5,12,maxBound) rsw
@@ -0,0 +1,12 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF she #-}+module Sound.SC3.Graph.JMCC_random_sine_waves_she where++import Control.Applicative {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+ s <- (|pan2 ((|fSinOsc ~AR (rand 0 2000) ~0|) .* 0.02) (rand (-1) 1) ~1|)+ overlapTextureU (2,5,12,maxBound) s
@@ -0,0 +1,16 @@+-- resonant dust (jmcc)+module Sound.SC3.Graph.JMCC_resonant_dust where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++resonant_dust :: UGen+resonant_dust =+ let rf = let st = rand 'α' 80 2080+ en = st + (rand 'β' (-0.5) 0.5 * st)+ in xLine KR st en 9 DoNothing+ d = dust 'γ' AR (rand 'δ' 50 850) * 0.3+ in pan2 (resonz d rf 0.1) (rand 'ε' (-1) 1) 1++main :: IO ()+main = overlapTextureU (5,2,9,maxBound) resonant_dust
@@ -0,0 +1,16 @@+-- resonant dust (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_resonant_dust_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++resonant_dust :: UId m => m UGen+resonant_dust = do+ st <- rand 80 2080+ let en = st + (st * #(rand (-0.5) 0.5))+ rf = xLine KR st en 9 DoNothing+ return (pan2 (resonz (#(dust AR #(rand 50 850)) * 0.3) rf 0.1) #(rand (-1) 1) 1)++main :: IO ()+main = overlapTextureU (5,2,9,maxBound) =<< resonant_dust
@@ -0,0 +1,21 @@+-- reverberated sine percussion (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp where++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+ let d = 6+ c = 5+ a = 4+ s_ = do return (resonz (#(dust AR (2 / constant d)) * 50) (200 + #(rand 0 3000)) 0.003)+ x_ i = do return (allpassN i 0.05 #(clone 2 (rand 0 0.05)) 1)+ s <- fmap sum (sequence (replicate d s_))+ y <- do let z = delayN s 0.048 0.48+ return (mix (combL z 0.1 (#(lfNoise1 KR #(clone c (rand 0 0.1))) * 0.04 + 0.05) 15))+ x <- chainM a x_ y+ return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
@@ -0,0 +1,25 @@+-- reverberated sine percussion (jmcc)+module Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m where++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+ let d = 6+ c = 5+ a = 4+ s_ = do n <- dust AR (2 / constant d)+ r <- rand 0 3000+ return (resonz (n * 50) (200 + r) 0.003)+ x_ i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 1)+ s <- fmap sum (sequence (replicate d s_))+ y <- do let z = delayN s 0.048 0.48+ r <- clone c (rand 0 0.1)+ n <- lfNoise1 KR r+ return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))+ x <- chainM a x_ y+ return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
@@ -0,0 +1,23 @@+-- ring modulated klank (jmcc)+module Sound.SC3.Graph.JMCC_ring_modulated_klank where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rmk :: UGen+rmk =+ let p = 8+ k = let sp = klankSpec_mce (randN p 'α' 100 10000)+ (mce (replicate p 1))+ (randN p 'α' 0.2 1)+ in klank (dust 'α' AR 20 * 0.02) 1 0 1 sp+ f = lfNoise2 'α' KR (rand 'α' 0.1 0.4) * 200 + rand 'α' 350 400+ in pan2 (sinOsc AR f 0 * k) (rand 'α' (-1) 1) 1++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) rmk++{-+audition (out 0 rmk)+-}
@@ -0,0 +1,18 @@+-- sample and hold liquidities (jmcc)+module Sound.SC3.Graph.JMCC_sample_and_hold_liquidities where++import Sound.SC3.ID {- hsc3 -}++shl :: UGen+shl =+ let r = mouseX KR 1 200 Exponential 0.1+ t = recip r+ c = impulse KR r 0.4+ cf = mouseY KR 100 8000 Exponential 0.1+ f = latch (whiteNoise 'α' KR * cf * 0.5 + cf) c+ p = latch (whiteNoise 'β' KR) c+ i = pan2 (sinOsc AR f 0 * decay2 c (t * 0.1) (t * 0.9)) p 1+ in combN i 0.3 0.3 2++main :: IO ()+main = audition (out 0 shl)
@@ -0,0 +1,18 @@+-- saucer base (jmcc)+module Sound.SC3.Graph.JMCC_saucer_base where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++saucer_base :: UGen+saucer_base =+ let a = rand 'α' 0 20+ b = rand 'β' 0 1000+ c = rand 'γ' 0 5000+ p = rand 'δ' (-1) 1+ o = sinOsc AR a 0 * b + (1.1 * b)+ o' = sinOsc AR o 0 * c + (1.1 * c)+ in pan2 (sinOsc AR o' 0 * 0.1) p 1++main :: IO ()+main = overlapTextureU (2,6,4,maxBound) saucer_base
@@ -0,0 +1,20 @@+-- sawed cymbals (jmcc)+module Sound.SC3.Graph.JMCC_sawed_cymbals where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sawed_cymbals :: UGen+sawed_cymbals =+ let y = let f1 = rand 'α' 500 2500+ f2 = rand 'α' 0 8000+ f = uclone' 'α' 15 (rand 'α' f1 (f1 + f2))+ rt = uclone' 'α' 15 (rand 'α' 2 6)+ in klankSpec f (replicate 15 1) rt+ z = uclone 'α' 2 y+ fS = xLine KR (rand 'α' 0 600) (rand 'β' 0 600) 12 DoNothing+ in klank (lfSaw AR fS 0 * 0.0005) 1 0 1 (mceTranspose z)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) sawed_cymbals
@@ -0,0 +1,13 @@+-- scratchy (jmcc)+module Sound.SC3.Graph.JMCC_scratchy where++import Sound.SC3.ID {- hsc3 -}++scratchy :: UGen+scratchy =+ let f m = brownNoise m AR * 0.5 - 0.49+ n = mce2 (f 'α') (f 'β')+ in rhpf (max n 0 * 20) 5000 1++main :: IO ()+main = audition (out 0 scratchy)
@@ -0,0 +1,13 @@+-- scratchy-m (jmcc)+module Sound.SC3.Graph.JMCC_scratchy_m where++import Sound.SC3.Monad {- hsc3 -}++scratchy :: UId m => m UGen+scratchy = do+ n <- clone 2 (brownNoise AR)+ let f = max (n * 0.5 - 0.49) 0 * 20+ return (rhpf f 5000 1)++main :: IO ()+main = audition . out 0 =<< scratchy
@@ -0,0 +1,26 @@+-- sidereal time (jmcc)+module Sound.SC3.Graph.JMCC_sidereal_time where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sidereal_time :: UGen+sidereal_time =+ let p = 15+ z = let y = let fr = uclone' 'α' p (expRand 'β' 100 6000)+ rt = uclone' 'γ' p (rand 'δ' 2 6)+ in klankSpec fr (replicate p 1) rt+ in uclone 'ε' 2 y+ f = xLine KR (expRand 'ζ' 40 300) (expRand 'η' 40 300) 12 DoNothing+ t = let e = lfNoise2 'θ' KR (rand 'ι' 0 8)+ in lfPulse AR f 0 (rand 'κ' 0.1 0.9) * 0.002 * max 0 e+ o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+ in combN o 0.6 (rand 'λ' 0.1 0.6) 8 + mceReverse o++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) sidereal_time++{-+audition (out 0 sidereal_time)+-}
@@ -0,0 +1,29 @@+-- sidereal time (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_sidereal_time_hp where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sidereal_time :: UId m => m UGen+sidereal_time = do+ let p = 15+ z <- let y = do+ fr <- replicateM p (expRand 100 6000)+ rt <- replicateM p (rand 2 6)+ return (klankSpec fr (replicate p 1) rt)+ in clone 2 y+ let f = xLine KR #(expRand 40 300) #(expRand 40 300) 12 DoNothing+ let t = lfPulse AR f 0 #(rand 0.1 0.9)+ * max 0 #(lfNoise2 KR #(rand 0 8))+ * 0.002+ o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+ return (combN o 0.6 #(rand 0.1 0.6) 8 + mceReverse o)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) =<< sidereal_time++{-+audition (out 0 sidereal_time)+-}
@@ -0,0 +1,45 @@+-- slow beating harmonic sines (jmcc)+module Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines where++import Control.Monad {- base -}+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++r_freq :: (RandomGen g) => Int -> Int -> Rand g [Double]+r_freq k i = do+ n <- nchoose i [0,2,4,5,7,9]+ o <- nrand i 7+ let f n' o' = midiCPS' (n' + (o' * 12) + fromIntegral k)+ return (zipWith f n o)++r_harmonics :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics d m f = do+ d' <- nrand2 m d+ return (zipWith (+) (map (* f) [1,2,4,5,6]) d')++r_phase :: (RandomGen g) => Int -> Rand g [Double]+r_phase m = nrrand m 0 (2 * pi)++sbhs :: (RandomGen g) => Int -> Double -> Int -> Rand g UGen+sbhs n d m = do+ k' <- rand 12+ let k = 24 + k'+ f <- r_freq k n+ p_fr <- mapM (r_harmonics d m) f+ q_fr <- mapM (r_harmonics d m) f+ p_ph <- replicateM n (r_phase m)+ q_ph <- replicateM n (r_phase m)+ let a = replicate n (replicate m 1)+ p_sp = zipWith3 klangSpec' p_fr a p_ph+ q_sp = zipWith3 klangSpec' q_fr a q_ph+ mk_u s = klang AR 1 0 s * (0.1 / fromIntegral n)+ p_u = sum (map mk_u p_sp)+ q_u = sum (map mk_u q_sp)+ return (mce2 p_u q_u)++main :: IO ()+main = do+ g <- getStdGen+ overlapTextureS (3,6,3,maxBound) (runRand (sbhs 8 0.4 5)) g
@@ -0,0 +1,42 @@+-- slow beating sines (jmcc)+module Sound.SC3.Graph.JMCC_slow_beating_sines where++import Control.Monad {- base -}+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++r_freq :: (RandomGen g) => Int -> Rand g [Double]+r_freq i = do+ n <- nrrand i 24 84+ return (map midiCPS' n)++r_harmonics :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics d m f = fmap (map (+ f)) (nrand2 m d)++r_harmonics' :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics' d m f = fmap ((f :) . map (+ f)) (nrand2 (m - 1) d)++r_phase :: (RandomGen g) => Int -> Rand g [Double]+r_phase m = nrrand m 0 (2 * pi)++sbs :: (RandomGen g) => Int -> Double -> Int -> Rand g UGen+sbs n d m = do+ f <- r_freq n+ p_fr <- mapM (r_harmonics' d m) f+ q_fr <- mapM (r_harmonics d m) f+ p_ph <- replicateM n (r_phase m)+ q_ph <- replicateM n (r_phase m)+ let a = replicate n (replicate m 1)+ p_sp = zipWith3 klangSpec' p_fr a p_ph+ q_sp = zipWith3 klangSpec' q_fr a q_ph+ mk_u s = klang AR 1 0 s * (0.1 / fromIntegral n)+ p_u = sum (map mk_u p_sp)+ q_u = sum (map mk_u q_sp)+ return (mce2 p_u q_u)++main :: IO ()+main = do+ g <- getStdGen+ overlapTextureS (4,4,3,maxBound) (runRand (sbs 20 0.4 3)) g
@@ -0,0 +1,32 @@+-- snare-909 (jmcc)+module Sound.SC3.Graph.JMCC_snare_909 where++import Sound.SC3.ID {- hsc3 -}++snare_909 :: UGen -> UGen+snare_909 tr =+ let n = whiteNoise 'α' AR+ v = tRand 'β' 0.25 1.0 tr+ e a b = envGen AR tr 1 0 1 DoNothing (envPerc a b)+ e1 = e 0.0005 0.055+ e2 = e 0.0005 0.075+ e3 = e 0.0005 0.4+ e4 = e 0.0005 0.283+ t1 = lfTri AR 330 0+ t2 = lfTri AR 185 0+ x1 = lpf n 7040 * 0.1 + v+ x2 = hpf x1 523+ m1 = t1 * e1 * 0.25 + t2 * e2 * 0.25+ m2 = x1 * e3 * 0.20 + x2 * e4 * 0.20+ in m1 + m2++snare_909_a :: UGen+snare_909_a =+ let x = mouseX KR 1 4 Linear 0.2+ y = mouseY KR 0.25 0.75 Exponential 0.2+ t = impulse KR (3 * x) 0+ in pan2 (snare_909 t) 0 y++main :: IO ()+main = audition (out 0 snare_909_a)+
@@ -0,0 +1,25 @@+-- spe (jmcc)+-- variant of graph in streams & patterns tutorial+module Sound.SC3.Graph.JMCC_spe_m where++import Sound.SC3.Monad {- hsc3 -}++spe :: UId m => m UGen+spe = do+ let rapf i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 4)+ src = do let t = impulse KR 9 0+ e = envGen KR t 0.1 0 1 DoNothing (envPerc 0.1 1)+ s = mce [00,03,02,07+ ,08,32,16,18+ ,00,12,24,32]+ n <- lfNoise1 KR 1+ m <- dseq dinf s+ let f = midiCPS (demand t 0 m + 32)+ o = lfSaw AR f 0 * e+ rq = midiCPS (n * 36 + 110)+ return (rlpf o rq 0.1)+ chainM 4 rapf =<< src++main :: IO ()+main = audition . out 0 =<< spe
@@ -0,0 +1,29 @@+-- spe-p (jmcc)+module Sound.SC3.Graph.JMCC_spe_p where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++spe3_allpass6 :: UId m => m Synthdef+spe3_allpass6 = do+ n <- lfNoise1 KR 1+ let fr = control KR "freq" 440+ rapf i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 4)+ e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.1 1)+ rq = midiCPS (n * 36 + 110)+ o = rlpf (lfSaw AR fr 0 * e) rq 0.1+ u <- fmap (out 0) (chainM 4 rapf o)+ return (synthdef "spe" u)++notes :: Num n => P n+notes =+ let n = [prand' 'α' [pempty,toP [24,31,36,43,48,55]] inf+ ,pflop [60,prand 'β' [63,65] inf,67,prand 'γ' [70,72,74] inf]+ ,psplitPlaces (pwhite 'δ' 3 9 inf) (toP [74,75,77,79,81])]+ in pjoin (pseq1 n inf)++main :: IO ()+main = do+ i <- spe3_allpass6+ audition (pbind [(K_instr,psynth i),(K_midinote,notes),(K_dur,0.13)])
@@ -0,0 +1,14 @@+-- sprinkler (jmcc)+module Sound.SC3.Graph.JMCC_sprinkler where++import Sound.SC3.ID {- hsc3 -}++sprinkler :: UGen+sprinkler =+ let n = whiteNoise 'α' AR+ f = lfPulse KR 0.09 0 0.16 * 10 + 7+ t = lfPulse KR f 0 0.25 * 0.1+ in bpz2 (n * t)++main :: IO ()+main = audition (out 0 sprinkler)
@@ -0,0 +1,14 @@+-- sprinkler-m (jmcc)+module Sound.SC3.Graph.JMCC_sprinkler_m where++import Sound.SC3.Monad {- hsc3 -}++sprinkler_m :: UId m => m UGen+sprinkler_m = do+ n <- whiteNoise AR+ let f = lfPulse KR 0.09 0 0.16 * 10 + 7+ t = lfPulse KR f 0 0.25 * 0.1+ return (bpz2 (n * t))++main :: IO ()+main = audition . out 0 =<< sprinkler_m
@@ -0,0 +1,24 @@+-- string wander-cluster (jmcc)+module Sound.SC3.Graph.JMCC_string_wander_cluster where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import System.Random {- random -}++type ST = (Double,StdGen)++wander :: ST -> ST+wander (n,g) =+ let (n',g') = randomR (-7,8) g+ in (foldToRange 50 120 (n + n'),g')++swc :: ST -> (UGen,ST)+swc st =+ let (n,g) = wander st+ d = 1 / midiCPS (constant n)+ w = whiteNoise 'c' AR * 0.008+ o = combC w 0.01 d (d * 1000)+ in (pan2 o (rand 'd' (-1) 1) 1,(n,g))++main :: IO ()+main = overlapTextureS (4/3,4/3,6,maxBound) swc (60,mkStdGen 0)
@@ -0,0 +1,20 @@+-- strummable guitar (jmcc)+module Sound.SC3.Graph.JMCC_strummable_guitar where++import Sound.SC3.ID {- hsc3 -}++strummable_guitar :: UGen+strummable_guitar =+ let scale = [52,57,62,67,71,76]+ str i = let x = mouseX KR 0 1 Linear 0.2+ t = abs (hpz1 (x >* (0.25 + constant i * 0.1)))+ e = decay t 0.05+ n = pinkNoise i AR * e+ dt = 1 / midiCPS (scale !! i)+ s = combL n dt dt 4+ in pan2 s (constant i * 0.2 - 0.5) 1+ strs = mixFill (length scale) str+ in leakDC (lpf strs 12000) 0.995++main :: IO ()+main = audition (out 0 strummable_guitar)
@@ -0,0 +1,17 @@+-- sweepy noise (jmcc)+module Sound.SC3.Graph.JMCC_sweepy_noise where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++sweepy_noise :: UGen+sweepy_noise =+ let n = uclone 'α' 2 (whiteNoise 'α' AR)+ lfoDepth = mouseY KR 200 8000 Exponential 0.1+ lfoRate = mouseX KR 4 60 Exponential 0.1+ freq = lfSaw KR lfoRate 0 * lfoDepth + (lfoDepth * 1.2)+ filtered = rlpf (n * 0.03) freq 0.1+ in combN filtered 0.3 0.3 2 + filtered++main :: IO ()+main = audition (out 0 sweepy_noise)
@@ -0,0 +1,27 @@+-- synthetic piano (jmcc)+module Sound.SC3.Graph.JMCC_synthetic_piano_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++synthetic_piano :: UId m => m UGen+synthetic_piano = do+ n <- iRand 36 90+ f <- rand 0.1 0.5+ ph <- rand 0 (pi * 2)+ let s = impulse AR f ph * 0.1+ e = decay2 s 0.008 0.04+ c i = do n0 <- lfNoise2 AR 3000+ let o = [-0.05,0,0.04] !! i+ dt = 1 / midiCPS (n + o)+ return (combL (n0 * e) dt dt 6)+ l = ((n - 36) / 27) - 1+ c_ <- mixFillM 3 c+ return (pan2 c_ l 1)++main :: IO ()+main = overlapTextureU (6,0,6,maxBound) =<< synthetic_piano++{-+audition . out 0 =<< mixFillM 6 (const synthetic_piano)+-}
@@ -0,0 +1,50 @@+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html+module Sound.SC3.Graph.JMCC_tank where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++pling :: ID a => a -> UGen+pling e =+ let d = dust e AR 0.2+ f = expRand e 300 2200+ p = rand e (-1) 1+ s1 = cubed (fSinOsc AR f 0)+ s2 = decay2 d 0.1 0.5 * 0.1 * s1+ in pan2 s2 p 1++bang :: ID a => a -> UGen+bang e =+ let d = dust e AR 0.01+ n = brownNoise e AR+ in pan2 (decay2 d 0.04 0.3 * n) 0 1++r_allpass :: ID z => z -> UGen -> UGen+r_allpass e i =+ let r = randN 2 e 0.005 0.02+ in allpassN i 0.03 r 1++tank_f :: ID z => z -> UGen -> UGen+tank_f e i =+ let r1 = randN 2 e 0.01 0.05+ r2 = randN 2 e 0.03 0.15+ l0 = localIn 2 AR * 0.98+ l1 = onePole l0 0.33+ (l1l,l1r) = mce2c l1+ l2 = rotate2 l1l l1r 0.23+ l3 = allpassN l2 0.05 r1 2+ l4 = delayN l3 0.3 (mce2 0.17 0.23)+ l5 = allpassN l4 0.05 r2 2+ l6 = leakDC l5 0.995+ l7 = l6 + i+ in mrg [l7,localOut l7]++tank :: UGen+tank =+ let s = bang 'α' + mix (uclone 'β' 8 (pling 'γ'))+ in tank_f 'δ' (useq 'ε' 4 (r_allpass 'ζ') s)++main :: IO ()+main = audition (out 0 tank)
@@ -0,0 +1,37 @@+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_tank_hp where++import Sound.SC3.Monad {- hsc3 -}++pling :: UId m => m UGen+pling = do+ let s = decay2 #(dust AR 0.2) 0.1 0.5+ * cubed (fSinOsc AR #(expRand 300 2200) 0)+ * 0.1+ return (pan2 s #(rand (-1) 1) 1)++bang :: UId m => m UGen+bang = do return (pan2 (decay2 #(dust AR 0.01) 0.04 0.3 * #(brownNoise AR)) 0 1)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do return (allpassN i 0.03 #(clone 2 (rand 0.005 0.02)) 1)++tank_f :: UId m => UGen -> m UGen+tank_f i = do+ let [l,r] = mceChannels (onePole (localIn 2 AR * 0.98) 0.33)+ let a = allpassN (rotate2 l r 0.23) 0.05 #(clone 2 (rand 0.01 0.05)) 2+ b = delayN a 0.3 (mce [0.17,0.23])+ let c = leakDC (allpassN b 0.05 #(clone 2 (rand 0.03 0.15)) 2) 0.995 + i+ return (mrg [c,localOut c])++tank :: UId m => m UGen+tank = do+ s <- bang .+. mixFillM 8 (const pling :: UId m => Int -> m UGen)+ s' <- chainM 4 r_allpass s+ tank_f s'++main :: IO ()+main = do+ t <- tank+ audition (out 0 t)
@@ -0,0 +1,46 @@+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html+module Sound.SC3.Graph.JMCC_tank_m where++import Sound.SC3.Monad {- hsc3 -}++pling :: UId m => m UGen+pling = do+ d <- dust AR 0.2+ f <- expRand 300 2200+ p <- rand (-1) 1+ let s1 = cubed (fSinOsc AR f 0)+ s2 = decay2 d 0.1 0.5 * 0.1 * s1+ return (pan2 s2 p 1)++bang :: UId m => m UGen+bang = do+ d <- dust AR 0.01+ n <- brownNoise AR+ return (pan2 (decay2 d 0.04 0.3 * n) 0 1)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do+ r <- clone 2 (rand 0.005 0.02)+ return (allpassN i 0.03 r 1)++tank_f :: UId m => UGen -> m UGen+tank_f i = do+ r1 <- clone 2 (rand 0.01 0.05)+ r2 <- clone 2 (rand 0.03 0.15)+ let l0 = localIn 2 AR * 0.98+ l1 = onePole l0 0.33+ [l1l,l1r] = mceChannels l1+ l2 = rotate2 l1l l1r 0.23+ l3 = allpassN l2 0.05 r1 2+ l4 = delayN l3 0.3 (mce [0.17,0.23])+ l5 = allpassN l4 0.05 r2 2+ l6 = leakDC l5 0.995+ l7 = l6 + i+ return (mrg [l7,localOut l7])++tank :: UId m => m UGen+tank = tank_f =<< chainM 4 r_allpass =<< bang .+. mixFillM 8 (const pling)++main :: IO ()+main = audition . out 0 =<< tank
@@ -0,0 +1,19 @@+-- theremin (jmcc)+module Sound.SC3.Graph.JMCC_theremin where++import Sound.SC3 {- hsc3 -}++theremin :: UGen+theremin =+ let m = 7+ detune = 0+ x = mouseX KR 0 0.6 Linear 0.2+ y = mouseY KR 4000 200 Exponential 0.8+ f = y + detune+ f' = f + f * sinOsc AR m 0 * 0.02+ a = sinOsc AR f' 0 * x+ in pan2 a 0 1++main :: IO ()+main = audition (out 0 theremin)+
@@ -0,0 +1,21 @@+-- tremulate (jmcc)+module Sound.SC3.Graph.JMCC_tremulate where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++tremulate :: UGen+tremulate =+ let f = rand 'α' 500 900+ o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0+ r = randN 4 'β' 30 90+ a = max 0 (lfNoise2 'γ' KR r) * 0.1+ l = randN 4 'δ' (-1) 1+ in mix (pan2 o l a)++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = xfadeTextureU_pp (0.5,2,maxBound) tremulate 2 tremulate_pp
@@ -0,0 +1,18 @@+-- tremulate (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_tremulate_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++tremulate :: UId m => m UGen+tremulate = do+ let o = fSinOsc AR (#(rand 500 900) * mce [1,1.2,1.5,1.8]) 0+ n <- clone 4 (lfNoise2 KR #(rand 30 90))+ return (mix (pan2 o #(clone 4 (rand (-1) 1)) (max 0 (n * 0.1))))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do xfadeTextureU_pp (0.5,2,maxBound) #(tremulate) 2 tremulate_pp
@@ -0,0 +1,23 @@+-- tremulate (jmcc)+module Sound.SC3.Graph.JMCC_tremulate_m where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++tremulate :: UId m => m UGen+tremulate = do+ f <- rand 500 900+ let o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0+ r <- rand 30 90+ n <- clone 4 (lfNoise2 KR r)+ let a = max 0 (n * 0.1)+ l <- clone 4 (rand (-1) 1)+ return (mix (pan2 o l a))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do+ t <- tremulate+ xfadeTextureU_pp (0.5,2,maxBound) t 2 tremulate_pp
@@ -0,0 +1,27 @@+-- http://create.ucsb.edu/pipermail/sc-users/2003-March/002807.html (jmcc)+module Sound.SC3.Graph.JMCC_tsort where++{-+This simple graph tests the topological sort of the unit generator+graph, it ought only to use a minimal number of interconnect buffers.++The below 369 node graph works with 'scsynth -u 57110 -w 2'.++(Note that graphs loaded from disk during startup will grow the number+of interconnect buffers, so to test this we must delete all graphs that+would otherwise be loaded.)+-}++import Sound.SC3 {- hsc3 -}++tsort :: UGen+tsort =+ let n = 122+ c = envCoord [(0,0), (0.15, 1), (6, 0)] 1 1 EnvLin+ e = envGen KR 1 1 0 1 RemoveSynth c+ f o = sinOsc AR (440 + constant o) 0 * 0.001+ s = mixFill n f+ in s * e++main :: IO ()+main = audition (out 0 tsort)
@@ -0,0 +1,20 @@+-- uplink (jmcc)+module Sound.SC3.Graph.JMCC_uplink where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++randz :: ID a => a -> UGen -> UGen+randz e = rand e 0++uplink :: UGen+uplink =+ let r = randz+ p0 = lfPulse KR (r 'α' 20) 0 (r 'β' 1)+ p1 = lfPulse KR (r 'γ' 4) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+ f = mix (uclone 'η' 2 (p0 * p1))+ in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'θ' (-0.8) 0.8) 1++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) uplink
@@ -0,0 +1,18 @@+-- uplink (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_uplink_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++uplink :: UId m => m UGen+uplink = do+ let p0 = do return (lfPulse KR #(rand 0 20) 0 #(rand 0 1))+ let p1 = do return (lfPulse KR #(rand 0 4) 0 #(rand 0 1)+ * #(rand 0 8000)+ + #(rand 0 2000))+ f <- fmap mix (clone 2 (p0 .*. p1))+ return (pan2 (lfPulse AR f 0 0.5 * 0.04) #(rand (-0.8) 0.8) 1)++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) =<< uplink
@@ -0,0 +1,25 @@+-- what was i thinking? (jmcc)+module Sound.SC3.Graph.JMCC_what_was_i_thinking_m where++import Sound.SC3.Monad {- hsc3 -}++what_was_i_thinking :: UId m => m UGen+what_was_i_thinking = do+ n0 <- lfNoise1 KR 0.2+ n1 <- lfNoise1 KR 0.157+ let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04+ i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500+ d = decay i 2+ f = max (sinOsc KR 4 0 + 80) d+ z = rlpf p (n0 * 2000 + 2400) 0.2+ c x = do r <- rand 0 0.3+ n <- lfNoise1 KR r+ return (combL x 0.06 (n * 0.025 + 0.035) 1)+ y = z * 0.6+ z0 <- clone 2 (c y)+ z1 <- clone 2 (c y)+ return (z + mce [mix z0,mix z1])++main :: IO ()+main = audition . out 0 =<< what_was_i_thinking+
@@ -0,0 +1,20 @@+-- why supercollider (jmcc)+module Sound.SC3.Graph.JMCC_why_supercollider where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++why_supercollider :: UGen+why_supercollider =+ let r = resonz (dust 'α' AR 0.2 * 50) (rand 'β' 200 3200) 0.003+ s = mix (uclone 'γ' 10 r)+ z = delayN s 0.048 0.048+ c = combL z 0.1 (lfNoise1 'δ' KR (rand 'ε' 0 0.1) * 0.04 + 0.05) 15+ y = mix (uclone 'ζ' 7 c)+ f i = allpassN i 0.050 (randN 2 'η' 0 0.05) 1+ x = useq 'θ' 4 f y+ in out 0 (s + 0.2 * x)++main :: IO ()+main = audition why_supercollider
@@ -0,0 +1,24 @@+-- wind metals (jmcc)+module Sound.SC3.Graph.JMCC_wind_metals_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++-- > audition . out 0 =<< wind_metals+wind_metals :: UId m => m UGen+wind_metals = do+ let n = 6+ base <- expRand 60 4000+ rng <- rand 500 8000+ n0 <- clone 2 (brownNoise AR)+ r0 <- expRand 0.125 0.5+ n1 <- lfNoise1 KR r0+ f <- sequence (replicate n (rand base (base + rng)))+ dt <- sequence (replicate n (rand 0.1 2))+ let exc = n0 * 0.007 * max 0 (n1 * 0.75 + 0.25)+ k = klankSpec f (replicate n 1) dt+ s = klank exc 1 0 1 k+ return (softClip (s * 0.1))++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< wind_metals
@@ -0,0 +1,26 @@+-- record scratcher (jp)+module Sound.SC3.Graph.JP_record_scratcher where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++record_scratcher :: UGen+record_scratcher =+ let dup a = mce2 a a+ d = Envelope [0, 1, 0] [0.1, 0.1] [EnvSin] (Just 1) (Just 0)+ e = envGen KR 1 0.5 0 1 RemoveSynth d+ x = mouseX KR (-10) 10 Linear 0.2+ dx = x - delayN x 0.1 0.1+ bdx = mouseButton KR 1 0 0.3 + dx+ bdxr = bdx * bufRateScale KR 0+ scr = playBuf 1 AR 0 bdxr 0 0 Loop DoNothing+ in dup (scr * e)++run :: Transport m => m ()+run = do+ let fn = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async (b_allocRead 0 fn 0 0)+ play (out 0 record_scratcher)++main :: IO ()+main = withSC3 run
@@ -0,0 +1,109 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg08240.html (jrhb)+module Sound.SC3.Graph.JRHB_black_atlantic_currents where++import Data.Numbers.Primes {- primes -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect {- hsc3 -}+import System.Random {- random -}+import System.Random.Shuffle {- random-shuffle -}++nth_prime :: Integral a => Int -> a+nth_prime j = primes !! j++chain :: Int -> (t -> t) -> t -> t+chain j f x = if j == 0 then x else chain (j - 1) f (f x)++xn,yn,zn :: Num a => a+xn = 64+yn = 65+zn = 66++type NF t a = a -> Rate -> t -> UGen++n :: NF t a -> t -> [a] -> UGen+n g f = mce . map (\k -> g k KR f)++n' :: NF t a -> [t] -> [a] -> UGen+n' g f = mce . map (\(f',k) -> g k KR f') . zip f++i :: UGen -> UGen+i = inFeedback 2++c :: Int -> UGen+c = constant++bac :: UGen+bac =+ let x = let ph = i yn * uclone 'α' 2 (lfdNoise3 'β' KR 1)+ in out xn (mceReverse (sinOsc AR (60 * 2) ph))+ y = let ph = i xn * uclone 'γ' 2 (lfdNoise3 'δ' KR 0.3) * 4+ in out yn (sinOsc AR (50 * 2) ph)+ in mrg [inFeedback 2 xn,y,x]++main :: IO ()+main = audition (out 0 bac)++bac' :: UGen+bac' =+ let x = let f = c (nth_prime 23)+ ph = i yn * uclone 'ε' 2 (lfdNoise3 'ζ' KR (sqrt 2))+ in out xn (mceReverse (sinOsc AR f ph))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * uclone 'η' 2 (lfdNoise3 'θ' KR (sqrt pi)) * pi+ in out yn (tanh (sinOsc AR f ph))+ in mrg [inFeedback 2 xn,y,x]++bac'' :: UGen+bac'' =+ let x = let f = c (nth_prime 23)+ ph = i yn * n' lfdNoise3 (map sqrt [1,2]) "ab"+ in out xn (mceReverse (sinOsc AR f ph))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+ in out yn (tanh (sinOsc AR f ph))+ z = let f = c (chain 3 nth_prime 2)+ ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+ in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+ in mrg [inFeedback 2 xn,y,x,z]++bac''' :: UGen+bac''' =+ let x = let j = range 1 30 (lfNoise0 'ι' KR (log 2 / 2))+ f = select j (mce (map (c . nth_prime) [1..30]))+ ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+ in out xn (mceReverse (sinOsc AR f ph))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+ in out yn (tanh (sinOsc AR f ph) * exp 1)+ z = let f = c (chain 3 nth_prime 2)+ ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+ in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+ in mrg [inFeedback 2 xn,y,x,z]++scramble :: Enum a => a -> [t] -> [t]+scramble j k =+ let g = mkStdGen (fromEnum j)+ in shuffle' k (length k) g++bac'''' :: UGen+bac'''' =+ let x = let j = range 1 30 (lfNoise2 'κ' KR (log 2 / 2))+ ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+ f' = map (c . nth_prime) (scramble 'λ' [1,3..61])+ o = map (\f -> mceReverse (sinOsc AR f ph)) f'+ in out xn (mceChannel 1 (selectX j (mce o)))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+ in out yn (tanh (sinOsc AR f ph) * exp 1)+ z = let f = c (chain 3 nth_prime 2)+ ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+ in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+ in mrg [inFeedback 2 xn,y,x,z]++{-+audition (out 0 bac)+audition (out 0 bac')+audition (out 0 bac'')+audition (out 0 bac''')+audition (out 0 bac'''')+-}
@@ -0,0 +1,47 @@+-- chain saw (jrhb)+module Sound.SC3.Graph.JRHB_chain_saw_m where++-- this graph generates long chains of unit generators and may require+-- increasing the stack limit of the haskell run time system++import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++coinIf :: Double -> a -> a -> IO a+coinIf n a b = do+ r <- R.coin n+ return (if r then a else b)++exprange :: UGen -> UGen -> UGen -> UGen+exprange s = linExp s (-1) 1++mceProduct :: UGen -> UGen+mceProduct = mceEdit (\l -> [product l])++clipu :: BinaryOp a => a -> a+clipu s = clip2 s 1++dup :: UGen -> UGen+dup a = mce2 a a++chain_saw :: IO UGen+chain_saw = do+ let f s1 = do xr <- fmap dup (expRand 0.1 2)+ n1 <- lfNoise1 KR xr+ n2 <- lfNoise1 KR xr+ n3 <- lfNoise1 KR xr+ f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)+ s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)+ let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)+ u1 = lfSaw KR f2 0+ u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1+ return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)+ inp = lfSaw KR (0.2 * mce2 1 1.1) 0+ b_freq = mce [70, 800, 9000, 5242]+ ff <- chainM 8 f inp+ let c_saw = mceProduct (saw AR (exprange ff 6 11000))+ b_saw = dup (mix (bpf c_saw b_freq 0.2))+ return (b_saw * 0.3)++main :: IO ()+main = audition . out 0 =<< chain_saw
@@ -0,0 +1,34 @@+-- deep sea (jrhb)+module Sound.SC3.Graph.JRHB_deep_sea where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++rng :: UGen -> UGen -> UGen -> UGen+rng s l r =+ let m = (r - l) * 0.5+ in mulAdd s m (m + l)++deep_sea :: UGen+deep_sea =+ let amp = 1+ pan = 0+ variation = 0.9+ n = rand 'α' 7 46+ dt1 = 25.0 + rand 'β' (-1.7) 1.7+ dt2 = (dt1 + lfNoise2 'γ' KR 2) * variation * 0.001+ f = 901 + rand 'δ' 0 65+ t = impulse AR (recip dt2) 0 * 100+ count = pulseCount t 0+ mul = count <* n+ u1 = bpf (mul * t) f 1 * 0.1+ f2 = f * ((count `modE` rng (lfNoise1 'ε' KR 1) 2 20) + 1)+ u2 = bpf u1 f2 1 * 0.2+ in mrg [pan2 u2 pan (amp * 10)+ ,detectSilence u2 0.0001 0.2 RemoveSynth]++main :: IO ()+main = do+ let s = synthdef "deep-sea" (out 0 deep_sea)+ p = pbind [(K_instr,psynth s),(K_dur,pxrand 'ζ' [0.25,0.5,1,2] inf)]+ audition p
@@ -0,0 +1,36 @@+-- dial history (jrhb)+module Sound.SC3.Graph.JRHB_dial_history_m where++import Data.List {- base -}+import Sound.SC3.Monad {- hsc3 -}++rng :: UGen -> UGen -> UGen -> UGen+rng s = linLin s 0 1++dial_history :: UId m => m UGen+dial_history = do+ let mfv = [[697,770,852,941],[1209,1336,1477,1633]]+ numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]+ mce_r = mce . map mce+ n <- dwhite dinf 7 12+ w <- dwhite 1 2 7+ b <- dbrown n 0.1 0.2 0.01+ rate <- dseq dinf (mce2 w b)+ q <- dseq dinf (mce [1..10])+ g1 <- grayNoise AR+ g2 <- grayNoise AR+ d <- lfdNoise3 KR 0.5+ let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09+ pat = latch tr tr+ x = mouseX KR 0 1 Linear 0.2+ h = hasher (pat * x)+ which = trunc (rng h 0 (constant (length numbers))) 1+ both = select which (mce_r numbers)+ dial = select both (mce_r (transpose mfv))+ sig = sinOsc AR dial 0 * 0.05 * tr+ dsig = delayN sig 0.2 (rng d 0 0.01)+ hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000+ return (dsig + hiss)++main :: IO ()+main = audition . out 0 =<< dial_history
@@ -0,0 +1,15 @@+-- half-life (jrhb)+module Sound.SC3.Graph.JRHB_half_life where++import Sound.SC3.ID {- hsc3 -}++half_life :: UGen+half_life =+ let t_half = 1/3.92+ n_atoms = 1e+5+ n = max 0 (n_atoms - pulseCount (localIn 2 AR) 0)+ activity = dust 'α' AR (n * log 2 * t_half)+ in mrg [activity,localOut activity]++main :: IO ()+main = audition (out 0 half_life)
@@ -0,0 +1,55 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg00280.html (jrhb)+module Sound.SC3.Graph.JRHB_sam_i_am where++import Control.Monad.Random {- MonadRandom -}+import Data.List {- base -}+import Data.Maybe {- base -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.Monad {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++text :: [String]+text =+ ["I could not would not in a house"+ ,"I would not could not with a mouse"+ ,"I would not eat them with a fox"+ ,"I would not eat them in a box"+ ,"I would not eat them here or there"+ ,"I would not eat them anywhere"+ ,"I would not eat green eggs and ham"+ ,"I do not like them Sam-I-am"]++x :: [[String]]+x = map words text++a :: [String]+a = nub (concat x)++sam :: Synthdef+sam =+ let f1 = control KR "freq1" 440+ f2 = control KR "freq2" 440+ f3 = control KR "freq3" 440+ e = xLine KR 0.1 0.001 0.5 RemoveSynth+ o = sinOsc AR f1 0 * pulse AR f2 0.5 * saw AR f3 * e+ in synthdef "sam" (out 0 o)++b :: (RandomGen g,Floating n,Random n) => g -> [(String,[(Key,n)])]+b g =+ let mk w = do+ f1 <- exprand 200 9000+ f2 <- exprand 20 9000+ f3 <- exprand 20 9000+ let d = 0.1 * fromIntegral (length w)+ return (w,[(K_param "freq1",f1)+ ,(K_param "freq2",f2)+ ,(K_param "freq3",f3)+ ,(K_dur,d)])+ in evalRand (mapM mk a) g++main :: IO ()+main = do+ g <- getStdGen+ let t = b g+ ae = mapMaybe (\w -> fmap e_from_list (lookup w t)) (concat x)+ audition (p_with (K_instr,psynth sam) (pseq (map return ae) 1))
@@ -0,0 +1,15 @@+-- one-line (ljp)+module Sound.SC3.Graph.LJP_one_line where++import Sound.SC3 {- hsc3 -}++one_line :: UGen+one_line =+ let lfs = lfSaw AR (mce2 1 0.99) (mce2 0 0.6) * 2000 + 2000+ lfs_t = trunc lfs (mce2 400 600) * mce2 1 (-1)+ f = onePole (mix lfs_t) 0.98+ in pan2 (sinOsc AR f 0) 0 0.1++main :: IO ()+main = audition (out 0 one_line)+
@@ -0,0 +1,22 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)+module Sound.SC3.Graph.MN_k2ws where++import Sound.SC3.ID {- hsc3 -}++rng :: (UGen,UGen) -> UGen -> UGen+rng (i,j) = range i j++k2ws :: UGen+k2ws =+ let fc = 400 + rng (100,200) (lfNoise2 'α' AR (mce2 1 2))+ fm = rng (100,200) (lfNoise0 'β' AR 5)+ i = rng (1,20) (lfNoise1 'γ' AR 10)+ x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5+ rf = rng (1000,2000) (sinOsc AR (rng (0.1,1) (lfNoise1 'δ' AR 1)) 0)+ rq = rng (0.5,10) (lfNoise1 'ε' AR 1)+ a = rlpf x rf rq+ ph = a * rng (1.0,4.0) (lfNoise1 'ζ' AR 0.1) * 4 * pi+ in sinOsc AR 0.2 ph * 0.5++main :: IO ()+main = audition (out 0 k2ws)
@@ -0,0 +1,19 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.MN_k2ws_hp where++import Sound.SC3.Monad {- hsc3 -}++k2ws :: UId m => m UGen+k2ws = do+ let fc = 400 + range 100 200 #(lfNoise2 AR (mce2 1 2))+ let fm = range 100 200 #(lfNoise0 AR 5)+ let i = range 1 20 #(lfNoise1 AR 10)+ let x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5+ let rf = range 1000 2000 (sinOsc AR (range 0.1 1 #(lfNoise1 AR 1)) 0)+ let rq = range 0.5 10 #(lfNoise1 AR 1)+ let ph = rlpf x rf rq * range 1.0 4.0 #(lfNoise1 AR 0.1) * 4 * pi+ return (sinOsc AR 0.2 ph * 0.5)++main :: IO ()+main = audition . out 0 =<< k2ws
@@ -0,0 +1,367 @@+-- after goeyvaerts, nick collins (nc), 2007+module Sound.SC3.Graph.NC_after_goeyvaerts where++import Control.Concurrent.MVar {- base -}+import Data.List+import Data.List.Split {- split -}+import qualified Data.Map as M {- containers -}+import Sound.OSC.FD {- hosc -}+import Sound.SC3.ID.FD {- hsc3 -}+import qualified Sound.SC3.Lang.Collection as C {- hsc3-lang -}+import qualified Sound.SC3.Lang.Random.Gen as R+import System.Random {- random -}++-- * SCHEMA++-- | infinite monadic recursion+mrec :: Monad m => (a -> m a) -> a -> m a+mrec f i = f i >>= mrec f++-- | monadic recursion with counter+mrec_n :: Monad m => Int -> (a -> m a) -> a -> m a+mrec_n n f i =+ if n == 0+ then return i+ else f i >>= mrec_n (n - 1) f++-- | recursion function useful for random processes (g = random state)+r_chain :: (g -> (a,g)) -> g -> [a]+r_chain f g =+ let (r,g') = f g+ in r : r_chain f g'++r_chain_fb :: ((a,g) -> (a,g)) -> a -> g -> [a]+r_chain_fb f r_ g_ =+ let go (r,g) = let (r',g') = f (r,g) in r' : go (r',g')+ in r_ : go (r_,g_)++-- | an action that steps through a stored sequence+l_step :: MVar [a] -> IO a+l_step r =+ let f [] = undefined+ f (x:xs) = (xs,x)+ in modifyMVar r (return . f)++-- | generate a stepper action from a list+l_stepper :: [a] -> IO (IO a)+l_stepper l = do+ r <- newMVar (cycle l)+ return (l_step r)++l_stepper_scramble :: [a] -> IO (IO a)+l_stepper_scramble l = scrambleIO l >>= l_stepper++{-+a <- l_stepper [1..5]+sequence (replicate 10 a)+-}++type SEL a b g = (a,g) -> (b,g)++-- | a recursion schema where s chooses between a and b at each step+sel_seq :: RandomGen g => SEL a Bool g->SEL a a g->SEL a a g->a->g->[a]+sel_seq s a b j =+ let step (i,g) =+ let (r,g') = s (i,g)+ in if r then a (i,g') else b (i,g')+ in r_chain_fb step j++-- | variant where s is a (coin' c) and a is (rrand'c r)+sel_seq_c_rng :: (RandomGen g,Random a) => R -> (a,a) -> a -> g -> [a]+sel_seq_c_rng c r i g =+ let s = coin c . snd+ a = rrandc r . snd+ in sel_seq s a id i g++-- | monadic if+ifM :: Monad m => m Bool -> m b -> m b -> m b+ifM i j k = do+ i' <- i+ if i' then j else k++-- | coin at R+coin :: (RandomGen g) => R -> g -> (Bool,g)+coin = R.coin++-- | 'coin' at R+coinIO :: R -> IO Bool+coinIO = getStdRandom . coin++-- | 'R.wchoose'.+wchoose :: RandomGen g => [a] -> [R] -> g -> (a,g)+wchoose = R.wchoose++-- | wchoose at R+wchooseIO :: [a] -> [R] -> IO a+wchooseIO l= getStdRandom . wchoose l++-- | rrand with duple range+rrandc :: (RandomGen g,Random n) => (n,n) -> g -> (n,g)+rrandc = uncurry R.rrand++scrambleIO :: [t] -> IO [t]+scrambleIO = getStdRandom . R.scramble++-- | set precision+set_prec :: Int -> Double -> Double+set_prec n x =+ let n' = 10 ^ n+ x' = round (x * n') :: Integer+ in fromIntegral x' / n'++-- * AFTER GOEYVAERTS++nd :: UGen+nd =+ let freq = control KR "freq" 440+ amp = control KR "amp" 0.1+ sustain = control KR "sustain" 0.1+ pan = control KR "pan" 0+ s = let p = mix (lfPar AR (freq * mce [0.999,1.001]) 0 * amp)+ l = [10000,2000,4000,1000]+ t = [0.005,rand 'α' 0.009 0.05,0.005]+ d = Envelope l t (replicate 3 EnvLin) Nothing Nothing+ in lpf (distort p) (envGen KR 1 1 0 1 DoNothing d)+ e = let l = [0,1,0.4,0.7,0]+ t = [rand 'β' 0.001 0.005,0.005,0.005,sustain]+ d = Envelope l t (replicate 4 EnvLin) Nothing Nothing+ in envGen KR 1 1 0 1 RemoveSynth d+ in out 0 (pan2 (s * e) pan 1)++fx :: UGen+fx = replaceOut 0 (freeVerb (in' 2 AR 0) 0.33 1.5 0.5)++ag_init :: Transport t => t -> IO ()+ag_init fd = do+ _ <- async fd (d_recv (synthdef "nd" nd))+ _ <- async fd (d_recv (synthdef "fx" fx))+ send fd (s_new "fx" (-1) AddToHead 1 [])+ return ()++nd_msg :: Double -> Double -> Double -> Double -> Message+nd_msg f a s p =+ let nd_arg = [("freq",f),("amp",a),("sustain",s),("pan",p)]+ in s_new "nd" (-1) AddToHead 1 nd_arg++type R = Double+type P = M.Map Int R+type S = M.Map Int Int+data AG = AG {note_row :: [Int]+ ,amp_row :: IO R+ ,sus_row :: IO R+ ,pan_row :: IO R+ ,ioi_row :: IO R+ ,ioi_mult_seq :: IO R+ ,base_note_seq :: IO Int+ ,octaves_seq :: IO Int+ ,selections :: S+ ,probabilities :: P}++selections' :: S+selections' = M.fromList (map (\i -> (i,0)) [0..11])++selections_incr :: Int -> S -> S+selections_incr = M.adjust (+ 1)++selections_step' :: RandomGen g => S -> g -> (S,g)+selections_step' s g =+ let (r,g') = coin 0.03 g+ in (if r then selections' else s,g')++selections_step :: S -> IO S+selections_step s = ifM (coinIO 0.03) (return selections') (return s)++note_set :: [Int]+note_set = [0 .. 11]++note_step' :: RandomGen g => [Int] -> P -> g -> (Int,g)+note_step' n p = R.wchoose n (C.normalizeSum (M.elems p))++note_step :: [Int] -> P -> IO Int+note_step n = getStdRandom . note_step' n++chord_n' :: RandomGen g => g -> [Int]+chord_n' = r_chain (wchoose [1,2,3,4,5] [0.5,0.35,0.1,0.025,0.025])++chord_n :: IO [Int]+chord_n = fmap chord_n' newStdGen++chord' :: RandomGen g => P -> S -> Int -> [Int] -> g -> (([P],[S],[Int]),g)+chord' p_ s_ =+ let go (pl,sl,zl) p s n nr g =+ if n == 0+ then ((reverse pl,reverse sl,reverse zl),g)+ else let (z,g') = note_step' nr p g+ p' = probabilities_decr z p+ s' = selections_incr z s+ in go (p':pl,s':sl,z:zl) p' s' (n - 1) nr g'+ in go ([p_],[s_],[]) p_ s_++chord :: P -> S -> Int -> [Int] -> IO ([P],[S],[Int])+chord p s n = getStdRandom . chord' p s n++amp_set :: [R]+amp_set = map (dbAmp . negate) [1,3 .. 36]++sus_set :: [R]+sus_set = map ((/ exp 1) . exp . (/ 37)) [1 .. 37]++pan_set :: [R]+pan_set = map ((+ (-1)) . (* 2) . (/ 31)) [1 .. 31]++ioi_set :: [R]+ioi_set = map ((12 **) . (/ 12)) [1..12]++ioi_mult_set :: [R]+ioi_mult_set = [0.01,0.025,0.05,0.1,0.2]++ioi_mult_seq' :: RandomGen g => R -> g -> [R]+ioi_mult_seq' i g =+ let s = uncurry coin+ a = R.choose ioi_mult_set . snd+ in sel_seq s a id i g++--ioi_mult_seq_ = getStdRandom . ioi_mult_seq++octaves_rng :: (Int,Int)+octaves_rng = (2,5)++octaves_seq' :: RandomGen g => g -> [Int]+octaves_seq' = sel_seq_c_rng 0.02 octaves_rng 4++base_note_rng :: (Int,Int)+base_note_rng = (35,47)++base_note_seq' :: RandomGen g => g -> [Int]+base_note_seq' = sel_seq_c_rng 0.01 base_note_rng 36++probabilities' :: P+probabilities' = M.fromList (map (\x -> (x,1)) [0..11])++probabilities_incr :: P -> P+probabilities_incr = M.map (\x -> if x < 0.9999 then x + 0.1 else x)++probabilities_decr :: Int -> P -> P+probabilities_decr z = M.insert z 0.1++ag :: IO AG+ag = do+ a <- l_stepper_scramble amp_set+ s <- l_stepper_scramble sus_set+ p <- l_stepper_scramble pan_set+ i <- l_stepper_scramble ioi_set+ g <- newStdGen+ m <- l_stepper (ioi_mult_seq' 0.1 g)+ o <- l_stepper (octaves_seq' g)+ b <- l_stepper (base_note_seq' g)+ n <- scrambleIO note_set+ return AG {note_row = n+ ,amp_row = a+ ,sus_row = s+ ,pan_row = p+ ,ioi_row = i+ ,ioi_mult_seq = m+ ,base_note_seq = b+ ,octaves_seq = o+ ,selections = selections'+ ,probabilities = probabilities'}++ag_note :: S -> Int -> Int -> Int -> Int+ag_note s' z o b = ((s' M.! z) `mod` o) * 12 + b + z++-- o,b,a,su,pn,i,im are lists+-- p,s,z are nested lists+ag_psz' :: RandomGen g => [Int] -> [Int] -> P -> S -> g -> [([P],[S],[Int])]+ag_psz' nr cn p s g =+ let (n:ns) = cn+ ((p',s',c),g') = chord' p s n nr g+ p'' = probabilities_incr (last p')+ (s'',g'') = selections_step' (last s') g'+ in (p',s',c) : ag_psz' nr ns p'' s'' g''++ag_psz :: [Int] -> [Int] -> P -> S -> IO [([P], [S], [Int])]+ag_psz nr cn p s = do+ g <- newStdGen+ return (ag_psz' nr cn p s g)++{-+let g = mkStdGen 0+let cn = chord_n' g+let t3_3 (_,_,x) = x+take 12$ map t3_3$ ag_psz note_set cn probabilities' selections' g+-}++scramble_c :: [t] -> IO [t]+scramble_c x = fmap cycle (scrambleIO x)++type Score = ([([Int],[Int],[R],[R],[R],([P],[S],[Int]))],[R],[R])++ag_score :: IO Score+ag_score = do+ a <- scramble_c amp_set+ su <- scramble_c sus_set+ pn <- scramble_c pan_set+ i <- scramble_c ioi_set+ g <- newStdGen+ let m = ioi_mult_seq' 0.1 g+ o = octaves_seq' g+ b = base_note_seq' g+ nr <- scrambleIO note_set+ cn <- chord_n+ let gr = splitPlaces (map (+ 1) cn)+ psz <- ag_psz nr cn probabilities' selections'+ return (zip6 (gr o) (gr b) (gr a) (gr su) (gr pn) psz,i,m)++---ag_run_score (a,s,p,o,b,psz,i,m) =++ag_run_note :: Transport t => t->Int->Int->R->R->R->(P,S,Int)->IO()+ag_run_note fd o b a su pn (p,s,z) = do+ let mn = ag_note s z o b+ print ('γ',o,'δ',b)+ print ('ε',map (set_prec 2) (M.elems p))+ print ('ζ',M.elems s)+ send fd (nd_msg (midiCPS (fromIntegral mn)) a su pn)++ag_step :: Transport t => t -> AG -> IO AG+ag_step fd r = do+ let act (p,s,z) = do+ o <- octaves_seq r+ b <- base_note_seq r+ a <- amp_row r+ su <- sus_row r+ pn <- pan_row r+ ag_run_note fd o b a su pn (p,s,z)+ (p',s') <- do let p = probabilities_incr (probabilities r)+ s <- selections_step (selections r)+ n <- wchooseIO [1,2,3,4,5] [0.5,0.35,0.1,0.025,0.025]+ (p',s',c) <- chord p s n (note_row r)+ mapM_ act (zip3 p' s' c)+ return (last p',last s')+ dt <- ioi_row r+ i <- ioi_mult_seq r+ wait (dt * i)+ return (r {probabilities = p',selections = s'})++ag_run :: Transport t => t -> Maybe Int -> IO ()+ag_run fd i = do+ r <- ag+ ag_init fd+ _ <- case i of+ Just n -> mrec_n n (ag_step fd) r+ Nothing -> mrec (ag_step fd) r+ return ()++main :: IO ()+main = do+ i <- randomRIO (256,512)+ withSC3 (\fd -> ag_run fd (Just i) >> wait 9 >> reset fd)++{-+withSC3 ag_init+withSC3 (\fd -> send fd (nd_msg 660 0.45 0.65 0))+r <- ag+withSC3 (\fd -> ag_step fd r)+withSC3 (\fd -> ag_run fd (Just 32))+withSC3 (\fd -> ag_run fd Nothing)+withSC3 reset+-}
@@ -0,0 +1,87 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg07473.html (nc)+module Sound.SC3.Graph.NC_arpeggio where++import Control.Monad {- base -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++analogarpeggio :: Synthdef+analogarpeggio =+ let k = control KR+ o = k "out" 0+ p = k "pan" 0+ g = k "gate" 1+ f = k "freq" 440+ a = k "amp" 0.1+ c = k "cutoffmult" 3+ r = k "res" 0.1+ e = let d = envADSR 0.01 0.3 0.5 1 1 (EnvNum (-4)) 0+ in envGen AR g 1 0 1 RemoveSynth d+ i = mix (saw AR (f * mce [0.497,0.999,1.0,2.03]))+ s = bLowPass i (c * f) r * 0.25+ in synthdef "analogarpeggio" (out o (pan2 (e * s * a) p 0.25))++{-+audition (pbind [(K_instr,psynth analogarpeggio)+ ,(K_dur,pstutter 8 (pwrand 'α' [0.1,0.25] [2/3,1/3] inf))+ ,(K_note,pwrand 'β' [0,2,4,5,7] [0.3,0.1,0.3,0.1,0.2] inf)+ ,(K_octave,pstutter 4 (prand 'γ' [4,5,6,7] inf))+ ,(K_param "pan",pbrown 'δ' (-1.0) 1.0 0.25 inf)+ ,(K_amp,pbrown 'ε' 0.1 0.5 0.15 inf)+ ,(K_param "cutoffmult",pbrown 'ζ' 4.0 5.0 0.1 inf)+ ,(K_param "res",pbrown 'η' 0.0 1.0 0.25 inf)])+-}++-- > pinterp 3 0 9 == toP' [0,3,6]+-- > pseries 6 ((15 - 3) / 6) 3 == toP' [6,8,10]+pinterp :: (Fractional a) => Int -> a -> a -> P a+pinterp n s e = pseries s ((e - s) / fromIntegral n) n++pinterp' :: (Fractional a) => P Int -> P a -> P a -> P a+pinterp' n s e = join (pzipWith3 pinterp n s e)++arpeggio :: P_Bind+arpeggio =+ [(K_instr,psynth analogarpeggio)+ ,(K_dur+ ,let d = pwrand 'α' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf+ in pstutter 32 d)+ ,(K_param "cutoffmult"+ ,let n = prand 'β' [8,16,24,32] inf+ s = pwhite 'γ' 2.5 5.0 inf+ e = pwhite 'δ' 1.5 7.0 inf+ in pinterp' n s e)+ ,(K_param "res"+ ,let n = prand 'ε' [8,16,24,32] inf+ s = pexprand 'ζ' 0.02 0.5 inf+ e = pexprand 'η' 0.02 1.0 inf+ in pinterp' n s e)+ ,(K_param "pan"+ ,let n = prand 'θ' [8,16] inf+ s = pwhite 'ι' (-1.0) 1.0 inf+ s' = fmap (< 0) s+ e = pif s' (pwhite 'κ' 0.0 1.0 inf) (pwhite 'λ' (-1.0) 0.0 inf)+ in pinterp' n s e)+ ,(K_amp+ ,let n = prand 'μ' [8,16,24,32] inf+ s = prand 'ν' [0.25,0.05,0.5] inf+ e = prand 'ξ' [0.25,0.05,0.5,0.01] inf+ in pinterp' n s e)+ ,(K_note+ ,let f x = pn (toP x) 8+ in pseq (map f [[10,6,1,-2]+ ,[-3,1,6,9]+ ,[9,6,1,-3]+ ,[-2,1,6,10]+ ,[8,6,1,-4]+ ,[-3,1,6,9]+ ,[8,6,1,-3]+ ,[-6,1,6,8]]) inf)+ ,(K_octave+ ,pstutter 8 (pseq [7,6,5,4,4,5,6,7] inf))]++main :: IO ()+main = do+ let n = 60/157+ p = pedit K_dur (* n) (pbind arpeggio)+ withSC3 (play p)
@@ -0,0 +1,40 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg09524.html (nc)+module Sound.SC3.Graph.NC_ellipse_based_synthesis where++import Sound.SC3 {- hsc3 -}++ifU :: Num a => a -> a -> a -> a+ifU t i j = (t * i) + ((1 - t) * j)++ebs_nc :: UGen -> UGen -> UGen -> UGen+ebs_nc wd fr sc =+ let ph = phasor AR 0 (fr * 2 * pi * sampleDur) 0 (2 * pi) 0+ sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+ in cos (atan (wd + sc * tan ph)) * sg++ebs_jr :: UGen -> UGen -> UGen -> UGen+ebs_jr wd fr sc =+ let ph = range 0 (2 * pi) (lfSaw AR fr 0)+ sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+ in cos (atan (wd + sc * tan ph)) * sg++ebs_jmcc :: UGen -> UGen -> UGen -> UGen+ebs_jmcc wd fr sc =+ let ph = phasor AR 0 (fr * 2 * pi * sampleDur) 0 (2* pi) 0+ sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+ in cos (atan(wd + sc * tan ph)) * sg++ctl :: (UGen -> UGen -> UGen -> t) -> t+ctl f =+ let fr = mouseY KR 4 444 Linear 0.1+ sc = mouseX KR 0.1 1.0 Linear 0.1+ wd = mouseR 'z' KR 0 2 Linear 0.1+ in f wd fr sc++main :: IO ()+main = audition (out 0 (ctl ebs_jmcc))++{-+audition (out 0 (mce2 (ebs_nc 0 440 0.5) (ebs_jr 0 440 0.5)))+audition (out 0 (mce2 (ebs_nc 0 440 0.5) (ebs_jmcc 0 440 0.5)))+-}
@@ -0,0 +1,44 @@+-- pebble beach (np)+-- http://sccode.org/1-u+-- requires 'scsynth -u 57110 -m 32768'+module Sound.SC3.Graph.NP_pebble_beach where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++exprange :: UGen -> UGen -> UGen -> UGen+exprange l r i = linExp i (-1) 1 l r++bg_f :: UGen -> UGen+bg_f k =+ let sc = 0.4 + (k * 0.07)+ fr = range 3100 4900 (lag (lfNoise0 'α' KR 21.8) 0.7) * sc+ am = range 0 1 (lag (lfNoise1 'α' KR 5.227) 5.374)+ in bpf (pinkNoise 'α' AR * 0.4) fr 0.1 * am++fg_f :: UGen -> UGen -> UGen+fg_f df tf =+ let d = dust 'α' AR (df * rand 'α' 0.8 1.2) * 50+ l = exprange 800 900 (sinOsc KR 2.2 0)+ r = exprange 2600 2900 (sinOsc KR 5.228 0)+ z = resonz d (tRand 'α' l r d) (tRand 'α' 0.03 0.08 d)+ t = lagUD (range 2 0.5 (saw KR tf)) 0.6 2.8+ o = z * t+ in o + combL o 0.8 (rand 'α' 0.2 0.8) (lchoose 'α' [-4,4])++pebble_beach' :: ID a => a -> UGen+pebble_beach' j =+ let bg' = let am = range 0 1 (lag (lfNoise0 'α' KR 34) 1.4)+ in brownNoise 'α' AR * 0.06 * am+ bg = bg' + sum (uprotect' j (map bg_f [0..19])) * 0.6+ tf = range 0.122 0.24 (sinOsc KR 0.17 0)+ df = exprange 1 700 (lfTri KR tf 0) * exprange 1 0.2 (lfTri KR tf 0)+ fg = mix (uclone j 50 (fg_f df tf)) * 0.2+ in (bg + fg) * line KR 0 1 1.2 DoNothing++pebble_beach :: UGen+pebble_beach = mce2 (pebble_beach' 'α') (pebble_beach' 'β')++-- # UGens == 1994+main :: IO ()+main = audition (out 0 pebble_beach)
@@ -0,0 +1,17 @@+-- http://sccode.org/1-V (nv)+module Sound.SC3.Graph.NV_nv_tw_1 where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++nv_tw_1 :: UGen+nv_tw_1 =+ let a = uclone 'α' 2 (pinkNoise 'β' AR)+ nd z =+ let n = lfNoise1 'γ' KR (rand 'δ' 0 0.05)+ f = linExp n (-1) 1 40 15000+ in bBandStop z f (expRand 'ε' 0.1 2)+ in lpf (useq 'ζ' 50 nd a) 1e5++main :: IO ()+main = audition (out 0 nv_tw_1)
@@ -0,0 +1,17 @@+-- http://sccode.org/1-V (nv)+module Sound.SC3.Graph.NV_nv_tw_41 where++import Sound.SC3.ID {- hsc3 -}++nv_tw_41 :: UGen+nv_tw_41 =+ let nd i =+ let t = (0.6 ** i) * 40 * impulse AR ((2 ** i) / 32) (1/2)+ f = (4 ** lfNoise0 i KR (1/16)) * 300+ in sin (rlpf t f 5e-3)+ x = splay (mce (map nd [0..7])) 1 1 0 True+ r u = let (p,q) = mce2c u in freeVerb2 p q 0.1 1 1+ in r (r x)++main :: IO ()+main = audition (out 0 nv_tw_41)
@@ -0,0 +1,32 @@+-- http://sccode.org/1-V (nv)+module Sound.SC3.Graph.NV_nv_tw_54 where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++fF :: Double -> Double -> Double+fF i f =+ let n = (((2 * i) `modE` 6 + 1) + floorE f) / (i `modE` 5 + 1)+ in (f + log2 n) `modE` 2++fS :: [Double]+fS =+ let lp i f = let f' = fF i f in f' : lp (i + 1) f'+ in lp 0 0++nvi :: Synthdef+nvi =+ let i = control KR "i" 0+ f = control KR "f" 0+ p = (i `modE` 8 + 2) * 52+ e = line KR 0.1 0 1 RemoveSynth+ o = syncSaw AR ((2 ** f) * 99 + mce2 0 1) p * e+ in synthdef "nvi" (out 0 o)++main :: IO ()+main =+ let fS' = map realToFrac fS+ in audition (pbind [(K_instr,psynth nvi)+ ,(K_param "f",toP fS')+ ,(K_param "i",pseries 0 1 inf)+ ,(K_dur,0.3)])
@@ -0,0 +1,47 @@+-- http://ccrma-mail.stanford.edu/pipermail/stk/2007-January/000327.html (pc)+module Sound.SC3.Graph.PC_thx where++import Sound.SC3 {- hsc3 -}+import System.Random {- random -}++type R = Double++rvb :: UGen -> R -> UGen+rvb i rT =+ let d = mce [0.0297,0.0371,0.0411,0.0437]+ c = mix (combN i 0.05 d (constant rT) * 0.25)+ f = (allpassN c 0.01 0.005 0.096835)+ in allpassN f 0.01 0.0017 0.032924++mk_env :: R -> R -> R -> R -> R -> R -> R -> EnvCurve -> UGen+mk_env z0 t0 z1 t1 t2 z2 t3 c =+ let z = map constant [z0,z1,z1,z2,z2]+ t = map constant [t0,t1,t2,t3]+ e = Envelope z t [c,c,c] Nothing Nothing+ in envGen KR 1 1 0 1 RemoveSynth e++mk_saw :: R -> R -> R -> UGen -> UGen+mk_saw t4 f0 f1 l =+ let f = mk_env f0 t0 f0 t1 t2 f1 (t3 + t4 + t5 + t5) EnvLin+ g = mk_env 0 t0 0.1 (t1 + t2 + t3) t4 0.0 (t5 + t5) EnvLin+ s = saw AR f+ t0 = 0.035+ t1 = 0.2267573696+ t2 = 2.2675736061+ t3 = 6.8027210884+ t5 = 1.75+ in pan2 s l g++thx :: UGen+thx =+ let t4 = 7.9365079365+ s = sum (zipWith3 (mk_saw t4) f0 f1 l)+ n = 30+ l = take n (randomRs (-1.0,1.0) (mkStdGen 1))+ f = [29,87.5,116,175,233,350,524,880,1048,1760]+ f0 = take n (randomRs (200.0,800.0) (mkStdGen 2))+ f1 = take n (cycle f)+ in rvb s t4++main :: IO ()+main = audition (out 0 thx)
@@ -0,0 +1,17 @@+-- sc-users, 2007-04-06 (pj) [paul jones]+module Sound.SC3.Graph.PJ_forest_sounds_m where++import Sound.SC3.Monad {- hsc3 -}++insects :: UId m => m UGen+insects = do+ n1 <- brownNoise AR+ n2 <- lfNoise2 KR 50+ let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000+ return (bpf n1 o 0.001 * 10)++forest_sounds :: UId m => m UGen+forest_sounds = clone 2 insects++main :: IO ()+main = audition . out 0 =<< forest_sounds
@@ -0,0 +1,32 @@+-- hh-808 (rb)+-- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html+module Sound.SC3.Graph.RB_hh_808 where++import Sound.SC3 {- hsc3 -}++hh_808 :: UGen+hh_808 =+ let time = 250+ fr = [205.35,304.41,369.64,522.71,540.54,812.21]+ env i j k = Envelope i j k Nothing Nothing+ pulseEnv = let e = env [1.0,0.6] [time] [EnvNum (-0.5)]+ in envGen AR 1 1 0 (1/1000) DoNothing e+ s = mix (lfPulse AR (mce (map (* 4.09) fr)) 0 0.5)+ f = [\a -> ((a ==* 6.0) * 0.6) ++ ((a ==* 2.0) * 0.2) ++ ((a ==* 1.0) * 0.9)+ ,\a -> (a * pulseEnv) + (mix (lfPulse AR (mce fr) 0 0.55)) * 0.9+ ,\a -> rlpf a 7000 0.6+ ,\a -> rhpf a 6800 1.5+ ,\a -> rhpf a 6800 1.5+ ,\a -> rhpf a 1200 1.5+ ,\a -> a + freeVerb a 0.33 0.5 0.5+ ,\a -> let c = map EnvNum [0,-0.5,0,-50]+ e = env [0,1,0.4,0,0] [2,time,50,500] c+ in a * envGen AR 1 1 0 (1/1000) RemoveSynth e+ ,\a -> mce [a,delayN a 0.005 0.005]]+ in foldl1 (flip (.)) f s * 2++main :: IO ()+main = audition (out 0 hh_808)+
@@ -0,0 +1,45 @@+-- adso (rd)+module Sound.SC3.Graph.RD_adso where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++getb :: Real a => UGen -> a -> UGen+getb b j =+ let k = mce [0 .. constant j - 1]+ in bufRdN 1 KR b k NoLoop++adso :: Real a => a -> UGen+adso n =+ let m = sinOsc KR (getb 3 n) 0+ f = midiCPS (getb 0 n) * (m * getb 4 n + 1)+ l = getb 2 n+ g = getb 1 n+ in mix (pan2 (sinOsc AR f 0) l g)++pattern :: Transport m => Int -> Double -> m ()+pattern n t = do+ z <- do l <- rrand 22 48+ r <- rrand 54 122+ sequence (replicate n (rrand l r))+ send (b_setn1 0 0 z)+ let rn i l r = do d <- nrrand n l r+ send (b_setn1 i 0 d)+ rn 1 0 0.1+ rn 2 (-1) 1+ rn 3 2 12+ rn 4 0.001 0.0075+ rn 5 1 24+ rn 6 0.05 2.4+ pauseThread t++run :: Transport m => Int -> m ()+run n = do+ mapM_ (\i -> async (b_alloc i n 1)) [0..6]+ _ <- play (out 0 (adso n))+ mapM_ (pattern n) =<< nrrand 32 0.025 0.75+ reset++main :: IO ()+main = withSC3 (run 24)
@@ -0,0 +1,74 @@+-- bs-070705 (rd)+module Sound.SC3.Graph.RD_bs_070705_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++-- | One step in a bubble sort with specified /greater than/ function.+bubble_p :: (a -> a -> Bool) -> [a] -> [a]+bubble_p gt l =+ case l of+ e:f:g -> if e `gt` f+ then f : bubble_p gt (e : g)+ else e : bubble_p gt (f : g)+ _ -> l++-- | 'bubble_p' '>'.+bubble :: (Ord a) => [a] -> [a]+bubble = bubble_p (>)++-- | One step in /odd even/ sorting, a bubble sort variant.+odd_even :: (Ord a) => [a] -> [a]+odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)++-- | Allocate required buffers to /n/ places.+alloc_data :: Transport m => Int -> m ()+alloc_data n = do+ let alloc m b = async (b_alloc b m 1)+ mapM_ (alloc n) [10, 11, 12]++-- | Simple synthesis renderer, r is the impulse frequency (trigger rate).+play_data :: (UId m,Transport m) => UGen -> m ()+play_data r = do+ let inf_sc = 9e8+ phase <- dseries inf_sc 0 1+ f' <- dbufrd 10 phase Loop+ a' <- dbufrd 11 phase Loop+ p' <- dbufrd 12 phase Loop+ let tr = impulse AR r 0+ f'' = demand tr 0 f'+ a'' = demand tr 0 a'+ p'' = demand tr 0 p'+ play (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))++-- | Randomize initial data of /n/ places, /s/ sort for+-- /m/ steps, pause for i seconds between each step.+run_data :: Transport m => ([Double] -> [Double]) -> Int -> Int -> Double -> m ()+run_data s n m i = do+ f <- nrrand n 32 96+ a <- nrrand n 0.25 1+ p <- nrrand n (-1) 1+ let prepare l' = take m (iterate s l')+ f' = prepare f+ a' = prepare a+ p' = prepare p+ l i' (f'', a'', p'') = do+ send (b_setn 10 [(0, f'')])+ send (b_setn 11 [(0, a'')])+ send (b_setn 12 [(0, p'')])+ pauseThread i'+ mapM_ (l i) (zip3 f' a' p')++-- | Run 'odd_even' for 32 iterations at 1 second intervals.+main :: IO ()+main = withSC3 (alloc_data 96 >> play_data 24 >> run_data odd_even 96 32 1)++{--+withSC3 (alloc_data 96)+withSC3 (play_data 24 >> run_data odd_even 96 96 0.35)+withSC3 (play_data 24 >> run_data bubble 96 64 0.75)+withSC3 (play_data 24 >> run_data bubble 96 64 0.25)+withSC3 (play_data 24 >> run_data bubble 96 32 0.25)+withSC3 (play_data 24 >> run_data odd_even 96 16 0.25)+--}
@@ -0,0 +1,22 @@+-- ccomb (rd)+module Sound.SC3.Graph.RD_ccomb_m where++import Sound.SC3.Monad {- hsc3 -}++ccomb :: (Functor m,UId m) => m UGen+ccomb = do+ let rng l r i = linLin i (-1) 1 l r+ lwr = 48+ flwr = midiCPS lwr+ spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)+ e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)+ x <- fmap (* e) (whiteNoise AR)+ m <- lfNoise2 KR 0.1+ let f = lag (midiCPS n) 0.25+ m' = rng 1 8 m+ return (combC x (recip flwr) (recip f) m')+ t <- dust KR (mce2 0.75 0.35)+ return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))++main :: IO ()+main = audition . out 0 =<< ccomb
@@ -0,0 +1,112 @@+-- | cds-070701 (rd)+--+-- The 'source' data are breakpoint sets normalized over the time+-- interval (0,1). There are a fixed number of 'locations' per cycle.+-- The data sets are sampled at these locations and loaded into+-- buffers. The buffers are read using dbufrd. One of the data sets+-- gives the time interval to step forward.+module Sound.SC3.Graph.RD_cds_070701_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++-- | Real+type R = Double++-- | Point+type P = (R,R)++-- | Data set+type D = [P]++-- | Points that bracket a time.+pts :: D -> R -> (P,P)+pts d n =+ case d of+ p0:p1:r -> let (t,_) = p1+ in if n <= t+ then (p0,p1)+ else pts (p1:r) n+ _ -> error "pts"++-- | Linear interpolation.+--+-- > lerp 0.5 (0,0) (1,1) == (0.5,0.5)+-- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)+lerp :: R -> P -> P -> P+lerp n (t0,d0) (t1,d1) =+ let n' = (n - t0) / (t1 - t0)+ f i = d0 + ((d1 - d0) * i)+ in (n,f n')++-- | Linear interpolating lookup.+lerpd :: D -> R -> P+lerpd t n =+ let (p0,p1) = pts t n+ in lerp n p0 p1++-- | Linearize in time (ie. /t/ is in equal steps).+rescale :: D -> Int -> D+rescale t n = map (lerpd t) [0,1 / fromIntegral n .. 1]++-- | Allocate data buffers for linearized envelopes.+alloc_data :: Int -> IO ()+alloc_data n = do+ let alloc b = async (b_alloc b n 1)+ withSC3 (mapM_ alloc [10,11,12,13])++-- | Data can be loaded while nodes are running, ie. edited online.+load_data :: Int -> (D,D,D,D) -> IO ()+load_data n (t,f,a,p) = do+ let setup d = map snd (rescale d n)+ withSC3 (do send (b_setn 10 [(0,setup t)])+ send (b_setn 11 [(0,setup f)])+ send (b_setn 12 [(0,setup a)])+ send (b_setn 13 [(0,setup p)]))++-- | Simple synthesis of data.+play_data :: IO ()+play_data = do+ let inf_sc = 9e8+ phase <- dseries inf_sc 0 1+ t' <- dbufrd 10 phase Loop+ f' <- dbufrd 11 phase Loop+ a' <- dbufrd 12 phase Loop+ p' <- dbufrd 13 phase Loop+ let tr = tDuty AR t' 0 DoNothing 1 0+ f'' = demand tr 0 f'+ a'' = demand tr 0 a'+ p'' = demand tr 0 p'+ audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))++-- | Sample data sets, load using 'load_data'.+data_1 :: (D,D,D,D)+data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]+ ,[(0,200),(0.35,8900),(1,200)]+ ,[(0,0.35),(0.65,0.65),(1,0.35)]+ ,[(0,-1),(0.3,1),(1,-1)])++data_2 :: (D,D,D,D)+data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]+ ,[(0,100),(0.5,13900),(1,200)]+ ,[(0,0.75),(0.5,0.25),(1,0.75)]+ ,[(0,1),(0.5,-1),(1,1)])++data_3 :: (D,D,D,D)+data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]+ ,[(0,770),(0.5,77),(1,770)]+ ,[(0,0.9),(0.5,0.6),(1,0.9)]+ ,[(0,0),(0.5,1),(1,0)])++-- | Switch between data sets at /dd/ at time interval /t/.+data_switch :: [(D,D,D,D)] -> R -> IO ()+data_switch dd t =+ let w d = load_data 64 d >> pauseThread t+ in mapM_ w dd >> data_switch dd t++main :: IO ()+main = do+ alloc_data 64+ load_data 64 data_1+ play_data+ data_switch [data_1,data_2,data_3] 4
@@ -0,0 +1,26 @@+-- chrd (rd)+module Sound.SC3.Graph.RD_chrd_m where++import Sound.SC3.Monad {- hsc3 -}++chrd :: UId m => m UGen+chrd = do+ r0 <- rand 0.05 0.5+ [r1, r2] <- sequence (replicate 2 (rand (-1) 1))+ r3 <- rand 0.15 0.35+ r4 <- rand 0.005 0.01+ let m = mce [60, 65, 72, 77, 79, 84]+ ds = 3+ d = mce (map (* ds) [5, 4, 5, 7, 4, 5])+ f = midiCPS (xLine KR m (m + r0) d DoNothing)+ z = envTrapezoid 0 r3 d r4+ e = envGen KR 1 1 0 1 DoNothing z+ p = xLine KR r1 r2 d DoNothing+ o = fSinOsc AR f 0+ return (mix (pan2 o p e))++chrd9 :: UId m => m UGen+chrd9 = fmap mix (clone 9 chrd)++main :: IO ()+main = audition . out 0 =<< chrd9
@@ -0,0 +1,37 @@+-- chrd-t (rd)+module Sound.SC3.Graph.RD_chrd_t where++import Control.Monad {- base -}+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++chrd :: RandomGen g => [Int] -> Double -> Rand g UGen+chrd ch ds = do+ r0 <- rrand 0.05 0.5+ r1 <- rrand (-1) 1+ r2 <- rrand (-1) 1+ r3 <- rrand 0.15 0.35+ r4 <- rrand 0.005 0.01+ let m = mce (map fromIntegral ch)+ d = mce (map (* constant ds) [5, 4, 5, 7, 4, 5])+ f = midiCPS (xLine KR m (m + r0) d DoNothing)+ z = envTrapezoid 0 r3 d r4+ e = envGen KR 1 1 0 1 DoNothing z+ p = xLine KR r1 r2 d DoNothing+ o = fSinOsc AR f 0+ return (mix (pan2 o p e))++chrdN :: RandomGen g => Int -> Int -> Double -> Rand g UGen+chrdN i j ds = do+ let scale = [0,2,4,5,7,9,11]+ octaves = [4,5,6,7]+ ch <- nchoose i [n + (o * 12) | n <- scale, o <- octaves]+ c <- replicateM j (chrd ch ds)+ return (sum c)++main :: IO ()+main = do+ g <- getStdGen+ overlapTextureS (21,0,3,maxBound) (runRand (chrdN 6 9 3)) g
@@ -0,0 +1,23 @@+-- cricket (rd)+module Sound.SC3.Graph.RD_cricket_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++cricket :: UId m => m UGen+cricket = do+ r1 <- clone 2 (rand 10 13)+ r2 <- clone 2 (rand 10 13)+ r3 <- clone 2 (rand 4 7)+ let t = impulse KR 0.7 0+ e = decay2 (impulse KR r1 0) 0.001 0.005+ f = sinOsc KR r2 0 * e * r3+ r4 <- clone 2 (tRand 2130 2230 t)+ return (sinOsc AR r4 0 * f * 0.25)++main :: IO ()+main = overlapTextureU (7,2,3,maxBound) =<< cricket++{-+audition . out 0 =<< cricket+-}
@@ -0,0 +1,177 @@+-- crotale (rd)+module Sound.SC3.Graph.RD_crotale where++import Sound.SC3.ID {- hsc3 -}++crotale :: UGen+crotale =+ let (cf,ca,cd) = crotale_data+ ps = mce [-12,-5,0,2,4,5,7,12]+ n = pinkNoise 'α' AR+ t = dust 'β' KR 3+ fs = select (tIRand 'γ' 0 7 t) ps+ g = tRand 'δ' 0 1 t+ fo = tRand 'ε' 0 1 t+ ds = tRand 'ζ' 2 7 t+ p = tRand 'η' (-1) 1 t+ s = decay2 t 0.06 0.01 * n * g+ ks = klankSpec' cf ca (map recip cd)+ k = dynKlank s (midiRatio fs) fo ds ks+ in pan2 k p 1++main :: IO ()+main = audition (out 0 crotale)++crotale_data :: ([Double],[Double],[Double])+crotale_data =+ ([35.45676040649414+ ,128.59849548339844+ ,346.9721984863281+ ,483.5544128417969+ ,1049.2449951171875+ ,1564.0279541015625+ ,1756.3399658203125+ ,3391.666015625+ ,3451.802001953125+ ,3497.261962890625+ ,3596.89794921875+ ,3696.739013671875+ ,3835.235107421875+ ,3845.955078125+ ,4254.85107421875+ ,4407.533203125+ ,4415.26416015625+ ,4552.865234375+ ,5538.076171875+ ,5637.73681640625+ ,5690.2978515625+ ,5728.0068359375+ ,5764.27685546875+ ,5824.4189453125+ ,6377.60498046875+ ,6544.35009765625+ ,6807.14404296875+ ,6994.97021484375+ ,7026.84619140625+ ,7144.5859375+ ,7269.61279296875+ ,7393.6708984375+ ,7897.259765625+ ,8040.4580078125+ ,8157.77099609375+ ,8225.01953125+ ,9126.150390625+ ,9488.529296875+ ,9916.408203125+ ,10155.599609375+ ,11715.9599609375+ ,12111.830078125+ ,12339.990234375+ ,12417.669921875+ ,12459.2802734375+ ,12618.330078125+ ,13116.490234375+ ,13201.1298828125+ ,13297.830078125+ ,13533.75]+ ,[0.0012827360769733787+ ,0.0008040848188102245+ ,0.017361238598823547+ ,0.004835359752178192+ ,0.004413491114974022+ ,0.004110544919967651+ ,0.0003338181704748422+ ,0.0036140112206339836+ ,0.006919348146766424+ ,0.0003224937245249748+ ,0.0006031467346474528+ ,0.06686479598283768+ ,0.000605064386036247+ ,0.003602313343435526+ ,0.0002835785271599889+ ,0.015243238769471645+ ,0.020536603406071663+ ,0.016677580773830414+ ,0.0009245267719961703+ ,0.20205098390579224+ ,0.0012542791664600372+ ,0.012705927714705467+ ,0.0002523190632928163+ ,0.0004866079252678901+ ,0.0006429700297303498+ ,0.0007763264584355056+ ,0.2081160992383957+ ,0.0024918108247220516+ ,0.00193469924852252+ ,0.005231771152466536+ ,0.0069242212921381+ ,0.001203975174576044+ ,0.2050020843744278+ ,0.04060448706150055+ ,0.0038344631902873516+ ,0.002189427148550749+ ,0.18056060373783112+ ,0.002192433224990964+ ,0.006516554858535528+ ,0.009982921183109283+ ,0.004745401442050934+ ,0.046154771000146866+ ,0.000510294979903847+ ,0.0018905038014054298+ ,0.0019782145973294973+ ,0.006729386281222105+ ,0.0023426134139299393+ ,0.0024002245627343655+ ,0.03515550494194031+ ,0.0014084168942645192]+ ,[5.203680992126465+ ,1.7034343481063843+ ,40.16516876220703+ ,27.282501220703125+ ,0.8950523138046265+ ,42.84742736816406+ ,2.6603667736053467+ ,15.7678861618042+ ,6.848367214202881+ ,3.2325007915496826+ ,1.7343382835388184+ ,2.0202419757843018+ ,4.7279052734375+ ,9.400103569030762+ ,0.7102512717247009+ ,37.494625091552734+ ,36.24879455566406+ ,29.172658920288086+ ,3.891019344329834+ ,4.757885456085205+ ,3.851426124572754+ ,20.90781021118164+ ,3.732874870300293+ ,2.3834102153778076+ ,10.443285942077637+ ,8.795611381530762+ ,20.98564338684082+ ,18.01180076599121+ ,25.297883987426758+ ,14.819819450378418+ ,42.39189910888672+ ,2.9485135078430176+ ,11.043763160705566+ ,49.55165100097656+ ,29.882694244384766+ ,10.527188301086426+ ,23.5572452545166+ ,26.55561637878418+ ,45.099605560302734+ ,22.550390243530273+ ,36.46126174926758+ ,11.826201438903809+ ,16.818185806274414+ ,14.903121948242188+ ,32.81113815307617+ ,43.1389045715332+ ,12.289558410644531+ ,11.498942375183105+ ,10.465788841247559+ ,24.93169593811035])+
@@ -0,0 +1,138 @@+-- crotale-sine (rd)+module Sound.SC3.Graph.RD_crotale_sine where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++crotale_sine :: UGen+crotale_sine =+ let (cf,ca) = crotale_data+ g = control KR "gate" 1+ m = control KR "m" 1+ e = let p = envASR 1 1 1 (EnvNum (-4))+ in envGen KR g 1 0 1 RemoveSynth p+ fn m' f' a' =+ let f = constant f'+ a = constant a'+ r0 = rand (f+0) 0 (2 * pi)+ r1 = rand (f+1) 0.1 0.3+ r2 = rand (f+2) 0.025 0.1+ r3 = rand (f+3) 0 (2 * pi)+ o = sinOsc AR (f * midiRatio (m' - 12)) r0+ e' = e * sinOsc KR r1 0 * a+ in pan2 o (sinOsc KR r2 r3) e'+ in sum (zipWith (fn m) cf ca) * 0.1++pattern :: P_Bind+pattern =+ [(K_param "m",pwhitei 'α' 0 12 inf)+ ,(K_dur,pxrand 'β' [1,2,3] inf)+ ,(K_sustain,6)]++main :: IO ()+main = do+ let s = synthdef "crotale-sine" (out 0 crotale_sine)+ audition (p_with (K_instr,psynth s) (pbind pattern))++crotale_data :: ([Double],[Double])+crotale_data =+ ([35.45676040649414+ ,128.59849548339844+ ,346.9721984863281+ ,483.5544128417969+ ,1049.2449951171875+ ,1564.0279541015625+ ,1756.3399658203125+ ,3391.666015625+ ,3451.802001953125+ ,3497.261962890625+ ,3596.89794921875+ ,3696.739013671875+ ,3835.235107421875+ ,3845.955078125+ ,4254.85107421875+ ,4407.533203125+ ,4415.26416015625+ ,4552.865234375+ ,5538.076171875+ ,5637.73681640625+ ,5690.2978515625+ ,5728.0068359375+ ,5764.27685546875+ ,5824.4189453125+ ,6377.60498046875+ ,6544.35009765625+ ,6807.14404296875+ ,6994.97021484375+ ,7026.84619140625+ ,7144.5859375+ ,7269.61279296875+ ,7393.6708984375+ ,7897.259765625+ ,8040.4580078125+ ,8157.77099609375+ ,8225.01953125+ ,9126.150390625+ ,9488.529296875+ ,9916.408203125+ ,10155.599609375+ ,11715.9599609375+ ,12111.830078125+ ,12339.990234375+ ,12417.669921875+ ,12459.2802734375+ ,12618.330078125+ ,13116.490234375+ ,13201.1298828125+ ,13297.830078125+ ,13533.75]+ ,[0.0012827360769733787+ ,0.0008040848188102245+ ,0.017361238598823547+ ,0.004835359752178192+ ,0.004413491114974022+ ,0.004110544919967651+ ,0.0003338181704748422+ ,0.0036140112206339836+ ,0.006919348146766424+ ,0.0003224937245249748+ ,0.0006031467346474528+ ,0.06686479598283768+ ,0.000605064386036247+ ,0.003602313343435526+ ,0.0002835785271599889+ ,0.015243238769471645+ ,0.020536603406071663+ ,0.016677580773830414+ ,0.0009245267719961703+ ,0.20205098390579224+ ,0.0012542791664600372+ ,0.012705927714705467+ ,0.0002523190632928163+ ,0.0004866079252678901+ ,0.0006429700297303498+ ,0.0007763264584355056+ ,0.2081160992383957+ ,0.0024918108247220516+ ,0.00193469924852252+ ,0.005231771152466536+ ,0.0069242212921381+ ,0.001203975174576044+ ,0.2050020843744278+ ,0.04060448706150055+ ,0.0038344631902873516+ ,0.002189427148550749+ ,0.18056060373783112+ ,0.002192433224990964+ ,0.006516554858535528+ ,0.009982921183109283+ ,0.004745401442050934+ ,0.046154771000146866+ ,0.000510294979903847+ ,0.0018905038014054298+ ,0.0019782145973294973+ ,0.006729386281222105+ ,0.0023426134139299393+ ,0.0024002245627343655+ ,0.03515550494194031+ ,0.0014084168942645192])
@@ -0,0 +1,20 @@+-- cut-outs (rd)+module Sound.SC3.Graph.RD_cut_outs_m where++import Sound.SC3.Monad {- hsc3 -}++cut_outs :: (Functor m,UId m) => m UGen+cut_outs = do+ let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)+ x = mouseX KR 0.005 0.12 Exponential 0.1+ y = mouseY KR 0.01 0.52 Exponential 0.1+ n = do n1 <- lfNoise0 KR 2+ n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)+ n3 <- tExpRand (mce2 500 900) 1600 t+ return (ringz n2 n3 x)+ s <- fmap sum (sequence (replicate 3 n))+ b <- tRand 0 1 =<< dust KR 8+ return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])++main :: IO ()+main = audition . out 0 =<< cut_outs
@@ -0,0 +1,29 @@+-- diffraction (rd)+module Sound.SC3.Graph.RD_diffraction_m where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}++diffraction ::(Functor m,UId m) => m UGen+diffraction = do+ let p = do let x = mouseX KR 0.001 0.02 Exponential 0.1+ y = mouseY KR 120 400 Exponential 0.1+ f <- fmap (* mce2 32 64) (lfNoise0 KR 4)+ w <- fmap (* x) (lfNoise0 KR 32)+ z <- fmap (* 0.1) (lfNoise0 KR 2)+ m <- lfNoise0 KR 6+ let s = pulse AR f w+ return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)+ q = do n <- lfNoise0 KR 128+ s <- p+ return (combN s 0.2 (n * 0.1 + 0.1) 3)+ r = let x = mouseX KR 0.75 1.25 Exponential 0.1+ y = mouseY KR 0.25 1 Exponential 0.1+ f _ = do fr <- fmap (* x) (rand 50 59)+ am <- fmap (* y) (rand 0.04 0.16)+ return (sinOsc AR fr 0 * am)+ in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)+ fmap sum (sequence [p,q,r])++main :: IO ()+main = audition . out 0 =<< diffraction
@@ -0,0 +1,22 @@+-- discretion (rd)+module Sound.SC3.Graph.RD_discretion where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++discretion :: UGen+discretion =+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ part = let f1 = randN 2 'α' 50 55+ f2 = randN 2 'β' 50 65+ f3 = randN 2 'γ' 50 55+ a = randN 2 'δ' 0.01 0.035+ t = 21+ f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t+ a_ = mkls [(0,0),(0.33,a),(1,0)] t+ in (saw AR f_ * a_)+ in mix (uclone 'ε' 8 part)++main :: IO ()+main = audition (out 0 discretion)
@@ -0,0 +1,20 @@+-- discretion-m (rd)+module Sound.SC3.Graph.RD_discretion_m where++import Sound.SC3.Monad {- hsc3 -}++discretion :: UId m => m UGen+discretion = do+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ part = do f1 <- clone 2 (rand 50 55)+ f2 <- clone 2 (rand 50 65)+ f3 <- clone 2 (rand 50 55)+ a <- clone 2 (rand 0.01 0.035)+ let t = 21+ f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t+ a_ = mkls [(0,0),(0.33,a),(1,0)] t+ return (saw AR f_ * a_)+ fmap mix (clone 8 part)++main :: IO ()+main = audition . out 0 =<< discretion
@@ -0,0 +1,64 @@+-- e-lamell (rd)+module Sound.SC3.Graph.RD_e_lamell where++import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}++e_lamell :: UGen+e_lamell =+ let ctl = control KR+ f = ctl "f" 440+ n = ctl "n" 12+ d = ctl "d" 0.1+ l = ctl "l" 0+ a = ctl "a" 1+ t = lchoose 'α' [1,32]+ h = line AR n t d DoNothing+ s = blip AR f h+ e_d = envPerc 0.005 d+ e = envGen AR 1 a 0 1 RemoveSynth e_d+ in pan2 s l e++sendSynth :: Transport m => String -> UGen -> m Message+sendSynth n u = async (d_recv (synthdef n u))++mk_s_new :: Double -> Double -> Double -> Double -> Double -> Message+mk_s_new f n d a l =+ let p = [("f",f)+ ,("n",n)+ ,("d",d)+ ,("a",a)+ ,("l",l)]+ in s_new "blip" (-1) AddToTail 1 p++pattern :: Transport m => m ()+pattern = do+ let r_note o p = do oe <- R.choose o+ pe <- R.choose p+ return (oe * 12 + pe)+ l_sel = r_note [2,3] [0]+ h_sel = r_note [2,3,4,5] [0,2,5,7]+ p <- do f <- liftM midiCPS l_sel+ n <- R.rrand 2 36+ d <- R.exprand 0.01 0.8+ a <- R.rrand 0 0.75+ l <- R.rrand (-1) 1+ return (mk_s_new f n d a l)+ q <- do f <- liftM midiCPS h_sel+ n <- R.rrand 2 36+ d <- R.exprand 0.01 1.2+ a <- R.choose [0,0.25,0.5,1]+ l <- R.rrand (-1) 1+ return (mk_s_new f n d a l)+ sendBundle (bundle immediately [p,q])+ wait 0.1++run :: Transport m => m ()+run = do+ _ <- sendSynth "blip" (out 0 e_lamell)+ replicateM_ 64 pattern++main :: IO ()+main = withSC3 run
@@ -0,0 +1,43 @@+-- e-lamell-p (rd)+module Sound.SC3.Graph.RD_e_lamell_p where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++e_lamell :: UGen+e_lamell =+ let ctl = control KR+ f = ctl "freq" 440+ a = ctl "amp" 1+ d = ctl "d" 0.1+ n = ctl "n" 12+ l = ctl "l" 0+ t = lchoose 'α' [1,32]+ h = line AR n t d DoNothing+ s = blip AR f h+ e_d = envPerc 0.005 d+ e = envGen AR 1 a 0 1 RemoveSynth e_d+ in pan2 s l e++patterns :: [P_Bind]+patterns =+ let i = psynth (synthdef "e-lamell" (out 0 e_lamell))+ in [[(K_instr,i)+ ,(K_note,prand 'β' [0,2,5,7] inf)+ ,(K_octave,pwrand 'γ' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)+ ,(K_dur,0.1)+ ,(K_param "d",pwhite 'δ' 0.01 0.8 inf)+ ,(K_amp,pwhite 'ε' 0 0.75 inf)+ ,(K_param "n",pwhite 'ζ' 2 36 inf)+ ,(K_param "l",pwhite 'η' (-1) 1 inf)]+ ,[(K_instr,i)+ ,(K_note,prand 'θ' [0] inf)+ ,(K_octave,prand 'ι' [2,3] inf)+ ,(K_dur,0.1)+ ,(K_param "d",pwhite 'κ' 0.01 1.2 inf)+ ,(K_amp,prand 'λ' [0,0.25,0.5,1] inf)+ ,(K_param "n",pwhite 'μ' 2 36 inf)+ ,(K_param "l",pwhite 'ν' (-1) 1 inf)]]++main :: IO ()+main = audition (ppar (map pbind patterns))
@@ -0,0 +1,23 @@+-- eggcrate (rd)+module Sound.SC3.Graph.RD_eggcrate where++import Sound.SC3.ID {- hsc3 -}++atp :: (t -> u) -> (t,t) -> (u,u)+atp f (i,j) = (f i,f j)++eggcrate :: UGen+eggcrate =+ let cosu = cos . (* pi)+ sinu = sin . (* pi)+ eggcrate_f u v = cosu u * sinu v+ p = mce [64,72,96,128,256,6400,7200,8400,9600]+ (x,y) = atp (`brownNoise` KR) ('α','β')+ t = dust 'γ' KR 2.4+ (f0,f1) = atp (\z -> tChoose z t p) ('δ','ε')+ f = linLin (eggcrate_f x y) (-1) 1 f0 f1+ a = linLin x (-1) 1 0 0.1+ in pan2 (mix (sinOsc AR f 0)) y a++main :: IO ()+main = audition (out 0 eggcrate)
@@ -0,0 +1,20 @@+-- eggcrate-m (rd)+module Sound.SC3.Graph.RD_eggcrate_m where++import Sound.SC3.Monad {- hsc3 -}++eggcrate :: UId m => m UGen+eggcrate = do+ let cosu = cos . (* pi)+ sinu = sin . (* pi)+ eggcrate_f u v = cosu u * sinu v+ p = mce [64,72,96,128,256,6400,7200,8400,9600]+ [x,y] <- sequence (replicate 2 (brownNoise KR))+ t <- dust KR 2.4+ [f0,f1] <- sequence (replicate 2 (tChoose t p))+ let f = linLin (eggcrate_f x y) (-1) 1 f0 f1+ a = linLin x (-1) 1 0 0.1+ return (pan2 (mix (sinOsc AR f 0)) y a)++main :: IO ()+main = audition . out 0 =<< eggcrate
@@ -0,0 +1,31 @@+-- f-lets (rd)+module Sound.SC3.Graph.RD_f_lets_m where++import Sound.SC3.Monad {- hsc3 -}++f_lets :: (Functor m,UId m) => m UGen+f_lets = do+ let f_let t g j n f = do+ let pd = pulseDivider t j 0+ r0 <- tIRand (mce2 2 1) n pd+ r1 <- tRand 0.01 0.04 pd+ r2 <- tRand 0.05 0.10 pd+ return (formlet pd (f * r0) r1 r2 * g)+ mk_n t = do+ r0 <- tRand 0 1 t+ r1 <- tRand 0 1 t+ r2 <- tRand 0 1 t+ r3 <- tRand 0 1 t+ r4 <- coinGate 0.2 t+ sequence [f_let t 0.15 2 9 (mce2 200 400)+ ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))+ ,f_let t 0.05 4 5 (mce2 25 50)+ ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))+ ,let lr = fmap (* latch r4 t)+ in lr (f_let t 0.5 1 16 (mce2 300 600))]+ tr = impulse AR 24 0+ n <- lfNoise0 KR 2+ return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr++main :: IO ()+main = audition . out 0 =<< f_lets
@@ -0,0 +1,48 @@+-- fb-090531 (rd)+module Sound.SC3.Graph.RD_fb_090531 where++import Control.Monad {- base -}+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++fb_090531 :: UGen+fb_090531 =+ let k_in n = linLin (in' 1 KR n) (-1) 1+ p = localIn 1 AR+ bt = recip controlRate+ ig_f = k_in 0 1 20+ ig = impulse AR ig_f 0+ f_f = k_in 1 220 880+ f_rq = k_in 2 0.005 0.2+ f = bpf ig f_f f_rq+ d_t = k_in 3 0.1 0.105+ d = delayC (f + p) 1 (d_t - bt)+ in mrg [p,localOut d]++-- | Constant reset.+c_reset :: Transport m => Double -> m ()+c_reset n = send (c_setn [(0,replicate 4 n)])++-- | Random reset.+r_reset :: Transport m => m ()+r_reset = do+ cs <- replicateM 4 (rrand (-1) 1)+ send (c_setn [(0,cs)])++-- | Loop random reset.+lr_reset :: Transport m => Double -> m b+lr_reset t = pauseThread t >> r_reset >> lr_reset t++-- | Start fb_090531 and run lr_reset. Type C-cC-i to interrupt.+main :: IO ()+main = do+ audition (offsetOut 0 fb_090531)+ withSC3 (c_reset 1 >> lr_reset 1)++{-+withSC3 (c_reset 0)+withSC3 (c_reset 1)+withSC3 (c_reset (-1))+withSC3 r_reset+-}
@@ -0,0 +1,37 @@+-- fbl-fbf (rd)+module Sound.SC3.Graph.RD_fbl_fbf where++import Sound.SC3.ID {- hsc3 -}++fbl :: UGen -> [UGen] -> [UGen] -> [UGen] -> (UGen, UGen)+fbl l i d g =+ let a0 = l + mce i+ a1 = delayL a0 (maximum d) (mce d)+ in (localOut (a1 * mce g),a1)++fbf :: [UGen] -> [UGen] -> [UGen] -> [UGen] -> (UGen, UGen)+fbf b i d g =+ let a0 = inFeedback 1 (mce b) + mce i+ a1 = delayL a0 (maximum d) (mce d)+ in (offsetOut (mce b) (mce [a1 * mce g]),a1)++fbl_fbf :: UGen+fbl_fbf =+ let n = brownNoise 'α' AR+ e = decay (impulse AR 0.3 0) 0.1 * n * 0.2+ c = 4+ e' = replicate c e+ b0 = [24,26,28,30]+ d0 = [0.1,0.3,0.5,0.7]+ g0 = [0.8,0.6,0.4,0.2]+ b1 = [25,27,29,31]+ d1 = [0.2,0.3,0.6,0.7]+ g1 = [0.8,0.7,0.4,0.3]+ (u0,s0) = fbl (localIn c AR) e' d0 g0+ (u1,s1) = fbf b0 e' d0 g0+ (u2,s2) = fbf b1 (mceChannels s1) d1 g1+ o = mce [mix (s0 + s1),mix s2]+ in mrg [u0,u1,u2,offsetOut 0 o]++main :: IO ()+main = withSC3 (reset >> play fbl_fbf)
@@ -0,0 +1,37 @@+-- feedr (rd)+-- warning: input/output feedback loop+module Sound.SC3.Graph.RD_feedr_m where++import Sound.OSC.FD {- hosc -}+import Sound.SC3.Monad.FD {- hsc3 -}++delayWr :: UGen -> UGen -> UGen+delayWr b = recordBuf AR b 0 1 0 1 Loop 0 DoNothing++tap :: Int -> UGen -> UGen -> UGen+tap nc b dt = playBuf nc AR b 1 0 (dt * (- sampleRate)) Loop DoNothing++type State = (UGen,Double)++feedr :: (UId m) => State -> Int -> m UGen+feedr (ch,dl) n = do+ t <- sequence (replicate n (rand 0.0 (constant dl)))+ g <- sequence (replicate n (rand 0.4 1.0))+ f <- sequence (replicate n (rand 0.9 0.95))+ let d = zipWith (\p q -> tap 2 10 p * q) t g+ x = mouseX KR 0.02 1.0 Exponential 0.1+ s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1+ i = soundIn ch+ r = i + sum (map (* x) (zipWith (*) d f))+ return (mrg [out 0 s, delayWr 10 r])++run :: Transport t => State -> t -> IO ()+run (ch,dl) fd = do+ nf <- fmap (* dl) (serverSampleRateActual fd)+ send fd (b_alloc 10 (floor nf) 2)+ audition =<< feedr (ch,dl) 18++main :: IO ()+main = withSC3 (run (mce2 4 5,6))++-- withSC3 (\fd -> send fd (b_zero 10))
@@ -0,0 +1,25 @@+-- fm-iter (rd)+module Sound.SC3.Graph.RD_fm_iter where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- audition (out 0 fm_iter)+fm_iter :: UGen+fm_iter =+ let f0 = recip (0.3 + whiteNoise 'α' AR * 0.01)+ t0 = impulse AR f0 0+ t1 = tDelay t0 0.15+ t = mce2 t0 t1+ k = tRand 'β' 56 57 t+ i = tRand 'γ' 40 480 t+ j = tRand 'δ' (-1) 1 t+ c = midiCPS k+ m = midiCPS (k + 1 + j)+ s = envPerc 0.01 0.9+ e = envGen AR t 0.1 0 1 RemoveSynth s+ f = sinOsc AR c 0 * i + m+ in sinOsc AR f 0 * e++main :: IO ()+main = overlapTextureU (3,3,6,maxBound) fm_iter
@@ -0,0 +1,60 @@+-- fm-kltr (rd)+module Sound.SC3.Graph.RD_fm_kltr_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++fm_kltr :: UId m => m UGen+fm_kltr = do+ r1 <- U.rand 0.975 1.025+ r2 <- U.rand 0.5 1.5+ r3 <- U.rand 0.975 1.025+ r4 <- U.rand 0.75 1.25+ let o = control IR "out" 0+ a = control KR "amp" 0.1+ d = control KR "dur" 0.1+ f = control KR "freq" 400.0+ i = control KR "index" 40.0+ p = control KR "pan" 0.0+ f2 = control KR "freq2" 600+ ep = envPerc 0.01 d+ e = envGen AR 1 a 0 1 RemoveSynth ep+ so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0+ xl = xLine KR f2 (f2 * r3) d DoNothing+ m = so * line KR i (f * r2) d DoNothing + xl+ l = line KR p (p * r4) d DoNothing+ return (out o (pan2 (sinOsc AR m 0) l e))++type R = Double++fm :: Transport m => R -> R -> R -> R -> R -> m ()+fm f ff a d i = do+ r1 <- rrand (-1) 1+ r2 <- rrand (-1) 1+ let p = [("freq", midiCPS f)+ ,("freq2", midiCPS ff + r1)+ ,("amp", a)+ ,("dur", d)+ ,("index", i)+ ,("pan", r2)]+ send (s_new "fm_kltr" (-1) AddToTail 1 p)++nd :: Transport m => m ()+nd = do+ ff <- rrand 48 96+ a <- rrand 0.1 0.4+ d <- rrand 1.2 7.2+ i <- rrand 240 1480+ t <- rrand 0.15 1.25+ fm 53 ff a d i+ wait t++run :: (Transport m,UId m) => m ()+run = do+ u <- fm_kltr+ _ <- async (d_recv (synthdef "fm_kltr" u))+ sequence_ (replicate 32 nd)++main :: IO ()+main = withSC3 run
@@ -0,0 +1,41 @@+-- fm-kltr-p (rd)+module Sound.SC3.Graph.RD_fm_kltr_p where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++fm_kltr :: UGen+fm_kltr =+ let r1 = rand 'α' 0.975 1.025+ r2 = rand 'β' 0.5 1.5+ r3 = rand 'γ' 0.975 1.025+ r4 = rand 'δ' 0.75 1.25+ o = control IR "out" 0+ a = control KR "amp" 0.1+ dt = control KR "sustain" 0.1+ f = control KR "freq" 400.0+ i = control KR "index" 40.0+ p = control KR "pan" 0.0+ f2 = control KR "freq2" 600+ ep = envPerc 0.01 dt+ e = envGen AR 1 a 0 1 RemoveSynth ep+ so = sinOsc AR (xLine KR f (f * r1) dt DoNothing) 0+ xl = xLine KR f2 (f2 * r3) dt DoNothing+ m = so * line KR i (f * r2) dt DoNothing + xl+ l = line KR p (p * r4) dt DoNothing+ in out o (pan2 (sinOsc AR m 0) l e)++pattern :: P_Bind+pattern =+ [(K_instr,psynth (synthdef "fm_kltr" fm_kltr))+ ,(K_freq,fmap midiCPS 53)+ ,(K_param "freq2",fmap midiCPS (pwhitei 'ε' 48 96 inf ++ pwhite 'ζ' (-1) 1 inf))+ ,(K_amp,pwhite 'η' 0.1 0.4 inf)+ ,(K_dur,pwhite 'θ' 0.15 1.25 inf)+ ,(K_sustain,pwhite 'ι' 5 6 inf)+ ,(K_param "index",pwhite 'κ' 240 1480 inf)+ ,(K_param "pan", pwhite 'λ' (-1) 1 inf)]++main :: IO ()+main = audition (pbind pattern)
@@ -0,0 +1,40 @@+-- fwalk (rd)+module Sound.SC3.Graph.RD_fwalk_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++fwalk' :: UId m => UGen -> m UGen+fwalk' r = do+ t <- dust KR 3+ r1 <- tIRand 0 6 t+ r2 <- tRand (-0.0001) 0.0001 t+ let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop+ f' = f + r2+ o1 = blip AR (midiCPS (r + f)) 12+ o2 = blip AR (midiCPS (r + f')) 12+ return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)++fwalk :: UId m => m UGen+fwalk = do+ f1 <- fwalk' 24+ f2 <- fwalk' 36+ return (f1 + f2)++run :: (UId m,Transport m) => m ()+run = do+ let n = [40,47,42,40,50+ ,43,35,43,40,47+ ,45,35,43,42,59+ ,48,40,47,52,45]+ m = [40,40,42,47,50+ ,35,43,43,40,45+ ,42,35,48,47,43+ ,40,59,45,47,52]+ _ <- async (b_alloc_setn1 0 0 n)+ _ <- async (b_alloc_setn1 1 0 m)+ f <- fwalk+ play (out 0 f)++main :: IO ()+main = withSC3 run
@@ -0,0 +1,30 @@+-- h-chatter (rd)+module Sound.SC3.Graph.RD_h_chatter_m where++import Sound.SC3.Monad {- hsc3 -}++h_chatter :: UId m => m UGen+h_chatter = do+ let mma m a = return . (+ a) . (* m)+ h0 = do n <- mma 5 5 =<< lfNoise0 KR 1+ a <- mma 0.2 1.2 =<< lfNoise2 KR n+ b <- mma 0.15 0.15 =<< lfNoise2 KR n+ let f = 40+ h = henonN AR (mce2 f (f * 0.5)) a b 0 0+ return (saw AR (h * 3200 + 1600) * 0.35)+ h1 = do n0 <- lfNoise0 KR 32+ n1 <- lfNoise0 KR 2+ let a = mouseX KR 1.2 1.4 Linear 0.1+ b = mouseY KR 0.2 0.3 Linear 0.1+ wrp i = linLin i (-1) 1+ h = wrp n0 1 32+ p = wrp n1 2400 3200+ l = wrp n1 (-0.75) 0.75+ g = wrp n1 0.55 0.85+ f = 40+ o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h+ return (pan2 o l g * 0.35)+ h0 .+. h1++main :: IO ()+main = audition . out 0 =<< h_chatter
@@ -0,0 +1,35 @@+-- implosion (rd)+module Sound.SC3.Graph.RD_implosion_m where++import Sound.SC3.Monad {- hsc3 -}++mkls :: [(UGen,UGen)] -> UGen -> UGen+mkls bp t =+ let e = envCoord bp t 1 EnvLin+ in envGen KR 1 1 0 1 RemoveSynth e++mkrmp :: UGen -> UGen -> UGen -> UGen+mkrmp l r = mkls [(0,l),(1,r)]++pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+pmr_n rt l0 l1 r0 r1 d = do+ let le = mkrmp l0 r0 d+ re = mkrmp l1 r1 d+ wrp i = linLin i (-1) 1+ n <- whiteNoise rt+ return (wrp n le re)++implosion :: UId m => m UGen+implosion = do+ n0 <- rand (-1) 0+ n1 <- rand 0 1+ d <- rand 7.5 13.5+ f0 <- rand 10990 16220+ f1 <- rand 9440 19550+ f <- pmr_n AR 440 f0 f1 f1 d+ l <- pmr_n KR n0 n1 0 0 d+ a <- pmr_n KR 0.1 0.6 0 0 d+ return (pan2 (saw AR f) l a)++main :: IO ()+main = audition . out 0 =<< implosion
@@ -0,0 +1,26 @@+-- k-ppr (rd)+module Sound.SC3.Graph.RD_k_ppr where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++k_ppr :: UGen+k_ppr =+ let wrp i = linLin i (-1) 1+ x = mouseX KR 0.05 0.35 Linear 0.1+ y = mouseY KR 0.15 0.75 Linear 0.1+ ti = lfTri KR x 0+ tf = wrp ti 100 200+ t = impulse AR tf 0+ stream e lf rf ld rd g =+ let r1 = rand e 9 18+ t' = pulseDivider t r1 0+ r2 = tRand e lf (wrp ti lf rf) t'+ r3 = tRand e ld rd t'+ in ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g+ s1 = stream 'α' 3140 6240 0.050 0.005 0.15+ s2 = stream 'β' 0400 9000 0.005 0.005 0.15+ in uclone 'γ' 2 s1 + uclone 'δ' 2 s2++main :: IO ()+main = audition (out 0 k_ppr)
@@ -0,0 +1,25 @@+-- k-ppr-m (rd)+module Sound.SC3.Graph.RD_k_ppr_m where++import Sound.SC3.Monad {- hsc3 -}++k_ppr_m :: UId m => m UGen+k_ppr_m = do+ let wrp i = linLin i (-1) 1+ x = mouseX KR 0.05 0.35 Linear 0.1+ y = mouseY KR 0.15 0.75 Linear 0.1+ ti = lfTri KR x 0+ tf = wrp ti 100 200+ t = impulse AR tf 0+ stream lf rf ld rd g =+ do r1 <- rand 9 18+ let t' = pulseDivider t r1 0+ r2 <- tRand lf (wrp ti lf rf) t'+ r3 <- tRand ld rd t'+ return (ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g)+ s1 = stream 3140 6240 0.050 0.005 0.15+ s2 = stream 0400 9000 0.005 0.005 0.15+ clone 2 s1 .+. clone 2 s2++main :: IO ()+main = audition . out 0 =<< k_ppr_m
@@ -0,0 +1,20 @@+-- klink (rd)+module Sound.SC3.Graph.RD_klink where++import Sound.SC3.ID {- hsc3 -}++klink :: UGen+klink =+ let n1 = lfNoise0 'α' KR (mce2 0.5 1.5)+ o = sinOsc KR n1 0+ a = abs (slope o) * mce2 2 3+ t = impulse AR a 0+ i = decay2 t 0.01 0.1+ x = mouseX KR 960 3620 Exponential 0.2+ y = mouseY KR 0.5 2.0 Linear 0.2+ n2 = tRand 'β' x 3940 t+ n3 = tRand 'γ' 0.005 0.275 t+ in ringz i n2 (n3 * y)++main :: IO ()+main = audition (out 0 klink)
@@ -0,0 +1,17 @@+-- lf pulses (rd)+module Sound.SC3.Graph.RD_lf_pulses where++import Sound.SC3.ID {- hsc3 -}++lf_pulses :: UGen+lf_pulses =+ let n0 = lfNoise0 'α' AR (mce2 20 40)+ n1 = lfNoise0 'β' AR (mce2 5 10)+ x = mouseX KR 0.012 0.19 Exponential 0.1+ f = formlet (blip AR 10 12) (n0 * 43 + 700) 0.005 x+ o = sinOsc AR 40 0 * n1+ in clip2 (leakDC (f + o) 0.995) 0.75++main :: IO ()+main = audition (out 0 lf_pulses)+
@@ -0,0 +1,25 @@+-- lg-timed (rd)+module Sound.SC3.Graph.RD_lg_timed_m where++import Sound.SC3.Monad {- hsc3 -}++lg_timed :: UId m => m UGen+lg_timed = do+ let timed r y p =+ do d0 <- dser r p+ d1 <- dcons 0 d0+ d2 <- dser r y+ let t = tDuty AR d1 0 RemoveSynth d2 1+ return (latch t t)+ lg u = return (lag u 0.03)+ n = mce [52,76,66,67,68,69]+ a = mce [0.35,0.15,0.04,0.05,0.16,0.07]+ d = mce [0.1,0.5,0.09,0.08,0.07,0.3]+ x = mouseX KR 0.5 1.25 Linear 0.2+ tn <- lg =<< timed dinf n (d * x)+ ta <- lg =<< timed dinf a (d * x)+ return (sinOsc AR (midiCPS tn) 0 * ta)++main :: IO ()+main = audition . out 0 =<< lg_timed+
@@ -0,0 +1,93 @@+-- lin-sosc (rd)+module Sound.SC3.Graph.RD_lin_sosc where++import Control.Concurrent {- base -}+import Control.Monad {- base -}+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}++iota :: (Num a,Eq a,Num b) => a -> b -> b -> [b]+iota n l s = if n == 0 then [] else l : iota (n - 1) (l + s) s++geom :: (Num a,Eq a,Num b) => a -> b -> b -> [b]+geom n i f = if n == 0 then [] else i : geom (n - 1) (i * f) f++lineTo :: (Fractional a,Eq a) => a -> a -> a -> [a]+lineTo n l r = iota n l ((r - l) / n)++xlineTo :: (Floating a,Eq a) => a -> a -> a -> [a]+xlineTo n l r = geom n l ((r / l) ** (1.0 / n))++tblM :: UGen -> UGen -> UGen+tblM b x = playBuf 1 AR b (x * bufRateScale KR b) 0 0 Loop DoNothing++tblC :: UGen -> UGen -> UGen+tblC b c = tblM b (in' 1 KR c)++lin_sosc :: UGen+lin_sosc =+ let x = mouseX KR 0.001 1.0 Linear 0.1+ o = sinOsc AR (tblM 0 x) 0 * tblM 1 x+ in clip2 (pan2 o (tblC 1 0) 0.025) 0.25++twoPi :: Double+twoPi = pi * 2.0++srng :: Fractional a => a -> a -> a -> a+srng l r e =+ let m = (l - r ) / 2+ in m + l + (e * m)++type Lin_Data = ([[Double]], [[Double]], [Double], [Double])++lin_data :: Double -> Lin_Data+lin_data n =+ let f = [lineTo n 440.0 444.0+ ,lineTo n 40.0 16000.0+ ,xlineTo n 40.0 16000.0+ ,map (srng 20 21000 . sin) (lineTo n 0.0 twoPi)+ ,map (srng 20 12000 . cos) (lineTo n 0.0 twoPi)+ ,map (srng 20 22000 . tan) (lineTo n 0.0 twoPi)+ ,map (srng 20 90 . tan) (lineTo n 0.0 twoPi)]+ a = [lineTo n 0.1 1.0+ ,lineTo n 1.0 0.1+ ,lineTo n 0.5 0.01+ ,lineTo n 0.01 0.5+ ,xlineTo n 1.0 0.1+ ,xlineTo n 0.1 1.0+ ,map sin (lineTo n 0.0 twoPi)+ ,map cos (lineTo n 0.0 twoPi)+ ,map ((* 0.001) . tan) (lineTo n 0 twoPi)]+ l = [0.005,0.0075,0.01,0.025,0.05,0.075+ ,0.1,0.25,0.5,0.75+ ,0.8,0.85,1.0,1.005]+ t = [0.01,0.05,0.1,0.15,0.25,0.5,0.75]+ in (f,a,l,t)++update :: Transport m => Lin_Data -> m ()+update (f,a,l,t) = do+ f' <- R.choose f+ a' <- R.choose a+ l' <- R.choose l+ t' <- R.choose t+ send (b_setn 0 [(0,f')])+ send (b_setn 1 [(0,a')])+ send (c_set [(0,l')])+ pauseThread t'++do_update :: Double -> IO ()+do_update n = withSC3 (replicateM_ 128 (update (lin_data n)))++run :: (Transport m, RealFrac a) => a -> m ()+run n = do+ _ <- async (b_alloc 0 (floor n) 1)+ _ <- async (b_alloc 1 (floor n) 1)+ play (out 0 lin_sosc)++main :: IO ()+main = do+ let n = 1024+ withSC3 (run n)+ _ <- forkIO (do_update n)+ return ()
@@ -0,0 +1,111 @@+-- | L-System oscillator (rd), 2006-11-01+module Sound.SC3.Graph.RD_lso_061101_m where++import Control.Monad {- base -}+import Graphics.PS {- hps -}+import qualified LSystem.LSystem as L {- hls -}+import qualified LSystem.Systems as L+import qualified LSystem.Turtle as L+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import System.Directory {- directory -}+import qualified System.FilePath as P {- filepath -}++-- | Normalise to lie in (0,1).+--+-- > normalise [1,4,2,5] == [0.2,0.8,0.4,1]+normalise :: (Fractional a,Ord a) => [a] -> [a]+normalise s =+ let n = 1 / maximum (map abs s)+ in map (* n) s++-- | 'L.render' rule.+plain :: [Double] -> Pt Double -> Pt Double -> [Double]+plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d++-- | Render 'L.LSystem' to 'plain' data.+lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]+lsys_run (l,ta,lls) i =+ let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 lls []+ in L.render [] plain (L.expand l i) a++-- | 'normalise' '.' 'lsys_run'+--+-- > length (gen_d L.l0d 3)+gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]+gen_d l = normalise . lsys_run l++-- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.+gen_f :: FilePath -> [Double] -> IO ()+gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]++-- | Rendered L-system data sets.+lsys_data :: [[Double]]+lsys_data =+ [gen_d L.l0d 3+ ,gen_d L.l1d 3+ ,gen_d L.l2d 5+ ,gen_d L.l3d 12+ ,gen_d L.l4d 6+ ,gen_d L.l5d 4+ ,gen_d L.l6d 7+ ,gen_d L.l7d 4+ ,gen_d L.l8d 6+ ,gen_d L.l9d 10+ ,gen_d L.lAd 11+ ,gen_d L.lBd 6+ ,gen_d L.lCd 5]++-- | Exceeds UDP limits.+lsys_send :: IO ()+lsys_send = do+ let alloc (n,d) = async (b_alloc_setn1 n 0 d)+ withSC3 (mapM_ alloc (zip [0..] lsys_data))+++-- | Filename for 'lsys_data'.+lsys_fn :: FilePath -> [FilePath]+lsys_fn d =+ let n = length lsys_data+ nm i = d P.</> show i P.<.> "snd"+ in map nm [0 .. n - 1]++-- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.+lsys_write :: FilePath -> IO ()+lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data++-- | Load 'lsys_fn' at /scsynth/.+lsys_load :: FilePath -> IO ()+lsys_load d = do+ let alloc (n,nm) = async (b_allocRead n nm 0 0)+ withSC3 (mapM_ alloc (zip [0..] (lsys_fn d)))++-- | Oscillator instrument+oi :: IO UGen+oi = do+ let rng i = linLin i (-1) 1+ exprng i = linExp i (-1) 1+ c <- R.choose [0.25, 0.55, 0.75, 1.25]+ let t = impulse KR c 0+ b <- tIRand 0 12 t+ let n = bufFrames KR b+ m = n / 4+ i = floorE (rng (lfSaw AR c 0) 0 m) * 4+ tt = impulse AR (m / c) 0+ x0 = bufRdL 1 AR b i NoLoop+ y0 = bufRdL 1 AR b (i + 1) NoLoop+ x1 = bufRdL 1 AR b (i + 2) NoLoop+ y1 = bufRdL 1 AR b (i + 3) NoLoop+ f0 <- R.choose [16, 32, 64, 128, 256, 512, 8192]+ let f1 = 22000+ o x y = let f = exprng x f0 f1+ in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)+ return (o x0 y0 + o x1 y1)++main :: IO ()+main = do+ t <- getTemporaryDirectory+ lsys_write t+ lsys_load t+ oi >>= audition . out 0
@@ -0,0 +1,33 @@+-- mouse clatter (rd)+module Sound.SC3.Graph.RD_mouse_clatter_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++mouse_clatter :: UId m => m UGen+mouse_clatter = do+ let x = mouseX KR 100 12000 Linear 0.1+ y = mouseY KR 0.01 0.15 Linear 0.1+ n1 <- lfNoise0 KR (mce [3,3.25])+ let t = impulse KR (n1 * 16 + 18) 0+ n2 <- tRand 0.005 y t+ n3 <- whiteNoise AR+ n4 <- tRand 10 x t+ n5 <- tRand 0 1 t+ n6 <- tExpRand 0.15 1 t+ o <- let e = decay2 t 0.01 n2+ in return (bpf (n3 * e) n4 n5)+ n7 <- pv_RandComb (fft' 10 o) n6 t+ return (o * 0.05 + ifft' n7)++run :: (UId m,Transport m) => m ()+run = do+ _ <- async (b_alloc 10 2048 1)+ play . out 0 =<< mouse_clatter++main :: IO ()+main = withSC3 run++{-+s.sendMsg('b_alloc', 10, 2048, 1);+-}
@@ -0,0 +1,36 @@+-- nharm (rd)+module Sound.SC3.Graph.RD_nharm_m where++import Control.Concurrent {- base -}+import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++nharm :: (Num b, Integral a) => a -> b -> [b]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: UId m => UGen -> Int -> m UGen+klg m u = do+ n <- rrand 4 u+ d <- iRand 9 12+ f <- iRand m (m + 2)+ l <- sequence (replicate n (U.rand 0.01 0.02))+ p <- U.rand (-1.0) 1.0+ let a = 0.5+ e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+ nh = nharm n (midiCPS f)+ s = klangSpec nh l (replicate n 0.0)+ return (pan2 (klang AR 1 0 s) p e)++ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()+ply n (l,r) m u = do+ let a = do pauseThread =<< rrand l r+ audition . out 0 =<< klg m u+ replicateM_ n a++main :: IO ()+main = do+ _ <- forkIO (ply 32 (0.25,0.75) 92 24)+ _ <- forkIO (ply 8 (1.25,1.75) 12 54)+ return ()
@@ -0,0 +1,38 @@+-- nharm-p (rd)+module Sound.SC3.Graph.RD_nharm_p where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++nharm :: Num n => Int -> n -> [n]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: Int -> UGen+klg n =+ let f = control KR "freq" 440+ d = rand 'α' 9 12+ l = mceChannels (randN n 'α' 0.01 0.02)+ p = rand 'α' (-1.0) 1.0+ a = 0.5+ e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+ nh = nharm n f+ s = klangSpec nh l (replicate n 0.0)+ in out 0 (pan2 (klang AR 1 0 s) p e)++type Range = (Field,Field)++{- Note that the dur key is used only to schedule the nodes. Both it,+and any gate message, are ignored by the UGen graph, which manages+duration internally. -}++pN :: Int -> Range -> Range -> P Event+pN n (m0,m1) (d0,d1) =+ let s = synthdef ("klg" ++ show n) (klg n)+ in pbind [(K_instr,psynth s)+ ,(K_midinote,pwhite 'α' m0 m1 inf)+ ,(K_dur,pwhite 'β' d0 d1 inf)]++main :: IO ()+main = audition (pmerge (pN 24 (90,92) (0.25,0.75))+ (pN 54 (12,14) (1.25,1.76)))
@@ -0,0 +1,55 @@+-- pattern buffer (rd)+module Sound.SC3.Graph.RD_pattern_buffer_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++tseq :: [UGen] -> UGen+tseq l =+ let n = fromIntegral (length l) / 2.0+ in select (lfSaw KR 0.5 0 * n + n) (mce l)++pattern_buffer :: UId m => Int -> m UGen+pattern_buffer c = do+ let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0+ t = bufRdC 1 AR 10 p Loop+ r1 <- sequence (replicate c (rrand 36 96))+ r2 <- sequence (replicate c (rrand (-1.0) 1.0))+ r3 <- rrand 0 1+ n1 <- tRand 0.02 0.08 t+ let e = decay2 t 0.01 n1+ f = midiCPS (tseq r1)+ l = tseq r2+ o = [sinOsc AR f 0, saw AR f] !! r3+ return (pan2 o l e)++set_pattern :: Transport m => Int -> Int -> m ()+set_pattern nf c = do+ let rs = do r0 <- rrand 0 nf+ r1 <- rrand 0.0 1.0+ send (b_set1 10 r0 r1)+ sequence_ (replicate c rs)++fill_clr :: (Transport m) => Int -> Int -> Double -> Int -> m b+fill_clr nf c dt n = do+ let go i = if i == 0+ then do send (b_zero 10)+ go n+ else do set_pattern nf c+ pauseThread dt+ go (i - 1)+ go n++run :: (UId m,Transport m) => m ()+run = do+ let nf = 2 * 48000+ c = 24+ n = 16+ dt = 2.6+ _ <- async (b_alloc 10 (nf * 2) 1)+ play . out 0 =<< pattern_buffer c+ fill_clr nf c dt n++main :: IO ()+main = withSC3 run
@@ -0,0 +1,37 @@+-- rzblp (rd)+module Sound.SC3.Graph.RD_rzblp where++import Sound.SC3.ID {- hsc3 -}++lfn :: ID a => a -> UGen -> UGen -> UGen -> UGen+lfn z f l r =+ let z' = z `joinID` l `joinID` r+ in range l r (lfNoise0 z' KR f)++hpb :: (ID a) => a -> UGen -> UGen+hpb z q =+ let g i = let z' = idHash z + i+ f = lfn z' q 1330 1395+ a = lfn z' q 0.001 0.007+ in blip AR f 24 * a+ in mixFill 2 g++mk_f :: ID a => a -> (a -> UGen -> UGen -> UGen) -> UGen+mk_f z d =+ let q = lfn z 5.2 5.2 5.21+ a = d z dinf (mce [1,3,2,7,8])+ tr = impulse KR q 0+ freq = demand tr 0 a * 30 + 340+ rt = impulse AR q (mce2 0 0)+ rf = lfn z 5 30 640+ rbw = lfn z q 0.1 0.5+ in sum [blip AR freq 3 * lfn z q 0.001 0.01+ ,resonz rt rf rbw * lfn z q 0.01 1.8+ ,hpb z q * lfn z q 1.2 1.8+ ,blip AR (lfn z q 16 36) 3 * mce2 0.03 0.09]++rzblp :: UGen+rzblp = mk_f 'α' drand + mk_f 'β' dxrand++main :: IO ()+main = audition (out 0 rzblp)
@@ -0,0 +1,32 @@+-- rzblp-hp (rd)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.RD_rzblp_hp where++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+ let g :: UId m => Int -> m UGen+ g _ = do blip AR #(lfn q 1330 1395) 24 *. lfn q 0.001 0.007+ in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+ q <- lfn 5.2 5.2 5.21+ a <- d dinf (mce [1,3,2,7,8])+ let freq = demand (impulse KR q 0) 0 a * 30 + 340+ s1 <- blip AR freq 3 *. lfn q 0.001 0.01+ s2 <- resonz (impulse AR q (mce2 0 0)) #(lfn 5 30 640) #(lfn q 0.1 0.5)+ *. lfn q 0.01 1.8+ s3 <- hpb q .*. lfn q 1.2 1.8+ let s4 = blip AR #(lfn q 16 36) 3 * mce2 0.03 0.09+ return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
@@ -0,0 +1,35 @@+-- rzblp-m (rd)+module Sound.SC3.Graph.RD_rzblp_m where++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+ let g :: UId m => Int -> m UGen+ g _ = do f <- lfn q 1330 1395+ a <- lfn q 0.001 0.007+ return (blip AR f 24 * a)+ in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+ q <- lfn 5.2 5.2 5.21+ a <- d dinf (mce [1,3,2,7,8])+ let freq = demand (impulse KR q 0) 0 a * 30 + 340+ s1 <- blip AR freq 3 *. lfn q 0.001 0.01+ s2 <- do f <- lfn 5 30 640+ bw <- lfn q 0.1 0.5+ resonz (impulse AR q (mce2 0 0)) f bw *. lfn q 0.01 1.8+ s3 <- hpb q .*. lfn q 1.2 1.8+ s4 <- do f <- lfn q 16 36+ return (blip AR f 3 * mce2 0.03 0.09)+ return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
@@ -0,0 +1,36 @@+-- rzblp-u (rd)+module Sound.SC3.Graph.RD_rzblp_u where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++lfn :: UGen -> UGen -> UGen -> UGen+lfn f l r = range l r (lfNoise0 KR f)++hpb :: UGen -> UGen+hpb q =+ let g :: Int -> UGen+ g _ = let f = lfn q 1330 1395+ a = lfn q 0.001 0.007+ in blip AR f 24 * a+ in mixFill 2 g++mk_f :: (UGen -> UGen -> UGen) -> UGen+mk_f d =+ let q = lfn 5.2 5.2 5.21+ a = d dinf (mce [1,3,2,7,8])+ tr = impulse KR q 0+ freq = demand tr 0 a * 30 + 340+ in sum [blip AR freq 3 * lfn q 0.001 0.01+ ,resonz (impulse AR q (mce2 0 0))+ (lfn 5 30 640)+ (lfn q 0.1 0.5)+ * lfn q 0.01 1.8+ ,hpb q * lfn q 1.2 1.8+ ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]++rzblp :: UGen+rzblp = mk_f drand + mk_f dxrand++main :: IO ()+main = audition (out 0 rzblp)
@@ -0,0 +1,32 @@+-- s-chirp (rd)+module Sound.SC3.Graph.RD_s_chirp where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++s_chirp :: UGen+s_chirp =+ let x = mouseX KR 15 0 Linear 0.1+ y = mouseY KR 15 27 Linear 0.1+ t = dust 'α' KR 9+ b = tChoose 'β' t (mce [36,48,60,72])+ n = lfNoise1 'γ' KR (mce2 3 3.05) * 0.04+ d = tIRand 'δ' x y t+ e = decay2 t 0.005 (tRand 'ε' 0.02 0.15 t)+ o = let k = degreeToKey 0 d 12+ f = midiCPS (b + k + n)+ m = e * sinOsc AR f 0 * 0.2+ u = pulseDivider t 9 0+ r0 = tRand 'ζ' 0.0075 0.125 u+ r1 = tRand 'η' 0.05 0.15 u+ in m * 0.5 + allpassC m 0.15 r0 r1+ in out 0 o++act :: Transport m => m ()+act = do+ let scl = [0,2,3.2,5,7,9,10]+ _ <- async (b_alloc_setn1 0 0 scl)+ play s_chirp++main :: IO ()+main = withSC3 act
@@ -0,0 +1,48 @@+-- scritto (rd)+module Sound.SC3.Graph.RD_scritto where++import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Data.Vowel as V {- hsc3-lang -}++scritto_i :: UGen -> UGen+scritto_i bx =+ let buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation+ v_filter i f a b = resonz i f (b / f) * dbAmp a+ n0 = lfNoise2 'α' KR 3+ v_filter_b i =+ let bi = linLin n0 (-1) 1 0 bx+ b = buf_at bi in v_filter i (b 0) (b 5) (b 10)+ t = impulse AR (n0 * 9 + 9) 0+ ble (e,d) =+ let n1 = tRand e 0.02 0.06 t+ n2 = tIRand e 30 52 t+ n3 = tIRand e 16 32 t+ p = pulseDivider t d 0+ b = blip AR (midiCPS n2) n3+ in (decay2 p 0.01 n1 * b * 12)+ voice = mix . v_filter_b+ in out 0 (mce (map (voice . ble) (zip "ab" [1,2])))++s_alloc :: Transport m => (V.Fdata Double,Int) -> m ()+s_alloc (s,b) = do+ let s_msg n (_,_,fr,am,bw) = b_setn1 n 0 (fr ++ am ++ bw)+ _ <- async (b_alloc b 15 1)+ send (s_msg b s)++s_init :: Transport m => m ()+s_init = mapM_ s_alloc (zip V.fdata_table [0..])++act :: Transport m => Bool -> m ()+act i = do+ when i s_init+ let n = constant (length (V.fdata_table::[V.Fdata Int]))+ play (scritto_i n)++main :: IO ()+main = withSC3 (act True)++{-+withSC3 (act False)+-}
@@ -0,0 +1,29 @@+-- scritto (rd)+module Sound.SC3.Graph.RD_scritto_m where++import Sound.SC3.Monad {- hsc3 -}+import qualified Sound.SC3.Lang.Data.Vowel as V {- hsc3-lang -}++main :: IO ()+main =+ let s_msg n (_,_,f,a,b) = b_setn1 n 0 (f ++ a ++ b)+ s_alloc (s,b) = do _ <- async (b_alloc b 15 1)+ send (s_msg b s)+ buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation+ v_filter i f a b = resonz i f (b / f) * dbAmp a+ v_filter_b bi i = v_filter i (buf_at bi 0) (buf_at bi 5) (buf_at bi 10)+ mk_instr bx = do+ n <- lfNoise2 KR 3+ let t = impulse AR (n * 9 + 9) 0+ i d = do n1 <- tRand 0.02 0.06 t+ n2 <- tIRand 30 52 t+ n3 <- tIRand 16 32 t+ let p = pulseDivider t d 0+ b = blip AR (midiCPS n2) n3+ return (decay2 p 0.01 n1 * b * 12)+ bi = linLin n (-1) 1 0 bx+ voice = mix . v_filter_b bi+ return . out 0 . mce . map voice =<< mapM i [1,2]+ in withSC3 (do mapM_ s_alloc (zip V.fdata_table [0..])+ let n = constant (length V.fdata_table)+ play =<< mk_instr n)
@@ -0,0 +1,32 @@+-- seqr (rd)+module Sound.SC3.Graph.RD_seqr where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++nrand :: ID z => Int -> z -> UGen -> UGen -> [UGen]+nrand n e l = mceChannels . randN n e l++nfreq :: ID a => a -> Int -> UGen -> UGen -> [UGen]+nfreq z n l r = map (midiCPS . floorE) (nrand n z l r)++seqr_f :: UGen -> [UGen] -> UGen+seqr_f f e =+ let n = constant (length e `div` 2)+ in select (lfSaw KR f 0 * n + n) (mce e)++-- > Sound.SC3.UGen.Dot.draw (seqr 12)+seqr :: Int -> UGen+seqr n =+ let f = rand 'α' 9 18 / constant n+ b = blip AR (mce2 (seqr_f f (nfreq 'β' n 72 96))+ (seqr_f f (nfreq 'γ' n 72 84)))+ (mce2 (seqr_f f (nrand n 'δ' 1 3))+ (seqr_f f (nrand n 'ε' 3 6)))+ a = mce2 (seqr_f f (nrand n 'ζ' 0.05 0.10))+ (seqr_f f (nrand n 'η' 0.05 0.15))+ in b * a++-- n = rand 6 18+main :: IO ()+main = audition (out 0 (seqr 12))
@@ -0,0 +1,53 @@+-- shifting pulses (rd)+module Sound.SC3.Graph.RD_shifting_pulses_m where++import Sound.SC3.Monad {- hsc3 -}++wrp :: UGen -> UGen -> UGen -> UGen+wrp i l r = linLin i (-1) 1 l r++prt :: UId m => UGen -> UGen -> m UGen+prt a f = do+ r0 <- rand 0.2 0.9+ r1 <- rand 0.95 1.05+ r2 <- clone 2 (rand 0.95 1.05)+ let f' = f * wrp (sinOsc KR r0 0) 1 1.01 * r1+ a' = a * r2+ o = sinOsc AR (mce2 f f') 0+ return (o * a')++-- audition . out 0 =<< prts 2 900 0.002+-- audition . out 0 =<< prts 9 40 0.006+prts :: UId m => UGen -> UGen -> UGen -> m UGen+prts n f a = fmap sum (mapM (prt a) [f,f + f .. f * n])++-- audition . out 0 =<< fmt+fmt :: UId m => m UGen+fmt = do+ n <- (lfNoise2 KR 2)+ return (formant AR (mce2 20 21) (wrp n 10 100) 200 * 0.35)++-- audition . out 0 =<< pulses+pulses :: UId m => m UGen+pulses = do+ n0 <- clone 2 (brownNoise KR)+ n1 <- clone 2 (brownNoise KR)+ n2 <- clone 2 (brownNoise KR)+ t <- dust KR 0.75+ let warp i = linLin i (-1) 1+ l = latch t t+ p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1+ f = warp n1 300 1800+ rq = warp n2 0.01 2+ return (mrg2 (l * rlpf p f rq) (sendTrig t 0 t))++shifting_pulses :: UId m => m UGen+shifting_pulses = do+ p1 <- prts 2 900 0.008+ p2 <- prts 9 40 0.022+ f <- fmt+ s <- pulses+ return (p1 + p2 + f + s)++main :: IO ()+main = audition . out 0 =<< shifting_pulses
@@ -0,0 +1,50 @@+-- sosc-lp (rd)+module Sound.SC3.Graph.RD_sosc_lp_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+ n1 <- dwhite 1 lo hi+ n2 <- whiteNoise r+ d <- dseq dinf n1+ return (tDuty r d 0 DoNothing (abs n2) 1)++setup :: Transport m => m ()+setup = do+ let a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]+ b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]+ _ <- async (b_alloc 10 9 1)+ _ <- async (b_alloc 11 9 1)+ send (b_setn1 10 0 a)+ send (b_setn1 11 0 b)++sosc_lp :: UGen -> UGen -> UGen+sosc_lp t n =+ let d_env = decay2 t 0.002 2.5+ idx = stepper t 0 0 15 1 0+ f1 = let l = (bufRdL 1 KR 10 idx Loop - 24)+ r = (bufRdL 1 KR 11 idx Loop - 24)+ in midiCPS (mce2 l r)+ f2 = f1 + n * 1.2+ o1 = sinOsc AR f1 0 * d_env+ o2 = sinOsc AR f2 0 * d_env+ in (o1 + o2) * 0.2++sosc_lp_m :: UId m => m UGen+sosc_lp_m = do+ clk <- dustR KR 0.2 0.9+ n <- lfNoise0 KR (mce2 1 3)+ return (sosc_lp clk n)++main :: IO ()+main = withSC3 (setup >> sosc_lp_m >>= play . out 0)++-- > withSC3 resetter+resetter :: Transport m => m ()+resetter = do+ let a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]+ b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]+ send (b_setn1 10 0 a)+ send (b_setn1 11 0 b)
@@ -0,0 +1,44 @@+-- tgb (rd)+module Sound.SC3.Graph.RD_tgb_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tgb :: UId m => UGen -> UGen -> m UGen+tgb b d = do+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ pm_t l r du t = let le = mkls l du+ re = mkls r du+ in tRand le re t+ wrp i = linLin i (-1) 1+ pm_n rt l du = do let le = mkls l du+ re = mkls l du+ n <- whiteNoise rt+ return (wrp n le re)+ gps <- pm_n AR [(0,400),(1,900)] d+ let t = impulse AR gps 0+ pm_f (l,r) = pm_t l r d t+ du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]+ ,[(0,0.009),(0.5,0.020),(1,0.009)])+ pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]+ ,[(0,-0.5),(0.5,0.5),(1,1.0)])+ rt <- pm_f ([(0,6),(0.5,12),(1,6)]+ ,[(0,12),(0.5,12),(1,12)])+ cs <- pm_f ([(0,0),(1,0.95)]+ ,[(0,0),(1,1)])+ am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]+ ,[(0,0.5),(0.5,0.75),(1,0.25)])+ let cs' = cs * bufDur KR b+ return (tGrains 2 t b rt cs' du pn am 2)++tgb_10_12 :: UId m => m UGen+tgb_10_12 = tgb 10 12++act :: (UId m,Transport m) => m ()+act = do+ let fn = "/home/rohan/data/audio/pf-c5.aif"+ _ <- async (b_allocRead 10 fn 0 0)+ play . out 0 =<< tgb_10_12++main :: IO ()+main = withSC3 act
@@ -0,0 +1,63 @@+-- tgr-rpr (rd)+module Sound.SC3.Graph.RD_tgr_rpr_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+ n1 <- dwhite 1 lo hi+ n2 <- whiteNoise r+ d <- dseq dinf n1+ return (tDuty r d 0 DoNothing (abs n2) 1)++rpr :: UId m => UGen -> UGen -> m UGen+rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))++tgr_rpr :: (Functor m,UId m) => m UGen+tgr_rpr = do+ clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)+ rat <- rpr 2 clk+ dur <- rpr 4 clk+ pos <- fmap (* bufDur KR 10) (rpr 8 clk)+ pan <- rpr 10 clk+ amp <- rpr 6 clk+ return (tGrains 2 clk 10 rat pos dur pan amp 2)++preset :: [Double]+preset =+ [0.01,0.02+ ,0.95,1.05+ ,0.02,0.06+ ,0.6,0.7+ ,0.7,0.9+ ,-1.0,1.0]++rSet :: [(Double, Double)]+rSet =+ [(0.005,0.025),(0.05,0.25)+ ,(0.75,0.95),(1.05,1.25)+ ,(0.001,0.01),(0.02,0.04)+ ,(0.4,0.5),(0.7,0.8)+ ,(0.0,0.45),(0.55,1.0)+ ,(-1.0,0.0),(0.0,1.0)]++edit :: Transport m => m ()+edit = do+ s <- mapM (uncurry rrand) rSet+ send (c_setn [(0,s)])+ wait 0.35++run :: (UId m,Transport m) => m ()+run = do+ let sf = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async (b_allocRead 10 sf 0 0)+ send (c_setn [(0,preset)])+ play . out 0 =<< tgr_rpr+ wait 0.3+ _ <- sequence (replicate 64 edit)+ reset++main :: IO ()+main = withSC3 run
@@ -0,0 +1,26 @@+-- tgrn (rd)+module Sound.SC3.Graph.RD_tgrn where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++-- > Sound.SC3.UGen.Dot.draw (tgrn 10)+tgrn :: UGen -> UGen+tgrn b =+ let trate = mouseY KR 2 120 Exponential 0.1+ dur = 1.2 / trate+ clk = impulse AR trate 0+ pos = mouseX KR 0 (bufDur KR b) Linear 0.1+ pan = whiteNoise 'α' KR * 0.6+ n = roundTo (whiteNoise 'β' KR * 3) 1+ rate = shiftLeft 1.2 n+ in tGrains 2 clk b rate pos dur pan 0.5 2++run :: Transport m => m ()+run = do+ let fn = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async (b_allocRead 10 fn 0 0)+ play (out 0 (tgrn 10))++main :: IO ()+main = withSC3 run
@@ -0,0 +1,191 @@+-- thb (rd)+module Sound.SC3.Graph.RD_thb where++import Data.List+import qualified Music.Theory.Contour.Polansky_1992 as T {- hmt -}+import qualified Music.Theory.Pitch as T+import Sound.SC3 {- hsc3 -}+import qualified Sound.SC3.Lang.Math as M+import Sound.SC3.Lang.Pattern {- hsc3-lang -}+import Sound.OSC {- hosc -}++-- | Happy birthday+--+-- > nub hb == "hapy birtd"+-- > sort (nub hb) == " abdhiprty"+hb :: String+hb = "happy birthday"++-- | Scale degrees+hb_d :: Num n => [[n]]+hb_d =+ [[5,5,6,5,1,7]+ ,[5,5,6,5,2,1]+ ,[5,5,5,3,1,7,6]+ ,[4,4,3,1,2,1]]++-- | Octaves+hb_o :: Num n => [[n]]+hb_o =+ [[3,3,3,3,4,3]+ ,[3,3,3,3,4,4]+ ,[3,3,4,4,4,3,3]+ ,[4,4,4,4,4,4]]++-- | Durations+hb_t :: Num n => [[n]]+hb_t =+ [[3,1,4,4,4,8]+ ,[3,1,4,4,4,8]+ ,[3,1,4,4,4,4,4]+ ,[3,1,4,4,4,4]]++-- | Test typing+--+-- > withSC3 plain+plain :: Transport m => m ()+plain = do+ _ <- async (d_recv defaultSynthdef)+ let p :: [[Double]] -> P Field+ p = toP . map realToFrac . concat+ play (pbind [(K_degree,p hb_d - 1)+ ,(K_octave,p hb_o + 1)+ ,(K_dur,p hb_t / 16)])++-- | Pitch classes+--+-- > tail hb_k == [[7,7,9,7,2,0],[7,7,7,4,0,11,9],[5,5,4,0,2,0]]+hb_k :: Integral n => [[n]]+hb_k =+ let f = floor . M.degreeToKey [0,2,4,5,7,9,11] 12 . pred+ in map (map f) (hb_d :: [[Double]])++-- | Midi note numbers+--+-- > tail hb_m == [[55,55,57,55,62,60],[55,55,67,64,60,59,57],[65,65,64,60,62,60]]+hb_m :: [[Integer]]+hb_m = zipWith (\p q -> map T.octpc_to_midi (zip p q)) hb_o hb_k++-- | Transposition predicate.+is_trs :: (Eq a,Num a) => [a] -> [a] -> Bool+is_trs p q = T.all_equal (zipWith (-) p q)++-- | 'Enum' transposition predicate.+--+-- > e_is_trs "abc" "bcd" == True+e_is_trs :: Enum a => [a] -> [a] -> Bool+e_is_trs p q = is_trs (map fromEnum p) (map fromEnum q)++-- | Delete transpositions+--+-- > del_trs ["abc","bcd","bca"] == ["abc","bca"]+del_trs :: Enum a => [[a]] -> [[a]]+del_trs = nubBy e_is_trs++-- | All /n/ element combinations from /x/, degree is 'length' /x/ '^' /n/.+--+-- > all_n_cmb 3 "ab" == ["aaa","aab","aba","abb","baa","bab","bba","bbb"]+-- > length (nub hb) ^ maximum (map length hb_d) == 10000000+all_n_cmb :: Monad m => Int -> m a -> m [a]+all_n_cmb n = sequence . replicate n++-- | All non transpositionally equivalent combinations of elements of+-- list 'hb' that match the contour of /x/.+--+-- > filter ((== 'h') . head) (gen_c [0..5]) == ["hiprty"]+-- > sort (gen_c [0,1]) == [" a"," b"," d"," h"," i"," p"," r"," t"," y","ad","ah","ap","at","ay","bh","bp","br","bt","by","dy","hi","hp","hr","ht","hy","it","pr","pt","py","ty"]+gen_c :: Ord a => [a] -> [String]+gen_c x =+ let c = T.contour_description x+ p = all_n_cmb (length x) (nub hb)+ f q = T.contour_description q == c+ in del_trs (filter f p)++-- | Cache of 'map' 'gen_c' 'hb_m'+--+-- > gen_c_hb_m_cache == map gen_c hb_m+-- > map length gen_c_hb_m_cache == [209,209,210,209]+gen_c_hb_m_cache :: [[String]]+gen_c_hb_m_cache =+ [["hhphyr","hhphyt","hhphtr","hhihyp","hhihyr","hhihyt","hhihrp","hhihtp","hhihtr","hhrhyt","aahapi","aahayp","aahayi","aahayr","aahayt","aaharp","aahari","aahatp","aahati","aahatr","aapayr","aapayt","aapatr","aabahd","aabaph","aabapi","aabapd","aabayh","aabayp","aabayi","aabayr","aabayt","aabayd","aabaih","aabaid","aabarh","aabarp","aabard","aabath","aabatp","aabati","aabatr","aabatd","aaiayp","aaiayr","aaiayt","aaiarp","aaiatp","aaiatr","aarayt","aadaph","aadapi","aadayh","aadayp","aadayi","aadayr","aadayt","aadaih","aadarh","aadarp","aadari","aadath","aadatp","aadati","aadatr","pprpyt"," h pi"," h yp"," h yi"," h yr"," h yt"," h rp"," h ri"," h tp"," h ti"," h tr"," a hb"," a hd"," a ph"," a pb"," a pi"," a pd"," a yh"," a yp"," a yb"," a yi"," a yr"," a yt"," a yd"," a ih"," a ib"," a id"," a rh"," a rp"," a rb"," a ri"," a rd"," a th"," a tp"," a tb"," a ti"," a tr"," a td"," a db"," p yr"," p yt"," p tr"," b hd"," b ph"," b pi"," b pd"," b yh"," b yp"," b yi"," b yr"," b yt"," b yd"," b ih"," b id"," b rh"," b rp"," b ri"," b rd"," b th"," b tp"," b ti"," b tr"," b td"," i yp"," i yr"," i yt"," i rp"," i tp"," i tr"," r yt"," d ph"," d pi"," d yh"," d yp"," d yi"," d yr"," d yt"," d ih"," d rh"," d rp"," d ri"," d th"," d tp"," d ti"," d tr","bbhbpi","bbhbyp","bbhbyi","bbhbyr","bbhbyt","bbhbrp","bbhbri","bbhbtp","bbhbti","bbhbtr","bbpbyr","bbpbyt","bbpbtr","bbibyp","bbibyr","bbibyt","bbibrp","bbibtp","bbibtr","bbrbyt","bbdbph","bbdbpi","bbdbyh","bbdbyp","bbdbyi","bbdbyr","bbdbyt","bbdbih","bbdbrh","bbdbrp","bbdbri","bbdbth","bbdbtp","bbdbti","bbdbtr","iipiyr","iipiyt","iipitr","iiriyt","ddhdpi","ddhdyp","ddhdyi","ddhdyr","ddhdyt","ddhdrp","ddhdri","ddhdtp","ddhdti","ddhdtr","ddpdyr","ddpdyt","ddpdtr","ddidyp","ddidyr","ddidyt","ddidrp","ddidtp","ddidtr","ddrdyt"]+ ,["hhphyr","hhphyt","hhphtr","hhihyp","hhihyr","hhihyt","hhihrp","hhihtp","hhihtr","hhrhyt","aahapi","aahayp","aahayi","aahayr","aahayt","aaharp","aahari","aahatp","aahati","aahatr","aapayr","aapayt","aapatr","aabahd","aabaph","aabapi","aabapd","aabayh","aabayp","aabayi","aabayr","aabayt","aabayd","aabaih","aabaid","aabarh","aabarp","aabard","aabath","aabatp","aabati","aabatr","aabatd","aaiayp","aaiayr","aaiayt","aaiarp","aaiatp","aaiatr","aarayt","aadaph","aadapi","aadayh","aadayp","aadayi","aadayr","aadayt","aadaih","aadarh","aadarp","aadari","aadath","aadatp","aadati","aadatr","pprpyt"," h pi"," h yp"," h yi"," h yr"," h yt"," h rp"," h ri"," h tp"," h ti"," h tr"," a hb"," a hd"," a ph"," a pb"," a pi"," a pd"," a yh"," a yp"," a yb"," a yi"," a yr"," a yt"," a yd"," a ih"," a ib"," a id"," a rh"," a rp"," a rb"," a ri"," a rd"," a th"," a tp"," a tb"," a ti"," a tr"," a td"," a db"," p yr"," p yt"," p tr"," b hd"," b ph"," b pi"," b pd"," b yh"," b yp"," b yi"," b yr"," b yt"," b yd"," b ih"," b id"," b rh"," b rp"," b ri"," b rd"," b th"," b tp"," b ti"," b tr"," b td"," i yp"," i yr"," i yt"," i rp"," i tp"," i tr"," r yt"," d ph"," d pi"," d yh"," d yp"," d yi"," d yr"," d yt"," d ih"," d rh"," d rp"," d ri"," d th"," d tp"," d ti"," d tr","bbhbpi","bbhbyp","bbhbyi","bbhbyr","bbhbyt","bbhbrp","bbhbri","bbhbtp","bbhbti","bbhbtr","bbpbyr","bbpbyt","bbpbtr","bbibyp","bbibyr","bbibyt","bbibrp","bbibtp","bbibtr","bbrbyt","bbdbph","bbdbpi","bbdbyh","bbdbyp","bbdbyi","bbdbyr","bbdbyt","bbdbih","bbdbrh","bbdbrp","bbdbri","bbdbth","bbdbtp","bbdbti","bbdbtr","iipiyr","iipiyt","iipitr","iiriyt","ddhdpi","ddhdyp","ddhdyi","ddhdyr","ddhdyt","ddhdrp","ddhdri","ddhdtp","ddhdti","ddhdtr","ddpdyr","ddpdyt","ddpdtr","ddidyp","ddidyr","ddidyt","ddidrp","ddidtp","ddidtr","ddrdyt"]+ ,["hhytrpi","aapihdb","aayphdb","aaypihb","aaypihd","aaypidb","aayihdb","aayrhdb","aayrphb","aayrphd","aayrpih","aayrpib","aayrpid","aayrpdb","aayrihb","aayrihd","aayridb","aaythdb","aaytphb","aaytphd","aaytpih","aaytpib","aaytpid","aaytpdb","aaytihb","aaytihd","aaytidb","aaytrhb","aaytrhd","aaytrph","aaytrpb","aaytrpi","aaytrpd","aaytrih","aaytrib","aaytrid","aaytrdb","aarphdb","aarpihb","aarpihd","aarpidb","aarihdb","aatphdb","aatpihb","aatpihd","aatpidb","aatihdb","aatrhdb","aatrphb","aatrphd","aatrpih","aatrpib","aatrpid","aatrpdb","aatrihb","aatrihd","aatridb"," phdba"," pihba"," pihda"," pihdb"," pidba"," yhdba"," yphba"," yphda"," yphdb"," ypiha"," ypihb"," ypihd"," ypiba"," ypida"," ypidb"," ypdba"," yihba"," yihda"," yihdb"," yidba"," yrhba"," yrhda"," yrhdb"," yrpha"," yrphb"," yrphd"," yrpba"," yrpih"," yrpia"," yrpib"," yrpid"," yrpda"," yrpdb"," yriha"," yrihb"," yrihd"," yriba"," yrida"," yridb"," yrdba"," ythba"," ythda"," ythdb"," ytpha"," ytphb"," ytphd"," ytpba"," ytpih"," ytpia"," ytpib"," ytpid"," ytpda"," ytpdb"," ytiha"," ytihb"," ytihd"," ytiba"," ytida"," ytidb"," ytrha"," ytrhb"," ytrhd"," ytrph"," ytrpa"," ytrpb"," ytrpi"," ytrpd"," ytrba"," ytrih"," ytria"," ytrib"," ytrid"," ytrda"," ytrdb"," ytdba"," ihdba"," rhdba"," rphba"," rphda"," rphdb"," rpiha"," rpihb"," rpihd"," rpiba"," rpida"," rpidb"," rpdba"," rihba"," rihda"," rihdb"," ridba"," thdba"," tphba"," tphda"," tphdb"," tpiha"," tpihb"," tpihd"," tpiba"," tpida"," tpidb"," tpdba"," tihba"," tihda"," tihdb"," tidba"," trhba"," trhda"," trhdb"," trpha"," trphb"," trphd"," trpba"," trpih"," trpia"," trpib"," trpid"," trpda"," trpdb"," triha"," trihb"," trihd"," triba"," trida"," tridb"," trdba","bbypihd","bbyrphd","bbyrpih","bbyrpid","bbyrihd","bbytphd","bbytpih","bbytpid","bbytihd","bbytrhd","bbytrph","bbytrpi","bbytrpd","bbytrih","bbytrid","bbrpihd","bbtpihd","bbtrphd","bbtrpih","bbtrpid","bbtrihd","ddyrpih","ddytpih","ddytrph","ddytrpi","ddytrih","ddtrpih"]+ ,["hhb a ","hhdaba","hhd a ","hhd b ","pphaba","pphada","pph a ","pph b ","pph d ","pphbdb","ppb a ","ppiaha","ppiaba","ppiada","ppi h ","ppi a ","ppi b ","ppi d ","ppibhb","ppibdb","ppidhd","ppdaba","ppd a ","ppd b ","yyhaba","yyhada","yyh a ","yyh b ","yyh d ","yyhbdb","yyphih","yypaha","yypaba","yypaia","yypada","yyp h ","yyp a ","yyp b ","yyp i ","yyp d ","yypbhb","yypbib","yypbdb","yypdhd","yypdid","yyb a ","yyiaha","yyiaba","yyiada","yyi h ","yyi a ","yyi b ","yyi d ","yyibhb","yyibdb","yyidhd","yyrhph","yyrhih","yyraha","yyrapa","yyraba","yyraia","yyrada","yyr h ","yyr a ","yyr p ","yyr b ","yyr i ","yyr d ","yyrbhb","yyrbpb","yyrbib","yyrbdb","yyripi","yyrdhd","yyrdpd","yyrdid","yythph","yythih","yythrh","yytaha","yytapa","yytaba","yytaia","yytara","yytada","yytprp","yyt h ","yyt a ","yyt p ","yyt b ","yyt i ","yyt r ","yyt d ","yytbhb","yytbpb","yytbib","yytbrb","yytbdb","yytipi","yytiri","yytdhd","yytdpd","yytdid","yytdrd","yydaba","yyd a ","yyd b ","iihaba","iihada","iih a ","iih b ","iih d ","iihbdb","iib a ","iidaba","iid a ","iid b ","rrhaba","rrhada","rrh a ","rrh b ","rrh d ","rrhbdb","rrphih","rrpaha","rrpaba","rrpaia","rrpada","rrp h ","rrp a ","rrp b ","rrp i ","rrp d ","rrpbhb","rrpbib","rrpbdb","rrpdhd","rrpdid","rrb a ","rriaha","rriada","rri h ","rri a ","rri b ","rri d ","rribhb","rribdb","rridhd","rrdaba","rrd a ","rrd b ","tthaba","tthada","tth a ","tth b ","tth d ","tthbdb","ttphih","ttpaha","ttpaba","ttpaia","ttpada","ttp h ","ttp a ","ttp b ","ttp i ","ttp d ","ttpbhb","ttpbib","ttpbdb","ttpdhd","ttpdid","ttb a ","ttiaha","ttiaba","ttiada","tti h ","tti a ","tti b ","tti d ","ttibhb","ttibdb","ttidhd","ttrhph","ttrhih","ttraha","ttrapa","ttraba","ttraia","ttrada","ttr h ","ttr a ","ttr p ","ttr b ","ttr i ","ttr d ","ttrbhb","ttrbpb","ttrbib","ttrbdb","ttripi","ttrdhd","ttrdpd","ttrdid","ttdaba","ttd a ","ttd b ","ddb a "]]++-- | 'concat' of 'tail' of 'gen_c_hb_m_cache'. The first two phrases+-- of 'hb' have the same contour.+--+-- > gen_c_hb_m_cache !! 0 == gen_c_hb_m_cache !! 1+-- > length gen_c_hb_m_cache' == 209 + 210 + 209+-- > gen_c_hb_m_cache' == nub gen_c_hb_m_cache'+gen_c_hb_m_cache' :: [String]+gen_c_hb_m_cache' = concat (tail gen_c_hb_m_cache)++-- | Multiply enumeration index of /c/ by /n/.+--+-- > map (unc 1) hb == [104,97,112,112,121,32,98,105,114,116,104,100,97,121]+-- > map (unc 1e-2) hb == [1.04,0.97,1.12,1.12,1.21,0.32,0.98,1.05,1.1400000000000001,1.16,1.04,1.0,0.97,1.21]+unc :: (Num a, Enum b) => a -> b -> a+unc n c = fromIntegral (fromEnum c) * n++-- | 'unc' variant for 'hb' such that minima is @0@ and maxima @1@.+--+-- > map hb_md " y" == [0,1]+hb_md :: (Ord a, Fractional a, Enum b) => b -> a+hb_md c =+ let i = map (unc 1) hb+ l = minimum i+ r = maximum i+ n = r - l+ in (unc 1 c - l) * (1 / n)++-- | /(frequency,amplitude,zero-one)/+type Cim n = (n,n,n)++-- | 'Cim' scaled variants of 'unc'.+--+-- > map cim " y" == [(320.0,1.6e-2,0.0),(1210.0,6.05e-2,1.0)]+cim :: (Fractional t,Ord t,Enum e) => e -> Cim t+cim c =+ let i = unc 1e-2 c+ in (i * 1e3, i * 5e-2,hb_md c)++-- | 'cim' of 'gen_c_hb_m_cache''.+ph :: [(Double,Double,Double)]+ph = concatMap (map cim) gen_c_hb_m_cache'++-- | Trivial 'impulse' instrument+--+-- > audition ins_s+ins_s :: Synthdef+ins_s =+ let f = control IR "freq" 440+ l = control IR "loc" 0+ a = control IR "amp" 0.1+ d = control IR "sustain" 0.1+ s = envSine d a+ e = envGen AR 1 1 0 1 RemoveSynth s+ i = impulse AR f 0+ in synthdef "ins" (out 0 (pan2 i l e))++-- | 'audition' 'ph' using pattern library. /blur/ is @legato@.+--+-- > withSC3 (hear 1 (map cim "hiprty"))+-- > withSC3 (hear 9 (map cim hb))+hear :: Transport m => Double -> [Cim Double] -> m ()+hear blur x =+ let (f,d,c) = unzip3 x+ p = toP . map realToFrac+ in play (pbind [(K_instr,psynth ins_s)+ ,(K_freq,p f)+ ,(K_dur,p d)+ ,(K_legato,p (repeat blur))+ ,(K_amp,p c * 0.1 + 0.1)+ ,(K_param "loc",p c * 2 - 1)])++main :: IO ()+main = withSC3 (hear 9 ph)++-- Local Variables:+-- truncate-lines:t+-- End:
@@ -0,0 +1,19 @@+-- three-cpsw (rd)+module Sound.SC3.Graph.RD_three_cpsw_m where++import Sound.SC3.Monad {- hsc3 -}++three_cpsw :: UId m => m UGen+three_cpsw = do+ t <- dust KR (mce2 12 18)+ f0 <- tRand 1 64 t+ f1 <- lfNoise0 KR f0+ a <- tRand 0.0 0.5 t+ dt <- tRand 0.975 1.025 t+ dh <- tRand 0.750 0.7505 t+ let f = f1 * mce2 9000 12000 + 9500+ o = saw AR f + saw AR (f * dh) + saw AR (f * dt)+ return (clip2 (o * a) 0.75)++main :: IO ()+main = audition . out 0 =<< three_cpsw
@@ -0,0 +1,20 @@+-- tipnso (rd)+module Sound.SC3.Graph.RD_tipnso where++import Sound.SC3.ID {- hsc3 -}++tipnso :: UGen+tipnso =+ let x = mouseX KR 1 32 Linear 0.1+ t = impulse AR x 0+ n1 = tIRand 'α' 16 72 t+ n2 = tIRand 'β' 0 1 t+ n3 = pinkNoise 'γ' AR+ e = decay2 t 0.01 (mce2 0.1 0.15)+ f = midiCPS (n1 + 36 + (12 * n2))+ s = sinOsc AR f 0 * e+ b = bpf (n3 * e) (36 + midiCPS n1) (175 / midiCPS n1)+ in (s + b) * mce2 0.15 0.1++main :: IO ()+main = audition (out 0 tipnso)
@@ -0,0 +1,33 @@+-- tr-out (rd)+module Sound.SC3.Graph.RD_tr_out_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tr_nd :: UId m => UGen -> m (UGen,UGen)+tr_nd n = do+ t <- dust KR 1.6+ r1 <- tRand 0 6 t+ r2 <- tRand 0 6 t+ r3 <- tRand 0 6 t+ let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)+ p = bufRdN 1 KR 1 r2 NoLoop+ a = bufRdN 1 KR 2 r3 NoLoop+ return (pan2 (sinOsc AR f 0) p a+ ,sendTrig t n (f / 660))++tr_out :: UId m => m UGen+tr_out = do+ ns <- mapM tr_nd [1..4]+ let o = sum (map fst ns)+ return (mrg (o : map snd ns))++act :: (UId m,Transport m) => m ()+act = do+ _ <- async (b_alloc_setn1 0 0 [60,62,64,65,67,69])+ _ <- async (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])+ _ <- async (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])+ play . out 0 =<< tr_out++main :: IO ()+main = withSC3 act
@@ -0,0 +1,36 @@+-- trkl (rd)+module Sound.SC3.Graph.RD_trkl_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+trkl d ul fu dy la fy = do+ let tf = xLine KR 1 ul d RemoveSynth+ st = impulse AR (tf * 8) 0+ t = impulse AR tf 0+ r0 <- rand (-1) 1+ r1 <- rand (-1) 1+ r2 <- tRand 0.05 1.0 t+ r3 <- tExpRand 0.001 0.25 st -- non-zero minima+ fh <- tRand 1.75 2.25 t+ let a = dbAmp (line KR 12 la d RemoveSynth)+ f = xLine KR fu 900 d RemoveSynth+ p = line KR r0 r1 d RemoveSynth+ o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)+ o2 = mix (saw AR (mce2 f (f * fh)))+ return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)++-- > audition . out 0 =<< trkl_r+trkl_r :: UId m => m UGen+trkl_r = do+ d <- rand 0.5 16+ ul <- rand 16 64+ fu <- rand 1200 9000+ dy <- rand 0.005 0.175+ la <- rand (-60) (-25)+ fy <- rand 0.015 0.125+ trkl d ul fu dy la fy++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< trkl_r
@@ -0,0 +1,52 @@+-- trmlo (rd)+module Sound.SC3.Graph.RD_trmlo where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition (out 0 trmlo)+trmlo :: UGen+trmlo =+ let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+ mWrp1 i m = mWrp i m (m + 1)+ mWrpN i m n = mWrp i m (m + n)+ o1 = let f = 5+ d = 3+ s = envSine d 0.1+ e = envGen KR 1 1 0 1 DoNothing s+ n = 65+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o2 = let f = iRand 'α' 5 9+ d = iRand 'β' 5 9+ s = envSine d (rand 'γ' 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 'δ' 69 72+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o3 = let f = iRand 'ε' 5 9+ d = iRand 'ζ' 9 12+ s = envSine d (rand 'η' 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 'θ' 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 'ι' 1 5) d DoNothing+ in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+ o4 = let f = iRand 'κ' 5 18+ d = iRand 'λ' 12 15+ s = envSine d (rand 'μ' 0.1 0.2)+ e = envGen KR 1 5e-2 0 1 DoNothing s+ n = iRand 'ν' 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 'ξ' 1 5) d RemoveSynth+ fr = mWrpN m (n + l) (iRand 'ο' 1 5)+ in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 'π' 2 24))) m e+ in o1 + o2 + o3 + o4++main :: IO ()+main = do+ let s = synthdef "trmlo" (out 0 trmlo)+ p = pbind [(K_instr,psynth s)+ ,(K_dur,pxrand 'ρ' [0.25,0.5,1,2,4] inf)+ ,(K_legato,1.25)]+ audition p
@@ -0,0 +1,53 @@+-- trmlo-u (rd)+module Sound.SC3.Graph.RD_trmlo_u where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition (out 0 trmlo)+trmlo :: UGen+trmlo =+ let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+ mWrp1 i m = mWrp i m (m + 1)+ mWrpN i m n = mWrp i m (m + n)+ o1 = let f = 5+ d = 3+ s = envSine d 0.1+ e = envGen KR 1 1 0 1 DoNothing s+ n = 65+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o2 = let f = iRand 5 9+ d = iRand 5 9+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o3 = let f = iRand 5 9+ d = iRand 9 12+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 1 5) d DoNothing+ in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+ o4 = let f = iRand 5 18+ d = iRand 12 15+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 5e-2 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 1 5) d RemoveSynth+ fr = mWrpN m (n + l) (iRand 1 5)+ in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+ in o1 + o2 + o3 + o4++main :: IO ()+main = do+ let s = synthdef "trmlo" (out 0 trmlo)+ p = pbind [(K_instr,psynth s)+ ,(K_dur,pxrand 'α' [0.25,0.5,1,2,4] inf)+ ,(K_legato,1.25)]+ audition p
@@ -0,0 +1,46 @@+-- urandom (rd)+module Sound.SC3.Graph.RD_urandom where++import Control.Monad {- base -}+import qualified Data.ByteString.Lazy as B {- bytestring -}+import Sound.OSC.Coding.Byte {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import System.IO {- base -}++ur_bytes :: Int -> IO B.ByteString+ur_bytes n = withFile "/dev/urandom" ReadMode (flip B.hGet n)++ur_int :: IO Int+ur_int = fmap decode_i32 (ur_bytes 4)++ur_double :: IO Double+ur_double = fmap decode_f64 (ur_bytes 8)++ur_byte_set :: Int -> Int -> IO [B.ByteString]+ur_byte_set n k =+ let f h = replicateM k (B.hGet h n)+ in withFile "/dev/urandom" ReadMode f++-- > ur_int_set 3+ur_int_set :: Int -> IO [Int]+ur_int_set = fmap (map decode_i32) . ur_byte_set 4++-- > fmap (map int_to_normal) (ur_int_set 3)+int_to_normal :: Fractional n => Int -> n+int_to_normal n = fromIntegral (abs n) / fromIntegral (maxBound::Int)++ur_real_set :: Fractional n => Int -> IO [n]+ur_real_set = fmap (map int_to_normal) . ur_int_set++-- > audition =<< mk_node+mk_node :: IO UGen+mk_node = do+ [f,g,l] <- ur_real_set 3+ let f' = linLin f 0 1 440 660+ g' = linLin g 0 1 0.05 0.25+ l' = linLin l 0 1 (-1) 1+ return (pan2 (sinOsc AR f' 0) l' g')++main :: IO ()+main = overlapTextureM (3,3,9,maxBound) mk_node
@@ -0,0 +1,148 @@+-- vla-adttn (rd)+module Sound.SC3.Graph.RD_vla_addtn where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++type R = Double+type R2 = (R,R)++vla :: [R2]+vla =+ [(-49.43290,1.99165)+ ,(0.00000,1.09187)+ ,(-2.53835,-2.73340)+ ,(-8.55317,0.73919)+ ,(-7.58952,-0.75267)+ ,(-8.48353,1.70372)+ ,(-13.92700,1.64759)+ ,(-39.93130,-2.25142)+ ,(-19.87800,-3.12024)+ ,(-34.19660,-1.58899)+ ,(-18.82040,-1.39847)+ ,(-21.22520,2.04672)+ ,(-21.33070,-0.14754)+ ,(-31.08620,2.05345)+ ,(-42.51880,-0.55890)+ ,(-41.19730,0.23896)+ ,(-46.80570,1.71249)+ ,(-47.17510,2.37942)+ ,(-37.97520,-0.83005)+ ,(-38.32750,-2.49358)+ ,(-44.79280,-1.16301)+ ,(-49.11850,1.33082)+ ,(-45.26480,-0.45146)+ ,(-46.27050,-0.15578)+ ,(-63.14360,-3.13979)+ ,(-44.27590,-2.59826)+ ,(-40.19680,-2.16540)+ ,(-56.83330,0.48774)+ ,(-56.62160,-0.84155)+ ,(-55.76370,1.59076)+ ,(-59.36050,-0.99090)+ ,(-55.42520,-0.58264)+ ,(-64.99020,0.00110)+ ,(-63.45910,1.55117)+ ,(-64.77610,2.68228)+ ,(-68.27080,-1.82120)+ ,(-71.90240,1.80545)+ ,(-79.13910,2.99369)+ ,(-64.94640,-3.12388)+ ,(-59.41810,1.84679)+ ,(-86.33570,1.81713)+ ,(-88.53500,1.01834)+ ,(-64.17470,-1.52081)+ ,(-61.24430,1.45757)+ ,(-69.88980,-0.47708)+ ,(-65.39420,0.82882)+ ,(-73.84740,0.41623)+ ,(-72.26330,0.31856)+ ,(-73.88560,2.64035)+ ,(-70.86610,-0.43802)+ ,(-67.86130,-0.43389)+ ,(-80.76020,-2.50016)+ ,(-66.44520,2.26219)+ ,(-83.49810,2.57825)+ ,(-66.01220,-2.08254)+ ,(-65.30220,-2.83644)+ ,(-74.05780,0.21665)+ ,(-72.69060,-2.78729)+ ,(-75.49700,2.96210)+ ,(-69.45200,0.72293)+ ,(-75.36160,0.14687)+ ,(-70.21110,1.42155)+ ,(-79.34420,0.76044)+ ,(-81.56200,2.16997)+ ,(-84.20670,3.11095)+ ,(-74.40450,-2.98094)+ ,(-76.67820,1.96564)+ ,(-79.95980,2.68183)+ ,(-77.31420,-1.92260)+ ,(-74.60450,-1.89189)+ ,(-67.98670,1.99457)+ ,(-80.17960,-1.95013)+ ,(-79.44400,-2.70955)+ ,(-81.89010,3.12971)+ ,(-80.18220,1.76888)+ ,(-82.94420,2.77531)]++p_prep :: R2 -> R2+p_prep (a,p) = (dbAmp a,p)++unp :: R2 -> [R]+unp (i,j) = [i,j]++vla_prep :: [R]+vla_prep = concatMap (unp . p_prep) vla++-- fr = freq,dt = detune+vla_partial :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vla_partial fr rise fall dt n =+ let m = n * 2+ ampl = bufRdN 1 KR 0 m NoLoop+ ph = bufRdN 1 KR 0 (m + 1) NoLoop+ o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0+ in fSinOsc AR (fr * (n + 1) * dt') ph+ e = linen (impulse KR 0 0)+ (rise * rand 'β' 0.75 1.25)+ ampl+ (fall * rand 'γ' 0.75 1.25)+ DoNothing+ in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+ let a = control KR "amp" 0.1+ f = control KR "freq" 129.897+ rs = control KR "rise" 0.1+ fa = control KR "fall" 0.5+ l = control KR "loc" 0.0+ dt = control KR "dt" 0.001+ s = sum (map (vla_partial f rs fa dt) [0 .. n - 1])+ e = detectSilence s 0.001 0.2 RemoveSynth+ in mrg2 (pan2 s l a) e++plyr36 :: Synthdef+plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36))++pattern :: P_Bind+pattern =+ [(K_instr,pinstr "plyr36")+ ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+ ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+ ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+ ,(K_octave,prand 'η' [2,3] inf)+ ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+ ,(K_param "rise",pwhite 'ι' 1 2 inf)+ ,(K_param "fall",pwhite 'κ' 4 7 inf)+ ,(K_dur,5)]++act :: Transport m => m ()+act = do+ _ <- async (b_alloc_setn1 0 0 vla_prep)+ _ <- async (d_recv plyr36)+ play (pbind pattern)++main :: IO ()+main = withSC3 act
@@ -0,0 +1,79 @@+-- vla-adttn-sharc (rd)+module Sound.SC3.Graph.RD_vla_addtn_sharc where++import Data.List {- base -}+import Sound.Analysis.SHARC {- hsharc -}+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++type R = Double+type R3 = (R,R,R)++spectra :: [Instrument] -> String -> Int -> [R3]+spectra sh nm j =+ let Just i = find ((== nm) . instrument_id) sh+ in note_spectra (note_normalise (notes i !! j))++vla :: Transport m => FilePath -> m [R3]+vla fn = do+ Right sh <- liftIO (read_sharc fn)+ return (spectra sh "viola_vibrato" 0)++unp :: R3 -> [R]+unp (_,i,j) = [i,j]++vla_prep :: [R3] -> [R]+vla_prep = concatMap unp++-- fr = freq,dt = detune+vla_partial :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vla_partial fr rise fall dt n =+ let m = n * 2+ ampl = bufRdN 1 KR 0 m NoLoop+ ph = bufRdN 1 KR 0 (m + 1) NoLoop+ o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0+ in fSinOsc AR (fr * (n + 1) * dt') ph+ e = linen (impulse KR 0 0)+ (rise * rand 'β' 0.75 1.25)+ ampl+ (fall * rand 'γ' 0.75 1.25)+ DoNothing+ in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+ let a = control KR "amp" 0.1+ f = control KR "freq" 129.897+ rs = control KR "rise" 0.1+ fa = control KR "fall" 0.5+ l = control KR "loc" 0.0+ dt = control KR "dt" 0.001+ s = sum (map (vla_partial f rs fa dt) [0 .. n - 1])+ e = detectSilence s 0.001 0.2 RemoveSynth+ in mrg2 (pan2 s l a) e++plyr36 :: Synthdef+plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36))++pattern :: P_Bind+pattern =+ [(K_instr,pinstr "plyr36")+ ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+ ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+ ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+ ,(K_octave,prand 'η' [2,3] inf)+ ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+ ,(K_param "rise",pwhite 'ι' 1 2 inf)+ ,(K_param "fall",pwhite 'κ' 4 7 inf)+ ,(K_dur,prand 'λ' [3,5] inf)]++act :: Transport m => FilePath -> m ()+act fn = do+ v <- vla fn+ _ <- async (b_alloc_setn1 0 0 (vla_prep v))+ _ <- async (d_recv plyr36)+ play (pbind pattern)++main :: IO ()+main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
@@ -0,0 +1,150 @@+-- vlc-distrtn (rd)+-- caution - audio feedback graph+module Sound.SC3.Graph.RD_vlc_distrtn_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}++prep :: (Double,Double) -> [Double]+prep (ampl,phase) = [dbAmp ampl,phase]++partial :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+partial b i freq detune fall n = do+ n0 <- lfNoise1 KR 1+ n1 <- rand 0.75 1.25+ let m = n * 2+ ampl = bufRdN 1 KR b m NoLoop+ f = freq * (n + 1) * (n0 * detune + 1)+ return (ringz i f (fall * n1) * ampl)++plyr :: UId m => UGen -> UGen -> m UGen+plyr i n = do+ let ctl = control KR+ buf = ctl "buf" 0+ iamp = ctl "iamp" 0.1+ ampl = ctl "ampl" 0.1+ freq = ctl "freq" 129.897+ fall = ctl "fall" 0.5+ loc = ctl "loc" 0.0+ detune = ctl "detune" 0.001+ s <- mapM (partial buf (i * iamp) freq detune fall) [0 .. n-1]+ return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1))++degree_to_key :: Int -> [Int] -> Int -> Int+degree_to_key degree scale steps =+ let scale_n = length scale+ in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))++getCps :: (Transport m,UnaryOp b) => [b] -> m b+getCps b = do+ b_ <- L.choose b+ d <- L.choose [0 .. 8]+ let k = degree_to_key d [0,2,3,5,7,8,10] 12+ return (midiCPS (b_ + realToFrac k))++pattern :: Transport m => m ()+pattern = do+ f <- getCps [24,36,48,55,60]+ ia <- L.rrand 0.05 0.75+ l <- L.rrand (-1) 1+ a <- L.rrand 0.05 0.1+ d <- L.rrand 0.001 0.005+ fl <- L.rrand 1 7+ send (n_set 1002 [("freq",f)+ ,("iamp",ia)+ ,("buf",0)+ ,("loc",l)+ ,("ampl",a)+ ,("detune",d)+ ,("fall",fl)])+ wait =<< L.choose [0.25,0.5,0.75,1.5]++run :: (Transport m,UId m) => m ()+run = do+ _ <- async (b_alloc 0 (length vlc * 2) 1)+ send (b_setn1 0 0 (concatMap prep vlc))+ let i = soundIn 4+ _ <- async . d_recv . synthdef "plyr48" =<< plyr i 48+ send (s_new "plyr48" 1002 AddToTail 1 [])+ sequence_ (replicate 32 pattern)++main :: IO ()+main = withSC3 run++vlc :: [(Double,Double)]+vlc = [(0.00000,1.85550)+ ,(-9.92383,-0.65147)+ ,(-8.74205,-0.74728)+ ,(-3.70464,-1.39796)+ ,(-9.43435,-1.14812)+ ,(-25.84790,-1.03375)+ ,(-16.99500,-2.41724)+ ,(-29.17040,2.67419)+ ,(-26.82750,-1.61810)+ ,(-18.59870,1.34568)+ ,(-19.72160,-2.85972)+ ,(-29.43650,0.54603)+ ,(-23.63120,-1.47813)+ ,(-28.20100,-1.98501)+ ,(-41.20700,-1.11808)+ ,(-33.14310,-2.19369)+ ,(-31.54010,1.43134)+ ,(-47.62740,1.28571)+ ,(-28.79740,-1.03754)+ ,(-34.97950,0.37740)+ ,(-39.05770,-0.57557)+ ,(-38.84060,2.34836)+ ,(-40.18090,-0.96978)+ ,(-47.32150,2.14768)+ ,(-45.49290,2.52100)+ ,(-40.57100,-1.39905)+ ,(-47.19530,-2.23994)+ ,(-50.80920,2.97853)+ ,(-48.13640,0.46815)+ ,(-58.56890,-1.01821)+ ,(-57.81200,-3.08971)+ ,(-47.96870,-0.48657)+ ,(-43.96100,-0.10311)+ ,(-50.49810,-2.80977)+ ,(-50.61640,-0.17212)+ ,(-60.64640,-1.02433)+ ,(-58.03410,1.06921)+ ,(-55.46390,-2.04501)+ ,(-54.31000,-1.53512)+ ,(-52.78670,-1.49875)+ ,(-57.99380,0.17697)+ ,(-56.76990,2.28241)+ ,(-54.17450,-1.85553)+ ,(-62.58220,-2.40971)+ ,(-59.86460,1.04782)+ ,(-61.58570,1.56183)+ ,(-52.62080,1.68360)+ ,(-49.82940,-1.11019)+ ,(-56.18160,-0.78538)+ ,(-57.73320,-2.23918)+ ,(-49.87560,3.09604)+ ,(-51.00100,-0.53762)+ ,(-59.71530,0.99017)+ ,(-65.73280,2.43855)+ ,(-73.01270,-0.90664)+ ,(-61.81450,-0.53346)+ ,(-65.58980,1.51174)+ ,(-75.94320,-3.06072)+ ,(-65.22210,-1.49937)+ ,(-70.79970,-2.96199)+ ,(-64.72450,1.78172)+ ,(-73.24130,0.26939)+ ,(-66.17110,-0.23305)+ ,(-61.32910,-3.12592)+ ,(-66.98180,0.64700)+ ,(-65.23060,-2.94395)+ ,(-70.13430,1.29805)+ ,(-68.43470,-1.35906)+ ,(-71.33000,-2.71582)+ ,(-86.90080,2.11646)+ ,(-74.97450,2.76118)+ ,(-68.02520,0.94979)+ ,(-67.32960,3.05994)+ ,(-67.32140,-2.79905)+ ,(-68.22010,-2.33831)]
@@ -0,0 +1,38 @@+-- voscil (rd)+module Sound.SC3.Graph.RD_voscil where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++-- > Sound.SC3.UGen.Dot.draw (voscil 32)+voscil :: Real a => a -> UGen+voscil b =+ let lfn z = lfNoise0 z KR+ hb = (constant b - 1) / 2+ rt = 6+ f = 600+ v = vOsc AR (lfn 'α' rt * hb + hb) (f * 2) 0+ o = let bf = lfn 'β' rt * 40 + 600+ nh = lfn 'γ' rt * 16 + 24+ in blip AR bf nh * (lfn 'δ' rt * 0.1 + 0.1)+ p = pan2 (v + o) (lfn 'ε' rt) (lfn 'ζ' rt * 0.5 + 0.5)+ w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+ q = pan2 w (lfn 'η' rt) (lfn 'θ' rt * 0.5 + 0.5)+ in p + q++run :: Transport m => m ()+run = do+ let bn = 8192 * 4+ b = 32+ r_set i =+ do m <- rrand 2 512+ j <- sequence (replicate m (rrand 0 bn))+ k <- sequence (replicate m (rrand (-1) 1))+ _ <- async (b_alloc i bn 1)+ send (b_set i (zip j k))+ mapM_ r_set [0 .. (b - 1)]+ play (out 0 (voscil b))++main :: IO ()+main = withSC3 run
@@ -0,0 +1,39 @@+-- voscil-u (rd)+module Sound.SC3.Graph.RD_voscil_u where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++-- > Sound.SC3.UGen.Dot.draw (voscil 32)+voscil :: Real a => a -> UGen+voscil b =+ let lfn = lfNoise0 KR+ hb = (constant b - 1) / 2+ rt = 6+ f = 600+ v = vOsc AR (lfn rt * hb + hb) (f * 2) 0+ o = let bf = lfn rt * 40 + 600+ nh = lfn rt * 16 + 24+ in blip AR bf nh * (lfn rt * 0.1 + 0.1)+ p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+ w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+ q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+ in p + q++run :: Transport m => m ()+run = do+ let bn = 8192 * 4+ b = 32+ r_set i =+ do m <- rrand 2 512+ j <- sequence (replicate m (rrand 0 bn))+ k <- sequence (replicate m (rrand (-1) 1))+ _ <- async (b_alloc i bn 1)+ send (b_set i (zip j k))+ mapM_ r_set [0 .. (b - 1)]+ play (out 0 (voscil b))++main :: IO ()+main = withSC3 run
@@ -0,0 +1,155 @@+-- A simple waveset synthesiser (rd)+module Sound.SC3.Graph.RD_waveset where++import qualified Data.Array as A {- array -}+import Data.List {- base -}+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import System.Environment+import System.Random {- random -}++-- * Score model.++-- | Interval to schedule in advance.+latency :: Double+latency = 0.15++-- | Add t to timestamp.+offset :: Time -> Bundle -> Bundle+offset t (Bundle t0 m) = Bundle (t + t0) m++-- | Play non-empty set of osc bundles.+play_set :: Transport m => [Bundle] -> m ()+play_set [] = error "play_set:empty"+play_set (x:xs) = do+ let (Bundle t _) = x+ pauseThreadUntil (t - latency)+ mapM_ sendBundle (x:xs)++-- | Play grouped score.+play_sets :: Transport m => [[Bundle]] -> m ()+play_sets [] = return ()+play_sets s = do+ t <- time+ mapM_ (play_set . map (offset t)) s++-- | Split l into chunks of at most n elements.+form_sets :: Int -> [a] -> [[a]]+form_sets _ [] = []+form_sets n l =+ let (a,b) = splitAt n l+ in a : form_sets n b++-- | Play score, send in sets on indicated cardinality.+play_score :: Transport m => Int -> [Bundle] -> m ()+play_score n s = play_sets (form_sets n s)++-- * Waveset analysis++-- | Zero-crossing predicate.+is_zc :: (Num a, Ord a) => a -> a -> Bool+is_zc a b = a <= 0 && b > 0++-- | Locate fractional zero-crossing point.+locate_fzc :: (Ord a, Fractional a) => a -> a -> a+locate_fzc x y = (1.0 / (y - x)) * abs x++-- | Fractional zero-crossing constructor, n is the initial frame location.+fzc :: (Ord a, Fractional a) => a -> [a] -> [a]+fzc _ [] = []+fzc _ [_] = []+fzc n (x:y:z) = if is_zc x y+ then (n + locate_fzc x y) : fzc (n + 2.0) z+ else fzc (n + 1.0) (y : z)++-- | Remove zero crossings so that no waveset has length less than m.+prune :: (Ord a, Num a) => a -> a -> [a] -> [a]+prune _ _ [] = [] -- hmmm....+prune m n (x:xs) = if (x - n) < m+ then prune m n xs+ else x : prune m x xs++-- | zc -> ws+ws :: [a] -> [(a,a)]+ws [] = []+ws [_] = []+ws (x:y:z) = (x,y) : ws (y : z)++-- * Waveset instrument++-- | A trivial waveset instrument with unit envelope.+waveset :: UGen+waveset =+ let k = control KR+ o = k "out" 0+ b = k "bufnum" 0+ s = k "start" 0+ e = k "end" 0+ r = k "rate" 1+ d = k "dur" 1+ a = k "amp" 0.2+ rs = bufRateScale KR b * r+ ph = phasor AR 0 rs 0 (e - s) 0 + s+ e_data = Envelope [a, a, 0] [d, 0] [EnvLin] Nothing Nothing+ e_ugen = envGen AR 1 1 0 1 RemoveSynth e_data+ in offsetOut o (bufRdL 1 AR b ph Loop * e_ugen)++-- * Waveset synthesizer++-- | Construct s_new message for synthesiser.+mk_msg :: Double -> Double -> Double -> Double -> Message+mk_msg b sf ef d =+ let a = [("bufnum", b), ("start", sf), ("end", ef), ("dur", d)]+ in s_new "waveset" (-1) AddToTail 1 a++-- | Compare wavesets by duration.+dur_ord :: (Num t, Ord t) => (t, t) -> (t, t) -> Ordering+dur_ord (s0, e0) (s1, e1) = compare (e0 - s0) (e1 - s1)++-- | Generate score from waveset data.+mk_score :: Double -> [Double] -> [(Double, Double)] -> [Bundle]+mk_score sr repeats w =+ let durations = zipWith (\(s, e) r -> (e - s) * r / sr) w repeats+ start_times = scanl (+) 0 durations+ mk_elem (s,e) t d = Bundle t [mk_msg 10 s e d]+ in zipWith3 mk_elem w start_times durations++-- | n randomly chosen elements of w.+rchoose :: Int -> [a] -> [a]+rchoose n w =+ let (l, r) = (1, length w)+ a = A.listArray (l,r) w+ in take n (map (a A.!) (randomRs (l,r) (mkStdGen 1)))++-- | Load waveset instrument, allocate sound file buffer, do waveset+-- analysis, generate & play scores.+run_waveset :: Transport m => String -> m ()+run_waveset fn = do+ _ <- async (d_recv (synthdef "waveset" waveset))+ _ <- async (b_allocRead 10 fn 0 0)+ (hdr, cs) <- liftIO (F.read fn)+ let nc = F.channelCount hdr+ nf = F.frameCount hdr+ sr = fromIntegral (F.sampleRate hdr)+ b = cs !! 0+ w = ws (prune 64 0 (fzc 0 b))+ pl s = play_score 10 s >> wait 1+ post = liftIO . putStrLn+ post ("#f: " ++ show (nc, nf, sr))+ post ("#w: " ++ show (length w)) -- force w+ pl (mk_score sr (repeat 1) w)+ pl (mk_score sr (repeat 2) (reverse w))+ pl (mk_score sr (cycle [2,4,8]) (sortBy dur_ord w))+ pl (mk_score sr (randomRs (1,24) (mkStdGen 2)) (rchoose 512 w))++main :: IO ()+main = do+ a <- getArgs+ case a of+ [fn] -> withSC3 (run_waveset fn)+ _ -> error "audio file?"++{--+withSC3 (run_waveset "/home/rohan/data/audio/pf-c5.snd")+--}
@@ -0,0 +1,27 @@+-- wial (rd)+module Sound.SC3.Graph.RD_wial_m where++import Sound.SC3.Monad {- hsc3 -}++wial :: (Functor m,UId m) => m UGen+wial = do+ let pls c d f = do let t = pulseDivider c d 0+ e = decay2 t 0.05 0.75+ o = sinOsc AR (toggleFF t * f + f * 2) 0+ n0 <- tIRand 0 1 t+ return (o * e * n0 * 0.5)+ smpl f = [(4,6,f,0.75)+ ,(2,6,f * 2,0.75)+ ,(1,2,f * 16,0.025)+ ,(1,5,f * 64,0.005)+ ,(1,4,f * 128,0.035)+ ,(1,3,f * 256,0.15)+ ,(2,3,f * 512,0.35)]+ plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)+ clk = impulse AR 16 0+ n0 <- dust KR 2+ f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0+ fmap sum (mapM (plss clk) (smpl f))++main :: IO ()+main = audition . out 0 =<< wial
@@ -0,0 +1,18 @@+-- xy-interference (rd)+module Sound.SC3.Graph.RD_xy_interference where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++xy_interference :: UGen+xy_interference =+ let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)+ y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)+ nd = let n = lfNoise0 'α' KR (mce2 5 9)+ a = sinOsc AR (x + n) 0+ b = sinOsc AR y 0+ in a * b+ in mix (uclone 'β' 3 nd)++main :: IO ()+main = audition (out 0 xy_interference)
@@ -0,0 +1,17 @@+-- xy-interference-m (rd)+module Sound.SC3.Graph.RD_xy_interference_m where++import Sound.SC3.Monad {- hsc3 -}++xy_interference :: UId m => m UGen+xy_interference = do+ let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)+ y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)+ nd = do n <- lfNoise0 KR (mce2 5 9)+ let a = sinOsc AR (x + n) 0+ b = sinOsc AR y 0+ return (a * b)+ fmap sum (sequence (replicate 3 nd))++main :: IO ()+main = audition . out 0 =<< xy_interference
@@ -0,0 +1,27 @@+-- bottle (sc)+module Sound.SC3.Graph.SC_bottle_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++bottle :: UId m => m UGen+bottle = do+ freq <- rand 220 880+ wn <- whiteNoise AR+ pn <- pinkNoise AR+ let perc = envPerc 0.1 0.6+ ex = envGen KR 1 1 0 1 DoNothing perc * wn * 0.02+ flute = ringz ex freq 0.3+ r = resonz pn (5 + (freq / 2)) 0.1+ breath = envGen KR 1 1 0 1 DoNothing perc * r+ rapf i = do x <- linRand 0.001 0.1 (-1)+ return (i + allpassN i 0.1 x 1.0 * 0.5)+ cls i = let en = let c = EnvNum (-4) in (c,c,c)+ l = envLinen' 0.01 3.0 1.0 1 en+ z = (breath + i) * envGen KR 1 1 0 1 RemoveSynth l+ in mce2 z z+ f <- chainM 2 rapf flute+ return (cls f)++main :: IO ()+main = overlapTextureU (2,0,2,maxBound) =<< bottle
@@ -0,0 +1,22 @@+-- insects (sp)+module Sound.SC3.Graph.SP_insects_m where++import Sound.SC3.Monad {- hsc3 -}++insect :: UId m => m UGen+insect = do+ r1 <- rand 2000 3000+ r2 <- rand 0.05 0.1+ n1 <- lfNoise2 KR (r2 * 50 + 50)+ r4 <- rand 1 10+ r5 <- rand 0.05 0.1+ n2 <- lfNoise2 KR r5+ let a = sinOsc KR r4 0 * 0.5 + 0.5+ o = sinOsc AR (r1 + n1) r2 * 0.005 * a+ return (pan2 o n2 1)++insects :: UId m => m UGen+insects = fmap sum (sequence (replicate 60 insect))++main :: IO ()+main = audition . out 0 =<< insects
@@ -0,0 +1,19 @@+-- drummer (tm)+module Sound.SC3.Graph.TM_drummer where++import Sound.SC3.ID {- hsc3 -}++drummer :: UGen+drummer =+ let n = whiteNoise 'α' AR+ tempo = 4+ tr = impulse AR tempo 0+ tr_2 = pulseDivider tr 4 2+ tr_4 = pulseDivider tr 4 0+ snare = n * decay2 tr_2 0.005 0.5+ bass = sinOsc AR 60 0 * decay2 tr_4 0.005 0.5+ hihat = hpf n 10000 * decay2 tr 0.005 0.5+ in pan2 (snare + bass + hihat) 0 0.4++main :: IO ()+main = audition (out 0 drummer)
@@ -0,0 +1,16 @@+/* http://code.haskell.org/~malcolm/hscolour/emacs.css */+.hs-keyglyph { color: DarkGoldenrod; }+.hs-layout { color: Black;}+.hs-keyword { color: PaleGreen;}+.hs-comment, .hs-comment a { color: Firebrick;}+.hs-str { color: RosyBrown; }+.hs-chr { color: RosyBrown;}+.hs-keyword { color: BlueViolet; }+.hs-conid { color: ForestGreen; }+.hs-varid { color: black; }+.hs-num { color: black; }+.hs-varop { color: DarkGoldenrod; }+.hs-conop { color: DarkGoldenrod; }+.hs-sel { color: Red; }+.hs-cpp { color: Red; }+.hs-definition { color: Blue; }
@@ -9,7 +9,7 @@ scr h n f d = let (h0,h1) = h f o z = sinOsc AR (expRand z h0 h1) 0 * 0.2- m = mce (map o (take n ['a'..]))+ m = mce (map o (take n ['α'..])) e = lfGauss AR d (1/4) 0 NoLoop RemoveSynth in splay (m * e) 1 0.1 0 True @@ -17,14 +17,14 @@ -- > Sound.SC3.UGen.Dot.draw (b 8) b :: Int -> Synthdef b np =- let f = midiCPS (lchoose 'a' [40,45,52])+ let f = midiCPS (lchoose 'β' [40,45,52]) h n = (n,n + (n / 64)) in synthdef "b" (out 0 (scr h np f 9)) -- > audition (c 12) c :: Int -> Synthdef c np =- let f = midiCPS (choose 'a' (in' 3 KR 0))+ let f = midiCPS (choose 'γ' (in' 3 KR 0)) h n = (n - (n / 128),n + (n / 128)) in synthdef "c" (out 0 (scr h np f 6)) @@ -36,11 +36,10 @@ -- > mapM_ killThread t begin :: Int -> IO [ThreadId] begin n = do- t0 <- forkIO (forever (audition (b n) >> pauseThread 4))+ t0 <- forkIO (forever (audition (b n) >> wait 4)) t1 <- forkIO (let set f = withSC3 (send (c_setn [(0,f)]))- in mapM_ (\f -> set f >> pauseThread 10) (cycle x))- t2 <- forkIO (do pauseThread 0.1- forever (audition (c n) >> pauseThread 0.5))+ in mapM_ (\f -> set f >> wait 10) (cycle x))+ t2 <- forkIO (wait 0.1 >> forever (audition (c n) >> wait 0.5)) return [t0,t1,t2] main :: IO ()
@@ -1,12 +1,9 @@ -- http://sccode.org/1-4Q6 (f0) import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Control.Instrument-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} -- > audition risset--- > Sound.SC3.UGen.Dot.draw risset -- -- let set p = withSC3 (\fd -> send fd (n_set (-1) p)) -- set [("trig",1)]@@ -17,9 +14,9 @@ risset = let k = control KR pan = k "pan" 0- freq = k "freq" 400+ f = k "freq" 400 ampl = k "amp" 0.1- dur = k "sustain" 2+ d = k "sustain" 2 tr = tr_control "trig" 1 amps = [1,0.67,1,1.8,2.67,1.67,1.46,1.33,1.33,1,1.33] durs = [1,0.9,0.65,0.55,0.325,0.35,0.25,0.2,0.15,0.1,0.075]@@ -27,21 +24,22 @@ dets = [0,1,0,1.7,0,0,0,0,0,0,0] fn i = let shp = let c = EnvNum (-4.5)- in envPerc' 0.005 (dur * durs!!i) (amps!!i) (c,c)+ in envPerc' 0.005 (d * durs!!i) (amps!!i) (c,c) env = envGen AR tr 1 0 1 DoNothing shp- in sinOsc AR (freq * frqs!!i + dets!!i) 0 * ampl * env+ in sinOsc AR (f * frqs!!i + dets!!i) 0 * ampl * env src = mixFill 11 fn in synthdef "risset" (out 0 (pan2 src pan 1)) -pattern :: P Event+pattern :: P_Bind pattern =- let i = (InstrumentDef risset False)- in pmono i 1000 [("note",prand 'a' [0,2,5,7,11] inf)- ,("octave",prand 'b' [4,5,6,7,9] inf)- ,("legato",1)- ,("dur",prand 'c' [2,3,5,7] inf)- ,("amp",pwhite 'd' 0.025 0.15 inf)- ,("trig",1)]+ [(K_instr,pinstr' (Instr_Def risset False))+ ,(K_id,1000)+ ,(K_note,prand 'α' [0,2,5,7,11] inf)+ ,(K_octave,prand 'β' [4,5,6,7,9] inf)+ ,(K_legato,1)+ ,(K_dur,prand 'γ' [2,3,5,7] inf)+ ,(K_amp,pwhite 'δ' 0.025 0.15 inf)+ ,(K_param "trig",1)] main :: IO ()-main = audition pattern+main = audition (pmono pattern)
@@ -4,25 +4,25 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -} import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} type ST = (UGen,UGen,UGen) n1 :: ST -> UGen -> UGen n1 (s1,s2,s3) a =- let x = tScramble 'a' KR 1 (mce [60,67,75,79,94])- rel = choose 'a' (mce [0,0,0,0,0,0,0,1])+ let x = tScramble 'α' KR 1 (mce [60,67,75,79,94])+ rel = choose 'β' (mce [0,0,0,0,0,0,0,1]) p = envPerc 0.01 (a + rel) e = envGen AR 1 1 0 1 RemoveSynth p- ta = midiCPS x * a * choose 'a' s1- tb = x * midiCPS (choose 'a' s2)- tc = a * midiCPS (choose 'a' s3)+ ta = midiCPS x * a * choose 'γ' s1+ tb = x * midiCPS (choose 'δ' s2)+ tc = a * midiCPS (choose 'ε' s3) in out 0 (e * ay ta tb tc 0.25 3 15 10 7 4 1 0) mk_e :: UGen -> UGen -> UGen mk_e m k =- let g = let d = dseq 'a' dinf m- l = dxrand 'a' dinf (mce2 0 1)+ let g = let d = dseq 'ζ' dinf m+ l = dxrand 'η' dinf (mce2 0 1) in (duty KR d 0 DoNothing l) p = envPerc 0.01 k in envGen AR g 1 0 1 RemoveSynth p@@ -31,13 +31,13 @@ n2 a = let n z = brownNoise z AR e = mk_e (mce2 0.5 0.25) (a / 2)- in out 0 (e * mce2 (n 'a') (n 'b') * 0.6)+ in out 0 (e * mce2 (n 'θ') (n 'ι') * 0.6) n3 :: UGen -> UGen n3 a = let n z = whiteNoise z AR e = mk_e (mce2 0.25 0.5) (a / 4)- in out 0 (e * lfNoise0 'a' KR 16 * mce2 (n 'a') (n 'b'))+ in out 0 (e * lfNoise0 'κ' KR 16 * mce2 (n 'λ') (n 'μ')) c1_4QM :: Transport m => ST -> m () c1_4QM st = do@@ -46,7 +46,7 @@ play (n1 st a) play (n2 a) play (n3 a)- liftIO (pauseThread dt)+ liftIO (wait dt) main :: IO () main = do
@@ -1,11 +1,10 @@ -- http://sccode.org/1-4QN import Control.Concurrent {- base -}-import Control.Monad+import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} import qualified Sound.SC3.Lang.Random.IO as L -- > withSC3 init_b@@ -14,7 +13,7 @@ _ <- async (b_alloc 0 512 1) async (b_gen_sine1 0 [Normalise,Wavetable,Clear] (map recip [1,2,3,4])) --- > Sound.SC3.UGen.Dot.draw (mk_g (lfNoise0 'a'))+-- > Sound.SC3.UGen.Dot.draw (mk_g (lfNoise0 'α')) mk_g :: (Rate -> UGen -> UGen) -> Synthdef mk_g o = let k = control KR@@ -26,32 +25,34 @@ ed = k "edens" 1 l = line KR sd ed d DoNothing t = o AR l- e_p = envPerc (rand 'a' 0.0001 0.1) (d * rand 'a' 0.5 4)+ e_p = envPerc (rand 'β' 0.0001 0.1) (d * rand 'γ' 0.5 4) e = envGen KR 1 1 0 1 RemoveSynth e_p g = grainBuf 2 t (1 / l) b r p 2 0 (-1) 512 in synthdef "g" (out 0 (g * e)) -p1 :: P Event-p1 = pbind- [("dur",pseq [4] inf)- ,("sdens",pseq [9000,1000,500] inf / 100)- ,("edens",prand 'a' [pseq [9000,1000,500] 1 / 10,pseq [1] 3] inf)- ,("rate",pwhite 'b' (-10) 10 inf)- ,("pos",pwhite 'c' (-10) 10 inf)]+p1 :: P_Bind+p1 =+ [(K_dur,pseq [4] inf)+ ,(K_param "sdens",pseq [9000,1000,500] inf / 100)+ ,(K_param "edens",prand 'δ' [pseq [9000,1000,500] 1 / 10+ ,pseq [1] 3] inf)+ ,(K_param "rate",pwhite 'ε' (-10) 10 inf)+ ,(K_param "pos",pwhite 'ζ' (-10) 10 inf)] -p2 :: P Event-p2 = pbind- [("dur",pseq [4/3] inf)- ,("sdens",pseq [9000,1000,500,25] inf)- ,("edens",prand 'a' [pseq [9000,1000,500,25] 1,pseq [1] 4] inf)- ,("rate",pwhite 'b' (-100) 100 inf)- ,("pos",pwhite 'c' (-10) 10 inf)]+p2 :: P_Bind+p2 =+ [(K_dur,pseq [4/3] inf)+ ,(K_param "sdens",pseq [9000,1000,500,25] inf)+ ,(K_param "edens",prand 'η' [pseq [9000,1000,500,25] 1+ ,pseq [1] 4] inf)+ ,(K_param "rate",pwhite 'θ' (-100) 100 inf)+ ,(K_param "pos",pwhite 'ι' (-10) 10 inf)] push_g :: Transport m => m Message push_g = do let ph u r f = u r f 0 wd u r f = u r f 0 0- o_set = [lfNoise0 'a',ph sinOsc,ph impulse,wd lfPulse,ph lfSaw]+ o_set = [lfNoise0 'κ',ph sinOsc,ph impulse,wd lfPulse,ph lfSaw] o <- L.choose o_set async (d_recv (mk_g o)) @@ -59,9 +60,9 @@ update_g = do _ <- push_g dt <- L.choose [1,2,4,8,16,32]- pauseThread dt+ wait dt main :: IO () main = do _ <- forkIO (withSC3 (reset >> init_b >> forever update_g))- audition ("g",ppar [p1,p2])+ audition (p_with (K_instr,pinstr "g") (ppar (map pbind [p1,p2])))
@@ -1,7 +1,7 @@--- http://sccode.org/1-4Qx+-- http://sccode.org/1-4Qx (jar)+ import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw tw tw :: UGen tw = let l = lfCub
@@ -3,44 +3,42 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -} import qualified Sound.SC3.Lang.Collection as C {- hsc3-lang -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > audition one_td_u--- > Sound.SC3.UGen.Dot.draw one_td_u one_td_u :: UGen one_td_u = let base = control IR "base" 2.6- z1 = C.geom 5 2 2- z2 = C.geom 4 (base / 2) 2- z3 = C.geom 5 (base / 4) 2- z4 = C.geom 5 (1/8) 2+ z1 = C.geom (5::Int) 2 2+ z2 = C.geom (4::Int) (base / 2) 2+ z3 = C.geom (5::Int) (base / 4) 2+ z4 = C.geom (5::Int) (1/8) 2 z5 = [4,6..24] rand_sym z n = rand z (- n) n- a = let fr = range 20 10000 (lfdNoise3 'a' KR (base / 4))- in lfBrownNoise2 'a' AR fr 0.005 0- b = let x = mouseX KR 0 (lchoose 'a' z1) Linear 0.2- in gbmanL AR x (rand_sym 'a' 3) (rand_sym 'b' 3) / 3- c = let y = mouseY KR 0 (lchoose 'b' z1) Linear 0.2- fr = gbmanL AR y (rand_sym 'c' 3) (rand_sym 'd' 3)+ a = let fr = range 20 10000 (lfdNoise3 'α' KR (base / 4))+ in lfBrownNoise2 'β' AR fr 0.005 0+ b = let x = mouseX KR 0 (lchoose 'γ' z1) Linear 0.2+ in gbmanL AR x (rand_sym 'δ' 3) (rand_sym 'ε' 3) / 3+ c = let y = mouseY KR 0 (lchoose 'ζ' z1) Linear 0.2+ fr = gbmanL AR y (rand_sym 'η' 3) (rand_sym 'θ' 3) in impulse AR (a2K fr * base / 4) 0 / 4- d = dust 'j' AR (lchoose 'c' z2) / 4- e = impulse AR (lchoose 'd' z2) 0 / 4- g = let n = lfdNoise3 'b' KR base- fr = range (rand 'e' 62 100) (rand 'f' 110 350) n+ d = dust 'ι' AR (lchoose 'κ' z2) / 4+ e = impulse AR (lchoose 'λ' z2) 0 / 4+ g = let n = lfdNoise3 'μ' KR base+ fr = range (rand 'ν' 62 100) (rand 'ξ' 110 350) n in lfPulse AR fr 0 0.5 * 0.003- amp = let n = dxrand 'a' dinf (mce z3)+ amp = let n = dxrand 'ο' dinf (mce z3) fr = demand (impulse KR (base / 16) 0) 0 n- g_f = lchoose 'e' z4- am = a2K (gbmanL AR g_f (rand_sym 'g' 3) (rand_sym 'h' 3))+ g_f = lchoose 'π' z4+ am = a2K (gbmanL AR g_f (rand_sym 'ρ' 3) (rand_sym 'σ' 3)) in sinOsc KR fr 0 * 0.1 * am + 0.1- loc = let mu = rand 'i' 0.2 0.7- ad = rand 'j' 0 0.3- in lfTri KR (base / lchoose 'f' z5) 0 * mu + ad- klk = let fr = randN 30 'a' 50 10000- ph = randN 30 'a' 0 1- am = randN 30 'b' 0 1+ loc = let mu = rand 'τ' 0.2 0.7+ ad = rand 'υ' 0 0.3+ in lfTri KR (base / lchoose 'φ' z5) 0 * mu + ad+ klk = let fr = randN 30 'χ' 50 10000+ ph = randN 30 'ψ' 0 1+ am = randN 30 'ω' 0 1 l = klankSpec_mce fr ph am- in klank (lchoose 'g' [a,b,c,d,e,g]) 1 0 1 l+ in klank (lchoose 'Α' [a,b,c,d,e,g]) 1 0 1 l sig = pan2 klk loc amp in out 0 sig @@ -49,7 +47,7 @@ postprocess_u :: UGen postprocess_u =- let z = freeVerb (in' 2 AR 0) (rand 'a' 0.33 1) 0.5 0.5+ let z = freeVerb (in' 2 AR 0) (rand 'Β' 0.33 1) 0.5 0.5 in replaceOut 0 (limiter z 1 1e-2) postprocess_s :: Synthdef
@@ -1,6 +1,6 @@ -- 08091500Acid309 by_otophilia -import Data.List+import Data.List {- base -} import Data.Maybe import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}@@ -22,7 +22,7 @@ env1 = let d = mk_env [110,59,29] [0.005,0.29] [-4,-5] in midiCPS (envGen AR 1 1 0 1 DoNothing d) s = let p = lfPulse AR env1 0 0.5 - 0.5- q = p + mce2 (whiteNoise 'a' AR) (whiteNoise 'b' AR)+ q = p + mce2 (whiteNoise 'α' AR) (whiteNoise 'β' AR) r = lpf q (env1 * 1.5) * env0 in clip2 (r + sinOsc AR env1 0.5 * env0 * 1.2) 1 in synthdef "kick" (out bus s)@@ -41,7 +41,7 @@ q = lfPulse AR (env1 * 1.6) 0 0.5 * 0.5 - 0.25 r = lpf (p + q) (env1 * 1.2) * env0 in r + sinOsc AR env1 0.8 * env0- noise = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'b' AR) * 0.2+ noise = let p = mce2 (whiteNoise 'γ' AR) (whiteNoise 'δ' AR) * 0.2 q = hpf p 200 * 2 r = bpf q 6900 0.6 * 3 + p in r * env2@@ -58,10 +58,10 @@ in envGen AR 1 1 0 1 DoNothing d env2 = let d = mk_env [0,1,0] [0.02,0.3] [0,-4] in envGen AR 1 1 0 1 RemoveSynth d- noise1 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env1+ noise1 = let p = mce2 (whiteNoise 'ε' AR) (whiteNoise 'ζ' AR) * env1 q = hpf p 600 in bpf q 2000 3- noise2 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env2+ noise2 = let p = mce2 (whiteNoise 'η' AR) (whiteNoise 'θ' AR) * env2 q = hpf p 1000 in bpf q 1200 0.7 * 0.7 s = let p = noise1 + noise2@@ -84,7 +84,7 @@ p = sum (map f [0..n1-1]) in bHiPass p 1000 2 * env1 noise = let n2 = 8- p = whiteNoise 'a' AR+ p = whiteNoise 'ι' AR f i = let t = 1 / midiCPS (linLin i 0 (n2-1) 40 50 + r2) in combN p 0.05 t 0.1 q = sum (map f [0..n2-1]) * (1/n2) + p@@ -164,7 +164,7 @@ dr_seq_bundle :: Int -> Double -> D -> Bundle dr_seq_bundle fx_id t =- Bundle (UTCr t) .+ bundle t . mapMaybe (dr_msg fx_id) . zip [0..] @@ -190,9 +190,9 @@ m = if b0 == 1 then [p,n_set acid_id [("gate",1)]] else [p]- in Bundle (UTCr t) m+ in bundle t m off = let end_t = t + (dt * b1 * 0.25 * 0.99)- in Bundle (UTCr end_t) [n_set acid_id [("gate",0)]]+ in bundle end_t [n_set acid_id [("gate",0)]] in if b1 > 0 then [on,off] else [on] -- * Runtime@@ -216,7 +216,7 @@ ao_run_seq :: Transport m => (Int,Int) -> [D] -> [B] -> m () ao_run_seq (acid_id,fx_id) d_sq b_sq = do- init_t <- utcr+ init_t <- time let dt_seq' = dt_seq 130 t_seq = scanl1 (+) (init_t : dt_seq') act (t,dt,d,b) =
@@ -86,7 +86,7 @@ coinIO :: R -> IO Bool coinIO = getStdRandom . coin --- | 'R.wchoose' at 'R'+-- | 'R.wchoose'. wchoose :: RandomGen g => [a] -> [R] -> g -> (a,g) wchoose = R.wchoose @@ -118,11 +118,11 @@ pan = control KR "pan" 0 s = let p = mix (lfPar AR (freq * mce [0.999,1.001]) 0 * amp) l = [10000,2000,4000,1000]- t = [0.005,rand 'a' 0.009 0.05,0.005]+ t = [0.005,rand 'α' 0.009 0.05,0.005] d = Envelope l t (replicate 3 EnvLin) Nothing Nothing in lpf (distort p) (envGen KR 1 1 0 1 DoNothing d) e = let l = [0,1,0.4,0.7,0]- t = [rand 'b' 0.001 0.005,0.005,0.005,sustain]+ t = [rand 'β' 0.001 0.005,0.005,0.005,sustain] d = Envelope l t (replicate 4 EnvLin) Nothing Nothing in envGen KR 1 1 0 1 RemoveSynth d in out 0 (pan2 (s * e) pan 1)@@ -316,9 +316,9 @@ ag_run_note :: Transport t => t->Int->Int->R->R->R->(P,S,Int)->IO() ag_run_note fd o b a su pn (p,s,z) = do let mn = ag_note s z o b- print ('o',o,'b',b)- print ('p',map (set_prec 2) (M.elems p))- print ('s',M.elems s)+ print ('γ',o,'δ',b)+ print ('ε',map (set_prec 2) (M.elems p))+ print ('ζ',M.elems s) send fd (nd_msg (midiCPS (fromIntegral mn)) a su pn) ag_step :: Transport t => t -> AG -> IO AG@@ -338,7 +338,7 @@ return (last p',last s') dt <- ioi_row r i <- ioi_mult_seq r- pauseThread (dt * i)+ wait (dt * i) return (r {probabilities = p',selections = s'}) ag_run :: Transport t => t -> Maybe Int -> IO ()@@ -353,7 +353,7 @@ main :: IO () main = do i <- randomRIO (256,512)- withSC3 (\fd -> ag_run fd (Just i) >> pauseThread 9 >> reset fd)+ withSC3 (\fd -> ag_run fd (Just i) >> wait 9 >> reset fd) {- withSC3 ag_init
@@ -2,7 +2,6 @@ import Sound.SC3.Monad {- hsc3 -} --- > aleatoric_quartet >>= Sound.SC3.UGen.Dot.draw aleatoric_quartet :: UId m => m UGen aleatoric_quartet = do let base_mn = control KR "note" 66@@ -10,8 +9,6 @@ density = mouseX KR 0.01 1 Linear 0.1 dmul = recip density * 0.5 * amp dadd = amp - dmul- (>=>) f g x = f x >>= g- chain n f = foldl (>=>) return (replicate n f) rapf i = do r <- clone 2 (rand 0 0.05) return (allpassN i 0.05 r 1) mk_f = do i0 <- iRand 0 2@@ -27,7 +24,7 @@ n1 <- lfNoise1 KR 8 return (n0 * max 0 (n1 * dmul + dadd)) return (pan2 (combL x 0.02 f 3) r 1)- g <- chain 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))+ g <- chainM 5 rapf =<< fmap sum (sequence (replicate 4 mk_s)) return (leakDC g 0.995) main :: IO ()
@@ -5,8 +5,8 @@ alien_froggies :: UGen -> (UGen,UGen) alien_froggies r =- let r' = fold (r * exp (linRand 'a' (-0.2) 0.2 0)) 1 30- o = formant AR r' (expRand 'b' 200 3000) (rand 'c' 0 9 * r' + r')+ let r' = fold (r * exp (linRand 'α' (-0.2) 0.2 0)) 1 30+ o = formant AR r' (expRand 'β' 200 3000) (rand 'γ' 0 9 * r' + r') in (o * 0.05,r') main :: IO ()
@@ -3,7 +3,6 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw alien_meadow alien_meadow :: UGen alien_meadow = let a = rand 'α' 0 20
@@ -1,11 +1,8 @@ -- http://sccode.org/1-1y -- some edits...... -import Control.Applicative import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Control.Instrument-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} chain :: a -> [a -> a] -> a chain n ff =@@ -58,40 +55,45 @@ audition bass_u -} -pulse_i :: Instrument-pulse_i = InstrumentDef (synthdef "pulse" pulse_u) False+pulse_i :: Instr+pulse_i = Instr_Def (synthdef "pulse" pulse_u) False -drone_i :: Instrument-drone_i = InstrumentDef (synthdef "drone" drone_u) False+drone_i :: Instr+drone_i = Instr_Def (synthdef "drone" drone_u) False -bass_i :: Instrument-bass_i = InstrumentDef (synthdef "bass" bass_u) False+bass_i :: Instr+bass_i = Instr_Def (synthdef "bass" bass_u) False dur_p :: Fractional a => P a dur_p = prand 'β' [3,0.7,1,0.5] inf -pulse_p :: P Event-pulse_p = pbind [("dur",dur_p * 10)- ,("midinote",prand 'α' [59,72,76,79,81,88,90] inf)- ,("amp",pwhite 'β' 0.2 0.27 inf)- ,("attackTime",pwhite 'γ' 0 7 inf)- ,("delayTime",0.02)]--drone_p :: P Event-drone_p = pbind [("dur",dur_p)- ,("midinote",prand 'α' [31,40,45,64,68,69] inf)- ,("amp",pwhite 'β' 0.03 0.08 inf * 0.7)- ,("phase",pwrand 'γ' [0,4.7123] [0.5,0.5] inf)]+pulse_p :: P_Bind+pulse_p =+ [(K_instr,pinstr' pulse_i)+ ,(K_dur,dur_p * 10)+ ,(K_midinote,prand 'α' [59,72,76,79,81,88,90] inf)+ ,(K_amp,pwhite 'β' 0.2 0.27 inf)+ ,(K_param "attackTime",pwhite 'γ' 0 7 inf)+ ,(K_param "delayTime",0.02)] -bass_p :: P Event-bass_p = pbind [("dur",dur_p)- ,("midinote",31)- ,("amp",0.3)]+drone_p :: P_Bind+drone_p =+ [(K_instr,pinstr' drone_i)+ ,(K_dur,dur_p)+ ,(K_midinote,prand 'α' [31,40,45,64,68,69] inf)+ ,(K_amp,pwhite 'β' 0.03 0.08 inf * 0.7)+ ,(K_param "phase",pwrand 'γ' [0,4.7123] [0.5,0.5] inf)] -ambient1_p :: P Event-ambient1_p = ppar [pinstr (pure pulse_i) pulse_p- ,pinstr (pure drone_i) drone_p- ,pinstr (pure bass_i) bass_p]+bass_p :: P_Bind+bass_p =+ [(K_instr,pinstr' bass_i)+ ,(K_dur,dur_p)+ ,(K_midinote,31)+ ,(K_amp,0.3)] main :: IO ()-main = audition ambient1_p+main = do+ let p = ppar [pbind pulse_p+ ,pbind drone_p+ ,pbind bass_p]+ audition p
@@ -2,7 +2,6 @@ import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw (synthdef "analog-bubbles" analog_bubbles) analog_bubbles :: UGen analog_bubbles = let o = lfSaw KR (mce2 8 7.23) 0 * 3 + 80
@@ -2,10 +2,8 @@ import Control.Monad {- base -} import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw analogarpeggio analogarpeggio :: Synthdef analogarpeggio = let k = control KR@@ -23,49 +21,53 @@ in synthdef "analogarpeggio" (out o (pan2 (e * s * a) p 0.25)) {--audition (analogarpeggio- ,(pbind [("dur",pwrand 'a' [0.1,0.25] [2/3,1/2] inf)- ,("freq",pwhite 'b' 440.0 1600.0 inf)- ,("pan",pwhite 'c' (-1.0) 1.0 inf)- ,("amp",pwhite 'd' 0.0 0.5 inf)- ,("cutoffmult",pwhite 'e' 4.0 5.0 inf)- ,("res",pwhite 'f' 0.0 1.0 inf)]))+audition (pbind [(K_instr,psynth analogarpeggio)+ ,(K_dur,pstutter 8 (pwrand 'α' [0.1,0.25] [2/3,1/3] inf))+ ,(K_note,pwrand 'β' [0,2,4,5,7] [0.3,0.1,0.3,0.1,0.2] inf)+ ,(K_octave,pstutter 4 (prand 'γ' [4,5,6,7] inf))+ ,(K_param "pan",pbrown 'δ' (-1.0) 1.0 0.25 inf)+ ,(K_amp,pbrown 'ε' 0.1 0.5 0.15 inf)+ ,(K_param "cutoffmult",pbrown 'ζ' 4.0 5.0 0.1 inf)+ ,(K_param "res",pbrown 'η' 0.0 1.0 0.25 inf)]) -} +-- > pinterp 3 0 9 == toP' [0,3,6]+-- > pseries 6 ((15 - 3) / 6) 3 == toP' [6,8,10] pinterp :: (Fractional a) => Int -> a -> a -> P a pinterp n s e = pseries s ((e - s) / fromIntegral n) n pinterp' :: (Fractional a) => P Int -> P a -> P a -> P a pinterp' n s e = join (pzipWith3 pinterp n s e) -arpeggio :: [(Key,P Double)]+arpeggio :: P_Bind arpeggio =- [("dur"- ,let d = pwrand 'n' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf+ [(K_instr,psynth analogarpeggio)+ ,(K_dur+ ,let d = pwrand 'α' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf in pstutter 32 d)- ,("cutoffmult"- ,let n = prand 'a' [8,16,24,32] inf- s = pwhite 'b' 2.5 5.0 inf- e = pwhite 'c' 1.5 7.0 inf+ ,(K_param "cutoffmult"+ ,let n = prand 'β' [8,16,24,32] inf+ s = pwhite 'γ' 2.5 5.0 inf+ e = pwhite 'δ' 1.5 7.0 inf in pinterp' n s e)- ,("res"- ,let n = prand 'd' [8,16,24,32] inf- s = pexprand 'e' 0.02 0.5 inf- e = pexprand 'f' 0.02 1.0 inf+ ,(K_param "res"+ ,let n = prand 'ε' [8,16,24,32] inf+ s = pexprand 'ζ' 0.02 0.5 inf+ e = pexprand 'η' 0.02 1.0 inf in pinterp' n s e)- ,("pan"- ,let n = prand 'g' [8,16] inf- s = pwhite 'h' (-1.0) 1.0 inf+ ,(K_param "pan"+ ,let n = prand 'θ' [8,16] inf+ s = pwhite 'ι' (-1.0) 1.0 inf s' = fmap (< 0) s- e = pif s' (pwhite 'i' 0.0 1.0 inf) (pwhite 'i' (-1.0) 0.0 inf)+ e = pif s' (pwhite 'κ' 0.0 1.0 inf) (pwhite 'λ' (-1.0) 0.0 inf) in pinterp' n s e)- ,("amp"- ,let n = prand 'j' [8,16,24,32] inf- s = prand 'k' [0.25,0.05,0.5] inf- e = prand 'l' [0.25,0.05,0.5,0.01] inf+ ,(K_amp+ ,let n = prand 'μ' [8,16,24,32] inf+ s = prand 'ν' [0.25,0.05,0.5] inf+ e = prand 'ξ' [0.25,0.05,0.5,0.01] inf in pinterp' n s e)- ,("note"- ,let f x = pn (fromList x) 8+ ,(K_note+ ,let f x = pn (toP x) 8 in pseq (map f [[10,6,1,-2] ,[-3,1,6,9] ,[9,6,1,-3]@@ -74,11 +76,11 @@ ,[-3,1,6,9] ,[8,6,1,-3] ,[-6,1,6,8]]) inf)- ,("octave"+ ,(K_octave ,pstutter 8 (pseq [7,6,5,4,4,5,6,7] inf))] main :: IO () main = do let n = 60/157- p = pedit "dur" (* n) (pbind arpeggio)- withSC3 (play (analogarpeggio,p))+ p = pedit K_dur (* n) (pbind arpeggio)+ withSC3 (play p)
@@ -1,8 +1,8 @@--- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html (jmcc)+-- babbling brook (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< babbling_brook babbling_brook :: UId m => m UGen babbling_brook = do let b f m a g = do n1 <- brownNoise AR
@@ -0,0 +1,22 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++node :: UId m => m UGen+node = do+ let f = lag (lfSaw AR (7 + #(rand (-1.5) 1.5)) #(rand 0 1) * #(rand 11 15)) 0.1 + #(rand 94 102)+ let a = lfPulse KR (1 / #(rand 12 15.6)) #(rand 0 1) 0.16 * 0.05+ let b = sinOsc AR (midiCPS f) #(rand 0 1) * a+ return (rotate2 b (silent 1) #(rand (-1) 1))++birds :: UId m => m UGen+birds = do+ d <- return . sum =<< sequence (replicate 6 node)+ let apf i = do return (allpassL i 0.07 #(rand 0 0.06) #(rand 0.7 2.0))+ w <- chainM 12 apf d+ return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
@@ -1,14 +1,8 @@--- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html (jmcc)+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html import Sound.SC3.Monad {- hsc3 -} -composeM :: Monad m => [a -> m a] -> a -> m a-composeM fs i = foldr (=<<) (return i) fs--chainM :: Monad m => Int -> (a -> m a) -> a -> m a-chainM n f = composeM (replicate n f)---- > Sound.SC3.UGen.Dot.draw =<< birds birds :: UId m => m UGen birds = do let node = do r1 <- rand 94.0 102.0
@@ -4,16 +4,16 @@ sample_rate_decrease :: UGen sample_rate_decrease =- let f = lfNoise2 'a' KR 8- nh = lfNoise2 'a' KR 3+ let f = lfNoise2 'α' KR 8+ nh = lfNoise2 'β' KR 3 src = blip AR (f * 200 + 300) (nh * 10 + 20) sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2 in latch src (impulse AR sr 0) bit_rate_decrease :: UGen bit_rate_decrease =- let f = lfNoise2 'a' KR 8- nh = lfNoise2 'a' KR 3+ let f = lfNoise2 'γ' KR 8+ nh = lfNoise2 'δ' KR 3 src = blip AR (f * 200 + 300) (nh * 10 + 20) sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2 bit_sz = mouseY KR 1 24 Exponential 0.2
@@ -6,7 +6,6 @@ (.%.) :: UGen -> UGen -> UGen (.%.) = modE --- > Sound.SC3.UGen.Dot.draw bitwise_operators bitwise_operators :: UGen bitwise_operators = let t = pulseCount (impulse AR 8e3 0) 0
@@ -2,7 +2,7 @@ import Data.Numbers.Primes {- primes -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.Protect {- hsc3 -} import System.Random {- random -} import System.Random.Shuffle {- random-shuffle -} @@ -33,9 +33,9 @@ bac :: UGen bac =- let x = let ph = i yn * uclone 'a' 2 (lfdNoise3 'a' KR 1)+ let x = let ph = i yn * uclone 'α' 2 (lfdNoise3 'β' KR 1) in out xn (mceReverse (sinOsc AR (60 * 2) ph))- y = let ph = i xn * uclone 'a' 2 (lfdNoise3 'a' KR 0.3) * 4+ y = let ph = i xn * uclone 'γ' 2 (lfdNoise3 'δ' KR 0.3) * 4 in out yn (sinOsc AR (50 * 2) ph) in mrg [inFeedback 2 xn,y,x] @@ -45,10 +45,10 @@ bac' :: UGen bac' = let x = let f = c (nth_prime 23)- ph = i yn * uclone 'a' 2 (lfdNoise3 'a' KR (sqrt 2))+ ph = i yn * uclone 'ε' 2 (lfdNoise3 'ζ' KR (sqrt 2)) in out xn (mceReverse (sinOsc AR f ph)) y = let f = c (chain 3 nth_prime 1)- ph = i xn * uclone 'a' 2 (lfdNoise3 'a' KR (sqrt pi)) * pi+ ph = i xn * uclone 'η' 2 (lfdNoise3 'θ' KR (sqrt pi)) * pi in out yn (tanh (sinOsc AR f ph)) in mrg [inFeedback 2 xn,y,x] @@ -67,7 +67,7 @@ bac''' :: UGen bac''' =- let x = let j = range 1 30 (lfNoise0 's' KR (log 2 / 2))+ let x = let j = range 1 30 (lfNoise0 'ι' KR (log 2 / 2)) f = select j (mce (map (c . nth_prime) [1..30])) ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab" in out xn (mceReverse (sinOsc AR f ph))@@ -86,9 +86,9 @@ bac'''' :: UGen bac'''' =- let x = let j = range 1 30 (lfNoise2 's' KR (log 2 / 2))+ let x = let j = range 1 30 (lfNoise2 'κ' KR (log 2 / 2)) ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"- f' = map (c . nth_prime) (scramble 'p' [1,3..61])+ f' = map (c . nth_prime) (scramble 'λ' [1,3..61]) o = map (\f -> mceReverse (sinOsc AR f ph)) f' in out xn (mceChannel 1 (selectX j (mce o))) y = let f = c (chain 3 nth_prime 1)
@@ -1,18 +1,19 @@ -- http://sccode.org/1-W (jj) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} bp140u :: UGen bp140u = let f z n = n * (3 ** (rand z 0 17 / 13)) e = envGen AR 1 0.3 0 1 RemoveSynth (envPerc 0.01 1)- o = pmOsc AR (f 'a' (mce2 438 442)) (f 'b' 880) (f 'c' e) 0+ o = pmOsc AR (f 'α' (mce2 438 442)) (f 'β' 880) (f 'γ' e) 0 in o * e --- > Sound.SC3.UGen.Dot.draw bp140u bp140 :: Synthdef bp140 = synthdef "bp140" (out 0 bp140u) main :: IO ()-main = audition (bp140,pbind [("dur",prand 'a' [1/6,1/3] inf)])+main = do+ let p = pbind [(K_instr,psynth bp140),(K_dur,prand 'δ' [1/6,1/3] inf)]+ audition p
@@ -8,9 +8,7 @@ freq <- rand 220 880 wn <- whiteNoise AR pn <- pinkNoise AR- let (>=>) f g x = f x >>= g- chain n f = foldl (>=>) return (replicate n f)- perc = envPerc 0.1 0.6+ let perc = envPerc 0.1 0.6 ex = envGen KR 1 1 0 1 DoNothing perc * wn * 0.02 flute = ringz ex freq 0.3 r = resonz pn (5 + (freq / 2)) 0.1@@ -21,7 +19,7 @@ l = envLinen' 0.01 3.0 1.0 1 en z = (breath + i) * envGen KR 1 1 0 1 RemoveSynth l in mce2 z z- f <- chain 2 rapf flute+ f <- chainM 2 rapf flute return (cls f) main :: IO ()
@@ -1,6 +1,5 @@ -- bowed string (jmcc) -import Control.Monad {- base -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} import Sound.SC3.Monad {- hsc3 -} @@ -13,7 +12,7 @@ r0 <- expRand 0.125 0.5 r1 <- rand 0.7 0.9 r2 <- sequence (replicate 12 (rand 1.0 3.0))- f <- liftM midiCPS (liftM2 (+) (lchoose scale) (lchoose oct))+ f <- midiCPS `fmap` (lchoose scale .+. lchoose oct) n1 <- lfNoise1 KR r0 let x = n0 * 0.007 * max 0 (n1 * 0.6 + 0.4) geom n i z = take n (iterate (* z) i)
@@ -0,0 +1,73 @@+-- bs-070705 (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++-- | One step in a bubble sort with specified /greater than/ function.+bubble_p :: (a -> a -> Bool) -> [a] -> [a]+bubble_p gt l =+ case l of+ e:f:g -> if e `gt` f+ then f : bubble_p gt (e : g)+ else e : bubble_p gt (f : g)+ _ -> l++-- | 'bubble_p' '>'.+bubble :: (Ord a) => [a] -> [a]+bubble = bubble_p (>)++-- | One step in /odd even/ sorting, a bubble sort variant.+odd_even :: (Ord a) => [a] -> [a]+odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)++-- | Allocate required buffers to /n/ places.+alloc_data :: Transport m => Int -> m ()+alloc_data n = do+ let alloc m b = async (b_alloc b m 1)+ mapM_ (alloc n) [10, 11, 12]++-- | Simple synthesis renderer, r is the impulse frequency (trigger rate).+play_data :: (UId m,Transport m) => UGen -> m ()+play_data r = do+ let inf_sc = 9e8+ phase <- dseries inf_sc 0 1+ f' <- dbufrd 10 phase Loop+ a' <- dbufrd 11 phase Loop+ p' <- dbufrd 12 phase Loop+ let tr = impulse AR r 0+ f'' = demand tr 0 f'+ a'' = demand tr 0 a'+ p'' = demand tr 0 p'+ play (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))++-- | Randomize initial data of /n/ places, /s/ sort for+-- /m/ steps, pause for i seconds between each step.+run_data :: Transport m => ([Double] -> [Double]) -> Int -> Int -> Double -> m ()+run_data s n m i = do+ f <- nrrand n 32 96+ a <- nrrand n 0.25 1+ p <- nrrand n (-1) 1+ let prepare l' = take m (iterate s l')+ f' = prepare f+ a' = prepare a+ p' = prepare p+ l i' (f'', a'', p'') = do+ send (b_setn 10 [(0, f'')])+ send (b_setn 11 [(0, a'')])+ send (b_setn 12 [(0, p'')])+ pauseThread i'+ mapM_ (l i) (zip3 f' a' p')++-- | Run 'odd_even' for 32 iterations at 1 second intervals.+main :: IO ()+main = withSC3 (alloc_data 96 >> play_data 24 >> run_data odd_even 96 32 1)++{--+withSC3 (alloc_data 96)+withSC3 (play_data 24 >> run_data odd_even 96 96 0.35)+withSC3 (play_data 24 >> run_data bubble 96 64 0.75)+withSC3 (play_data 24 >> run_data bubble 96 64 0.25)+withSC3 (play_data 24 >> run_data bubble 96 32 0.25)+withSC3 (play_data 24 >> run_data odd_even 96 16 0.25)+--}
@@ -1,73 +0,0 @@--- bs-070705 (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}---- | One step in a bubble sort with specified /greater than/ function.-bubble_p :: (a -> a -> Bool) -> [a] -> [a]-bubble_p gt l =- case l of- e:f:g -> if e `gt` f- then f : bubble_p gt (e : g)- else e : bubble_p gt (f : g)- _ -> l---- | 'bubble_p' '>'.-bubble :: (Ord a) => [a] -> [a]-bubble = bubble_p (>)---- | One step in /odd even/ sorting, a bubble sort variant.-odd_even :: (Ord a) => [a] -> [a]-odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)---- | Allocate required buffers to /n/ places.-alloc_data :: Transport m => Int -> m ()-alloc_data n = do- let alloc m b = async (b_alloc b m 1)- mapM_ (alloc n) [10, 11, 12]---- | Simple synthesis renderer, r is the impulse frequency (trigger rate).-play_data :: (UId m,Transport m) => UGen -> m ()-play_data r = do- let inf_sc = 9e8- phase <- dseries inf_sc 0 1- f' <- dbufrd 10 phase Loop- a' <- dbufrd 11 phase Loop- p' <- dbufrd 12 phase Loop- let tr = impulse AR r 0- f'' = demand tr 0 f'- a'' = demand tr 0 a'- p'' = demand tr 0 p'- play (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))---- | Randomize initial data of /n/ places, /s/ sort for--- /m/ steps, pause for i seconds between each step.-run_data :: Transport m => ([Double] -> [Double]) -> Int -> Int -> Double -> m ()-run_data s n m i = do- f <- nrrand n 32 96- a <- nrrand n 0.25 1- p <- nrrand n (-1) 1- let prepare l' = take m (iterate s l')- f' = prepare f- a' = prepare a- p' = prepare p- l i' (f'', a'', p'') = do- send (b_setn 10 [(0, f'')])- send (b_setn 11 [(0, a'')])- send (b_setn 12 [(0, p'')])- pauseThread i'- mapM_ (l i) (zip3 f' a' p')---- | Run 'odd_even' for 32 iterations at 1 second intervals.-main :: IO ()-main = withSC3 (alloc_data 96 >> play_data 24 >> run_data odd_even 96 32 1)--{---withSC3 (alloc_data 96)-withSC3 (play_data 24 >> run_data odd_even 96 96 0.35)-withSC3 (play_data 24 >> run_data bubble 96 64 0.75)-withSC3 (play_data 24 >> run_data bubble 96 64 0.25)-withSC3 (play_data 24 >> run_data bubble 96 32 0.25)-withSC3 (play_data 24 >> run_data odd_even 96 16 0.25)---}
@@ -1,14 +1,13 @@ -- http://sccode.org/1-1HR (f0) -import Control.Concurrent-import Data.CG.Minus {- hcg-minus -}-import qualified Foreign.C.Math.Double as M {- cmath -}+import Control.Concurrent {- base -} import qualified Graphics.Rendering.Cairo as C {- cairo -} import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Cairo.Scope.Shell {- hsc3-cairo -} -- * Type +type R = Double data BD_Type = BD_Line | BD_Warp | BD_Flower data BD = BD {gain :: R ,theta :: R@@ -35,13 +34,16 @@ mapM_ f (zip [0..] d) C.stroke -pt_rotate' :: Floating a => a -> a -> a -> (a,a)-pt_rotate' a x y = pt_xy (pt_rotate a (pt x y))+pt_rotate :: Floating a => a -> (a,a) -> (a,a)+pt_rotate a (x,y) =+ let s = sin a+ c = cos a+ in (x * c - y * s,y * c + x * s) render_warp :: R -> R -> [R] -> C.Render () render_warp n a d = do C.translate (n/2) (n/2)- let f (x,y) = let (x',y') = pt_rotate' (y * 2 * pi) (x * a) (y * a)+ let f (x,y) = let (x',y') = pt_rotate (y * 2 * pi) (x * a,y * a) in if x == 0 then C.moveTo x' y' else C.lineTo x' y' mapM_ f (zip [0..] d) C.stroke@@ -51,8 +53,8 @@ let d0 = d !! 0 C.translate (n/2) (n/2) C.moveTo (d0 * d0) 0- let f (x,y) = let a = ((x `M.fmod` n) / n) * 2 * pi + t- (x',y') = pt_rotate' a (y * y) (x * y)+ let f (x,y) = let a = ((x `modE` n) / n) * 2 * pi + t+ (x',y') = pt_rotate a (y * y,x * y) in C.lineTo x' y' mapM_ f (zip [0..] d) C.stroke@@ -102,7 +104,7 @@ v = varSaw AR x 0 0.5 f = bpf v y 0.5 s = sinOsc AR 0 f- n = brownNoise 'a' AR * 0.1+ n = brownNoise 'α' AR * 0.1 in out 0 (mce2 s n) bd_shell :: Int -> Shell BD
@@ -0,0 +1,21 @@+-- ccomb (rd)++import Sound.SC3.Monad {- hsc3 -}++ccomb :: (Functor m,UId m) => m UGen+ccomb = do+ let rng l r i = linLin i (-1) 1 l r+ lwr = 48+ flwr = midiCPS lwr+ spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)+ e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)+ x <- fmap (* e) (whiteNoise AR)+ m <- lfNoise2 KR 0.1+ let f = lag (midiCPS n) 0.25+ m' = rng 1 8 m+ return (combC x (recip flwr) (recip f) m')+ t <- dust KR (mce2 0.75 0.35)+ return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))++main :: IO ()+main = audition . out 0 =<< ccomb
@@ -1,21 +0,0 @@--- ccomb (rd)--import Sound.SC3.Monad {- hsc3 -}--ccomb :: (Functor m,UId m) => m UGen-ccomb = do- let rng l r i = linLin i (-1) 1 l r- lwr = 48- flwr = midiCPS lwr- spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)- e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)- x <- fmap (* e) (whiteNoise AR)- m <- lfNoise2 KR 0.1- let f = lag (midiCPS n) 0.25- m' = rng 1 8 m- return (combC x (recip flwr) (recip f) m')- t <- dust KR (mce2 0.75 0.35)- return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))--main :: IO ()-main = audition . out 0 =<< ccomb
@@ -0,0 +1,111 @@+-- | cds-070701 (rd)+--+-- The 'source' data are breakpoint sets normalized over the time+-- interval (0,1). There are a fixed number of 'locations' per cycle.+-- The data sets are sampled at these locations and loaded into+-- buffers. The buffers are read using dbufrd. One of the data sets+-- gives the time interval to step forward.++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++-- | Real+type R = Double++-- | Point+type P = (R,R)++-- | Data set+type D = [P]++-- | Points that bracket a time.+pts :: D -> R -> (P,P)+pts d n =+ case d of+ p0:p1:r -> let (t,_) = p1+ in if n <= t+ then (p0,p1)+ else pts (p1:r) n+ _ -> error "pts"++-- | Linear interpolation.+--+-- > lerp 0.5 (0,0) (1,1) == (0.5,0.5)+-- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)+lerp :: R -> P -> P -> P+lerp n (t0,d0) (t1,d1) =+ let n' = (n - t0) / (t1 - t0)+ f i = d0 + ((d1 - d0) * i)+ in (n,f n')++-- | Linear interpolating lookup.+lerpd :: D -> R -> P+lerpd t n =+ let (p0,p1) = pts t n+ in lerp n p0 p1++-- | Linearize in time (ie. /t/ is in equal steps).+rescale :: D -> Int -> D+rescale t n = map (lerpd t) [0,1 / fromIntegral n .. 1]++-- | Allocate data buffers for linearized envelopes.+alloc_data :: Int -> IO ()+alloc_data n = do+ let alloc b = async (b_alloc b n 1)+ withSC3 (mapM_ alloc [10,11,12,13])++-- | Data can be loaded while nodes are running, ie. edited online.+load_data :: Int -> (D,D,D,D) -> IO ()+load_data n (t,f,a,p) = do+ let setup d = map snd (rescale d n)+ withSC3 (do send (b_setn 10 [(0,setup t)])+ send (b_setn 11 [(0,setup f)])+ send (b_setn 12 [(0,setup a)])+ send (b_setn 13 [(0,setup p)]))++-- | Simple synthesis of data.+play_data :: IO ()+play_data = do+ let inf_sc = 9e8+ phase <- dseries inf_sc 0 1+ t' <- dbufrd 10 phase Loop+ f' <- dbufrd 11 phase Loop+ a' <- dbufrd 12 phase Loop+ p' <- dbufrd 13 phase Loop+ let tr = tDuty AR t' 0 DoNothing 1 0+ f'' = demand tr 0 f'+ a'' = demand tr 0 a'+ p'' = demand tr 0 p'+ audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))++-- | Sample data sets, load using 'load_data'.+data_1 :: (D,D,D,D)+data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]+ ,[(0,200),(0.35,8900),(1,200)]+ ,[(0,0.35),(0.65,0.65),(1,0.35)]+ ,[(0,-1),(0.3,1),(1,-1)])++data_2 :: (D,D,D,D)+data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]+ ,[(0,100),(0.5,13900),(1,200)]+ ,[(0,0.75),(0.5,0.25),(1,0.75)]+ ,[(0,1),(0.5,-1),(1,1)])++data_3 :: (D,D,D,D)+data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]+ ,[(0,770),(0.5,77),(1,770)]+ ,[(0,0.9),(0.5,0.6),(1,0.9)]+ ,[(0,0),(0.5,1),(1,0)])++-- | Switch between data sets at /dd/ at time interval /t/.+data_switch :: [(D,D,D,D)] -> R -> IO ()+data_switch dd t =+ let w d = load_data 64 d >> pauseThread t+ in mapM_ w dd >> data_switch dd t++main :: IO ()+main = do+ alloc_data 64+ load_data 64 data_1+ play_data+ data_switch [data_1,data_2,data_3] 4
@@ -1,111 +0,0 @@--- | cds-070701 (rd)------ The 'source' data are breakpoint sets normalized over the time--- interval (0,1). There are a fixed number of 'locations' per cycle.--- The data sets are sampled at these locations and loaded into--- buffers. The buffers are read using dbufrd. One of the data sets--- gives the time interval to step forward.--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}---- | Real-type R = Double---- | Point-type P = (R,R)---- | Data set-type D = [P]---- | Points that bracket a time.-pts :: D -> R -> (P,P)-pts d n =- case d of- p0:p1:r -> let (t,_) = p1- in if n <= t- then (p0,p1)- else pts (p1:r) n- _ -> error "pts"---- | Linear interpolation.------ > lerp 0.5 (0,0) (1,1) == (0.5,0.5)--- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)-lerp :: R -> P -> P -> P-lerp n (t0,d0) (t1,d1) =- let n' = (n - t0) / (t1 - t0)- f i = d0 + ((d1 - d0) * i)- in (n,f n')---- | Linear interpolating lookup.-lerpd :: D -> R -> P-lerpd t n =- let (p0,p1) = pts t n- in lerp n p0 p1---- | Linearize in time (ie. /t/ is in equal steps).-rescale :: D -> Int -> D-rescale t n = map (lerpd t) [0,1 / fromIntegral n .. 1]---- | Allocate data buffers for linearized envelopes.-alloc_data :: Int -> IO ()-alloc_data n = do- let alloc b = async (b_alloc b n 1)- withSC3 (mapM_ alloc [10,11,12,13])---- | Data can be loaded while nodes are running, ie. edited online.-load_data :: Int -> (D,D,D,D) -> IO ()-load_data n (t,f,a,p) = do- let setup d = map snd (rescale d n)- withSC3 (do send (b_setn 10 [(0,setup t)])- send (b_setn 11 [(0,setup f)])- send (b_setn 12 [(0,setup a)])- send (b_setn 13 [(0,setup p)]))---- | Simple synthesis of data.-play_data :: IO ()-play_data = do- let inf_sc = 9e8- phase <- dseries inf_sc 0 1- t' <- dbufrd 10 phase Loop- f' <- dbufrd 11 phase Loop- a' <- dbufrd 12 phase Loop- p' <- dbufrd 13 phase Loop- let tr = tDuty AR t' 0 DoNothing 1 0- f'' = demand tr 0 f'- a'' = demand tr 0 a'- p'' = demand tr 0 p'- audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))---- | Sample data sets, load using 'load_data'.-data_1 :: (D,D,D,D)-data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]- ,[(0,200),(0.35,8900),(1,200)]- ,[(0,0.35),(0.65,0.65),(1,0.35)]- ,[(0,-1),(0.3,1),(1,-1)])--data_2 :: (D,D,D,D)-data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]- ,[(0,100),(0.5,13900),(1,200)]- ,[(0,0.75),(0.5,0.25),(1,0.75)]- ,[(0,1),(0.5,-1),(1,1)])--data_3 :: (D,D,D,D)-data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]- ,[(0,770),(0.5,77),(1,770)]- ,[(0,0.9),(0.5,0.6),(1,0.9)]- ,[(0,0),(0.5,1),(1,0)])---- | Switch between data sets at /dd/ at time interval /t/.-data_switch :: [(D,D,D,D)] -> R -> IO ()-data_switch dd t =- let w d = load_data 64 d >> pauseThread t- in mapM_ w dd >> data_switch dd t--main :: IO ()-main = do- alloc_data 64- load_data 64 data_1- play_data- data_switch [data_1,data_2,data_3] 4
@@ -0,0 +1,46 @@+-- chain saw (jrhb)++-- this graph generates long chains of unit generators and may require+-- increasing the stack limit of the haskell run time system++import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++coinIf :: Double -> a -> a -> IO a+coinIf n a b = do+ r <- R.coin n+ return (if r then a else b)++exprange :: UGen -> UGen -> UGen -> UGen+exprange s = linExp s (-1) 1++mceProduct :: UGen -> UGen+mceProduct = mceEdit (\l -> [product l])++clipu :: BinaryOp a => a -> a+clipu s = clip2 s 1++dup :: UGen -> UGen+dup a = mce2 a a++chain_saw :: IO UGen+chain_saw = do+ let f s1 = do xr <- fmap dup (expRand 0.1 2)+ n1 <- lfNoise1 KR xr+ n2 <- lfNoise1 KR xr+ n3 <- lfNoise1 KR xr+ f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)+ s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)+ let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)+ u1 = lfSaw KR f2 0+ u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1+ return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)+ inp = lfSaw KR (0.2 * mce2 1 1.1) 0+ b_freq = mce [70, 800, 9000, 5242]+ ff <- chainM 8 f inp+ let c_saw = mceProduct (saw AR (exprange ff 6 11000))+ b_saw = dup (mix (bpf c_saw b_freq 0.2))+ return (b_saw * 0.3)++main :: IO ()+main = audition . out 0 =<< chain_saw
@@ -1,50 +0,0 @@--- chain saw (jrhb)---- this graph generates long chains of unit generators and may require--- increasing the stack limit of the haskell run time system--import Control.Monad {- base -}-import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}-import Sound.SC3.Monad {- hsc3 -}--coinIf :: Double -> a -> a -> IO a-coinIf n a b = do- r <- R.coin n- return (if r then a else b)--exprange :: UGen -> UGen -> UGen -> UGen-exprange s = linExp s (-1) 1--chain :: Monad m => Int -> (b -> m b) -> b -> m b-chain n fn = foldr (<=<) return (replicate n fn)--mceProduct :: UGen -> UGen-mceProduct = mceEdit (\l -> [product l])--clipu :: BinaryOp a => a -> a-clipu s = clip2 s 1--dup :: UGen -> UGen-dup a = mce2 a a--chain_saw :: IO UGen-chain_saw = do- let f s1 = do xr <- fmap dup (expRand 0.1 2)- n1 <- lfNoise1 KR xr- n2 <- lfNoise1 KR xr- n3 <- lfNoise1 KR xr- f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)- s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)- let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)- u1 = lfSaw KR f2 0- u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1- return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)- inp = lfSaw KR (0.2 * mce2 1 1.1) 0- b_freq = mce [70, 800, 9000, 5242]- ff <- chain 8 f inp- let c_saw = mceProduct (saw AR (exprange ff 6 11000))- b_saw = dup (mix (bpf c_saw b_freq 0.2))- return (b_saw * 0.3)--main :: IO ()-main = audition . out 0 =<< chain_saw
@@ -2,7 +2,7 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} xl :: ID a => a -> a -> UGen -> UGen -> UGen -> UGen@@ -14,16 +14,16 @@ choip :: UGen choip = let t = 12- i = impulse AR (xl 'a' 'b' 1 30 t) 0- f = xl 'c' 'd' 600 8000 t+ i = impulse AR (xl 'α' 'β' 1 30 t) 0+ f = xl 'γ' 'δ' 600 8000 t a = sinOsc AR (decay2 i 0.05 0.5 * (-0.9 * f) + f) 0- l = line KR (r2 'e' 1) (r2 'f' 1) t DoNothing- in pan2 (decay2 (i * xl 'g' 'h' 0.01 0.5 t) 0.01 0.2 * a) l 1+ l = line KR (r2 'ε' 1) (r2 'ζ' 1) t DoNothing+ in pan2 (decay2 (i * xl 'η' 'θ' 0.01 0.5 t) 0.01 0.2 * a) l 1 choip_pp :: UGen -> UGen choip_pp =- let f x = allpassN x 0.1 (randN 2 'a' 0 0.05) 4- in useq 'a' 4 f+ let f x = allpassN x 0.1 (randN 2 'ι' 0 0.05) 4+ in useq 'κ' 4 f main :: IO () main = overlapTextureU_pp (1,10,8,maxBound) choip 2 choip_pp
@@ -0,0 +1,18 @@+-- clustered sines (jmcc)++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > fmap synthstat (clone 2 cs)+cs :: UId m => m UGen+cs = do+ let n = 80+ f1 <- rand 100 1100+ let f2 = 4 * f1+ y <- replicateM n (f1 +. rand 0 f2)+ let sp = klangSpec y (map (f1 /) y) (replicate n 0)+ return (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) =<< clone 2 cs
@@ -4,7 +4,7 @@ import Sound.SC3.UGen.Protect import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw cs+-- > synthstat cs cs :: UGen cs = let n = 80
@@ -2,27 +2,27 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} cz :: UGen cz = let f = expRand 'α' 800 8000- p = let e = lfNoise1 'α' KR (rand 'α' 0 3) * 0.0008 + 0.0022- in pinkNoise 'α' AR * e- s = sinOsc KR (linRand 'α' 0 1 0) 0 * (0.7 * f) + f- k = let sp = klankSpec_mce (randN 4 'α' 50 2000)+ p = let e = lfNoise1 'β' KR (rand 'γ' 0 3) * 0.0008 + 0.0022+ in pinkNoise 'δ' AR * e+ s = sinOsc KR (linRand 'ε' 0 1 0) 0 * (0.7 * f) + f+ k = let sp = klankSpec_mce (randN 4 'ζ' 50 2000) (mce [1,1,1,1])- (randN 4 'α' 0.2 4)- in abs (klank p 1 0 1 sp) * choose 'α' (mce2 (-1) 1)+ (randN 4 'η' 0.2 4)+ in abs (klank p 1 0 1 sp) * choose 'θ' (mce2 (-1) 1) r = rlpf k s 0.1- a = lfPulse KR (linRand 'α' 0 150 0) 0 (rand 'α' 0.2 0.4)- in pan2 r (lfNoise1 'α' KR (rand 'α' 0 1)) a+ a = lfPulse KR (linRand 'ι' 0 150 0) 0 (rand 'κ' 0.2 0.4)+ in pan2 r (lfNoise1 'λ' KR (rand 'μ' 0 1)) a cz_pp :: UGen -> UGen cz_pp =- let f x = allpassN x 0.04 (randN 2 'α' 0 0.04) 16- in useq 'α' 6 f+ let f x = allpassN x 0.04 (randN 2 'ν' 0 0.04) 16+ in useq 'ξ' 6 f main :: IO () main = overlapTextureU_pp (3,8,4,maxBound) cz 2 cz_pp
@@ -4,14 +4,13 @@ import Sound.SC3.UGen.Protect import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw coolant coolant :: UGen coolant = let p = 20- s = onePole (uclone 'α' p (brownNoise 'α' AR) * 0.0015) 0.95+ s = onePole (uclone 'α' p (brownNoise 'β' AR) * 0.0015) 0.95 n = replicate p 1- sp = mce [klankSpec (uclone' 'α' p (rand 'α' 40 2400)) n n- ,klankSpec (uclone' 'β' p (rand 'β' 40 2400)) n n]+ sp = mce [klankSpec (uclone' 'γ' p (rand 'δ' 40 2400)) n n+ ,klankSpec (uclone' 'ε' p (rand 'ζ' 40 2400)) n n] in klank s 1 0 1 (mceTranspose sp) main :: IO ()
@@ -1,7 +1,7 @@--- crotale-sine+-- crotale-sine (rd) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} crotale_sine :: UGen crotale_sine =@@ -22,12 +22,16 @@ in pan2 o (sinOsc KR r2 r3) e' in sum (zipWith (fn m) cf ca) * 0.1 +pattern :: P_Bind+pattern =+ [(K_param "m",pwhitei 'α' 0 12 inf)+ ,(K_dur,pxrand 'β' [1,2,3] inf)+ ,(K_sustain,6)]+ main :: IO () main = do let s = synthdef "crotale-sine" (out 0 crotale_sine)- audition (s,pbind [("m",pwhitei 'a' 0 12 inf)- ,("dur",pxrand 'b' [1,2,3] inf)- ,("sustain",6)])+ audition (p_with (K_instr,psynth s) (pbind pattern)) crotale_data :: ([Double],[Double]) crotale_data =
@@ -6,13 +6,13 @@ crotale = let (cf,ca,cd) = crotale_data ps = mce [-12,-5,0,2,4,5,7,12]- n = pinkNoise 'a' AR- t = dust 'a' KR 3- fs = select (tIRand 'a' 0 7 t) ps- g = tRand 'a' 0 1 t- fo = tRand 'b' 0 1 t- ds = tRand 'c' 2 7 t- p = tRand 'd' (-1) 1 t+ n = pinkNoise 'α' AR+ t = dust 'β' KR 3+ fs = select (tIRand 'γ' 0 7 t) ps+ g = tRand 'δ' 0 1 t+ fo = tRand 'ε' 0 1 t+ ds = tRand 'ζ' 2 7 t+ p = tRand 'η' (-1) 1 t s = decay2 t 0.06 0.01 * n * g ks = klankSpec' cf ca (map recip cd) k = dynKlank s (midiRatio fs) fo ds ks
@@ -0,0 +1,19 @@+-- cut-outs (rd)++import Sound.SC3.Monad {- hsc3 -}++cut_outs :: (Functor m,UId m) => m UGen+cut_outs = do+ let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)+ x = mouseX KR 0.005 0.12 Exponential 0.1+ y = mouseY KR 0.01 0.52 Exponential 0.1+ n = do n1 <- lfNoise0 KR 2+ n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)+ n3 <- tExpRand (mce2 500 900) 1600 t+ return (ringz n2 n3 x)+ s <- fmap sum (sequence (replicate 3 n))+ b <- tRand 0 1 =<< dust KR 8+ return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])++main :: IO ()+main = audition . out 0 =<< cut_outs
@@ -1,20 +0,0 @@--- cut-outs (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< cut_outs-cut_outs :: (Functor m,UId m) => m UGen-cut_outs = do- let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)- x = mouseX KR 0.005 0.12 Exponential 0.1- y = mouseY KR 0.01 0.52 Exponential 0.1- n = do n1 <- lfNoise0 KR 2- n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)- n3 <- tExpRand (mce2 500 900) 1600 t- return (ringz n2 n3 x)- s <- fmap sum (sequence (replicate 3 n))- b <- tRand 0 1 =<< dust KR 8- return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])--main :: IO ()-main = audition . out 0 =<< cut_outs
@@ -13,9 +13,9 @@ f = map (\e -> rand e f1 (f1 + f2)) (enumFromN n 15) rt = map (\e -> rand e 1 5) (enumFromN n 15) in klankSpec f (replicate 15 1) rt- z = mce2 (y 'a') (y 'A')- w = whiteNoise 'α' AR * 0.02- tf = xLine KR (linRand 'β' 0.5 4.5 0) (rand 'γ' 0.5 35.5) 12 DoNothing+ z = mce2 (y 'α') (y 'β')+ w = whiteNoise 'γ' AR * 0.02+ tf = xLine KR (linRand 'δ' 0.5 4.5 0) (rand 'ε' 0.5 35.5) 12 DoNothing t = impulse AR tf 0 s = decay t 0.004 * w in klank s 1 0 1 (mceTranspose z)
@@ -0,0 +1,17 @@+-- http://sccode.org/1-j#c51 (jl)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.UGen.External.RDU.Monad {- sc3-rdu -}++dark_sea_horns :: UId m => m UGen+dark_sea_horns = do+ let n = lfNoise1+ let x = localIn 2 AR+ let a = tanh (sinOsc AR 65 (x * #(n AR 0.1) * 3) * #(n AR 3) * 6)+ let f i = do return (allpassN i 0.3 #(randN 2 0.1 0.3) 5)+ let o = tanh #(chainM 9 f a)+ return (mrg2 o (localOut o))++main :: IO ()+main = audition . out 0 =<< dark_sea_horns
@@ -2,16 +2,15 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw dark_sea_horns dark_sea_horns :: UGen dark_sea_horns = let n = lfNoise1 x = localIn 2 AR- a = tanh (sinOsc AR 65 (x * n 'a' AR 0.1 * 3) * (n 'a' AR 3 * 6))- f i = allpassN i 0.3 (randN 2 'a' 0.1 0.3) 5- o = tanh (useq 'a' 9 f a)+ a = tanh (sinOsc AR 65 (x * n 'α' AR 0.1 * 3) * n 'β' AR 3 * 6)+ f i = allpassN i 0.3 (randN 2 'γ' 0.1 0.3) 5+ o = tanh (useq 'δ' 9 f a) in mrg2 o (localOut o) main :: IO ()
@@ -0,0 +1,23 @@+-- data space (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++data_space :: UId m => m UGen+data_space = do+ let r = rand 0+ let p0 = lfPulse KR #(r 200) 0 #(r 1)+ p1 <- lfPulse KR #(r 40) 0 #(r 1) *. r 8000 .+. r 2000+ let p2 = lfPulse KR #(r 20) 0 #(r 1)+ p3 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+ let p4 = lfPulse KR #(r 20) 0 #(r 1)+ p5 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+ let f = p0 * p1 + p2 * p3 + p4 * p5+ dt <- rand 0.15 0.35+ let o = lfPulse AR f 0 0.5 * 0.04+ l <- lfNoise0 KR #(r 3) .* 0.8+ return (combL (pan2 o l 1) dt dt 3)++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) =<< data_space
@@ -3,22 +3,19 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} -randz :: ID a => a -> UGen -> UGen-randz e = rand e 0- data_space :: UGen data_space =- let r = randz- p0 = lfPulse KR (r 'a' 200) 0 (r 'b' 1)- p1 = lfPulse KR (r 'c' 40) 0 (r 'd' 1) * r 'e' 8000 + r 'f' 2000- p2 = lfPulse KR (r 'g' 20) 0 (r 'h' 1)- p3 = lfPulse KR (r 'i' 4) 0 (r 'j' 1) * r 'k' 8000 + r 'l' 2000- p4 = lfPulse KR (r 'm' 20) 0 (r 'n' 1)- p5 = lfPulse KR (r 'o' 4) 0 (r 'p' 1) * r 'q' 8000 + r 'r' 2000+ let r e = rand e 0+ p0 = lfPulse KR (r 'α' 200) 0 (r 'β' 1)+ p1 = lfPulse KR (r 'γ' 40) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+ p2 = lfPulse KR (r 'η' 20) 0 (r 'θ' 1)+ p3 = lfPulse KR (r 'ι' 4) 0 (r 'κ' 1) * r 'λ' 8000 + r 'μ' 2000+ p4 = lfPulse KR (r 'ν' 20) 0 (r 'ξ' 1)+ p5 = lfPulse KR (r 'ο' 4) 0 (r 'π' 1) * r 'ρ' 8000 + r 'σ' 2000 f = p0 * p1 + p2 * p3 + p4 * p5- dt = rand 's' 0.15 0.35+ dt = rand 'τ' 0.15 0.35 o = lfPulse AR f 0 0.5 * 0.04- l = lfNoise0 't' KR (r 'u' 3) * 0.8+ l = lfNoise0 'υ' KR (r 'φ' 3) * 0.8 in combL (pan2 o l 1) dt dt 3 main :: IO ()
@@ -1,14 +1,13 @@ -- deep sea (jrhb) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} rng :: UGen -> UGen -> UGen -> UGen rng s l r = let m = (r - l) * 0.5 in mulAdd s m (m + l) --- > Sound.SC3.UGen.Dot.draw deep_sea deep_sea :: UGen deep_sea = let amp = 1@@ -30,4 +29,5 @@ main :: IO () main = do let s = synthdef "deep-sea" (out 0 deep_sea)- audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2] inf)])+ p = pbind [(K_instr,psynth s),(K_dur,pxrand 'ζ' [0.25,0.5,1,2] inf)]+ audition p
@@ -1,19 +1,19 @@ -- deep trip (jmcc) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} deep_trip :: UGen deep_trip =- let f = midiCPS (lfNoise1 'a' KR (rand 'a' 0 0.3) * 60 + 70)- a'' = sinOsc KR (rand 'b' 0 40) 0 * 0.1- a' = max 0 (lfNoise1 'c' KR (rand 'd' 0 8) * a'')- a = lfNoise2 'e' AR (f * rand 'f' 0 0.5) * a'+ let f = midiCPS (lfNoise1 'α' KR (rand 'β' 0 0.3) * 60 + 70)+ a'' = sinOsc KR (rand 'γ' 0 40) 0 * 0.1+ a' = max 0 (lfNoise1 'δ' KR (rand 'ε' 0 8) * a'')+ a = lfNoise2 'ζ' AR (f * rand 'η' 0 0.5) * a' z = sinOsc AR f 0 * a- s = pan2 z (lfNoise1 'g' KR (rand 'h' 0 5)) 1- c0 = combN s 0.5 (randN 2 'i' 0.3 0.5) 20- c1 = combN s 0.5 (randN 2 'j' 0.3 0.5) 20+ s = pan2 z (lfNoise1 'θ' KR (rand 'ι' 0 5)) 1+ c0 = combN s 0.5 (randN 2 'κ' 0.3 0.5) 20+ c1 = combN s 0.5 (randN 2 'λ' 0.3 0.5) 20 in s + c0 + c1 main :: IO ()
@@ -1,24 +1,17 @@ -- default (jmcc) +import Data.Default {- data-default -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} -defaultInstrument :: Synthdef-defaultInstrument =- let f = control KR "freq" 440- a = control KR "amp" 0.1- p = control KR "pan" 0- g = control KR "gate" 1- e = linen g 0.01 0.7 0.3 RemoveSynth- f3 = mce [f,f + rand 'a' (-0.4) 0,f + rand 'b' 0 0.4]- l = xLine KR (rand 'c' 4000 5000) (rand 'd' 2500 3200) 1 DoNothing- z = lpf (mix (varSaw AR f3 0 0.3 * 0.3)) l * e- in synthdef "default" (out 0 (pan2 z p a))+pattern :: P_Bind+pattern =+ [(K_instr,psynth def)+ ,(K_note,pxrand 'α' [0,1,5,7,9] inf)+ ,(K_octave,prand 'β' [3,4,5,6] inf)+ ,(K_dur,pwrand 'γ' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)+ ,(K_amp,pbrown 'δ' 0.01 0.2 0.01 inf)+ ,(K_param "pan",pbrown 'ε' (-1) 1 0.25 inf)] main :: IO ()-main = audition (defaultInstrument- ,pbind [("note",pxrand 'a' [0,1,5,7,9] inf)- ,("octave",prand 'b' [3,4,5,6] inf)- ,("dur",pwrand 'c' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)- ,("amp",pbrown 'd' 0.01 0.2 0.01 inf)- ,("pan",pbrown 'e' (-1) 1 0.25 inf)])+main = audition (pbind pattern)
@@ -4,9 +4,9 @@ demanding_studies :: UGen demanding_studies =- let s1 = drand 'a' dinf (mce [72, 75, 79, 82])- s2 = drand 'b' 1 (mce [82, 84, 86])- s3 = dseq 'c' dinf (mce [72, 75, 79, s2])+ let s1 = drand 'α' dinf (mce [72, 75, 79, 82])+ s2 = drand 'β' 1 (mce [82, 84, 86])+ s3 = dseq 'γ' dinf (mce [72, 75, 79, s2]) x = mouseX KR 5 13 Linear 0.2 tr = impulse KR x 0 f = demand tr 0 (mce [midiCPS (s1 - 12), midiCPS s3])
@@ -0,0 +1,35 @@+-- dial history (jrhb)++import Data.List {- base -}+import Sound.SC3.Monad {- hsc3 -}++rng :: UGen -> UGen -> UGen -> UGen+rng s = linLin s 0 1++dial_history :: UId m => m UGen+dial_history = do+ let mfv = [[697,770,852,941],[1209,1336,1477,1633]]+ numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]+ mce_r = mce . map mce+ n <- dwhite dinf 7 12+ w <- dwhite 1 2 7+ b <- dbrown n 0.1 0.2 0.01+ rate <- dseq dinf (mce2 w b)+ q <- dseq dinf (mce [1..10])+ g1 <- grayNoise AR+ g2 <- grayNoise AR+ d <- lfdNoise3 KR 0.5+ let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09+ pat = latch tr tr+ x = mouseX KR 0 1 Linear 0.2+ h = hasher (pat * x)+ which = trunc (rng h 0 (constant (length numbers))) 1+ both = select which (mce_r numbers)+ dial = select both (mce_r (transpose mfv))+ sig = sinOsc AR dial 0 * 0.05 * tr+ dsig = delayN sig 0.2 (rng d 0 0.01)+ hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000+ return (dsig + hiss)++main :: IO ()+main = audition . out 0 =<< dial_history
@@ -1,36 +0,0 @@--- dial history (jrhb)--import Data.List {- base -}-import Sound.SC3.Monad {- hsc3 -}--rng :: UGen -> UGen -> UGen -> UGen-rng s = linLin s 0 1---- > Sound.SC3.UGen.Dot.draw =<< dial_history-dial_history :: UId m => m UGen-dial_history = do- let mfv = [[697,770,852,941],[1209,1336,1477,1633]]- numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]- mce_r = mce . map mce- n <- dwhite dinf 7 12- w <- dwhite 1 2 7- b <- dbrown n 0.1 0.2 0.01- rate <- dseq dinf (mce2 w b)- q <- dseq dinf (mce [1..10])- g1 <- grayNoise AR- g2 <- grayNoise AR- d <- lfdNoise3 KR 0.5- let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09- pat = latch tr tr- x = mouseX KR 0 1 Linear 0.2- h = hasher (pat * x)- which = trunc (rng h 0 (constant (length numbers))) 1- both = select which (mce_r numbers)- dial = select both (mce_r (transpose mfv))- sig = sinOsc AR dial 0 * 0.05 * tr- dsig = delayN sig 0.2 (rng d 0 0.01)- hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000- return (dsig + hiss)--main :: IO ()-main = audition . out 0 =<< dial_history
@@ -0,0 +1,28 @@+-- diffraction (rd)++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}++diffraction ::(Functor m,UId m) => m UGen+diffraction = do+ let p = do let x = mouseX KR 0.001 0.02 Exponential 0.1+ y = mouseY KR 120 400 Exponential 0.1+ f <- fmap (* mce2 32 64) (lfNoise0 KR 4)+ w <- fmap (* x) (lfNoise0 KR 32)+ z <- fmap (* 0.1) (lfNoise0 KR 2)+ m <- lfNoise0 KR 6+ let s = pulse AR f w+ return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)+ q = do n <- lfNoise0 KR 128+ s <- p+ return (combN s 0.2 (n * 0.1 + 0.1) 3)+ r = let x = mouseX KR 0.75 1.25 Exponential 0.1+ y = mouseY KR 0.25 1 Exponential 0.1+ f _ = do fr <- fmap (* x) (rand 50 59)+ am <- fmap (* y) (rand 0.04 0.16)+ return (sinOsc AR fr 0 * am)+ in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)+ fmap sum (sequence [p,q,r])++main :: IO ()+main = audition . out 0 =<< diffraction
@@ -1,28 +0,0 @@--- diffraction (rd)--import Control.Monad {- base -}-import Sound.SC3.Monad {- hsc3 -}--diffraction ::(Functor m, UId m) => m UGen-diffraction = do- let p = do let x = mouseX KR 0.001 0.02 Exponential 0.1- y = mouseY KR 120 400 Exponential 0.1- f <- fmap (* mce2 32 64) (lfNoise0 KR 4)- w <- fmap (* x) (lfNoise0 KR 32)- z <- fmap (* 0.1) (lfNoise0 KR 2)- m <- lfNoise0 KR 6- let s = pulse AR f w- return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)- q = do n <- lfNoise0 KR 128- s <- p- return (combN s 0.2 (n * 0.1 + 0.1) 3)- r = let x = mouseX KR 0.75 1.25 Exponential 0.1- y = mouseY KR 0.25 1 Exponential 0.1- f _ = do fr <- fmap (* x) (rand 50 59)- am <- fmap (* y) (rand 0.04 0.16)- return (sinOsc AR fr 0 * am)- in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)- return.sum =<< sequence [p, q, r]--main :: IO ()-main = audition . out 0 =<< diffraction
@@ -2,7 +2,6 @@ import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< discretion discretion :: UId m => m UGen discretion = do let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)
@@ -2,21 +2,20 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw discretion discretion :: UGen discretion = let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)- part = let f1 = randN 2 'a' 50 55- f2 = randN 2 'c' 50 65- f3 = randN 2 'e' 50 55- a = randN 2 'g' 0.01 0.035+ part = let f1 = randN 2 'α' 50 55+ f2 = randN 2 'β' 50 65+ f3 = randN 2 'γ' 50 55+ a = randN 2 'δ' 0.01 0.035 t = 21 f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t a_ = mkls [(0,0),(0.33,a),(1,0)] t in (saw AR f_ * a_)- in mix (uclone 'a' 8 part)+ in mix (uclone 'ε' 8 part) main :: IO () main = audition (out 0 discretion)
@@ -26,5 +26,5 @@ main = do let s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3 withSC3 (do play (out 0 (doppler (line_x 10 100 6) s))- pauseThread 8+ wait 8 play (out 0 (doppler (ellipse 10 75 12) s)))
@@ -1,4 +1,4 @@--- drummer (thor magnusson)+-- drummer (tm) import Sound.SC3.ID {- hsc3 -}
@@ -1,8 +1,7 @@ -- e-lamell-p (rd) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} e_lamell :: UGen e_lamell =@@ -12,32 +11,32 @@ d = ctl "d" 0.1 n = ctl "n" 12 l = ctl "l" 0- t = lchoose 'a' [1,32]+ t = lchoose 'α' [1,32] h = line AR n t d DoNothing s = blip AR f h e_d = envPerc 0.005 d e = envGen AR 1 a 0 1 RemoveSynth e_d in pan2 s l e -pattern :: P Event-pattern =- let p = pbind [("note",prand 'a' [0,2,5,7] inf)- ,("octave",pwrand 'b' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)- ,("dur",0.1)- ,("d",pwhite 'c' 0.01 0.8 inf)- ,("amp",pwhite 'd' 0 0.75 inf)- ,("n",pwhite 'e' 2 36 inf)- ,("l",pwhite 'f' (-1) 1 inf)]- q = pbind [("note",prand 'g' [0] inf)- ,("octave",prand 'h' [2,3] inf)- ,("dur",0.1)- ,("d",pwhite 'i' 0.01 1.2 inf)- ,("amp",prand 'j' [0,0.25,0.5,1] inf)- ,("n",pwhite 'k' 2 36 inf)- ,("l",pwhite 'l' (-1) 1 inf)]- in ppar [p,q]+patterns :: [P_Bind]+patterns =+ let i = psynth (synthdef "e-lamell" (out 0 e_lamell))+ in [[(K_instr,i)+ ,(K_note,prand 'β' [0,2,5,7] inf)+ ,(K_octave,pwrand 'γ' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)+ ,(K_dur,0.1)+ ,(K_param "d",pwhite 'δ' 0.01 0.8 inf)+ ,(K_amp,pwhite 'ε' 0 0.75 inf)+ ,(K_param "n",pwhite 'ζ' 2 36 inf)+ ,(K_param "l",pwhite 'η' (-1) 1 inf)]+ ,[(K_instr,i)+ ,(K_note,prand 'θ' [0] inf)+ ,(K_octave,prand 'ι' [2,3] inf)+ ,(K_dur,0.1)+ ,(K_param "d",pwhite 'κ' 0.01 1.2 inf)+ ,(K_amp,prand 'λ' [0,0.25,0.5,1] inf)+ ,(K_param "n",pwhite 'μ' 2 36 inf)+ ,(K_param "l",pwhite 'ν' (-1) 1 inf)]] main :: IO ()-main =- let s = synthdef "e-lamell" (out 0 e_lamell)- in audition (s,pattern)+main = audition (ppar (map pbind patterns))
@@ -13,16 +13,13 @@ d = ctl "d" 0.1 l = ctl "l" 0 a = ctl "a" 1- t = lchoose 'a' [1,32]+ t = lchoose 'α' [1,32] h = line AR n t d DoNothing s = blip AR f h e_d = envPerc 0.005 d e = envGen AR 1 a 0 1 RemoveSynth e_d in pan2 s l e -now :: Time-now = NTPi 1- sendSynth :: Transport m => String -> UGen -> m Message sendSynth n u = async (d_recv (synthdef n u)) @@ -54,8 +51,8 @@ a <- R.choose [0,0.25,0.5,1] l <- R.rrand (-1) 1 return (mk_s_new f n d a l)- sendBundle (Bundle now [p,q])- pauseThread 0.1+ sendBundle (bundle immediately [p,q])+ wait 0.1 run :: Transport m => m () run = do
@@ -3,35 +3,35 @@ import Sound.SC3.ID {- hsc3 -} import qualified Sound.SC3.Lang.Random.Gen as R {- hsc3-lang -} import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import qualified System.Random as R {- random -} m1 :: UGen m1 =- let a = rand 'a' 0 20- b = rand 'b' 0 5000- c = rand 'c' 0 20- p = rand 'd' (-1) 1+ let a = rand 'α' 0 20+ b = rand 'β' 0 5000+ c = rand 'γ' 0 20+ p = rand 'δ' (-1) 1 in pan2 (sinOsc AR (sinOsc AR a 0 * 0.1 * b + b) 0 * sinOsc KR c 0 * 0.08 + 0.08) p 1 m2 :: UGen m2 =- let a0 = rand 'a' 40 240- a1 = a0 + rand 'b' (-1) 1+ let a0 = rand 'ε' 40 240+ a1 = a0 + rand 'ζ' (-1) 1 a = mce2 a0 a1- b = expRand 'c' 50 2400- c = mce2 (a0 + rand 'd' (-1) 1) (a1 + rand 'e' (-1) 1)- in sinOsc AR (sinOsc AR a 0 * rand 'f' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025+ b = expRand 'η' 50 2400+ c = mce2 (a0 + rand 'θ' (-1) 1) (a1 + rand 'ι' (-1) 1)+ in sinOsc AR (sinOsc AR a 0 * rand 'κ' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025 m3 :: UGen m3 =- let f = midiCPS (rand 'a' 60 100)- in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'b' KR (f * mce2 0.15 0.16) * 0.1+ let f = midiCPS (rand 'λ' 60 100)+ in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'μ' KR (f * mce2 0.15 0.16) * 0.1 -- audition (out 0 m4) m4 :: UGen m4 =- let a = lfPulse KR (expRand 'a' 0.2 1.2) 0 (rand 'a' 0.1 0.2)+ let a = lfPulse KR (expRand 'ν' 0.2 1.2) 0 (rand 'ξ' 0.1 0.2) o i = let r = let (p,q) = mce2c (expRandN 2 i 0.1 20) in xLine KR p q 25.6 DoNothing f = midiCPS (rand i 24 96)@@ -43,26 +43,25 @@ -- audition (out 0 (m6 * 0.5)) m6 :: UGen m6 =- let f = midiCPS (lfNoise1 'a' KR (rand 'b' 0 0.3) * 60 + 70)- a0 = lfNoise2 'c' AR (f * rand 'd' 0 0.5)- a1 = max 0 (lfNoise1 'e' KR (rand 'f' 0 8) * sinOsc KR (rand 'g' 0 40) 0 * 0.1)+ let f = midiCPS (lfNoise1 'ο' KR (rand 'π' 0 0.3) * 60 + 70)+ a0 = lfNoise2 'ρ' AR (f * rand 'σ' 0 0.5)+ a1 = max 0 (lfNoise1 'τ' KR (rand 'υ' 0 8) * sinOsc KR (rand 'φ' 0 40) 0 * 0.1) z = sinOsc AR f 0 * a0 * a1- in pan2 z (lfNoise1 'h' KR (rand 'i' 0 5)) 1+ in pan2 z (lfNoise1 'χ' KR (rand 'ψ' 0 5)) 1 enumFromN :: Enum a => a -> Int -> [Int] enumFromN e i = let j = fromEnum e in [j .. j + i] -- audition (out 0 m7)--- Sound.SC3.UGen.Dot.draw m7 m7 :: UGen m7 = let p = 15 k = let y z = let fr = mceChannels (expRandN p z 100 6000) rt = mceChannels (randN p z 2 6) in klankSpec fr (replicate p 1) rt- in mce2 (y 'α') (y 'β')- f = xLine KR (expRand 'α' 40 300) (expRand 'β' 40 300) 12 DoNothing- t = lfPulse AR f 0 (rand 'γ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'δ' KR (rand 'ε' 0 8))+ in mce2 (y 'ω') (y 'Α')+ f = xLine KR (expRand 'Β' 40 300) (expRand 'Γ' 40 300) 12 DoNothing+ t = lfPulse AR f 0 (rand 'Δ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'Ε' KR (rand 'Ζ' 0 8)) in distort (klank t 1 0 1 (mceTranspose k)) * 0.3 esmlp2 :: R.RandomGen g => g -> (UGen, g)@@ -72,7 +71,7 @@ esmlp2_pp :: UGen -> UGen esmlp2_pp i = let c z = combN i 0.3 (mce2 (rand z 0.1 0.3) (rand z 0.12 0.32)) 8- in sum (map c ['a'..'e']) * 0.3+ in sum (map c ['Η'..'Θ']) * 0.3 main :: IO () main = do
@@ -11,9 +11,9 @@ sinu = sin . (* pi) eggcrate_f u v = cosu u * sinu v p = mce [64,72,96,128,256,6400,7200,8400,9600]- (x,y) = atp (`brownNoise` KR) ('a','b')- t = dust 'c' KR 2.4- (f0,f1) = atp (\z -> tChoose z t p) ('a','b')+ (x,y) = atp (`brownNoise` KR) ('α','β')+ t = dust 'γ' KR 2.4+ (f0,f1) = atp (\z -> tChoose z t p) ('δ','ε') f = linLin (eggcrate_f x y) (-1) 1 f0 f1 a = linLin x (-1) 1 0 0.1 in pan2 (mix (sinOsc AR f 0)) y a
@@ -0,0 +1,30 @@+-- f-lets (rd)++import Sound.SC3.Monad {- hsc3 -}++f_lets :: (Functor m,UId m) => m UGen+f_lets = do+ let f_let t g j n f = do+ let pd = pulseDivider t j 0+ r0 <- tIRand (mce2 2 1) n pd+ r1 <- tRand 0.01 0.04 pd+ r2 <- tRand 0.05 0.10 pd+ return (formlet pd (f * r0) r1 r2 * g)+ mk_n t = do+ r0 <- tRand 0 1 t+ r1 <- tRand 0 1 t+ r2 <- tRand 0 1 t+ r3 <- tRand 0 1 t+ r4 <- coinGate 0.2 t+ sequence [f_let t 0.15 2 9 (mce2 200 400)+ ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))+ ,f_let t 0.05 4 5 (mce2 25 50)+ ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))+ ,let lr = fmap (* latch r4 t)+ in lr (f_let t 0.5 1 16 (mce2 300 600))]+ tr = impulse AR 24 0+ n <- lfNoise0 KR 2+ return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr++main :: IO ()+main = audition . out 0 =<< f_lets
@@ -1,30 +0,0 @@--- f-lets (rd)--import Sound.SC3.Monad {- hsc3 -}--f_lets :: (Functor m,UId m) => m UGen-f_lets = do- let f_let t g j n f = do- let pd = pulseDivider t j 0- r0 <- tIRand (mce2 2 1) n pd- r1 <- tRand 0.01 0.04 pd- r2 <- tRand 0.05 0.10 pd- return (formlet pd (f * r0) r1 r2 * g)- mk_n t = do- r0 <- tRand 0 1 t- r1 <- tRand 0 1 t- r2 <- tRand 0 1 t- r3 <- tRand 0 1 t- r4 <- coinGate 0.2 t- sequence [f_let t 0.15 2 9 (mce2 200 400)- ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))- ,f_let t 0.05 4 5 (mce2 25 50)- ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))- ,let lr = fmap (* latch r4 t)- in lr (f_let t 0.5 1 16 (mce2 300 600))]- tr = impulse AR 24 0- n <- lfNoise0 KR 2- return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr--main :: IO ()-main = audition . out 0 =<< f_lets
@@ -12,7 +12,7 @@ f0_0028 :: UGen f0_0028 = let n = map ((* 99) . (`mod` 8)) (sc3_fib 16)- p = dseq 'a' dinf (dshuf 'a' 8 (mce (map fromInteger n)))+ p = dseq 'α' dinf (dshuf 'β' 8 (mce (map fromInteger n))) q = combN (duty AR (1/8) 0 DoNothing p) 4 4 16 o = lfTri AR q 0 / 4 f = lfTri KR (1/16) 0 * 2e3 + 3e3
@@ -2,7 +2,6 @@ import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw f0_tw0077 f0_tw0077 :: UGen f0_tw0077 = let a = sinOsc AR
@@ -2,7 +2,6 @@ import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw f0_tw0084 f0_tw0084 :: UGen f0_tw0084 = let a = saw AR
@@ -1,8 +1,8 @@ -- fb-090531 (rd) +import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -}-import Control.Monad import Sound.SC3.Lang.Random.IO {- hsc3-lang -} fb_090531 :: UGen
@@ -16,7 +16,7 @@ fbl_fbf :: UGen fbl_fbf =- let n = brownNoise 'a' AR+ let n = brownNoise 'α' AR e = decay (impulse AR 0.3 0) 0.1 * n * 0.2 c = 4 e' = replicate c e
@@ -0,0 +1,36 @@+-- feedr (rd)+-- warning: input/output feedback loop++import Sound.OSC.FD {- hosc -}+import Sound.SC3.Monad.FD {- hsc3 -}++delayWr :: UGen -> UGen -> UGen+delayWr b = recordBuf AR b 0 1 0 1 Loop 0 DoNothing++tap :: Int -> UGen -> UGen -> UGen+tap nc b dt = playBuf nc AR b 1 0 (dt * (- sampleRate)) Loop DoNothing++type State = (UGen,Double)++feedr :: (UId m) => State -> Int -> m UGen+feedr (ch,dl) n = do+ t <- sequence (replicate n (rand 0.0 (constant dl)))+ g <- sequence (replicate n (rand 0.4 1.0))+ f <- sequence (replicate n (rand 0.9 0.95))+ let d = zipWith (\p q -> tap 2 10 p * q) t g+ x = mouseX KR 0.02 1.0 Exponential 0.1+ s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1+ i = soundIn ch+ r = i + sum (map (* x) (zipWith (*) d f))+ return (mrg [out 0 s, delayWr 10 r])++run :: Transport t => State -> t -> IO ()+run (ch,dl) fd = do+ nf <- fmap (* dl) (serverSampleRateActual fd)+ send fd (b_alloc 10 (floor nf) 2)+ audition =<< feedr (ch,dl) 18++main :: IO ()+main = withSC3 (run (mce2 4 5,6))++-- withSC3 (\fd -> send fd (b_zero 10))
@@ -1,36 +0,0 @@--- feedr (rd)--- warning: input/output feedback loop--import Sound.OSC.FD {- hosc -}-import Sound.SC3.Monad.FD {- hsc3 -}--delayWr :: UGen -> UGen -> UGen-delayWr b = recordBuf AR b 0 1 0 1 Loop 0 DoNothing--tap :: Int -> UGen -> UGen -> UGen-tap nc b dt = playBuf nc AR b 1 0 (dt * (- sampleRate)) Loop DoNothing--type State = (UGen,Double)--feedr :: (UId m) => State -> Int -> m UGen-feedr (ch,dl) n = do- t <- sequence (replicate n (rand 0.0 (constant dl)))- g <- sequence (replicate n (rand 0.4 1.0))- f <- sequence (replicate n (rand 0.9 0.95))- let d = zipWith (\p q -> tap 2 10 p * q) t g- x = mouseX KR 0.02 1.0 Exponential 0.1- s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1- i = soundIn ch- r = i + sum (map (* x) (zipWith (*) d f))- return (mrg [out 0 s, delayWr 10 r])--run :: Transport t => State -> t -> IO ()-run (ch,dl) fd = do- nf <- fmap (* dl) (serverSampleRateActual fd)- send fd (b_alloc 10 (floor nf) 2)- audition =<< feedr (ch,dl) 18--main :: IO ()-main = withSC3 (run (mce2 4 5,6))---- withSC3 (\fd -> send fd (b_zero 10))
@@ -1,15 +1,18 @@ -- fm-iter (rd) import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} +-- audition (out 0 fm_iter) fm_iter :: UGen fm_iter =- let t0 = impulse AR (recip 0.30) 0+ let f0 = recip (0.3 + whiteNoise 'α' AR * 0.01)+ t0 = impulse AR f0 0 t1 = tDelay t0 0.15 t = mce2 t0 t1- k = tRand 'a' 56 57 t- i = tRand 'a' 40 480 t- j = tRand 'a' (-1) 1 t+ k = tRand 'β' 56 57 t+ i = tRand 'γ' 40 480 t+ j = tRand 'δ' (-1) 1 t c = midiCPS k m = midiCPS (k + 1 + j) s = envPerc 0.01 0.9@@ -18,4 +21,4 @@ in sinOsc AR f 0 * e main :: IO ()-main = audition (out 0 fm_iter)+main = overlapTextureU (3,3,6,maxBound) fm_iter
@@ -0,0 +1,59 @@+-- fm-kltr (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++fm_kltr :: UId m => m UGen+fm_kltr = do+ r1 <- U.rand 0.975 1.025+ r2 <- U.rand 0.5 1.5+ r3 <- U.rand 0.975 1.025+ r4 <- U.rand 0.75 1.25+ let o = control IR "out" 0+ a = control KR "amp" 0.1+ d = control KR "dur" 0.1+ f = control KR "freq" 400.0+ i = control KR "index" 40.0+ p = control KR "pan" 0.0+ f2 = control KR "freq2" 600+ ep = envPerc 0.01 d+ e = envGen AR 1 a 0 1 RemoveSynth ep+ so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0+ xl = xLine KR f2 (f2 * r3) d DoNothing+ m = so * line KR i (f * r2) d DoNothing + xl+ l = line KR p (p * r4) d DoNothing+ return (out o (pan2 (sinOsc AR m 0) l e))++type R = Double++fm :: Transport m => R -> R -> R -> R -> R -> m ()+fm f ff a d i = do+ r1 <- rrand (-1) 1+ r2 <- rrand (-1) 1+ let p = [("freq", midiCPS f)+ ,("freq2", midiCPS ff + r1)+ ,("amp", a)+ ,("dur", d)+ ,("index", i)+ ,("pan", r2)]+ send (s_new "fm_kltr" (-1) AddToTail 1 p)++nd :: Transport m => m ()+nd = do+ ff <- rrand 48 96+ a <- rrand 0.1 0.4+ d <- rrand 1.2 7.2+ i <- rrand 240 1480+ t <- rrand 0.15 1.25+ fm 53 ff a d i+ wait t++run :: (Transport m,UId m) => m ()+run = do+ u <- fm_kltr+ _ <- async (d_recv (synthdef "fm_kltr" u))+ sequence_ (replicate 32 nd)++main :: IO ()+main = withSC3 run
@@ -1,14 +1,14 @@ -- fm-kltr-p (rd) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} fm_kltr :: UGen fm_kltr =- let r1 = rand 'a' 0.975 1.025- r2 = rand 'b' 0.5 1.5- r3 = rand 'c' 0.975 1.025- r4 = rand 'd' 0.75 1.25+ let r1 = rand 'α' 0.975 1.025+ r2 = rand 'β' 0.5 1.5+ r3 = rand 'γ' 0.975 1.025+ r4 = rand 'δ' 0.75 1.25 o = control IR "out" 0 a = control KR "amp" 0.1 dt = control KR "sustain" 0.1@@ -24,15 +24,17 @@ l = line KR p (p * r4) dt DoNothing in out o (pan2 (sinOsc AR m 0) l e) +pattern :: P_Bind+pattern =+ [(K_instr,psynth (synthdef "fm_kltr" fm_kltr))+ ,(K_freq,fmap midiCPS 53)+ ,(K_param "freq2",fmap midiCPS (pwhitei 'ε' 48 96 inf ++ pwhite 'ζ' (-1) 1 inf))+ ,(K_amp,pwhite 'η' 0.1 0.4 inf)+ ,(K_dur,pwhite 'θ' 0.15 1.25 inf)+ ,(K_sustain,pwhite 'ι' 5 6 inf)+ ,(K_param "index",pwhite 'κ' 240 1480 inf)+ ,(K_param "pan", pwhite 'λ' (-1) 1 inf)]+ main :: IO ()-main = do- let s = synthdef "fm_kltr" fm_kltr- p = pbind [("freq",fmap midiCPS 53)- ,("freq2",fmap midiCPS (pwhitei 'a' 48 96 inf +- pwhite 'b' (-1) 1 inf))- ,("amp",pwhite 'c' 0.1 0.4 inf)- ,("dur",pwhite 'd' 0.15 1.25 inf)- ,("sustain",pwhite 'e' 5 6 inf)- ,("index",pwhite 'f' 240 1480 inf)- ,("pan", pwhite 'g' (-1) 1 inf)]- audition (s,p)+main = audition (pbind pattern)
@@ -1,59 +0,0 @@--- fm-kltr (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad as U {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--fm_kltr :: UId m => m UGen-fm_kltr = do- r1 <- U.rand 0.975 1.025- r2 <- U.rand 0.5 1.5- r3 <- U.rand 0.975 1.025- r4 <- U.rand 0.75 1.25- let o = control IR "out" 0- a = control KR "amp" 0.1- d = control KR "dur" 0.1- f = control KR "freq" 400.0- i = control KR "index" 40.0- p = control KR "pan" 0.0- f2 = control KR "freq2" 600- ep = envPerc 0.01 d- e = envGen AR 1 a 0 1 RemoveSynth ep- so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0- xl = xLine KR f2 (f2 * r3) d DoNothing- m = so * line KR i (f * r2) d DoNothing + xl- l = line KR p (p * r4) d DoNothing- return (out o (pan2 (sinOsc AR m 0) l e))--type R = Double--fm :: Transport m => R -> R -> R -> R -> R -> m ()-fm f ff a d i = do- r1 <- rrand (-1) 1- r2 <- rrand (-1) 1- let p = [("freq", midiCPS f)- ,("freq2", midiCPS ff + r1)- ,("amp", a)- ,("dur", d)- ,("index", i)- ,("pan", r2)]- send (s_new "fm_kltr" (-1) AddToTail 1 p)--nd :: Transport m => m ()-nd = do- ff <- rrand 48 96- a <- rrand 0.1 0.4- d <- rrand 1.2 7.2- i <- rrand 240 1480- t <- rrand 0.15 1.25- fm 53 ff a d i- pauseThread t--run :: (Transport m,UId m) => m ()-run = do- u <- fm_kltr- _ <- async (d_recv (synthdef "fm_kltr" u))- sequence_ (replicate 32 nd)--main :: IO ()-main = withSC3 run
@@ -1,4 +1,4 @@--- http://musicweb.ucsd.edu/~tre/wordpress/?p=131+-- http://musicweb.ucsd.edu/~tre/wordpress/?p=131 (rd) import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -}@@ -31,10 +31,9 @@ score :: Double -> NRT score z =- let at t = Bundle (NTPr t)- i = [d_recv (for_ann z),g_new [(1,AddToTail,0)]]- s t = at t [s_new "for-ann" (-1) AddToTail 1 []]- in NRT (at 0 i : map s [0,2.8 .. 669.2])+ let i = [d_recv (for_ann z),g_new [(1,AddToTail,0)]]+ s t = bundle t [s_new "for-ann" (-1) AddToTail 1 []]+ in NRT (bundle 0 i : map s [0,2.8 .. 669.2]) main :: IO () main = audition (score (sixth "just"))
@@ -0,0 +1,16 @@+-- sc-users, 2007-04-06 (pj) [paul jones]++import Sound.SC3.Monad {- hsc3 -}++insects :: UId m => m UGen+insects = do+ n1 <- brownNoise AR+ n2 <- lfNoise2 KR 50+ let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000+ return (bpf n1 o 0.001 * 10)++forest_sounds :: UId m => m UGen+forest_sounds = clone 2 insects++main :: IO ()+main = audition . out 0 =<< forest_sounds
@@ -1,16 +0,0 @@--- sc-users, 2007-04-06 (paul jones)--import Sound.SC3.Monad {- hsc3 -}--insects :: UId m => m UGen-insects = do- n1 <- brownNoise AR- n2 <- lfNoise2 KR 50- let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000- return (bpf n1 o 0.001 * 10)--forest_sounds :: UId m => m UGen-forest_sounds = clone 2 insects--main :: IO ()-main = audition . out 0 =<< forest_sounds
@@ -0,0 +1,39 @@+-- fwalk (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++fwalk' :: UId m => UGen -> m UGen+fwalk' r = do+ t <- dust KR 3+ r1 <- tIRand 0 6 t+ r2 <- tRand (-0.0001) 0.0001 t+ let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop+ f' = f + r2+ o1 = blip AR (midiCPS (r + f)) 12+ o2 = blip AR (midiCPS (r + f')) 12+ return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)++fwalk :: UId m => m UGen+fwalk = do+ f1 <- fwalk' 24+ f2 <- fwalk' 36+ return (f1 + f2)++run :: (UId m,Transport m) => m ()+run = do+ let n = [40,47,42,40,50+ ,43,35,43,40,47+ ,45,35,43,42,59+ ,48,40,47,52,45]+ m = [40,40,42,47,50+ ,35,43,43,40,45+ ,42,35,48,47,43+ ,40,59,45,47,52]+ _ <- async (b_alloc_setn1 0 0 n)+ _ <- async (b_alloc_setn1 1 0 m)+ f <- fwalk+ play (out 0 f)++main :: IO ()+main = withSC3 run
@@ -1,39 +0,0 @@--- fwalk (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}--fwalk' :: UId m => UGen -> m UGen-fwalk' r = do- t <- dust KR 3- r1 <- tIRand 0 6 t- r2 <- tRand (-0.0001) 0.0001 t- let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop- f' = f + r2- o1 = blip AR (midiCPS (r + f)) 12- o2 = blip AR (midiCPS (r + f')) 12- return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)--fwalk :: UId m => m UGen-fwalk = do- f1 <- fwalk' 24- f2 <- fwalk' 36- return (f1 + f2)--run :: (UId m,Transport m) => m ()-run = do- let n = [40,47,42,40,50- ,43,35,43,40,47- ,45,35,43,42,59- ,48,40,47,52,45]- m = [40,40,42,47,50- ,35,43,43,40,45- ,42,35,48,47,43- ,40,59,45,47,52]- _ <- async (b_alloc_setn1 0 0 n)- _ <- async (b_alloc_setn1 1 0 m)- f <- fwalk- play (out 0 f)--main :: IO ()-main = withSC3 run
@@ -0,0 +1,29 @@+-- h-chatter (rd)++import Sound.SC3.Monad {- hsc3 -}++h_chatter :: UId m => m UGen+h_chatter = do+ let mma m a = return . (+ a) . (* m)+ h0 = do n <- mma 5 5 =<< lfNoise0 KR 1+ a <- mma 0.2 1.2 =<< lfNoise2 KR n+ b <- mma 0.15 0.15 =<< lfNoise2 KR n+ let f = 40+ h = henonN AR (mce2 f (f * 0.5)) a b 0 0+ return (saw AR (h * 3200 + 1600) * 0.35)+ h1 = do n0 <- lfNoise0 KR 32+ n1 <- lfNoise0 KR 2+ let a = mouseX KR 1.2 1.4 Linear 0.1+ b = mouseY KR 0.2 0.3 Linear 0.1+ wrp i = linLin i (-1) 1+ h = wrp n0 1 32+ p = wrp n1 2400 3200+ l = wrp n1 (-0.75) 0.75+ g = wrp n1 0.55 0.85+ f = 40+ o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h+ return (pan2 o l g * 0.35)+ h0 .+. h1++main :: IO ()+main = audition . out 0 =<< h_chatter
@@ -1,33 +0,0 @@--- h-chatter (rd)--import Control.Monad {- base -}-import Sound.SC3.Monad {- hsc3 -}--wrp :: UGen -> UGen -> UGen -> UGen-wrp i = linLin i (-1) 1---- > Sound.SC3.UGen.Dot.draw =<< h_chatter-h_chatter :: UId m => m UGen-h_chatter = do- let mma m a = return . (+ a) . (* m)- h0 = do n <- mma 5 5 =<< lfNoise0 KR 1- a <- mma 0.2 1.2 =<< lfNoise2 KR n- b <- mma 0.15 0.15 =<< lfNoise2 KR n- let f = 40- h = henonN AR (mce2 f (f * 0.5)) a b 0 0- return (saw AR (h * 3200 + 1600) * 0.35)- h1 = do n0 <- lfNoise0 KR 32- n1 <- lfNoise0 KR 2- let a = mouseX KR 1.2 1.4 Linear 0.1- b = mouseY KR 0.2 0.3 Linear 0.1- h = wrp n0 1 32- p = wrp n1 2400 3200- l = wrp n1 (-0.75) 0.75- g = wrp n1 0.55 0.85- f = 40- o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h- return (pan2 o l g * 0.35)- liftM2 (+) h0 h1--main :: IO ()-main = audition . out 0 =<< h_chatter
@@ -7,7 +7,7 @@ let t_half = 1/3.92 n_atoms = 1e+5 n = max 0 (n_atoms - pulseCount (localIn 2 AR) 0)- activity = dust 'a' AR (n * log 2 * t_half)+ activity = dust 'α' AR (n * log 2 * t_half) in mrg [activity,localOut activity] main :: IO ()
@@ -101,5 +101,5 @@ ,pointy_beaked_beetlefiend ,african_boojuboolubala ,common_muckoink]- fn x = bird_call x >> pauseThread 1.25+ fn x = bird_call x >> wait 1.25 withSC3 (mapM_ fn xs)
@@ -1,7 +1,7 @@ -- harmonic swimming (jmcc) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} harmonic_swimming :: UGen harmonic_swimming =
@@ -0,0 +1,17 @@+-- harmonic tumbling (jmcc)++import Sound.SC3.Monad {- hsc3 -}++harmonic_tumbling :: UId m => m UGen+harmonic_tumbling = do+ let f = 80+ p = 10+ t = xLine KR (mce2 10 11) 0.1 60 DoNothing+ o h = do n <- dust KR t+ r <- rand 0 0.5+ let e = decay2 (n * 0.02) 0.005 r+ return (fSinOsc AR (f * (h + 1)) 0 * e)+ fmap sum (mapM o [0..p])++main :: IO ()+main = audition . out 0 =<< harmonic_tumbling
@@ -1,17 +0,0 @@--- harmonic tumbling (jmcc)--import Sound.SC3.Monad {- hsc3 -}--harmonic_tumbling :: UId m => m UGen-harmonic_tumbling = do- let f = 80- p = 10- t = xLine KR (mce2 10 11) 0.1 60 DoNothing- o h = do n <- dust KR t- r <- rand 0 0.5- let e = decay2 (n * 0.02) 0.005 r- return (fSinOsc AR (f * (h + 1)) 0 * e)- return.sum =<< mapM o [0..p]--main :: IO ()-main = audition . out 0 =<< harmonic_tumbling
@@ -5,9 +5,9 @@ hib :: UGen hib =- let o = fSinOsc AR (400 + rand 'a' 0 2000) 0- a = lfPulse KR (1 + rand 'b' 0 10.0) (rand 'c' 0 0.7) 0.04- in pan2 (o * a) (rand 'd' (-1) 1) 1+ let o = fSinOsc AR (400 + rand 'α' 0 2000) 0+ a = lfPulse KR (1 + rand 'β' 0 10.0) (rand 'γ' 0 0.7) 0.04+ in pan2 (o * a) (rand 'δ' (-1) 1) 1 main :: IO () main = overlapTextureU (4,4,8,maxBound) hib
@@ -1,4 +1,4 @@--- hh-808 (ryan at wabdo.com)+-- hh-808 (rb) -- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html import Sound.SC3 {- hsc3 -}
@@ -0,0 +1,34 @@+-- implosion (rd)++import Sound.SC3.Monad {- hsc3 -}++mkls :: [(UGen,UGen)] -> UGen -> UGen+mkls bp t =+ let e = envCoord bp t 1 EnvLin+ in envGen KR 1 1 0 1 RemoveSynth e++mkrmp :: UGen -> UGen -> UGen -> UGen+mkrmp l r = mkls [(0,l),(1,r)]++pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+pmr_n rt l0 l1 r0 r1 d = do+ let le = mkrmp l0 r0 d+ re = mkrmp l1 r1 d+ wrp i = linLin i (-1) 1+ n <- whiteNoise rt+ return (wrp n le re)++implosion :: UId m => m UGen+implosion = do+ n0 <- rand (-1) 0+ n1 <- rand 0 1+ d <- rand 7.5 13.5+ f0 <- rand 10990 16220+ f1 <- rand 9440 19550+ f <- pmr_n AR 440 f0 f1 f1 d+ l <- pmr_n KR n0 n1 0 0 d+ a <- pmr_n KR 0.1 0.6 0 0 d+ return (pan2 (saw AR f) l a)++main :: IO ()+main = audition . out 0 =<< implosion
@@ -1,36 +0,0 @@--- implosion (rd)--import Sound.SC3.Monad {- hsc3 -}--mkls :: [(UGen,UGen)] -> UGen -> UGen-mkls bp t =- let e = envCoord bp t 1 EnvLin- in envGen KR 1 1 0 1 RemoveSynth e--mkrmp :: UGen -> UGen -> UGen -> UGen-mkrmp l r = mkls [(0,l),(1,r)]--wrp :: UGen -> UGen -> UGen -> UGen-wrp i = linLin i (-1) 1--pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen-pmr_n rt l0 l1 r0 r1 d = do- let le = mkrmp l0 r0 d- re = mkrmp l1 r1 d- n <- whiteNoise rt- return (wrp n le re)--implosion :: UId m => m UGen-implosion = do- n0 <- rand (-1) 0- n1 <- rand 0 1- d <- rand 7.5 13.5- f0 <- rand 10990 16220- f1 <- rand 9440 19550- f <- pmr_n AR 440 f0 f1 f1 d- l <- pmr_n KR n0 n1 0 0 d- a <- pmr_n KR 0.1 0.6 0 0 d- return (pan2 (saw AR f) l a)--main :: IO ()-main = audition . out 0 =<< implosion
@@ -0,0 +1,21 @@+-- insects (sp)++import Sound.SC3.Monad {- hsc3 -}++insect :: UId m => m UGen+insect = do+ r1 <- rand 2000 3000+ r2 <- rand 0.05 0.1+ n1 <- lfNoise2 KR (r2 * 50 + 50)+ r4 <- rand 1 10+ r5 <- rand 0.05 0.1+ n2 <- lfNoise2 KR r5+ let a = sinOsc KR r4 0 * 0.5 + 0.5+ o = sinOsc AR (r1 + n1) r2 * 0.005 * a+ return (pan2 o n2 1)++insects :: UId m => m UGen+insects = fmap sum (sequence (replicate 60 insect))++main :: IO ()+main = audition . out 0 =<< insects
@@ -1,21 +0,0 @@--- insects (sam pluta)--import Sound.SC3.Monad {- hsc3 -}--insect :: UId m => m UGen-insect = do- r1 <- rand 2000 3000- r2 <- rand 0.05 0.1- n1 <- lfNoise2 KR (r2 * 50 + 50)- r4 <- rand 1 10- r5 <- rand 0.05 0.1- n2 <- lfNoise2 KR r5- let a = sinOsc KR r4 0 * 0.5 + 0.5- o = sinOsc AR (r1 + n1) r2 * 0.005 * a- return (pan2 o n2 1)--insects :: UId m => m UGen-insects = return.sum =<< sequence (replicate 60 insect)--main :: IO ()-main = audition . out 0 =<< insects
@@ -2,7 +2,6 @@ import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw jl_z_1 jl_z_1 :: UGen jl_z_1 = let a = lag (impulse KR 8 0) 0.1
@@ -1,9 +1,7 @@ -- k-ppr-m (rd) -import Control.Monad {- base -} import Sound.SC3.Monad {- hsc3 -} --- > k_ppr_m >>= Sound.SC3.UGen.Dot.draw k_ppr_m :: UId m => m UGen k_ppr_m = do let wrp i = linLin i (-1) 1@@ -20,7 +18,7 @@ return (ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g) s1 = stream 3140 6240 0.050 0.005 0.15 s2 = stream 0400 9000 0.005 0.005 0.15- liftM2 (+) (clone 2 s1) (clone 2 s2)+ clone 2 s1 .+. clone 2 s2 main :: IO () main = audition . out 0 =<< k_ppr_m
@@ -3,7 +3,6 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect --- > Sound.SC3.UGen.Dot.draw k_ppr k_ppr :: UGen k_ppr = let wrp i = linLin i (-1) 1@@ -18,9 +17,9 @@ r2 = tRand e lf (wrp ti lf rf) t' r3 = tRand e ld rd t' in ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g- s1 = stream 'a' 3140 6240 0.050 0.005 0.15- s2 = stream 'a' 0400 9000 0.005 0.005 0.15- in uclone 'a' 2 s1 + uclone 'b' 2 s2+ s1 = stream 'α' 3140 6240 0.050 0.005 0.15+ s2 = stream 'β' 0400 9000 0.005 0.005 0.15+ in uclone 'γ' 2 s1 + uclone 'δ' 2 s2 main :: IO () main = audition (out 0 k_ppr)
@@ -0,0 +1,18 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++k2ws :: UId m => m UGen+k2ws = do+ let fc = 400 + range 100 200 #(lfNoise2 AR (mce2 1 2))+ let fm = range 100 200 #(lfNoise0 AR 5)+ let i = range 1 20 #(lfNoise1 AR 10)+ let x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5+ let rf = range 1000 2000 (sinOsc AR (range 0.1 1 #(lfNoise1 AR 1)) 0)+ let rq = range 0.5 10 #(lfNoise1 AR 1)+ let ph = rlpf x rf rq * range 1.0 4.0 #(lfNoise1 AR 0.1) * 4 * pi+ return (sinOsc AR 0.2 ph * 0.5)++main :: IO ()+main = audition . out 0 =<< k2ws
@@ -5,17 +5,16 @@ rng :: (UGen,UGen) -> UGen -> UGen rng (i,j) = range i j --- > Sound.SC3.UGen.Dot.draw k2ws k2ws :: UGen k2ws =- let fc = 400 + rng (100,200) (lfNoise2 'a' AR (mce2 1 2))- fm = rng (100,200) (lfNoise0 'a' AR 5)- i = rng (1,20) (lfNoise1 'a' AR 10)+ let fc = 400 + rng (100,200) (lfNoise2 'α' AR (mce2 1 2))+ fm = rng (100,200) (lfNoise0 'β' AR 5)+ i = rng (1,20) (lfNoise1 'γ' AR 10) x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5- rf = rng (1000,2000) (sinOsc AR (rng (0.1,1) (lfNoise1 'b' AR 1)) 0)- rq = rng (0.5,10) (lfNoise1 'c' AR 1)+ rf = rng (1000,2000) (sinOsc AR (rng (0.1,1) (lfNoise1 'δ' AR 1)) 0)+ rq = rng (0.5,10) (lfNoise1 'ε' AR 1) a = rlpf x rf rq- ph = a * rng (1.0,4.0) (lfNoise1 'd' AR 0.1) * 4 * pi+ ph = a * rng (1.0,4.0) (lfNoise1 'ζ' AR 0.1) * 4 * pi in sinOsc AR 0.2 ph * 0.5 main :: IO ()
@@ -7,11 +7,11 @@ let freq = 50 sustain = 1 amp = 0.5- hum = let t = dust 'a' KR (7 ** lfNoise1 'a' KR 0.3)- h = toggleFF (coinGate 'b' 0.4 t) * rlpf (lfPulse AR freq 0 0.5 + (lfNoise1 'b' KR 2 * 0.5 - 0.5)) 6000 0.15- n = trig t (tRand 'c' 0 0.01 (coinGate 'c' 0.4 t)) * whiteNoise 'c' AR- m = trig t (tRand 'd' 0 0.01 (coinGate 'd' 0.4 t)) * brownNoise 'd' AR- k = trig t (lfNoise1 'e' KR (mce2 4 4.2) * 0.1 + 0.11) * lfClipNoise 'e' AR (lfNoise0 'e' KR 7 * 30 + 40)+ hum = let t = dust 'α' KR (7 ** lfNoise1 'β' KR 0.3)+ h = toggleFF (coinGate 'γ' 0.4 t) * rlpf (lfPulse AR freq 0 0.5 + (lfNoise1 'δ' KR 2 * 0.5 - 0.5)) 6000 0.15+ n = trig t (tRand 'ε' 0 0.01 (coinGate 'ζ' 0.4 t)) * whiteNoise 'η' AR+ m = trig t (tRand 'θ' 0 0.01 (coinGate 'ι' 0.4 t)) * brownNoise 'κ' AR+ k = trig t (lfNoise1 'λ' KR (mce2 4 4.2) * 0.1 + 0.11) * lfClipNoise 'μ' AR (lfNoise0 'ν' KR 7 * 30 + 40) in distort (leakDC ((h + n + m + k) * 10) 0.995) e = envGen KR 1 1 0 1 RemoveSynth (Envelope [amp,amp,0] [sustain,0] [] Nothing Nothing) in out 0 (clip2 hum 1 * e * 0.25)
@@ -13,8 +13,8 @@ x = mouseX KR 0 0.01 Linear 0.1 y = mouseY KR 0.85 1 Linear 0.1 ugenIf a b c = (a * b) + ((1 - a) * c)- n = whiteNoise 'a' AR- d = dust 'a' KR 4+ n = whiteNoise 'α' AR+ d = dust 'β' KR 4 n0 = (n * 0.5) + 0.5 probSwitch i prob = ugenIf (n0 >* prob) i (negate i) laggedDelay = lag x 0.01
@@ -4,15 +4,15 @@ klink :: UGen klink =- let n1 = lfNoise0 'a' KR (mce2 0.5 1.5)+ let n1 = lfNoise0 'α' KR (mce2 0.5 1.5) o = sinOsc KR n1 0 a = abs (slope o) * mce2 2 3 t = impulse AR a 0 i = decay2 t 0.01 0.1 x = mouseX KR 960 3620 Exponential 0.2 y = mouseY KR 0.5 2.0 Linear 0.2- n2 = tRand 'a' x 3940 t- n3 = tRand 'a' 0.005 0.275 t+ n2 = tRand 'β' x 3940 t+ n3 = tRand 'γ' 0.005 0.275 t in ringz i n2 (n3 * y) main :: IO ()
@@ -13,7 +13,7 @@ laser_bubble :: Int -> UGen laser_bubble n =- let f = mce (map laser_bubble_f (take n ['a'..]))+ let f = mce (map laser_bubble_f (take n ['α'..])) [s0,s1] = mceChannels (splay (sinOsc AR f 0) 1 1 0 True) in limiter (rotate2 s0 s1 (lfSaw KR 0.1 0)) 1 1e-2
@@ -4,8 +4,8 @@ lf_pulses :: UGen lf_pulses =- let n0 = lfNoise0 'a' AR (mce2 20 40)- n1 = lfNoise0 'a' AR (mce2 5 10)+ let n0 = lfNoise0 'α' AR (mce2 20 40)+ n1 = lfNoise0 'β' AR (mce2 5 10) x = mouseX KR 0.012 0.19 Exponential 0.1 f = formlet (blip AR 10 12) (n0 * 43 + 700) 0.005 x o = sinOsc AR 40 0 * n1
@@ -0,0 +1,24 @@+-- lg-timed (rd)++import Sound.SC3.Monad {- hsc3 -}++lg_timed :: UId m => m UGen+lg_timed = do+ let timed r y p =+ do d0 <- dser r p+ d1 <- dcons 0 d0+ d2 <- dser r y+ let t = tDuty AR d1 0 RemoveSynth d2 1+ return (latch t t)+ lg u = return (lag u 0.03)+ n = mce [52,76,66,67,68,69]+ a = mce [0.35,0.15,0.04,0.05,0.16,0.07]+ d = mce [0.1,0.5,0.09,0.08,0.07,0.3]+ x = mouseX KR 0.5 1.25 Linear 0.2+ tn <- lg =<< timed dinf n (d * x)+ ta <- lg =<< timed dinf a (d * x)+ return (sinOsc AR (midiCPS tn) 0 * ta)++main :: IO ()+main = audition . out 0 =<< lg_timed+
@@ -1,25 +0,0 @@--- lg-timed (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< lg_timed-lg_timed :: UId m => m UGen-lg_timed = do- let timed r y p =- do d0 <- dser r p- d1 <- dcons 0 d0- d2 <- dser r y- let t = tDuty AR d1 0 RemoveSynth d2 1- return (latch t t)- lg u = return (lag u 0.03)- n = mce [52,76,66,67,68,69]- a = mce [0.35,0.15,0.04,0.05,0.16,0.07]- d = mce [0.1,0.5,0.09,0.08,0.07,0.3]- x = mouseX KR 0.5 1.25 Linear 0.2- tn <- lg =<< timed dinf n (d * x)- ta <- lg =<< timed dinf a (d * x)- return (sinOsc AR (midiCPS tn) 0 * ta)--main :: IO ()-main = audition . out 0 =<< lg_timed-
@@ -1,7 +1,7 @@ -- lin-sosc (rd) -import Control.Concurrent-import Control.Monad+import Control.Concurrent {- base -}+import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -} import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}
@@ -0,0 +1,110 @@+-- | L-System oscillator (rd), 2006-11-01++import Control.Monad {- base -}+import Graphics.PS {- hps -}+import qualified LSystem.LSystem as L {- hls -}+import qualified LSystem.Systems as L+import qualified LSystem.Turtle as L+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import System.Directory {- directory -}+import qualified System.FilePath as P {- filepath -}++-- | Normalise to lie in (0,1).+--+-- > normalise [1,4,2,5] == [0.2,0.8,0.4,1]+normalise :: (Fractional a,Ord a) => [a] -> [a]+normalise s =+ let n = 1 / maximum (map abs s)+ in map (* n) s++-- | 'L.render' rule.+plain :: [Double] -> Pt Double -> Pt Double -> [Double]+plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d++-- | Render 'L.LSystem' to 'plain' data.+lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]+lsys_run (l,ta,lls) i =+ let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 lls []+ in L.render [] plain (L.expand l i) a++-- | 'normalise' '.' 'lsys_run'+--+-- > length (gen_d L.l0d 3)+gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]+gen_d l = normalise . lsys_run l++-- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.+gen_f :: FilePath -> [Double] -> IO ()+gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]++-- | Rendered L-system data sets.+lsys_data :: [[Double]]+lsys_data =+ [gen_d L.l0d 3+ ,gen_d L.l1d 3+ ,gen_d L.l2d 5+ ,gen_d L.l3d 12+ ,gen_d L.l4d 6+ ,gen_d L.l5d 4+ ,gen_d L.l6d 7+ ,gen_d L.l7d 4+ ,gen_d L.l8d 6+ ,gen_d L.l9d 10+ ,gen_d L.lAd 11+ ,gen_d L.lBd 6+ ,gen_d L.lCd 5]++-- | Exceeds UDP limits.+lsys_send :: IO ()+lsys_send = do+ let alloc (n,d) = async (b_alloc_setn1 n 0 d)+ withSC3 (mapM_ alloc (zip [0..] lsys_data))+++-- | Filename for 'lsys_data'.+lsys_fn :: FilePath -> [FilePath]+lsys_fn d =+ let n = length lsys_data+ nm i = d P.</> show i P.<.> "snd"+ in map nm [0 .. n - 1]++-- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.+lsys_write :: FilePath -> IO ()+lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data++-- | Load 'lsys_fn' at /scsynth/.+lsys_load :: FilePath -> IO ()+lsys_load d = do+ let alloc (n,nm) = async (b_allocRead n nm 0 0)+ withSC3 (mapM_ alloc (zip [0..] (lsys_fn d)))++-- | Oscillator instrument+oi :: IO UGen+oi = do+ let rng i = linLin i (-1) 1+ exprng i = linExp i (-1) 1+ c <- R.choose [0.25, 0.55, 0.75, 1.25]+ let t = impulse KR c 0+ b <- tIRand 0 12 t+ let n = bufFrames KR b+ m = n / 4+ i = floorE (rng (lfSaw AR c 0) 0 m) * 4+ tt = impulse AR (m / c) 0+ x0 = bufRdL 1 AR b i NoLoop+ y0 = bufRdL 1 AR b (i + 1) NoLoop+ x1 = bufRdL 1 AR b (i + 2) NoLoop+ y1 = bufRdL 1 AR b (i + 3) NoLoop+ f0 <- R.choose [16, 32, 64, 128, 256, 512, 8192]+ let f1 = 22000+ o x y = let f = exprng x f0 f1+ in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)+ return (o x0 y0 + o x1 y1)++main :: IO ()+main = do+ t <- getTemporaryDirectory+ lsys_write t+ lsys_load t+ oi >>= audition . out 0
@@ -1,111 +0,0 @@--- | L-System oscillator (rd, 2006-11-01)--import Control.Monad {- base -}-import Graphics.PS.Pt {- hps -}-import Graphics.PS.Unit-import qualified LSystem.LSystem as L {- hls -}-import qualified LSystem.Systems as L-import qualified LSystem.Turtle as L-import qualified Sound.File.NeXT as F {- hsc3-sf -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}-import System.Directory {- directory -}-import qualified System.FilePath as P {- filepath -}---- | Normalise to lie in (0,1).------ > normalise [1,4,2,5] == [0.2,0.8,0.4,1]-normalise :: (Fractional a,Ord a) => [a] -> [a]-normalise s =- let n = 1 / maximum (map abs s)- in map (* n) s---- | 'L.render' rule.-plain :: [Double] -> Pt -> Pt -> [Double]-plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d---- | Render 'L.LSystem' to 'plain' data.-lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]-lsys_run (l,ta,ls) i =- let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 ls []- in L.render [] plain (L.expand l i) a---- | 'normalise' '.' 'lsys_run'------ > length (gen_d L.l0d 3)-gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]-gen_d l = normalise . lsys_run l---- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.-gen_f :: FilePath -> [Double] -> IO ()-gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]---- | Rendered L-system data sets.-lsys_data :: [[Double]]-lsys_data =- [gen_d L.l0d 3- ,gen_d L.l1d 3- ,gen_d L.l2d 5- ,gen_d L.l3d 12- ,gen_d L.l4d 6- ,gen_d L.l5d 4- ,gen_d L.l6d 7- ,gen_d L.l7d 4- ,gen_d L.l8d 6- ,gen_d L.l9d 10- ,gen_d L.lAd 11- ,gen_d L.lBd 6- ,gen_d L.lCd 5]---- | Exceeds UDP limits.-lsys_send :: IO ()-lsys_send = do- let alloc (n,d) = async (b_alloc_setn1 n 0 d)- withSC3 (mapM_ alloc (zip [0..] lsys_data))----- | Filename for 'lsys_data'.-lsys_fn :: FilePath -> [FilePath]-lsys_fn d =- let n = length lsys_data- nm i = d P.</> show i P.<.> "snd"- in map nm [0 .. n - 1]---- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.-lsys_write :: FilePath -> IO ()-lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data---- | Load 'lsys_fn' at /scsynth/.-lsys_load :: FilePath -> IO ()-lsys_load d = do- let alloc (n,nm) = async (b_allocRead n nm 0 0)- withSC3 (mapM_ alloc (zip [0..] (lsys_fn d)))---- | Oscillator instrument-oi :: IO UGen-oi = do- let rng i = linLin i (-1) 1- exprng i = linExp i (-1) 1- c <- R.choose [0.25, 0.55, 0.75, 1.25]- let t = impulse KR c 0- b <- tIRand 0 12 t- let n = bufFrames KR b- m = n / 4- i = floorE (rng (lfSaw AR c 0) 0 m) * 4- tt = impulse AR (m / c) 0- x0 = bufRdL 1 AR b i NoLoop- y0 = bufRdL 1 AR b (i + 1) NoLoop- x1 = bufRdL 1 AR b (i + 2) NoLoop- y1 = bufRdL 1 AR b (i + 3) NoLoop- f0 <- R.choose [16, 32, 64, 128, 256, 512, 8192]- let f1 = 22000- o x y = let f = exprng x f0 f1- in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)- return (o x0 y0 + o x1 y1)--main :: IO ()-main = do- t <- getTemporaryDirectory- lsys_write t- lsys_load t- oi >>= audition . out 0
@@ -13,15 +13,15 @@ -- > audition (m21360 (mce [0,1])) m21360 :: UGen -> UGen m21360 b =- let del = mce [0.2,0.3,0.4,0.5] * rand 'a' 0.15 0.35+ let del = mce [0.2,0.3,0.4,0.5] * rand 'α' 0.15 0.35 loc = mce [-1,-0.7,0.6,1]- hpp = mce [rand 'a' 300 600,rand 'a' 900 1200]+ hpp = mce [rand 'β' 300 600,rand 'γ' 900 1200] avg = mce [8000,14000] sdt = mce [300,400]- lpp = mce [rand 'a' 4300 4500,rand 'a' 4000 4200]+ lpp = mce [rand 'δ' 4300 4500,rand 'ε' 4000 4200] sr = sampleRate local = localIn 2 AR- wn = line KR 0 1 0.1 DoNothing * whiteNoise 'a' AR * 0.03+ wn = line KR 0 1 0.1 DoNothing * whiteNoise 'ζ' AR * 0.03 ph = delTapWr AR b (wn + local) fb = delTapRd b ph del 1 p_fb = mix (pan2 fb loc 1)
@@ -2,18 +2,10 @@ import Sound.SC3.ID {- hsc3 -} -rng :: UGen -> UGen -> UGen -> UGen-rng l r =- let m = (r - l) * 0.5- a = m + l- in (+ a) . (* m)- offset_id :: Enum a => Int -> a -> Int offset_id n e = n + fromEnum e -- mce...........................------ > Sound.SC3.UGen.Dot.draw microhelix microhelix :: UGen microhelix = let rp = replicate@@ -21,21 +13,21 @@ let z = offset_id z_ i = mce (rp 8 (1/8) ++ rp 8 (1/4) ++- [dseq (z 'a') (drand (z 'b') dinf (mce2 1 2)) (mce2 (1/16) (1/16))])- d = dxrand (z 'c') dinf (mceMap (* 1.25) i)- in tDuty AR d 0 DoNothing (dwhite (z 'd') dinf 0.5 1) 0+ [dseq (z 'α') (drand (z 'β') dinf (mce2 1 2)) (mce2 (1/16) (1/16))])+ d = dxrand (z 'γ') dinf (mceMap (* 1.25) i)+ in tDuty AR d 0 DoNothing (dwhite (z 'δ') dinf 0.5 1) 0 ctrigs = mce2 (ctrigs_ 0) (ctrigs_ 12) clicks =- let n = pinkNoise 'e' AR * decay ctrigs (0.001 * abs (lfNoise1 'f' AR 4))- in fold (bpf n 15000 0.9 * (25 * rng 0 1 (lfNoise1 'g' AR 8))) (-1) 1+ let n = pinkNoise 'ε' AR * decay ctrigs (0.001 * abs (lfNoise1 'ζ' AR 4))+ in fold (bpf n 15000 0.9 * (25 * range 0 1 (lfNoise1 'η' AR 8))) (-1) 1 snd1 = let o = sinOsc AR (midiCPS 44) 0 * 0.5 + sinOsc AR (midiCPS 90) 0 * 0.6- in lpf o (midiCPS 32) * 2 + hpf (lpf (whiteNoise 'h' AR * 0.008) 12000) 2400+ in lpf o (midiCPS 32) * 2 + hpf (lpf (whiteNoise 'θ' AR * 0.008) 12000) 2400 hiNoise =- let n = whiteNoise 'i' AR- e = decay2 (ctrigs * (lfNoise1 'j' AR 8 * 0.5 + 0.5)) 0.02 0.1 * 0.05- in bpf (n * e) (tRand 'k' 12000 15000 ctrigs) 0.9- trigMod = roundTo (lfNoise0 'l' AR 8) 1+ let n = whiteNoise 'ι' AR+ e = decay2 (ctrigs * (lfNoise1 'κ' AR 8 * 0.5 + 0.5)) 0.02 0.1 * 0.05+ in bpf (n * e) (tRand 'λ' 12000 15000 ctrigs) 0.9+ trigMod = roundTo (lfNoise0 'μ' AR 8) 1 bass = let t = mceChannel 0 ctrigs * trigMod ph = sweep t (2 * pi * mce2 52.8 740) + (pi/3)@@ -48,8 +40,8 @@ snd1' = let t = mceChannel 0 ctrigs d = Envelope [0, 1, 0.6, 0] [0.0001, 0.4, 0.01] [EnvNum (-4)] Nothing Nothing- e = envGen AR (t * lfNoise0 'm' AR 8) 1 0 1 DoNothing d- in pan2 (snd1 * e) (tRand 'n' (-1) 1 t) 1+ e = envGen AR (t * lfNoise0 'ν' AR 8) 1 0 1 DoNothing d+ in pan2 (snd1 * e) (tRand 'ξ' (-1) 1 t) 1 in limiter (midEQ (clicks + snd1' + hiNoise + bass) 14000 0.7 8) 1 0.01 main :: IO ()
@@ -17,7 +17,7 @@ modal_space :: UGen modal_space =- let n = uclone 'α' 2 (lfNoise1 'α' KR 3)+ let n = uclone 'α' 2 (lfNoise1 'β' KR 3) in (ms n 48 + ms n 72) * 0.25 run :: Transport m => m ()
@@ -2,12 +2,12 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} spe3_mridangam :: Synthdef spe3_mridangam = let t_amp = tr_control "t_amp" 1- n = whiteNoise 'a' AR * 70+ n = whiteNoise 'α' AR * 70 e = decay2 t_amp 0.002 0.1 o = distort (resonz (n * e) (midiCPS 60) 0.02 * 4) * 0.4 in synthdef "mridangam" (out 0 o)@@ -19,7 +19,7 @@ o = lpf (s1 + s2) (midiCPS 108) * 0.007 in synthdef "drone" (out 0 o) -p :: [P Double]+p :: Fractional n => [P n] p = [pseq [0.0] 10 -- intro@@ -28,7 +28,7 @@ ,pseq [0.9,0.0,0.0,0.2,0.0,0.2,0.0,0.2,0.0,0.0] 2 ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.2] 2 -- solo- ,prand 'a' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,prand 'β' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1 ,pseq [0.9,0.2,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1 ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.2] 1 ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.0,0.7,0.0,0.0] 1@@ -53,8 +53,9 @@ act = do play spe3_drone _ <- async (d_recv spe3_mridangam)- let p' = pmono_d spe3_mridangam 100 [("t_amp",pseq p 1),("dur",1/8)]- play p'+ let i = Instr_Def spe3_mridangam False+ play (pmono [(K_instr,pinstr' i),(K_id,100)+ ,(K_param "t_amp",pseq p 1),(K_dur,1/8)]) main :: IO () main = withSC3 act
@@ -3,8 +3,7 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} chain :: a -> [a -> a] -> a chain n c =@@ -27,33 +26,34 @@ dy = decay2 tr ea ed * 1 i = mix (ringz dy (f * mce2 1 2) es) r = chain i [\s -> let e = decay2 tr 0.01 hd- fr = mce [rand 'a' 1 1.1- ,rand 'a' 1.4 1.6- ,rand 'a' 1.9 2.1- ,rand 'a' 3.9 4.1]+ fr = mce [rand 'α' 1 1.1+ ,rand 'β' 1.4 1.6+ ,rand 'γ' 1.9 2.1+ ,rand 'δ' 3.9 4.1] in s + mix (sinOsc AR (f * fr) 0 * e) ,\s -> bLowPass s (ff * linExp dy 0 1 1 fa) 0.1- ,\s -> let e = envLinen 0 (es / rand 'a' 1 4) 0.1 1+ ,\s -> let e = envLinen 0 (es / rand 'ε' 1 4) 0.1 1 in s * envGen AR 1 1 0 1 RemoveSynth e] in offsetOut o (r * mce2 a a) -pattern :: P Event+pattern :: P_Bind pattern =- let o = prand 'a' [6,7] inf- in pbind [("degree",place [[0,1,2,3,4]- ,[2,3,4,5,6]- ,[4,3,4,3,6,7]- ,[0,2,1,2,1,4,3,3,5]] inf)- ,("detune",pwhite 'b' (-2) 2 inf)- ,("octave",o)- ,("dur",prand 'c' [0.5,1,2] inf + pwhite 'd' (-0.1) 0.1 inf)- ,("amp",pwhite 'e' 0.01 0.1 inf)- ,("attack",pwhite 'f' 0.0005 0.001 inf)- ,("sustain",(o / 4) + pwhite 'g' 0.01 0.5 inf)- ,("ffreq",pwhite 'h' 200 2000 inf)- ,("famt",pwhite 'i' 3 6 inf)- ,("hdur",pwhite 'j' 0.05 0.3 inf)- ,("impdecay",pwhite 'k' 0.001 0.01 inf)]+ let o = prand 'ζ' [6,7] inf+ in [(K_instr,psynth (synthdef "ping" ping))+ ,(K_degree,place [[0,1,2,3,4]+ ,[2,3,4,5,6]+ ,[4,3,4,3,6,7]+ ,[0,2,1,2,1,4,3,3,5]] inf)+ ,(K_detune,pwhite 'η' (-2) 2 inf)+ ,(K_octave,o)+ ,(K_dur,prand 'θ' [0.5,1,2] inf + pwhite 'ι' (-0.1) 0.1 inf)+ ,(K_amp,pwhite 'κ' 0.01 0.1 inf)+ ,(K_param "attack",pwhite 'λ' 0.0005 0.001 inf)+ ,(K_sustain,(o / 4) + pwhite 'μ' 0.01 0.5 inf)+ ,(K_param "ffreq",pwhite 'ν' 200 2000 inf)+ ,(K_param "famt",pwhite 'ξ' 3 6 inf)+ ,(K_param "hdur",pwhite 'ο' 0.05 0.3 inf)+ ,(K_param "impdecay",pwhite 'π' 0.001 0.01 inf)] amplitude_mod :: (ID a, Enum a) => a -> UGen -> UGen amplitude_mod z i =@@ -73,7 +73,6 @@ main :: IO () main = do- let s = synthdef "ping" ping- withSC3 (do post "amplitude_mod" 2 0 (amplitude_mod 'a')+ withSC3 (do post "amplitude_mod" 2 0 (amplitude_mod 'ρ') post "limiting" 2 0 limiting)- audition (s,pattern)+ audition (pbind pattern)
@@ -0,0 +1,35 @@+-- nharm (rd)++import Control.Concurrent {- base -}+import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++nharm :: (Num b, Integral a) => a -> b -> [b]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: UId m => UGen -> Int -> m UGen+klg m u = do+ n <- rrand 4 u+ d <- iRand 9 12+ f <- iRand m (m + 2)+ l <- sequence (replicate n (U.rand 0.01 0.02))+ p <- U.rand (-1.0) 1.0+ let a = 0.5+ e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+ nh = nharm n (midiCPS f)+ s = klangSpec nh l (replicate n 0.0)+ return (pan2 (klang AR 1 0 s) p e)++ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()+ply n (l,r) m u = do+ let a = do pauseThread =<< rrand l r+ audition . out 0 =<< klg m u+ replicateM_ n a++main :: IO ()+main = do+ _ <- forkIO (ply 32 (0.25,0.75) 92 24)+ _ <- forkIO (ply 8 (1.25,1.75) 12 54)+ return ()
@@ -1,9 +1,8 @@--- nharm-p+-- nharm-p (rd) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} nharm :: Num n => Int -> n -> [n] nharm n f = map ((* f) . fromIntegral) [1..n]@@ -20,7 +19,7 @@ s = klangSpec nh l (replicate n 0.0) in out 0 (pan2 (klang AR 1 0 s) p e) -type Range = (Double,Double)+type Range = (Field,Field) {- Note that the dur key is used only to schedule the nodes. Both it, and any gate message, are ignored by the UGen graph, which manages@@ -28,10 +27,10 @@ pN :: Int -> Range -> Range -> P Event pN n (m0,m1) (d0,d1) =- let i = synthdef ("klg" ++ show n) (klg n)- p = pbind [("midinote",pwhite 'α' m0 m1 inf)- ,("dur",pwhite 'β' d0 d1 inf)]- in pinstr_d (return (i,False)) p+ let s = synthdef ("klg" ++ show n) (klg n)+ in pbind [(K_instr,psynth s)+ ,(K_midinote,pwhite 'α' m0 m1 inf)+ ,(K_dur,pwhite 'β' d0 d1 inf)] main :: IO () main = audition (pmerge (pN 24 (90,92) (0.25,0.75))
@@ -1,35 +0,0 @@---nharm (rd)--import Control.Concurrent {- base -}-import Control.Monad-import Sound.OSC {- hosc -}-import Sound.SC3.Monad as U {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--nharm :: (Num b, Integral a) => a -> b -> [b]-nharm n f = map ((* f) . fromIntegral) [1..n]--klg :: UId m => UGen -> Int -> m UGen-klg m u = do- n <- rrand 4 u- d <- iRand 9 12- f <- iRand m (m + 2)- l <- sequence (replicate n (U.rand 0.01 0.02))- p <- U.rand (-1.0) 1.0- let a = 0.5- e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)- nh = nharm n (midiCPS f)- s = klangSpec nh l (replicate n 0.0)- return (pan2 (klang AR 1 0 s) p e)--ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()-ply n (l,r) m u = do- let a = do pauseThread =<< rrand l r- audition . out 0 =<< klg m u- replicateM_ n a--main :: IO ()-main = do- _ <- forkIO (ply 32 (0.25,0.75) 92 24)- _ <- forkIO (ply 8 (1.25,1.75) 12 54)- return ()
@@ -5,9 +5,9 @@ nms :: UGen nms =- let f = midiCPS (rand 'a' 60 100)+ let f = midiCPS (rand 'α' 60 100) o = fSinOsc AR (mce2 f (f + 0.2)) 0- a = lfNoise2 'b' KR (f * mce2 0.15 0.16) * 0.1+ a = lfNoise2 'β' KR (f * mce2 0.15 0.16) * 0.1 in o * a nms_pp :: (UGen -> UGen)
@@ -2,53 +2,48 @@ -- partial... import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Control.Instrument-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} grain :: UGen grain = let o = control KR "out" 0- freq' = control KR "freq" 100+ f = control KR "freq" 100 attack = control KR "attack" 0 decay' = control KR "decay" 1- sustain' = control KR "sustain" 0.1+ sus = control KR "sustain" 0.1 distort' = control KR "distort" 0 fTime = control KR "fTime" 0.1 fFac = control KR "fFac" 1.2 amp' = control KR "amp" 1 delay = control KR "delay" 0- startFreq = fFac * freq'- endFreq = freq'+ startFreq = fFac * f+ endFreq = f env l t = Envelope l t [] Nothing Nothing aEnv = let e = envPerc attack decay'- in envGen AR 1 amp' 0 sustain' RemoveSynth e+ in envGen AR 1 amp' 0 sus RemoveSynth e fEnv = let e = env [startFreq,endFreq] [fTime] in envGen AR 1 1 0 1 DoNothing e src = wrap2 (sinOsc AR fEnv 1 * (1 + distort')) 1 in out o (delayN (src * mce2 aEnv aEnv) 0.1 delay) -pattern :: Enum e => (Value, e) -> P Event+pattern :: Enum e => (Field,e) -> P_Bind pattern (f,z) =- let f_mul = prand 'a' [4,1,2,3,4,8] inf- in pbind [("freq",return f * f_mul * pwhite z 0.99 1 (12 * 4))- ,("dur",pseq [pseq [10,0.1,10] 1,pseq [0.1] 6- ,pseq [1,pseq [0.1] 6,1] inf] 1)- ,("fTime",0.0125)- ,("fFac",5)- ,("sustain",0.1)- ,("attack",0.0005)- ,("decay",2)- ,("amp",0.1)- ,("delay",pwhite z 0.01 0.1 1 * 0.1)]--grain_ip :: P Instrument-grain_ip =- let n = "grain"- s = synthdef n grain- in pcons (InstrumentDef s False) (prepeat (InstrumentName n False))+ let f_mul = prand 'α' [4,1,2,3,4,8] inf+ in [(K_instr,pinstr "grain")+ ,(K_freq,prepeat f * f_mul * phold (pwhite z 0.99 1 inf))+ ,(K_dur,pseq [pseq [10,0.1,10] 1+ ,pseq [0.1] 6+ ,pseq [1,pseq [0.1] 6,1] inf] 1)+ ,(K_param "fTime",0.0125)+ ,(K_param "fFac",5)+ ,(K_sustain,0.1)+ ,(K_param "attack",0.0005)+ ,(K_param "decay",2)+ ,(K_amp,0.1)+ ,(K_param "delay",phold (pwhite z 0.01 0.1 inf * 0.1))] main :: IO () main = let f = concat (replicate 12 [1200, 800, 600, 200])- in audition (pinstr grain_ip (ppar (map pattern (zip f ['a'..]))))+ p = ppar (map (pbind . pattern) (zip f ['β'..]))+ in withSC3 (async (d_recv (synthdef "grain" grain)) >> play p)
@@ -13,12 +13,11 @@ -- > audition score score :: NRT score =- let at t = Bundle (NTPr t)- mk_instr = d_recv (synthdef "test" graph)+ let mk_instr = d_recv (synthdef "test" graph) mk_group = g_new [(1, AddToTail, 0)]- mk_synth t f = at t [s_new "test" (-1) AddToTail 1 [("freq", f)]]+ mk_synth t f = bundle t [s_new "test" (-1) AddToTail 1 [("freq",f)]] notes = take 128 (zipWith mk_synth [1.0, 1.05 ..] [330, 350 ..])- in NRT (at 0.0 [mk_instr, mk_group] : notes)+ in NRT (bundle 0.0 [mk_instr, mk_group] : notes) render :: NRT -> IO () render s = do
@@ -5,12 +5,12 @@ nv_tw_1 :: UGen nv_tw_1 =- let a = uclone 'a' 2 (pinkNoise 'a' AR)+ let a = uclone 'α' 2 (pinkNoise 'β' AR) nd z =- let n = lfNoise1 'a' KR (rand 'a' 0 0.05)+ let n = lfNoise1 'γ' KR (rand 'δ' 0 0.05) f = linExp n (-1) 1 40 15000- in bBandStop z f (expRand 'a' 0.1 2)- in lpf (useq 'a' 50 nd a) 1e5+ in bBandStop z f (expRand 'ε' 0.1 2)+ in lpf (useq 'ζ' 50 nd a) 1e5 main :: IO () main = audition (out 0 nv_tw_1)
@@ -1,7 +1,7 @@ -- http://sccode.org/1-V (nv) import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} fF :: Double -> Double -> Double fF i f =@@ -23,6 +23,9 @@ in synthdef "nvi" (out 0 o) main :: IO ()-main = audition (nvi,pbind [("f",fromList fS)- ,("i",pseries 0 1 inf)- ,("dur",0.3)])+main =+ let fS' = map realToFrac fS+ in audition (pbind [(K_instr,psynth nvi)+ ,(K_param "f",toP fS')+ ,(K_param "i",pseries 0 1 inf)+ ,(K_dur,0.3)])
@@ -3,18 +3,17 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw nx102 -- > audition (out 0 nx102) nx102 :: UGen nx102 =- let r = rand 'a' 50 100+ let r = rand 'α' 50 100 b = playBuf 1 KR 1 r 1 0 Loop DoNothing- f = clip (b * rand 'a' 100 1000) (rand 'a' 5 12) (rand 'a' 12 20)+ f = clip (b * rand 'β' 100 1000) (rand 'γ' 5 12) (rand 'δ' 12 20) o = pulse AR f 0.5- lrf = rand 'a' 100 5000- lrq = rand 'a' 0.005 0.1- hrf = rand 'a' 5000 20000- hrq = rand 'b' 0.005 0.1+ lrf = rand 'ε' 100 5000+ lrq = rand 'ζ' 0.005 0.1+ hrf = rand 'η' 5000 20000+ hrq = rand 'θ' 0.005 0.1 s = rhpf (rlpf o lrf lrq) hrf hrq v = freeVerb s 0 0 0 pk i n k = bPeakEQ i n 6.0 k
@@ -1,4 +1,4 @@--- one-line (lance putnam)+-- one-line (ljp) import Sound.SC3 {- hsc3 -}
@@ -0,0 +1,35 @@+-- oscillator cluster++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++oscillator_cluster :: (Functor m,UId m) => m UGen+oscillator_cluster = do+ let ln a b d = line KR a b d RemoveSynth+ rln r a b d = fmap (\n -> ln (a + n) b d) (rand 0 r)+ prt d a cf = do r1 <- rand cf (cf + 2)+ r2 <- rln 1 5 0.01 d+ r3 <- rln 10 20 0 d+ r4 <- rand 0.1 0.2+ let f = mce2 cf r1 + sinOsc KR r2 0 * r3+ o = fSinOsc AR f 0+ e = decay2 (impulse AR 0 0) r4 d * a+ return (o * e)+ np = 12+ fp = sequence (replicate np (rand 220 660))+ d <- rand 4 7+ a <- rand 0.01 0.05+ fmap sum (mapM (prt d a) =<< fp)++main :: IO ()+main = do+ u <- oscillator_cluster+ let s = synthdef "oscillator_cluster" (out 0 u)+ p = pbind [(K_instr,psynth s),(K_dur,prand 'α' [0.25,0.5,1,3,5] inf)]+ audition p++{-+audition . (out 0) =<< oscillator_cluster+let otu = Sound.SC3.Lang.Control.OverlapTexture.overlapTextureU+otu (0,6,3,maxBound) =<< oscillator_cluster+-}
@@ -1,34 +0,0 @@--- oscillator cluster--import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}--oscillator_cluster :: (Functor m,UId m) => m UGen-oscillator_cluster = do- let ln a b d = line KR a b d RemoveSynth- rln r a b d = fmap (\n -> ln (a + n) b d) (rand 0 r)- prt d a cf = do r1 <- rand cf (cf + 2)- r2 <- rln 1 5 0.01 d- r3 <- rln 10 20 0 d- r4 <- rand 0.1 0.2- let f = mce2 cf r1 + sinOsc KR r2 0 * r3- o = fSinOsc AR f 0- e = decay2 (impulse AR 0 0) r4 d * a- return (o * e)- np = 12- fp = sequence (replicate np (rand 220 660))- d <- rand 4 7- a <- rand 0.01 0.05- return.sum =<< mapM (prt d a) =<< fp--main :: IO ()-main = do- u <- oscillator_cluster- let s = synthdef "oscillator_cluster" (out 0 u)- audition (s,pbind [("dur",prand 'a' [0.25,0.5,1,3,5] inf)])--{--audition . (out 0) =<< oscillator_cluster-let otu = Sound.SC3.Lang.Control.OverlapTexture.overlapTextureU-otu (0,6,3,maxBound) =<< oscillator_cluster--}
@@ -1,20 +1,19 @@--- overlap-add (jmcc, rd)+-- overlap-add (jmcc) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} sine :: UGen sine = let r0 = expRand 'α' 500 1400- r1 = rand 'α' (-1) 1+ r1 = rand 'β' (-1) 1 in pan2 (sinOsc AR r0 0) r1 0.01 noise :: UGen noise =- let n0 = whiteNoise 'α' AR- r0 = expRand 'α' 800 8400- r1 = rand 'α' (-1) 1+ let n0 = whiteNoise 'γ' AR+ r0 = expRand 'δ' 800 8400+ r1 = rand 'ε' (-1) 1 in pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25 main :: IO ()
@@ -0,0 +1,54 @@+-- pattern buffer (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++tseq :: [UGen] -> UGen+tseq l =+ let n = fromIntegral (length l) / 2.0+ in select (lfSaw KR 0.5 0 * n + n) (mce l)++pattern_buffer :: UId m => Int -> m UGen+pattern_buffer c = do+ let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0+ t = bufRdC 1 AR 10 p Loop+ r1 <- sequence (replicate c (rrand 36 96))+ r2 <- sequence (replicate c (rrand (-1.0) 1.0))+ r3 <- rrand 0 1+ n1 <- tRand 0.02 0.08 t+ let e = decay2 t 0.01 n1+ f = midiCPS (tseq r1)+ l = tseq r2+ o = [sinOsc AR f 0, saw AR f] !! r3+ return (pan2 o l e)++set_pattern :: Transport m => Int -> Int -> m ()+set_pattern nf c = do+ let rs = do r0 <- rrand 0 nf+ r1 <- rrand 0.0 1.0+ send (b_set1 10 r0 r1)+ sequence_ (replicate c rs)++fill_clr :: (Transport m) => Int -> Int -> Double -> Int -> m b+fill_clr nf c dt n = do+ let go i = if i == 0+ then do send (b_zero 10)+ go n+ else do set_pattern nf c+ pauseThread dt+ go (i - 1)+ go n++run :: (UId m,Transport m) => m ()+run = do+ let nf = 2 * 48000+ c = 24+ n = 16+ dt = 2.6+ _ <- async (b_alloc 10 (nf * 2) 1)+ play . out 0 =<< pattern_buffer c+ fill_clr nf c dt n++main :: IO ()+main = withSC3 run
@@ -1,54 +0,0 @@--- pattern buffer (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--tseq :: [UGen] -> UGen-tseq l =- let n = fromIntegral (length l) / 2.0- in select (lfSaw KR 0.5 0 * n + n) (mce l)--pattern_buffer :: UId m => Int -> m UGen-pattern_buffer c = do- let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0- t = bufRdC 1 AR 10 p Loop- r1 <- sequence (replicate c (rrand 36 96))- r2 <- sequence (replicate c (rrand (-1.0) 1.0))- r3 <- rrand 0 1- n1 <- tRand 0.02 0.08 t- let e = decay2 t 0.01 n1- f = midiCPS (tseq r1)- l = tseq r2- o = [sinOsc AR f 0, saw AR f] !! r3- return (pan2 o l e)--set_pattern :: Transport m => Int -> Int -> m ()-set_pattern nf c = do- let rs = do r0 <- rrand 0 nf- r1 <- rrand 0.0 1.0- send (b_set1 10 r0 r1)- sequence_ (replicate c rs)--fill_clr :: (Transport m) => Int -> Int -> Double -> Int -> m b-fill_clr nf c dt n = do- let go i = if i == 0- then do send (b_zero 10)- go n- else do set_pattern nf c- pauseThread dt- go (i - 1)- go n--run :: (UId m,Transport m) => m ()-run = do- let nf = 2 * 48000- c = 24- n = 16- dt = 2.6- _ <- async (b_alloc 10 (nf * 2) 1)- play . out 0 =<< pattern_buffer c- fill_clr nf c dt n--main :: IO ()-main = withSC3 run
@@ -0,0 +1,9 @@+{+var f0 = [100,200,300] + SinOsc.ar([0.11,0.22,0.33]);+var ph0 = SinOsc.ar([0.1,0.2,0.3],0,2pi);+var a0 = 0.1 + SinOsc.ar([0.01,0.02,0.03],0,0.05);+var i = SinOsc.ar(f0,ph0,a0);+var w = SinOsc.ar(SinOsc.ar(SinOsc.ar(0.13,0,5,6),0,8,50),0,1,1);+var s = Splay.ar(i,w,0.7,SinOsc.ar(1.2,0,0.6));+GVerb.ar(s,20,5,1,0.5,25,0,1,1);+}.play
@@ -0,0 +1,37 @@+{GVerb.ar(+ LeakDC.ar(+ SinOsc.ar(+ SinOsc.ar(+ SinOsc.ar(+ SinOsc.ar(+ SinOsc.ar(+ SinOsc.ar(+ SinOsc.ar(+ 1,+ 0,+ 2,+ SinOsc.ar(1/2).exprange(1,2)+ ),+ 0,+ 8,+ SinOsc.ar(1/4).exprange(4,8)+ ),+ 0,+ 32,+ SinOsc.ar(1/8).exprange(16,32)+ ),+ 0,+ 128,+ SinOsc.ar(1/16).exprange(64,128)+ ),+ 0,+ 512,+ SinOsc.ar(1/32).exprange(256,512)+ ),+ 0,+ 2048,+ SinOsc.ar(1/64).exprange(1024,2048)+ ),0,0.1+ )+ ),16,8,0.75,0.5)+}.play
@@ -0,0 +1,27 @@+-- plucked strings (jmcc)++import Sound.SC3.Monad {- hsc3 -}++plucked_strings :: UId m => m UGen+plucked_strings = do+ let dt = do r0 <- rand 60 90+ return (1 / midiCPS (floorE r0))+ i = do r0 <- rand 2 2.2+ n0 <- dust AR 0.5+ r1 <- rand 0.05 0.15+ r2 <- rand 0 (pi * 2)+ r3 <- iRand 0 2+ let s0 = impulse AR r0 0.3+ s1 = n0 * 0.3+ s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3+ return (select r3 (mce [s0,s1,s2]))+ s = do n0 <- pinkNoise AR+ r1 <- rand (-1) 1+ im <- i+ dt' <- dt+ let t = decay im 0.1 * n0 * 0.1+ return (pan2 (combL t dt' dt' 4) r1 1)+ fmap sum (sequence (replicate 5 s))++main :: IO ()+main = audition . out 0 =<< plucked_strings
@@ -1,27 +0,0 @@--- plucked strings (jmcc)--import Sound.SC3.Monad {- hsc3 -}--plucked_strings :: UId m => m UGen-plucked_strings = do- let dt = do r0 <- rand 60 90- return (1 / midiCPS (floorE r0))- i = do r0 <- rand 2 2.2- n0 <- dust AR 0.5- r1 <- rand 0.05 0.15- r2 <- rand 0 (pi * 2)- r3 <- iRand 0 2- let s0 = impulse AR r0 0.3- s1 = n0 * 0.3- s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3- return (select r3 (mce [s0,s1,s2]))- s = do n0 <- pinkNoise AR- r1 <- rand (-1) 1- im <- i- dt' <- dt- let t = decay im 0.1 * n0 * 0.1- return (pan2 (combL t dt' dt' 4) r1 1)- return.sum =<< sequence (replicate 5 s)--main :: IO ()-main = audition . out 0 =<< plucked_strings
@@ -0,0 +1,24 @@+-- police state (jmcc)++import Sound.SC3.Monad {- hsc3 -}++police_state :: UId m => m UGen+police_state = do+ let nd = do r0 <- rand 0.02 0.12+ r1 <- rand 0 (pi * 2)+ r2 <- rand 0 600+ r3 <- rand 700 1300+ r4 <- rand (-1) 1+ r5 <- rand 80 120+ n0 <- lfNoise2 AR r5+ let f = sinOsc KR r0 r1 * r2 + r3+ return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)+ ns <- clone 4 nd+ n0 <- clone 2 (lfNoise2 KR 0.4)+ n1 <- lfNoise2 AR (n0 * 90 + 620)+ n2 <- lfNoise2 KR (mce2 0.3 0.301)+ let e = n1 * (n2 * 0.15 + 0.18)+ return (combL (mix ns + e) 0.3 0.3 3)++main :: IO ()+main = audition . out 0 =<< police_state
@@ -1,24 +1,24 @@ -- police state (jmcc) -import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect {- hsc3 -} -police_state :: UId m => m UGen-police_state = do- let nd = do r0 <- rand 0.02 0.12- r1 <- rand 0 (pi*2)- r2 <- rand 0 600- r3 <- rand 700 1300- r4 <- rand (-1) 1- r5 <- rand 80 120- n0 <- lfNoise2 AR r5- let f = sinOsc KR r0 r1 * r2 + r3- return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)- ns <- clone 4 nd- n0 <- clone 2 (lfNoise2 KR 0.4)- n1 <- lfNoise2 AR (n0 * 90 + 620)- n2 <- lfNoise2 KR (mce2 0.3 0.301)- let e = n1 * (n2 * 0.15 + 0.18)- return (combL (mix ns + e) 0.3 0.3 3)+nd :: UGen+nd =+ let n = lfNoise2 'α' AR (rand 'β' 80 120)+ f = sinOsc KR (rand 'γ' 0.02 0.12) (rand 'δ' 0 (pi * 2)) *+ rand 'ε' 0 600 ++ rand 'ζ' 700 1300+ in pan2 (sinOsc AR f 0 * n * 0.1) (rand 'η' (-1) 1) 1 +police_state :: UGen+police_state =+ let ns = uclone 'θ' 4 nd+ n0 = uclone 'ι' 2 (lfNoise2 'κ' KR 0.4)+ n1 = lfNoise2 'λ' AR (n0 * 90 + 620)+ n2 = lfNoise2 'μ' KR (mce2 0.3 0.301)+ e = n1 * (n2 * 0.15 + 0.18)+ in combL (mix ns + e) 0.3 0.3 3+ main :: IO ()-main = audition . out 0 =<< police_state+main = audition (out 0 police_state)
@@ -0,0 +1,16 @@+-- pond life (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pond_life :: UId m => m UGen+pond_life = do+ let f = fSinOsc KR (20 + #(rand 0 30)) 0+ * #(rand 100 400)+ + #(linRand 500 2500 0)+ let a = lfPulse KR (3 / #(rand 1 9)) #(rand 0.2 0.5) 0.04+ return (pan2 (sinOsc AR f 0 * a) #(rand (-1) 1) 0.5)++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) =<< pond_life
@@ -5,10 +5,10 @@ pond_life :: UGen pond_life =- let f0 = 20 + rand 'a' 0 30- f1 = fSinOsc KR f0 0 * rand 'b' 100 400 + linRand 'c' 500 2500 0- a = lfPulse KR (3 / rand 'd' 1 9) (rand 'e' 0.2 0.5) 0.04- in pan2 (sinOsc AR f1 0 * a) (rand 'f' (-1) 1) 0.5+ let f0 = 20 + rand 'α' 0 30+ f1 = fSinOsc KR f0 0 * rand 'β' 100 400 + linRand 'γ' 500 2500 0+ a = lfPulse KR (3 / rand 'δ' 1 9) (rand 'ε' 0.2 0.5) 0.04+ in pan2 (sinOsc AR f1 0 * a) (rand 'ζ' (-1) 1) 0.5 main :: IO () main = overlapTextureU (8,8,4,maxBound) pond_life
@@ -13,7 +13,6 @@ mce_scramble :: UGen -> IO UGen mce_scramble u = fmap mce (L.scramble (mceChannels u)) --- > pm >>= Sound.SC3.UGen.Dot.draw pm :: IO UGen pm = do e <- mk_e
@@ -1,7 +1,7 @@ -- > Sound.SC3.UGen.Help.viewSC3Help "ProxyMixer" import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} randN_l :: ID z => Int -> z -> UGen -> UGen -> [UGen] randN_l k z l = mceChannels . randN k z l@@ -9,15 +9,14 @@ iScramble :: ID z => z -> UGen -> UGen iScramble z = tScramble z KR 1 --- > Sound.SC3.UGen.Dot.draw pm pm :: UGen pm =- let e = let l = randN_l 11 'a' (-1) 1- t = randN_l 10 'a' 0 1+ let e = let l = randN_l 11 'α' (-1) 1+ t = randN_l 10 'β' 0 1 in Envelope l t [EnvNum 0] (Just 9) (Just 0) env = envGen KR 1 1 0 1 DoNothing e p = midiRatio (env * mce [1, 0.33, -1] * 19) * 250- o = formant AR p (iScramble 'a' p * 2) (iScramble 'b' p)+ o = formant AR p (iScramble 'γ' p * 2) (iScramble 'δ' p) in out 0 (splay o 1 1 0 True * 0.1) main :: IO ()
@@ -15,7 +15,7 @@ p <- rand 0 (pi * 2) return (sinOsc KR f p) u = liftM2 (\x y -> pan2 x y 1) r s- return.sum =<< sequence (replicate 6 u)+ fmap sum (sequence (replicate 6 u)) main :: IO () main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
@@ -5,12 +5,11 @@ urangeM :: UGen -> UGen -> UGen urangeM u = let [u0,u1] = mceChannels u in urange u0 u1 --- > Sound.SC3.UGen.Dot.draw pwm_crossfade pwm_crossfade :: UGen pwm_crossfade = let n = mce [400,500,450,376,600] d = 1/20- f = demand (impulse KR d (mce2 0 0.5)) 0 (dseq 'a' dinf n)+ f = demand (impulse KR d (mce2 0 0.5)) 0 (dseq 'α' dinf n) f_ = urangeM f (lfPulse KR 8 0 (range 0 1 (lfTri KR d 1))) in lpf (saw AR (max 376 f_ * mce2 1 0.99) * 0.5) 8000
@@ -7,16 +7,15 @@ rand2 :: ID a => a -> UGen -> UGen rand2 e n = rand e (-n) n --- > Sound.SC3.UGen.Dot.draw rails rails :: UGen rails = let n = 20 -- resonant modes- e = dust 'a' AR 100 * 0.04 -- excitation+ e = dust 'α' AR 100 * 0.04 -- excitation f = xLine KR 3000 300 8 DoNothing -- sweep filter down- l = line KR (rand2 'b' 1) (rand2 'c' 1) 8 DoNothing -- sweep pan- r = uclone' 'a' n (200 + linRand 'd' 0 3000 0) -- resonant frequencies+ l = line KR (rand2 'β' 1) (rand2 'γ' 1) 8 DoNothing -- sweep pan+ r = uclone' 'δ' n (200 + linRand 'ε' 0 3000 0) -- resonant frequencies a = replicate n 1- t = uclone' 'b' n (0.2 + rand 'e' 0 1) -- ring times+ t = uclone' 'ζ' n (0.2 + rand 'η' 0 1) -- ring times k = klank (resonz e f 0.2) 1 0 1 (klankSpec r a t) in pan2 k l 1
@@ -2,16 +2,15 @@ import Sound.SC3.ID {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw rain_thunder rain_thunder :: UGen rain_thunder =- let n0 = pinkNoise 'a' AR * (0.08 + lfNoise1 'a' KR 0.3 * 0.02)- d0 = lpf (dust2 'b' AR (range 40 50 (lfNoise1 'b' KR 0.2))) 7000+ let n0 = pinkNoise 'α' AR * (0.08 + lfNoise1 'β' KR 0.3 * 0.02)+ d0 = lpf (dust2 'γ' AR (range 40 50 (lfNoise1 'δ' KR 0.2))) 7000 e0 = line KR 0 1 10 DoNothing p0 = tanh (3 * gVerb (hpf (n0+d0) 400) 250 100 0.25 0.5 15 0.3 0.7 0.5 300 * e0) lfNoise1C e r f = clip (lfNoise1 e r f) 0 1- n1 = pinkNoise 'c' AR * ((lfNoise1C 'c' KR 3 * lfNoise1C 'c' KR 2) ** 1.8)- f1 = linExp (lfNoise1 'd' KR 1) (-1) 1 100 2500+ n1 = pinkNoise 'ε' AR * ((lfNoise1C 'ζ' KR 3 * lfNoise1C 'η' KR 2) ** 1.8)+ f1 = linExp (lfNoise1 'θ' KR 1) (-1) 1 100 2500 e1 = line KR 0 0.7 30 DoNothing p1 = gVerb (tanh (lpf (10 * hpf n1 20) f1)) 270 30 0.7 0.5 15 0.5 0.7 0.5 300 * e1 in limiter (p0 + p1) 1 0.01
@@ -3,7 +3,6 @@ import Sound.SC3.Monad {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw =<< rps rps :: UId m => m UGen rps = do let nd = do r0 <- linRand 80 2000 0
@@ -4,14 +4,13 @@ import Sound.SC3.UGen.Protect import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw rps rps :: UGen rps =- let nd = let o = fSinOsc AR (linRand 'a' 80 2000 0) 0- l = lfNoise1 'b' KR (rand 'b' 0.8 1.2)- a = lfNoise1 'c' KR (rand 'c' 0.82 0.98)+ let nd = let o = fSinOsc AR (linRand 'α' 80 2000 0) 0+ l = lfNoise1 'β' KR (rand 'γ' 0.8 1.2)+ a = lfNoise1 'δ' KR (rand 'ε' 0.82 0.98) in pan2 o l a- in mix (uclone 'a' 8 nd) * (0.4 / 8)+ in mix (uclone 'ζ' 8 nd) * (0.4 / 8) main :: IO () main = overlapTextureU (8,8,2,maxBound) rps
@@ -0,0 +1,10 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+ let rsw = pan2 (fSinOsc AR #(rand 0 2000) 0 * 0.02) #(rand (-1) 1) 1+ overlapTextureU (2,5,12,maxBound) rsw
@@ -0,0 +1,11 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF she #-}++import Control.Applicative {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+ s <- (|pan2 ((|fSinOsc ~AR (rand 0 2000) ~0|) .* 0.02) (rand (-1) 1) ~1|)+ overlapTextureU (2,5,12,maxBound) s
@@ -5,9 +5,9 @@ rsw :: UGen rsw =- let f = rand 'a' 0 2000+ let f = rand 'α' 0 2000 o = fSinOsc AR f 0 * 0.02- in pan2 o (rand 'b' (-1) 1) 1+ in pan2 o (rand 'β' (-1) 1) 1 main :: IO () main = overlapTextureU (2,5,12,maxBound) rsw
@@ -1,4 +1,4 @@--- record scratcher (josh parmenter)+-- record scratcher (jp) import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -}
@@ -0,0 +1,24 @@+-- red_frik (f0)++import Sound.SC3.Monad {- hsc3 -}++red :: UId m => UGen -> UGen -> m UGen+red tr n = do+ r1 <- tRand 0.3 3 tr+ r2 <- tRand 0.3 5 tr+ r3 <- tRand 0 0.5 tr+ r4 <- tRand 0.49 0.56 tr+ r5 <- tRand 0.3 0.6 tr+ r6 <- tRand 0.3 0.5 tr+ let o1 = fSinOsc KR r2 0 * r3 + r4+ o2 = fSinOsc KR o1 r5 * r6+ return (rhpf n r1 o2)++red_frik :: UId m => m UGen+red_frik = do+ n <- clone 2 (brownNoise AR)+ let tr = impulse KR 0.1 0+ red tr n++main :: IO ()+main = audition . out 0 =<< red_frik
@@ -1,25 +0,0 @@--- red_frik (f0)--import Sound.SC3.Monad {- hsc3 -}--red :: UId m => UGen -> UGen -> m UGen-red tr n = do- r1 <- tRand 0.3 3 tr- r2 <- tRand 0.3 5 tr- r3 <- tRand 0 0.5 tr- r4 <- tRand 0.49 0.56 tr- r5 <- tRand 0.3 0.6 tr- r6 <- tRand 0.3 0.5 tr- let o1 = fSinOsc KR r2 0 * r3 + r4- o2 = fSinOsc KR o1 r5 * r6- return (rhpf n r1 o2)---- > Sound.SC3.UGen.Dot.draw =<< red_frik-red_frik :: UId m => m UGen-red_frik = do- n <- clone 2 (brownNoise AR)- let tr = impulse KR 0.1 0- red tr n--main :: IO ()-main = audition . out 0 =<< red_frik
@@ -0,0 +1,15 @@+-- resonant dust (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++resonant_dust :: UId m => m UGen+resonant_dust = do+ st <- rand 80 2080+ let en = st + (st * #(rand (-0.5) 0.5))+ rf = xLine KR st en 9 DoNothing+ return (pan2 (resonz (#(dust AR #(rand 50 850)) * 0.3) rf 0.1) #(rand (-1) 1) 1)++main :: IO ()+main = overlapTextureU (5,2,9,maxBound) =<< resonant_dust
@@ -6,10 +6,10 @@ resonant_dust :: UGen resonant_dust = let rf = let st = rand 'α' 80 2080- en = st + (rand 'α' (-0.5) 0.5 * st)+ en = st + (rand 'β' (-0.5) 0.5 * st) in xLine KR st en 9 DoNothing- d = dust 'α' AR (rand 'α' 50 850) * 0.3- in pan2 (resonz d rf 0.1) (rand 'α' (-1) 1) 1+ d = dust 'γ' AR (rand 'δ' 50 850) * 0.3+ in pan2 (resonz d rf 0.1) (rand 'ε' (-1) 1) 1 main :: IO () main = overlapTextureU (5,2,9,maxBound) resonant_dust
@@ -0,0 +1,20 @@+-- reverberated sine percussion (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+ let d = 6+ c = 5+ a = 4+ s_ = do return (resonz (#(dust AR (2 / constant d)) * 50) (200 + #(rand 0 3000)) 0.003)+ x_ i = do return (allpassN i 0.05 #(clone 2 (rand 0 0.05)) 1)+ s <- fmap sum (sequence (replicate d s_))+ y <- do let z = delayN s 0.048 0.48+ return (mix (combL z 0.1 (#(lfNoise1 KR #(clone c (rand 0 0.1))) * 0.04 + 0.05) 15))+ x <- chainM a x_ y+ return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
@@ -0,0 +1,24 @@+-- reverberated sine percussion (jmcc)++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+ let d = 6+ c = 5+ a = 4+ s_ = do n <- dust AR (2 / constant d)+ r <- rand 0 3000+ return (resonz (n * 50) (200 + r) 0.003)+ x_ i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 1)+ s <- fmap sum (sequence (replicate d s_))+ y <- do let z = delayN s 0.048 0.48+ r <- clone c (rand 0 0.1)+ n <- lfNoise1 KR r+ return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))+ x <- chainM a x_ y+ return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
@@ -1,27 +0,0 @@--- reverberated sine percussion (jmcc)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< reverberated_sine_percussion-reverberated_sine_percussion :: (Functor m,UId m) => m UGen-reverberated_sine_percussion = do- let d = 6- c = 5- a = 4- s_ = do n <- dust AR (2 / constant d)- r <- rand 0 3000- return (resonz (n * 50) (200 + r) 0.003)- x_ i = do r <- clone 2 (rand 0 0.05)- return (allpassN i 0.05 r 1)- (>=>) f g x = f x >>= g- chain n f = foldl (>=>) return (replicate n f)- s <- fmap sum (sequence (replicate d s_))- y <- do let z = delayN s 0.048 0.48- r <- clone c (rand 0 0.1)- n <- lfNoise1 KR r- return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))- x <- chain a x_ y- return (s + x * 0.2)--main :: IO ()-main = audition . out 0 =<< reverberated_sine_percussion
@@ -1,7 +1,7 @@ -- ring modulated klank (jmcc) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} rmk :: UGen
@@ -1,4 +1,4 @@--- rm-octaver (andrea valle, miller puckette)+-- rm-octaver (av), courtesy miller puckette import Sound.SC3 {- hsc3 -}
@@ -0,0 +1,31 @@+-- rzblp-hp (rd)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+ let g :: UId m => Int -> m UGen+ g _ = do blip AR #(lfn q 1330 1395) 24 *. lfn q 0.001 0.007+ in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+ q <- lfn 5.2 5.2 5.21+ a <- d dinf (mce [1,3,2,7,8])+ let freq = demand (impulse KR q 0) 0 a * 30 + 340+ s1 <- blip AR freq 3 *. lfn q 0.001 0.01+ s2 <- resonz (impulse AR q (mce2 0 0)) #(lfn 5 30 640) #(lfn q 0.1 0.5)+ *. lfn q 0.01 1.8+ s3 <- hpb q .*. lfn q 1.2 1.8+ let s4 = blip AR #(lfn q 16 36) 3 * mce2 0.03 0.09+ return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
@@ -0,0 +1,34 @@+-- rzblp-m (rd)++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+ let g :: UId m => Int -> m UGen+ g _ = do f <- lfn q 1330 1395+ a <- lfn q 0.001 0.007+ return (blip AR f 24 * a)+ in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+ q <- lfn 5.2 5.2 5.21+ a <- d dinf (mce [1,3,2,7,8])+ let freq = demand (impulse KR q 0) 0 a * 30 + 340+ s1 <- blip AR freq 3 *. lfn q 0.001 0.01+ s2 <- do f <- lfn 5 30 640+ bw <- lfn q 0.1 0.5+ resonz (impulse AR q (mce2 0 0)) f bw *. lfn q 0.01 1.8+ s3 <- hpb q .*. lfn q 1.2 1.8+ s4 <- do f <- lfn q 16 36+ return (blip AR f 3 * mce2 0.03 0.09)+ return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
@@ -3,25 +3,33 @@ import Sound.SC3 {- hsc3 -} import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -} +lfn :: UGen -> UGen -> UGen -> UGen+lfn f l r = range l r (lfNoise0 KR f)++hpb :: UGen -> UGen+hpb q =+ let g :: Int -> UGen+ g _ = let f = lfn q 1330 1395+ a = lfn q 0.001 0.007+ in blip AR f 24 * a+ in mixFill 2 g++mk_f :: (UGen -> UGen -> UGen) -> UGen+mk_f d =+ let q = lfn 5.2 5.2 5.21+ a = d dinf (mce [1,3,2,7,8])+ tr = impulse KR q 0+ freq = demand tr 0 a * 30 + 340+ in sum [blip AR freq 3 * lfn q 0.001 0.01+ ,resonz (impulse AR q (mce2 0 0))+ (lfn 5 30 640)+ (lfn q 0.1 0.5)+ * lfn q 0.01 1.8+ ,hpb q * lfn q 1.2 1.8+ ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]+ rzblp :: UGen-rzblp =- let wrp i l r = let m = (r - l) / 2- in i * m + l + m- lfn f = wrp (lfNoise0 KR f)- hpb q = mixFill 2 (\_ -> let f = lfn q 1330 1395- a = lfn q 0.001 0.007- in blip AR f 24 * a)- mk_f d = let q = lfn 5.2 5.2 5.21- a = d dinf (mce [1,3,2,7,8])- tr = impulse KR q 0- freq = demand tr 0 a * 30 + 340- in sum [blip AR freq 3 * lfn q 0.001 0.01- ,resonz (impulse AR q (mce2 0 0))- (lfn 5 30 640)- (lfn q 0.1 0.5) * lfn q 0.01 1.8- ,hpb q * lfn q 1.2 1.8- ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]- in mk_f drand + mk_f dxrand+rzblp = mk_f drand + mk_f dxrand main :: IO () main = audition (out 0 rzblp)
@@ -2,15 +2,10 @@ import Sound.SC3.ID {- hsc3 -} -wrp :: Fractional a => a -> a -> a -> a-wrp i l r =- let m = (r - l) / 2- in i * m + l + m- lfn :: ID a => a -> UGen -> UGen -> UGen -> UGen lfn z f l r = let z' = z `joinID` l `joinID` r- in wrp (lfNoise0 z' KR f) l r+ in range l r (lfNoise0 z' KR f) hpb :: (ID a) => a -> UGen -> UGen hpb z q =@@ -35,7 +30,7 @@ ,blip AR (lfn z q 16 36) 3 * mce2 0.03 0.09] rzblp :: UGen-rzblp = mk_f 'a' drand + mk_f 'b' dxrand+rzblp = mk_f 'α' drand + mk_f 'β' dxrand main :: IO () main = audition (out 0 rzblp)
@@ -7,17 +7,17 @@ s_chirp = let x = mouseX KR 15 0 Linear 0.1 y = mouseY KR 15 27 Linear 0.1- t = dust 'a' KR 9- b = tChoose 'a' t (mce [36,48,60,72])- n = lfNoise1 'a' KR (mce2 3 3.05) * 0.04- d = tIRand 'a' x y t- e = decay2 t 0.005 (tRand 'a' 0.02 0.15 t)+ t = dust 'α' KR 9+ b = tChoose 'β' t (mce [36,48,60,72])+ n = lfNoise1 'γ' KR (mce2 3 3.05) * 0.04+ d = tIRand 'δ' x y t+ e = decay2 t 0.005 (tRand 'ε' 0.02 0.15 t) o = let k = degreeToKey 0 d 12 f = midiCPS (b + k + n) m = e * sinOsc AR f 0 * 0.2 u = pulseDivider t 9 0- r0 = tRand 'a' 0.0075 0.125 u- r1 = tRand 'a' 0.05 0.15 u+ r0 = tRand 'ζ' 0.0075 0.125 u+ r1 = tRand 'η' 0.05 0.15 u in m * 0.5 + allpassC m 0.15 r0 r1 in out 0 o
@@ -2,11 +2,10 @@ import Control.Monad.Random {- MonadRandom -} import Data.List {- base -}-import Data.Maybe+import Data.Maybe {- base -} import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Random.Monad-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Random.Monad {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} text :: [String] text =@@ -34,19 +33,22 @@ o = sinOsc AR f1 0 * pulse AR f2 0.5 * saw AR f3 * e in synthdef "sam" (out 0 o) -b :: RandomGen g => g -> [(String,[(String,Double)])]+b :: (RandomGen g,Floating n,Random n) => g -> [(String,[(Key,n)])] b g = let mk w = do f1 <- exprand 200 9000 f2 <- exprand 20 9000 f3 <- exprand 20 9000 let d = 0.1 * fromIntegral (length w)- return (w,[("freq1",f1),("freq2",f2),("freq3",f3),("dur",d)])+ return (w,[(K_param "freq1",f1)+ ,(K_param "freq2",f2)+ ,(K_param "freq3",f3)+ ,(K_dur,d)]) in evalRand (mapM mk a) g main :: IO () main = do g <- getStdGen let t = b g- ae = mapMaybe (\w -> fmap event (lookup w t)) (concat x)- audition (sam,pseq (map return ae) 1)+ ae = mapMaybe (\w -> fmap e_from_list (lookup w t)) (concat x)+ audition (p_with (K_instr,psynth sam) (pseq (map return ae) 1))
@@ -6,9 +6,9 @@ saucer_base :: UGen saucer_base = let a = rand 'α' 0 20- b = rand 'α' 0 1000- c = rand 'α' 0 5000- p = rand 'α' (-1) 1+ b = rand 'β' 0 1000+ c = rand 'γ' 0 5000+ p = rand 'δ' (-1) 1 o = sinOsc AR a 0 * b + (1.1 * b) o' = sinOsc AR o 0 * c + (1.1 * c) in pan2 (sinOsc AR o' 0 * 0.1) p 1
@@ -9,7 +9,7 @@ scritto_i bx = let buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation v_filter i f a b = resonz i f (b / f) * dbAmp a- n0 = lfNoise2 'a' KR 3+ n0 = lfNoise2 'α' KR 3 v_filter_b i = let bi = linLin n0 (-1) 1 0 bx b = buf_at bi in v_filter i (b 0) (b 5) (b 10)
@@ -1,7 +1,7 @@ -- seqr (rd) import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} nrand :: ID z => Int -> z -> UGen -> UGen -> [UGen] nrand n e l = mceChannels . randN n e l@@ -17,13 +17,13 @@ -- > Sound.SC3.UGen.Dot.draw (seqr 12) seqr :: Int -> UGen seqr n =- let f = rand 'a' 9 18 / constant n- b = blip AR (mce2 (seqr_f f (nfreq 'a' n 72 96))- (seqr_f f (nfreq 'b' n 72 84)))- (mce2 (seqr_f f (nrand n 'c' 1 3))- (seqr_f f (nrand n 'd' 3 6)))- a = mce2 (seqr_f f (nrand n 'e' 0.05 0.10))- (seqr_f f (nrand n 'f' 0.05 0.15))+ let f = rand 'α' 9 18 / constant n+ b = blip AR (mce2 (seqr_f f (nfreq 'β' n 72 96))+ (seqr_f f (nfreq 'γ' n 72 84)))+ (mce2 (seqr_f f (nrand n 'δ' 1 3))+ (seqr_f f (nrand n 'ε' 3 6)))+ a = mce2 (seqr_f f (nrand n 'ζ' 0.05 0.10))+ (seqr_f f (nrand n 'η' 0.05 0.15)) in b * a -- n = rand 6 18
@@ -0,0 +1,52 @@+-- shifting pulses (rd)++import Sound.SC3.Monad {- hsc3 -}++wrp :: UGen -> UGen -> UGen -> UGen+wrp i l r = linLin i (-1) 1 l r++prt :: UId m => UGen -> UGen -> m UGen+prt a f = do+ r0 <- rand 0.2 0.9+ r1 <- rand 0.95 1.05+ r2 <- clone 2 (rand 0.95 1.05)+ let f' = f * wrp (sinOsc KR r0 0) 1 1.01 * r1+ a' = a * r2+ o = sinOsc AR (mce2 f f') 0+ return (o * a')++-- audition . out 0 =<< prts 2 900 0.002+-- audition . out 0 =<< prts 9 40 0.006+prts :: UId m => UGen -> UGen -> UGen -> m UGen+prts n f a = fmap sum (mapM (prt a) [f,f + f .. f * n])++-- audition . out 0 =<< fmt+fmt :: UId m => m UGen+fmt = do+ n <- (lfNoise2 KR 2)+ return (formant AR (mce2 20 21) (wrp n 10 100) 200 * 0.35)++-- audition . out 0 =<< pulses+pulses :: UId m => m UGen+pulses = do+ n0 <- clone 2 (brownNoise KR)+ n1 <- clone 2 (brownNoise KR)+ n2 <- clone 2 (brownNoise KR)+ t <- dust KR 0.75+ let warp i = linLin i (-1) 1+ l = latch t t+ p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1+ f = warp n1 300 1800+ rq = warp n2 0.01 2+ return (mrg2 (l * rlpf p f rq) (sendTrig t 0 t))++shifting_pulses :: UId m => m UGen+shifting_pulses = do+ p1 <- prts 2 900 0.008+ p2 <- prts 9 40 0.022+ f <- fmt+ s <- pulses+ return (p1 + p2 + f + s)++main :: IO ()+main = audition . out 0 =<< shifting_pulses
@@ -1,20 +0,0 @@--- shifting pulses (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< shifting_pulses-shifting_pulses :: UId m => m UGen-shifting_pulses = do- n0 <- clone 2 (brownNoise KR)- n1 <- clone 2 (brownNoise KR)- n2 <- clone 2 (brownNoise KR)- t <- dust KR 0.75- let warp i = linLin i (-1) 1- l = latch t t- p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1- f = warp n1 300 1800- rq = warp n2 0.01 2- return (l * rlpf p f rq)--main :: IO ()-main = audition . out 0 =<< shifting_pulses
@@ -0,0 +1,28 @@+-- sidereal time (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sidereal_time :: UId m => m UGen+sidereal_time = do+ let p = 15+ z <- let y = do+ fr <- replicateM p (expRand 100 6000)+ rt <- replicateM p (rand 2 6)+ return (klankSpec fr (replicate p 1) rt)+ in clone 2 y+ let f = xLine KR #(expRand 40 300) #(expRand 40 300) 12 DoNothing+ let t = lfPulse AR f 0 #(rand 0.1 0.9)+ * max 0 #(lfNoise2 KR #(rand 0 8))+ * 0.002+ o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+ return (combN o 0.6 #(rand 0.1 0.6) 8 + mceReverse o)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) =<< sidereal_time++{-+audition (out 0 sidereal_time)+-}
@@ -7,15 +7,15 @@ sidereal_time :: UGen sidereal_time = let p = 15- z = let y = let fr = uclone' 'α' p (expRand 'α' 100 6000)- rt = uclone' 'α' p (rand 'α' 2 6)+ z = let y = let fr = uclone' 'α' p (expRand 'β' 100 6000)+ rt = uclone' 'γ' p (rand 'δ' 2 6) in klankSpec fr (replicate p 1) rt- in uclone 'α' 2 y- f = xLine KR (expRand 'α' 40 300) (expRand 'β' 40 300) 12 DoNothing- t = let e = lfNoise2 'γ' KR (rand 'δ' 0 8)- in lfPulse AR f 0 (rand 'ε' 0.1 0.9) * 0.002 * max 0 e+ in uclone 'ε' 2 y+ f = xLine KR (expRand 'ζ' 40 300) (expRand 'η' 40 300) 12 DoNothing+ t = let e = lfNoise2 'θ' KR (rand 'ι' 0 8)+ in lfPulse AR f 0 (rand 'κ' 0.1 0.9) * 0.002 * max 0 e o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1- in combN o 0.6 (rand 'ζ' 0.1 0.6) 8 + mceReverse o+ in combN o 0.6 (rand 'λ' 0.1 0.6) 8 + mceReverse o main :: IO () main = overlapTextureU (4,4,6,maxBound) sidereal_time
@@ -2,8 +2,7 @@ import Data.List.Split {- split -} import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} sinuscell :: UGen sinuscell =@@ -20,20 +19,22 @@ s = sinOsc AR fre 0 in out b (pan2 s p e) -pattern :: Enum e => (Double,[e]) -> P Event+pattern :: Enum e => (Field,[e]) -> P_Bind pattern (c,z) = case z of [z0,z1,z2,z3] -> let a = pwhite z0 0 1 inf s = 0.2 r = pwhite z1 0 1 inf- in pbind [("fre",pwhite z2 0 1100 inf)- ,("atk",a)- ,("sus",s)- ,("rel",r)- ,("dur",a+s+r)- ,("amp",pwhite z3 0 1 inf)- ,("pan",prepeat c)]+ i = psynth (synthdef "sinuscell" sinuscell)+ in [(K_instr,i)+ ,(K_dur,a+s+r)+ ,(K_amp,pwhite z3 0 1 inf)+ ,(K_param "fre",pwhite z2 0 1100 inf)+ ,(K_param "atk",a)+ ,(K_param "sus",s)+ ,(K_param "rel",r)+ ,(K_param "pan",prepeat c)] _ -> undefined cells :: Fractional n => [n]@@ -41,6 +42,5 @@ main :: IO () main =- let s = synthdef "sinuscell" sinuscell- c = zip cells (chunksOf 4 ['a'..])- in audition (s,ppar (map pattern c))+ let c = zip cells (chunksOf 4 ['α'..])+ in audition (ppar (map (pbind . pattern) c))
@@ -4,8 +4,8 @@ snare_909 :: UGen -> UGen snare_909 tr =- let n = whiteNoise 'a' AR- v = tRand 'a' 0.25 1.0 tr+ let n = whiteNoise 'α' AR+ v = tRand 'β' 0.25 1.0 tr e a b = envGen AR tr 1 0 1 DoNothing (envPerc a b) e1 = e 0.0005 0.055 e2 = e 0.0005 0.075
@@ -0,0 +1,49 @@+-- sosc-lp (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+ n1 <- dwhite 1 lo hi+ n2 <- whiteNoise r+ d <- dseq dinf n1+ return (tDuty r d 0 DoNothing (abs n2) 1)++setup :: Transport m => m ()+setup = do+ let a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]+ b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]+ _ <- async (b_alloc 10 9 1)+ _ <- async (b_alloc 11 9 1)+ send (b_setn1 10 0 a)+ send (b_setn1 11 0 b)++sosc_lp :: UGen -> UGen -> UGen+sosc_lp t n =+ let d_env = decay2 t 0.002 2.5+ idx = stepper t 0 0 15 1 0+ f1 = let l = (bufRdL 1 KR 10 idx Loop - 24)+ r = (bufRdL 1 KR 11 idx Loop - 24)+ in midiCPS (mce2 l r)+ f2 = f1 + n * 1.2+ o1 = sinOsc AR f1 0 * d_env+ o2 = sinOsc AR f2 0 * d_env+ in (o1 + o2) * 0.2++sosc_lp_m :: UId m => m UGen+sosc_lp_m = do+ clk <- dustR KR 0.2 0.9+ n <- lfNoise0 KR (mce2 1 3)+ return (sosc_lp clk n)++main :: IO ()+main = withSC3 (setup >> sosc_lp_m >>= play . out 0)++-- > withSC3 resetter+resetter :: Transport m => m ()+resetter = do+ let a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]+ b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]+ send (b_setn1 10 0 a)+ send (b_setn1 11 0 b)
@@ -1,50 +0,0 @@--- sosc-lp (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}--dustR :: UId m => Rate -> UGen -> UGen -> m UGen-dustR r lo hi = do- n1 <- dwhite 1 lo hi- n2 <- whiteNoise r- d <- dseq dinf n1- return (tDuty r d 0 DoNothing (abs n2) 1)--setup :: Transport m => m ()-setup = do- let a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]- b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]- _ <- async (b_alloc 10 9 1)- _ <- async (b_alloc 11 9 1)- send (b_setn1 10 0 a)- send (b_setn1 11 0 b)--sosc_lp :: UGen -> UGen -> UGen-sosc_lp t n =- let d_env = decay2 t 0.002 2.5- idx = stepper t 0 0 15 1 0- f1 = let l = (bufRdL 1 KR 10 idx Loop - 24)- r = (bufRdL 1 KR 11 idx Loop - 24)- in midiCPS (mce2 l r)- f2 = f1 + n * 1.2- o1 = sinOsc AR f1 0 * d_env- o2 = sinOsc AR f2 0 * d_env- in (o1 + o2) * 0.2---- > Sound.SC3.UGen.Dot.draw =<< sosc_lp_m-sosc_lp_m :: UId m => m UGen-sosc_lp_m = do- clk <- dustR KR 0.2 0.9- n <- lfNoise0 KR (mce2 1 3)- return (sosc_lp clk n)--main :: IO ()-main = withSC3 (setup >> sosc_lp_m >>= play . out 0)---- > withSC3 resetter-resetter :: Transport m => m ()-resetter = do- let a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]- b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]- send (b_setn1 10 0 a)- send (b_setn1 11 0 b)
@@ -3,12 +3,9 @@ import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< spe spe :: UId m => m UGen spe = do- let (>=>) f g x = f x >>= g- chain n f = foldl (>=>) return (replicate n f)- rapf i = do r <- clone 2 (rand 0 0.05)+ let rapf i = do r <- clone 2 (rand 0 0.05) return (allpassN i 0.05 r 4) src = do let t = impulse KR 9 0 e = envGen KR t 0.1 0 1 DoNothing (envPerc 0.1 1)@@ -21,7 +18,7 @@ o = lfSaw AR f 0 * e rq = midiCPS (n * 36 + 110) return (rlpf o rq 0.1)- chain 4 rapf =<< src+ chainM 4 rapf =<< src main :: IO () main = audition . out 0 =<< spe
@@ -1,30 +1,28 @@ -- spe-p (jmcc) import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} spe3_allpass6 :: UId m => m Synthdef spe3_allpass6 = do n <- lfNoise1 KR 1- let freq = control KR "freq" 440- (>=>) f g x = f x >>= g- chain i f = foldl (>=>) return (replicate i f)+ let fr = control KR "freq" 440 rapf i = do r <- clone 2 (rand 0 0.05) return (allpassN i 0.05 r 4) e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.1 1) rq = midiCPS (n * 36 + 110)- o = rlpf (lfSaw AR freq 0 * e) rq 0.1- u <- fmap (out 0) (chain 4 rapf o)+ o = rlpf (lfSaw AR fr 0 * e) rq 0.1+ u <- fmap (out 0) (chainM 4 rapf o) return (synthdef "spe" u) -notes :: P Double+notes :: Num n => P n notes =- let n = [prand' 'a' [pempty,fromList [24,31,36,43,48,55]] inf- ,pflop [60,prand 'b' [63,65] inf,67,prand 'c' [70,72,74] inf]- ,psplitPlaces (pwhite 'd' 3 9 inf) (fromList [74,75,77,79,81])]+ let n = [prand' 'α' [pempty,toP [24,31,36,43,48,55]] inf+ ,pflop [60,prand 'β' [63,65] inf,67,prand 'γ' [70,72,74] inf]+ ,psplitPlaces (pwhite 'δ' 3 9 inf) (toP [74,75,77,79,81])] in pjoin (pseq1 n inf) main :: IO () main = do i <- spe3_allpass6- audition (i,pbind [("midinote",notes),("dur",0.13)])+ audition (pbind [(K_instr,psynth i),(K_midinote,notes),(K_dur,0.13)])
@@ -3,7 +3,6 @@ import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< synthetic_piano synthetic_piano :: UId m => m UGen synthetic_piano = do n <- iRand 36 90
@@ -0,0 +1,36 @@+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++pling :: UId m => m UGen+pling = do+ let s = decay2 #(dust AR 0.2) 0.1 0.5+ * cubed (fSinOsc AR #(expRand 300 2200) 0)+ * 0.1+ return (pan2 s #(rand (-1) 1) 1)++bang :: UId m => m UGen+bang = do return (pan2 (decay2 #(dust AR 0.01) 0.04 0.3 * #(brownNoise AR)) 0 1)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do return (allpassN i 0.03 #(clone 2 (rand 0.005 0.02)) 1)++tank_f :: UId m => UGen -> m UGen+tank_f i = do+ let [l,r] = mceChannels (onePole (localIn 2 AR * 0.98) 0.33)+ let a = allpassN (rotate2 l r 0.23) 0.05 #(clone 2 (rand 0.01 0.05)) 2+ b = delayN a 0.3 (mce [0.17,0.23])+ let c = leakDC (allpassN b 0.05 #(clone 2 (rand 0.03 0.15)) 2) 0.995 + i+ return (mrg [c,localOut c])++tank :: UId m => m UGen+tank = do+ s <- bang .+. mixFillM 8 (const pling :: UId m => Int -> m UGen)+ s' <- chainM 4 r_allpass s+ tank_f s'++main :: IO ()+main = do+ t <- tank+ audition (out 0 t)
@@ -1,6 +1,6 @@--- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html -import Control.Monad {- base -} import Sound.SC3.Monad {- hsc3 -} pling :: UId m => m UGen@@ -18,9 +18,6 @@ n <- brownNoise AR return (pan2 (decay2 d 0.04 0.3 * n) 0 1) -chain :: Monad m => Int -> (b -> m b) -> b -> m b-chain n f = foldl (>=>) return (replicate n f)- r_allpass :: UId m => UGen -> m UGen r_allpass i = do r <- clone 2 (rand 0.005 0.02)@@ -41,14 +38,8 @@ l7 = l6 + i return (mrg [l7,localOut l7]) --- > tank >>= Sound.SC3.UGen.Dot.draw tank :: UId m => m UGen-tank = do- s <- liftM2 (+) bang (mixFillM 8 (const pling))- s' <- chain 4 r_allpass s- tank_f s'+tank = tank_f =<< chainM 4 r_allpass =<< bang .+. mixFillM 8 (const pling) main :: IO ()-main = do- t <- tank- audition (out 0 t)+main = audition . out 0 =<< tank
@@ -1,8 +1,9 @@--- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} pling :: ID a => a -> UGen pling e =@@ -39,11 +40,10 @@ l7 = l6 + i in mrg [l7,localOut l7] --- > Sound.SC3.UGen.Dot.draw tank tank :: UGen tank =- let s = bang 'α' + mix (uclone 'β' 8 (pling 'β'))- in tank_f 'γ' (useq 'δ' 4 (r_allpass 'δ') s)+ let s = bang 'α' + mix (uclone 'β' 8 (pling 'γ'))+ in tank_f 'δ' (useq 'ε' 4 (r_allpass 'ζ') s) main :: IO () main = audition (out 0 tank)
@@ -0,0 +1,43 @@+-- tgb (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tgb :: UId m => UGen -> UGen -> m UGen+tgb b d = do+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ pm_t l r du t = let le = mkls l du+ re = mkls r du+ in tRand le re t+ wrp i = linLin i (-1) 1+ pm_n rt l du = do let le = mkls l du+ re = mkls l du+ n <- whiteNoise rt+ return (wrp n le re)+ gps <- pm_n AR [(0,400),(1,900)] d+ let t = impulse AR gps 0+ pm_f (l,r) = pm_t l r d t+ du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]+ ,[(0,0.009),(0.5,0.020),(1,0.009)])+ pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]+ ,[(0,-0.5),(0.5,0.5),(1,1.0)])+ rt <- pm_f ([(0,6),(0.5,12),(1,6)]+ ,[(0,12),(0.5,12),(1,12)])+ cs <- pm_f ([(0,0),(1,0.95)]+ ,[(0,0),(1,1)])+ am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]+ ,[(0,0.5),(0.5,0.75),(1,0.25)])+ let cs' = cs * bufDur KR b+ return (tGrains 2 t b rt cs' du pn am 2)++tgb_10_12 :: UId m => m UGen+tgb_10_12 = tgb 10 12++act :: (UId m,Transport m) => m ()+act = do+ let fn = "/home/rohan/data/audio/pf-c5.aif"+ _ <- async (b_allocRead 10 fn 0 0)+ play . out 0 =<< tgb_10_12++main :: IO ()+main = withSC3 act
@@ -1,41 +0,0 @@--- tgb (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< tgb 10 12-tgb :: UId m => UGen -> UGen -> m UGen-tgb b d = do- let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)- pm_t l r du t = let le = mkls l du- re = mkls r du- in tRand le re t- wrp i = linLin i (-1) 1- pm_n rt l du = do let le = mkls l du- re = mkls l du- n <- whiteNoise rt- return (wrp n le re)- gps <- pm_n AR [(0,400),(1,900)] d- let t = impulse AR gps 0- pm_f (l,r) = pm_t l r d t- du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]- ,[(0,0.009),(0.5,0.020),(1,0.009)])- pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]- ,[(0,-0.5),(0.5,0.5),(1,1.0)])- rt <- pm_f ([(0,6),(0.5,12),(1,6)]- ,[(0,12),(0.5,12),(1,12)])- cs <- pm_f ([(0,0),(1,0.95)]- ,[(0,0),(1,1)])- am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]- ,[(0,0.5),(0.5,0.75),(1,0.25)])- let cs' = cs * bufDur KR b- return (tGrains 2 t b rt cs' du pn am 2)--act :: (UId m,Transport m) => m ()-act = do- let fn = "/home/rohan/data/audio/pf-c5.aif"- _ <- async (b_allocRead 10 fn 0 0)- play . out 0 =<< tgb 10 12--main :: IO ()-main = withSC3 act
@@ -0,0 +1,62 @@+-- tgr-rpr (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+ n1 <- dwhite 1 lo hi+ n2 <- whiteNoise r+ d <- dseq dinf n1+ return (tDuty r d 0 DoNothing (abs n2) 1)++rpr :: UId m => UGen -> UGen -> m UGen+rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))++tgr_rpr :: (Functor m,UId m) => m UGen+tgr_rpr = do+ clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)+ rat <- rpr 2 clk+ dur <- rpr 4 clk+ pos <- fmap (* bufDur KR 10) (rpr 8 clk)+ pan <- rpr 10 clk+ amp <- rpr 6 clk+ return (tGrains 2 clk 10 rat pos dur pan amp 2)++preset :: [Double]+preset =+ [0.01,0.02+ ,0.95,1.05+ ,0.02,0.06+ ,0.6,0.7+ ,0.7,0.9+ ,-1.0,1.0]++rSet :: [(Double, Double)]+rSet =+ [(0.005,0.025),(0.05,0.25)+ ,(0.75,0.95),(1.05,1.25)+ ,(0.001,0.01),(0.02,0.04)+ ,(0.4,0.5),(0.7,0.8)+ ,(0.0,0.45),(0.55,1.0)+ ,(-1.0,0.0),(0.0,1.0)]++edit :: Transport m => m ()+edit = do+ s <- mapM (uncurry rrand) rSet+ send (c_setn [(0,s)])+ wait 0.35++run :: (UId m,Transport m) => m ()+run = do+ let sf = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async (b_allocRead 10 sf 0 0)+ send (c_setn [(0,preset)])+ play . out 0 =<< tgr_rpr+ wait 0.3+ _ <- sequence (replicate 64 edit)+ reset++main :: IO ()+main = withSC3 run
@@ -1,63 +0,0 @@--- tgr-rpr (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--dustR :: UId m => Rate -> UGen -> UGen -> m UGen-dustR r lo hi = do- n1 <- dwhite 1 lo hi- n2 <- whiteNoise r- d <- dseq dinf n1- return (tDuty r d 0 DoNothing (abs n2) 1)--rpr :: UId m => UGen -> UGen -> m UGen-rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))---- > Sound.SC3.UGen.Dot.draw =<< tgr_rpr-tgr_rpr :: (Functor m,UId m) => m UGen-tgr_rpr = do- clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)- rat <- rpr 2 clk- dur <- rpr 4 clk- pos <- fmap (* bufDur KR 10) (rpr 8 clk)- pan <- rpr 10 clk- amp <- rpr 6 clk- return (tGrains 2 clk 10 rat pos dur pan amp 2)--preset :: [Double]-preset =- [0.01,0.02- ,0.95,1.05- ,0.02,0.06- ,0.6,0.7- ,0.7,0.9- ,-1.0,1.0]--rSet :: [(Double, Double)]-rSet =- [(0.005,0.025),(0.05,0.25)- ,(0.75,0.95),(1.05,1.25)- ,(0.001,0.01),(0.02,0.04)- ,(0.4,0.5),(0.7,0.8)- ,(0.0,0.45),(0.55,1.0)- ,(-1.0,0.0),(0.0,1.0)]--edit :: Transport m => m ()-edit = do- s <- mapM (uncurry rrand) rSet- send (c_setn [(0,s)])- pauseThread 0.35--run :: (UId m,Transport m) => m ()-run = do- let sf = "/home/rohan/data/audio/pf-c5.snd"- _ <- async (b_allocRead 10 sf 0 0)- send (c_setn [(0,preset)])- play . out 0 =<< tgr_rpr- pauseThread 0.3- _ <- sequence (replicate 64 edit)- reset--main :: IO ()-main = withSC3 run
@@ -4,10 +4,8 @@ import qualified Music.Theory.Contour.Polansky_1992 as T {- hmt -} import qualified Music.Theory.Pitch as T import Sound.SC3 {- hsc3 -}-import qualified Sound.SC3.Lang.Control.Event as L {- hsc3-lang -}-import qualified Sound.SC3.Lang.Control.Instrument as L-import qualified Sound.SC3.Lang.Control.Pitch as L-import qualified Sound.SC3.Lang.Pattern.ID as L+import qualified Sound.SC3.Lang.Math as M+import Sound.SC3.Lang.Pattern {- hsc3-lang -} import Sound.OSC {- hosc -} -- | Happy birthday@@ -46,18 +44,19 @@ -- > withSC3 plain plain :: Transport m => m () plain = do- _ <- async (d_recv L.defaultInstrument)- let p = L.toP . concat- play (L.pbind [("degree",p hb_d - 1)- ,("octave",p hb_o + 1)- ,("dur",p hb_t / 16)])+ _ <- async (d_recv defaultSynthdef)+ let p :: [[Double]] -> P Field+ p = toP . map realToFrac . concat+ play (pbind [(K_degree,p hb_d - 1)+ ,(K_octave,p hb_o + 1)+ ,(K_dur,p hb_t / 16)]) -- | Pitch classes -- -- > tail hb_k == [[7,7,9,7,2,0],[7,7,7,4,0,11,9],[5,5,4,0,2,0]] hb_k :: Integral n => [[n]] hb_k =- let f = floor . L.degree_to_key [0,2,4,5,7,9,11] 12 . pred+ let f = floor . M.degreeToKey [0,2,4,5,7,9,11] 12 . pred in map (map f) (hb_d :: [[Double]]) -- | Midi note numbers@@ -172,14 +171,16 @@ -- -- > withSC3 (hear 1 (map cim "hiprty")) -- > withSC3 (hear 9 (map cim hb))-hear :: Transport m => L.P L.Value -> [Cim L.Value] -> m ()+hear :: Transport m => Double -> [Cim Double] -> m () hear blur x =- let (freq,dur,c) = unzip3 x- in play (ins_s,L.pbind [("freq",L.toP freq)- ,("dur",L.toP dur)- ,("legato",blur)- ,("amp",L.toP c * 0.1 + 0.1)- ,("loc",L.toP c * 2 - 1)])+ let (f,d,c) = unzip3 x+ p = toP . map realToFrac+ in play (pbind [(K_instr,psynth ins_s)+ ,(K_freq,p f)+ ,(K_dur,p d)+ ,(K_legato,p (repeat blur))+ ,(K_amp,p c * 0.1 + 0.1)+ ,(K_param "loc",p c * 2 - 1)]) main :: IO () main = withSC3 (hear 9 ph)
@@ -0,0 +1,18 @@+-- three-cpsw (rd)++import Sound.SC3.Monad {- hsc3 -}++three_cpsw :: UId m => m UGen+three_cpsw = do+ t <- dust KR (mce2 12 18)+ f0 <- tRand 1 64 t+ f1 <- lfNoise0 KR f0+ a <- tRand 0.0 0.5 t+ dt <- tRand 0.975 1.025 t+ dh <- tRand 0.750 0.7505 t+ let f = f1 * mce2 9000 12000 + 9500+ o = saw AR f + saw AR (f * dh) + saw AR (f * dt)+ return (clip2 (o * a) 0.75)++main :: IO ()+main = audition . out 0 =<< three_cpsw
@@ -1,19 +0,0 @@--- three-cpsw (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< three_cpsw-three_cpsw :: UId m => m UGen-three_cpsw = do- t <- dust KR (mce2 12 18)- f0 <- tRand 1 64 t- f1 <- lfNoise0 KR f0- a <- tRand 0.0 0.5 t- dt <- tRand 0.975 1.025 t- dh <- tRand 0.750 0.7505 t- let f = f1 * mce2 9000 12000 + 9500- o = saw AR f + saw AR (f * dh) + saw AR (f * dt)- return (clip2 (o * a) 0.75)--main :: IO ()-main = audition . out 0 =<< three_cpsw
@@ -6,9 +6,9 @@ tipnso = let x = mouseX KR 1 32 Linear 0.1 t = impulse AR x 0- n1 = tIRand 'a' 16 72 t- n2 = tIRand 'a' 0 1 t- n3 = pinkNoise 'a' AR+ n1 = tIRand 'α' 16 72 t+ n2 = tIRand 'β' 0 1 t+ n3 = pinkNoise 'γ' AR e = decay2 t 0.01 (mce2 0.1 0.15) f = midiCPS (n1 + 36 + (12 * n2)) s = sinOsc AR f 0 * e
@@ -0,0 +1,32 @@+-- tr-out (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tr_nd :: UId m => UGen -> m (UGen,UGen)+tr_nd n = do+ t <- dust KR 1.6+ r1 <- tRand 0 6 t+ r2 <- tRand 0 6 t+ r3 <- tRand 0 6 t+ let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)+ p = bufRdN 1 KR 1 r2 NoLoop+ a = bufRdN 1 KR 2 r3 NoLoop+ return (pan2 (sinOsc AR f 0) p a+ ,sendTrig t n (f / 660))++tr_out :: UId m => m UGen+tr_out = do+ ns <- mapM tr_nd [1..4]+ let o = sum (map fst ns)+ return (mrg (o : map snd ns))++act :: (UId m,Transport m) => m ()+act = do+ _ <- async (b_alloc_setn1 0 0 [60,62,64,65,67,69])+ _ <- async (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])+ _ <- async (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])+ play . out 0 =<< tr_out++main :: IO ()+main = withSC3 act
@@ -1,33 +0,0 @@--- tr-out (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}--tr_nd :: UId m => UGen -> m (UGen,UGen)-tr_nd n = do- t <- dust KR 1.6- r1 <- tRand 0 6 t- r2 <- tRand 0 6 t- r3 <- tRand 0 6 t- let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)- p = bufRdN 1 KR 1 r2 NoLoop- a = bufRdN 1 KR 2 r3 NoLoop- return (pan2 (sinOsc AR f 0) p a- ,sendTrig t n (f / 660))---- > Sound.SC3.UGen.Dot.draw =<< tr_out-tr_out :: UId m => m UGen-tr_out = do- ns <- mapM tr_nd [1..4]- let o = sum (map fst ns)- return (mrg (o : map snd ns))--act :: (UId m,Transport m) => m ()-act = do- _ <- async (b_alloc_setn1 0 0 [60,62,64,65,67,69])- _ <- async (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])- _ <- async (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])- play . out 0 =<< tr_out--main :: IO ()-main = withSC3 act
@@ -24,9 +24,9 @@ let time = 24 loc = let e = Envelope [-0.8,0.8] [time + 2] [EnvSin,EnvSin] Nothing Nothing in envGen AR 1 1 0 1 RemoveSynth e- n1 = whiteNoise 'a' AR- n2 = pinkNoise 'b' AR- n3 = whiteNoise 'c' AR+ n1 = whiteNoise 'α' AR+ n2 = pinkNoise 'β' AR+ n3 = whiteNoise 'γ' AR in pan2 (steam time n1 n2 + whistle time n3) loc 1 main :: IO ()
@@ -0,0 +1,17 @@+-- tremulate (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++tremulate :: UId m => m UGen+tremulate = do+ let o = fSinOsc AR (#(rand 500 900) * mce [1,1.2,1.5,1.8]) 0+ n <- clone 4 (lfNoise2 KR #(rand 30 90))+ return (mix (pan2 o #(clone 4 (rand (-1) 1)) (max 0 (n * 0.1))))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do xfadeTextureU_pp (0.5,2,maxBound) #(tremulate) 2 tremulate_pp
@@ -3,7 +3,6 @@ import Sound.SC3.Monad {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw =<< tremulate tremulate :: UId m => m UGen tremulate = do f <- rand 500 900
@@ -2,16 +2,15 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw tremulate tremulate :: UGen tremulate =- let f = rand 'a' 500 900+ let f = rand 'α' 500 900 o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0- r = randN 4 'a' 30 90- a = max 0 (lfNoise2 'a' KR r) * 0.1- l = randN 4 'a' (-1) 1+ r = randN 4 'β' 30 90+ a = max 0 (lfNoise2 'γ' KR r) * 0.1+ l = randN 4 'δ' (-1) 1 in mix (pan2 o l a) tremulate_pp :: UGen -> UGen
@@ -0,0 +1,35 @@+-- trkl (rd)++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+trkl d ul fu dy la fy = do+ let tf = xLine KR 1 ul d RemoveSynth+ st = impulse AR (tf * 8) 0+ t = impulse AR tf 0+ r0 <- rand (-1) 1+ r1 <- rand (-1) 1+ r2 <- tRand 0.05 1.0 t+ r3 <- tExpRand 0.001 0.25 st -- non-zero minima+ fh <- tRand 1.75 2.25 t+ let a = dbAmp (line KR 12 la d RemoveSynth)+ f = xLine KR fu 900 d RemoveSynth+ p = line KR r0 r1 d RemoveSynth+ o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)+ o2 = mix (saw AR (mce2 f (f * fh)))+ return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)++-- > audition . out 0 =<< trkl_r+trkl_r :: UId m => m UGen+trkl_r = do+ d <- rand 0.5 16+ ul <- rand 16 64+ fu <- rand 1200 9000+ dy <- rand 0.005 0.175+ la <- rand (-60) (-25)+ fy <- rand 0.015 0.125+ trkl d ul fu dy la fy++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< trkl_r
@@ -1,36 +0,0 @@--- trkl (rd)--import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}-import Sound.SC3.Monad {- hsc3 -}--trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen-trkl d ul fu dy la fy = do- let tf = xLine KR 1 ul d RemoveSynth- st = impulse AR (tf * 8) 0- t = impulse AR tf 0- r0 <- rand (-1) 1- r1 <- rand (-1) 1- r2 <- tRand 0.05 1.0 t- r3 <- tExpRand 0.001 0.25 st -- non-zero minima- fh <- tRand 1.75 2.25 t- let a = dbAmp (line KR 12 la d RemoveSynth)- f = xLine KR fu 900 d RemoveSynth- p = line KR r0 r1 d RemoveSynth- o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)- o2 = mix (saw AR (mce2 f (f * fh)))- return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)---- > Sound.SC3.UGen.Dot.draw =<< trkl_r--- > audition . out 0 =<< trkl_r-trkl_r :: UId m => m UGen-trkl_r = do- d <- rand 0.5 16- ul <- rand 16 64- fu <- rand 1200 9000- dy <- rand 0.005 0.175- la <- rand (-60) (-25)- fy <- rand 0.015 0.125- trkl d ul fu dy la fy--main :: IO ()-main = overlapTextureU (5,2,12,maxBound) =<< trkl_r
@@ -0,0 +1,52 @@+-- trmlo-u (rd)++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition (out 0 trmlo)+trmlo :: UGen+trmlo =+ let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+ mWrp1 i m = mWrp i m (m + 1)+ mWrpN i m n = mWrp i m (m + n)+ o1 = let f = 5+ d = 3+ s = envSine d 0.1+ e = envGen KR 1 1 0 1 DoNothing s+ n = 65+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o2 = let f = iRand 5 9+ d = iRand 5 9+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o3 = let f = iRand 5 9+ d = iRand 9 12+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 1 5) d DoNothing+ in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+ o4 = let f = iRand 5 18+ d = iRand 12 15+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 5e-2 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 1 5) d RemoveSynth+ fr = mWrpN m (n + l) (iRand 1 5)+ in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+ in o1 + o2 + o3 + o4++main :: IO ()+main = do+ let s = synthdef "trmlo" (out 0 trmlo)+ p = pbind [(K_instr,psynth s)+ ,(K_dur,pxrand 'α' [0.25,0.5,1,2,4] inf)+ ,(K_legato,1.25)]+ audition p
@@ -1,8 +1,7 @@--- trmlo+-- trmlo (rd) -import Sound.SC3 {- hsc3 -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} -- > audition (out 0 trmlo) trmlo :: UGen@@ -17,33 +16,36 @@ n = 65 m = sinOsc KR f 0 in pan2 (sinOsc AR (mWrp1 m n) 0) m e- o2 = let f = iRand 5 9- d = iRand 5 9- s = envSine d (rand 0.1 0.2)+ o2 = let f = iRand 'α' 5 9+ d = iRand 'β' 5 9+ s = envSine d (rand 'γ' 0.1 0.2) e = envGen KR 1 1 0 1 DoNothing s- n = iRand 69 72+ n = iRand 'δ' 69 72 m = sinOsc KR f 0 in pan2 (sinOsc AR (mWrp1 m n) 0) m e- o3 = let f = iRand 5 9- d = iRand 9 12- s = envSine d (rand 0.1 0.2)+ o3 = let f = iRand 'ε' 5 9+ d = iRand 'ζ' 9 12+ s = envSine d (rand 'η' 0.1 0.2) e = envGen KR 1 1 0 1 DoNothing s- n = iRand 69 72+ n = iRand 'θ' 69 72 m = sinOsc KR f 0- l = line KR 0 (iRand 1 5) d DoNothing+ l = line KR 0 (iRand 'ι' 1 5) d DoNothing in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e- o4 = let f = iRand 5 18- d = iRand 12 15- s = envSine d (rand 0.1 0.2)+ o4 = let f = iRand 'κ' 5 18+ d = iRand 'λ' 12 15+ s = envSine d (rand 'μ' 0.1 0.2) e = envGen KR 1 5e-2 0 1 DoNothing s- n = iRand 69 72+ n = iRand 'ν' 69 72 m = sinOsc KR f 0- l = line KR 0 (iRand 1 5) d RemoveSynth- fr = mWrpN m (n + l) (iRand 1 5)- in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+ l = line KR 0 (iRand 'ξ' 1 5) d RemoveSynth+ fr = mWrpN m (n + l) (iRand 'ο' 1 5)+ in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 'π' 2 24))) m e in o1 + o2 + o3 + o4 main :: IO () main = do let s = synthdef "trmlo" (out 0 trmlo)- audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2,4] inf)])+ p = pbind [(K_instr,psynth s)+ ,(K_dur,pxrand 'ρ' [0.25,0.5,1,2,4] inf)+ ,(K_legato,1.25)]+ audition p
@@ -0,0 +1,17 @@+-- uplink (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++uplink :: UId m => m UGen+uplink = do+ let p0 = do return (lfPulse KR #(rand 0 20) 0 #(rand 0 1))+ let p1 = do return (lfPulse KR #(rand 0 4) 0 #(rand 0 1)+ * #(rand 0 8000)+ + #(rand 0 2000))+ f <- fmap mix (clone 2 (p0 .*. p1))+ return (pan2 (lfPulse AR f 0 0.5 * 0.04) #(rand (-0.8) 0.8) 1)++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) =<< uplink
@@ -7,14 +7,13 @@ randz :: ID a => a -> UGen -> UGen randz e = rand e 0 --- > Sound.SC3.UGen.Dot.draw uplink uplink :: UGen uplink = let r = randz- p0 = lfPulse KR (r 'α' 20) 0 (r 'α' 1)- p1 = lfPulse KR (r 'β' 4) 0 (r 'β' 1) * r 'β' 8000 + r 'β' 2000- f = mix (uclone 'γ' 2 (p0 * p1))- in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'δ' (-0.8) 0.8) 1+ p0 = lfPulse KR (r 'α' 20) 0 (r 'β' 1)+ p1 = lfPulse KR (r 'γ' 4) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+ f = mix (uclone 'η' 2 (p0 * p1))+ in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'θ' (-0.8) 0.8) 1 main :: IO () main = overlapTextureU (4,1,5,maxBound) uplink
@@ -2,7 +2,7 @@ import Control.Monad {- base -} import qualified Data.ByteString.Lazy as B {- bytestring -}-import Sound.OpenSoundControl.Coding.Byte {- hosc -}+import Sound.OSC.Coding.Byte {- hosc -} import Sound.SC3 {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} import System.IO {- base -}
@@ -1,10 +1,10 @@ -- vla-adttn-sharc (rd) -import Data.List+import Data.List {- base -} import Sound.Analysis.SHARC {- hsharc -} import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} type R = Double type R3 = (R,R,R)@@ -31,18 +31,18 @@ let m = n * 2 ampl = bufRdN 1 KR 0 m NoLoop ph = bufRdN 1 KR 0 (m + 1) NoLoop- o = let dt' = lfNoise1 'a' KR 1 * dt + 1.0+ o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0 in fSinOsc AR (fr * (n + 1) * dt') ph e = linen (impulse KR 0 0)- (rise * rand 'a' 0.75 1.25)+ (rise * rand 'β' 0.75 1.25) ampl- (fall * rand 'b' 0.75 1.25)+ (fall * rand 'γ' 0.75 1.25) DoNothing in o * e vla_plyr :: UGen -> UGen vla_plyr n =- let a = control KR "ampl" 0.1+ let a = control KR "amp" 0.1 f = control KR "freq" 129.897 rs = control KR "rise" 0.1 fa = control KR "fall" 0.5@@ -55,22 +55,24 @@ plyr36 :: Synthdef plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36)) -pattern :: [(String,P Double)]+pattern :: P_Bind pattern =- [("loc",pwhite 'a' (-1) 1 inf)- ,("ampl",pwhite 'b' 0.05 0.1 inf)- ,("degree",prand 'c' [0,1,2,3,4,5,6,7,8] inf)- ,("octave",prand 'd' [2,3] inf)- ,("dt",pwhite 'e' 0.001 0.005 inf)- ,("rise",pwhite 'f' 1 2 inf)- ,("fall",pwhite 'g' 4 7 inf)- ,("dur",prand 'h' [3,5] inf)]+ [(K_instr,pinstr "plyr36")+ ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+ ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+ ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+ ,(K_octave,prand 'η' [2,3] inf)+ ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+ ,(K_param "rise",pwhite 'ι' 1 2 inf)+ ,(K_param "fall",pwhite 'κ' 4 7 inf)+ ,(K_dur,prand 'λ' [3,5] inf)] act :: Transport m => FilePath -> m () act fn = do v <- vla fn _ <- async (b_alloc_setn1 0 0 (vla_prep v))- play (plyr36,pbind pattern)+ _ <- async (d_recv plyr36)+ play (pbind pattern) main :: IO () main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
@@ -2,7 +2,7 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} type R = Double type R2 = (R,R)@@ -101,18 +101,18 @@ let m = n * 2 ampl = bufRdN 1 KR 0 m NoLoop ph = bufRdN 1 KR 0 (m + 1) NoLoop- o = let dt' = lfNoise1 'a' KR 1 * dt + 1.0+ o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0 in fSinOsc AR (fr * (n + 1) * dt') ph e = linen (impulse KR 0 0)- (rise * rand 'a' 0.75 1.25)+ (rise * rand 'β' 0.75 1.25) ampl- (fall * rand 'b' 0.75 1.25)+ (fall * rand 'γ' 0.75 1.25) DoNothing in o * e vla_plyr :: UGen -> UGen vla_plyr n =- let a = control KR "ampl" 0.1+ let a = control KR "amp" 0.1 f = control KR "freq" 129.897 rs = control KR "rise" 0.1 fa = control KR "fall" 0.5@@ -125,21 +125,23 @@ plyr36 :: Synthdef plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36)) -pattern :: [(String,P Double)]+pattern :: P_Bind pattern =- [("loc",pwhite 'a' (-1) 1 inf)- ,("ampl",pwhite 'b' 0.05 0.1 inf)- ,("degree",prand 'c' [0,1,2,3,4,5,6,7,8] inf)- ,("octave",prand 'd' [2,3] inf)- ,("dt",pwhite 'e' 0.001 0.005 inf)- ,("rise",pwhite 'f' 1 2 inf)- ,("fall",pwhite 'g' 4 7 inf)- ,("dur",5)]+ [(K_instr,pinstr "plyr36")+ ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+ ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+ ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+ ,(K_octave,prand 'η' [2,3] inf)+ ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+ ,(K_param "rise",pwhite 'ι' 1 2 inf)+ ,(K_param "fall",pwhite 'κ' 4 7 inf)+ ,(K_dur,5)] act :: Transport m => m () act = do _ <- async (b_alloc_setn1 0 0 vla_prep)- play (plyr36,pbind pattern)+ _ <- async (d_recv plyr36)+ play (pbind pattern) main :: IO () main = withSC3 act
@@ -0,0 +1,149 @@+-- vlc-distrtn (rd)+-- caution - audio feedback graph++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}++prep :: (Double,Double) -> [Double]+prep (ampl,phase) = [dbAmp ampl,phase]++partial :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+partial b i freq detune fall n = do+ n0 <- lfNoise1 KR 1+ n1 <- rand 0.75 1.25+ let m = n * 2+ ampl = bufRdN 1 KR b m NoLoop+ f = freq * (n + 1) * (n0 * detune + 1)+ return (ringz i f (fall * n1) * ampl)++plyr :: UId m => UGen -> UGen -> m UGen+plyr i n = do+ let ctl = control KR+ buf = ctl "buf" 0+ iamp = ctl "iamp" 0.1+ ampl = ctl "ampl" 0.1+ freq = ctl "freq" 129.897+ fall = ctl "fall" 0.5+ loc = ctl "loc" 0.0+ detune = ctl "detune" 0.001+ s <- mapM (partial buf (i * iamp) freq detune fall) [0 .. n-1]+ return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1))++degree_to_key :: Int -> [Int] -> Int -> Int+degree_to_key degree scale steps =+ let scale_n = length scale+ in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))++getCps :: (Transport m,UnaryOp b) => [b] -> m b+getCps b = do+ b_ <- L.choose b+ d <- L.choose [0 .. 8]+ let k = degree_to_key d [0,2,3,5,7,8,10] 12+ return (midiCPS (b_ + realToFrac k))++pattern :: Transport m => m ()+pattern = do+ f <- getCps [24,36,48,55,60]+ ia <- L.rrand 0.05 0.75+ l <- L.rrand (-1) 1+ a <- L.rrand 0.05 0.1+ d <- L.rrand 0.001 0.005+ fl <- L.rrand 1 7+ send (n_set 1002 [("freq",f)+ ,("iamp",ia)+ ,("buf",0)+ ,("loc",l)+ ,("ampl",a)+ ,("detune",d)+ ,("fall",fl)])+ wait =<< L.choose [0.25,0.5,0.75,1.5]++run :: (Transport m,UId m) => m ()+run = do+ _ <- async (b_alloc 0 (length vlc * 2) 1)+ send (b_setn1 0 0 (concatMap prep vlc))+ let i = soundIn 4+ _ <- async . d_recv . synthdef "plyr48" =<< plyr i 48+ send (s_new "plyr48" 1002 AddToTail 1 [])+ sequence_ (replicate 32 pattern)++main :: IO ()+main = withSC3 run++vlc :: [(Double,Double)]+vlc = [(0.00000,1.85550)+ ,(-9.92383,-0.65147)+ ,(-8.74205,-0.74728)+ ,(-3.70464,-1.39796)+ ,(-9.43435,-1.14812)+ ,(-25.84790,-1.03375)+ ,(-16.99500,-2.41724)+ ,(-29.17040,2.67419)+ ,(-26.82750,-1.61810)+ ,(-18.59870,1.34568)+ ,(-19.72160,-2.85972)+ ,(-29.43650,0.54603)+ ,(-23.63120,-1.47813)+ ,(-28.20100,-1.98501)+ ,(-41.20700,-1.11808)+ ,(-33.14310,-2.19369)+ ,(-31.54010,1.43134)+ ,(-47.62740,1.28571)+ ,(-28.79740,-1.03754)+ ,(-34.97950,0.37740)+ ,(-39.05770,-0.57557)+ ,(-38.84060,2.34836)+ ,(-40.18090,-0.96978)+ ,(-47.32150,2.14768)+ ,(-45.49290,2.52100)+ ,(-40.57100,-1.39905)+ ,(-47.19530,-2.23994)+ ,(-50.80920,2.97853)+ ,(-48.13640,0.46815)+ ,(-58.56890,-1.01821)+ ,(-57.81200,-3.08971)+ ,(-47.96870,-0.48657)+ ,(-43.96100,-0.10311)+ ,(-50.49810,-2.80977)+ ,(-50.61640,-0.17212)+ ,(-60.64640,-1.02433)+ ,(-58.03410,1.06921)+ ,(-55.46390,-2.04501)+ ,(-54.31000,-1.53512)+ ,(-52.78670,-1.49875)+ ,(-57.99380,0.17697)+ ,(-56.76990,2.28241)+ ,(-54.17450,-1.85553)+ ,(-62.58220,-2.40971)+ ,(-59.86460,1.04782)+ ,(-61.58570,1.56183)+ ,(-52.62080,1.68360)+ ,(-49.82940,-1.11019)+ ,(-56.18160,-0.78538)+ ,(-57.73320,-2.23918)+ ,(-49.87560,3.09604)+ ,(-51.00100,-0.53762)+ ,(-59.71530,0.99017)+ ,(-65.73280,2.43855)+ ,(-73.01270,-0.90664)+ ,(-61.81450,-0.53346)+ ,(-65.58980,1.51174)+ ,(-75.94320,-3.06072)+ ,(-65.22210,-1.49937)+ ,(-70.79970,-2.96199)+ ,(-64.72450,1.78172)+ ,(-73.24130,0.26939)+ ,(-66.17110,-0.23305)+ ,(-61.32910,-3.12592)+ ,(-66.98180,0.64700)+ ,(-65.23060,-2.94395)+ ,(-70.13430,1.29805)+ ,(-68.43470,-1.35906)+ ,(-71.33000,-2.71582)+ ,(-86.90080,2.11646)+ ,(-74.97450,2.76118)+ ,(-68.02520,0.94979)+ ,(-67.32960,3.05994)+ ,(-67.32140,-2.79905)+ ,(-68.22010,-2.33831)]
@@ -1,149 +0,0 @@--- vlc-distrtn (rd)--- caution - audio feedback graph--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}--prep :: (Double,Double) -> [Double]-prep (ampl,phase) = [dbAmp ampl,phase]--partial :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen-partial b i freq detune fall n = do- n0 <- lfNoise1 KR 1- n1 <- rand 0.75 1.25- let m = n * 2- ampl = bufRdN 1 KR b m NoLoop- f = freq * (n + 1) * (n0 * detune + 1)- return (ringz i f (fall * n1) * ampl)--plyr :: UId m => UGen -> UGen -> m UGen-plyr i n = do- let ctl = control KR- buf = ctl "buf" 0- iamp = ctl "iamp" 0.1- ampl = ctl "ampl" 0.1- freq = ctl "freq" 129.897- fall = ctl "fall" 0.5- loc = ctl "loc" 0.0- detune = ctl "detune" 0.001- s <- mapM (partial buf (i * iamp) freq detune fall) [0 .. n-1]- return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1))--degree_to_key :: Int -> [Int] -> Int -> Int-degree_to_key degree scale steps =- let scale_n = length scale- in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))--getCps :: (Transport m,UnaryOp b) => [b] -> m b-getCps b = do- b_ <- L.choose b- d <- L.choose [0 .. 8]- let k = degree_to_key d [0,2,3,5,7,8,10] 12- return (midiCPS (b_ + realToFrac k))--pattern :: Transport m => m ()-pattern = do- f <- getCps [24,36,48,55,60]- ia <- L.rrand 0.05 0.75- l <- L.rrand (-1) 1- a <- L.rrand 0.05 0.1- d <- L.rrand 0.001 0.005- fl <- L.rrand 1 7- send (n_set 1002 [("freq",f)- ,("iamp",ia)- ,("buf",0)- ,("loc",l)- ,("ampl",a)- ,("detune",d)- ,("fall",fl)])- pauseThread =<< L.choose [0.25,0.5,0.75,1.5]--run :: (Transport m,UId m) => m ()-run = do- _ <- async (b_alloc 0 (length vlc * 2) 1)- send (b_setn1 0 0 (concatMap prep vlc))- let i = soundIn 4- _ <- async . d_recv . synthdef "plyr48" =<< plyr i 48- send (s_new "plyr48" 1002 AddToTail 1 [])- sequence_ (replicate 32 pattern)--main :: IO ()-main = withSC3 run--vlc :: [(Double,Double)]-vlc = [(0.00000,1.85550)- ,(-9.92383,-0.65147)- ,(-8.74205,-0.74728)- ,(-3.70464,-1.39796)- ,(-9.43435,-1.14812)- ,(-25.84790,-1.03375)- ,(-16.99500,-2.41724)- ,(-29.17040,2.67419)- ,(-26.82750,-1.61810)- ,(-18.59870,1.34568)- ,(-19.72160,-2.85972)- ,(-29.43650,0.54603)- ,(-23.63120,-1.47813)- ,(-28.20100,-1.98501)- ,(-41.20700,-1.11808)- ,(-33.14310,-2.19369)- ,(-31.54010,1.43134)- ,(-47.62740,1.28571)- ,(-28.79740,-1.03754)- ,(-34.97950,0.37740)- ,(-39.05770,-0.57557)- ,(-38.84060,2.34836)- ,(-40.18090,-0.96978)- ,(-47.32150,2.14768)- ,(-45.49290,2.52100)- ,(-40.57100,-1.39905)- ,(-47.19530,-2.23994)- ,(-50.80920,2.97853)- ,(-48.13640,0.46815)- ,(-58.56890,-1.01821)- ,(-57.81200,-3.08971)- ,(-47.96870,-0.48657)- ,(-43.96100,-0.10311)- ,(-50.49810,-2.80977)- ,(-50.61640,-0.17212)- ,(-60.64640,-1.02433)- ,(-58.03410,1.06921)- ,(-55.46390,-2.04501)- ,(-54.31000,-1.53512)- ,(-52.78670,-1.49875)- ,(-57.99380,0.17697)- ,(-56.76990,2.28241)- ,(-54.17450,-1.85553)- ,(-62.58220,-2.40971)- ,(-59.86460,1.04782)- ,(-61.58570,1.56183)- ,(-52.62080,1.68360)- ,(-49.82940,-1.11019)- ,(-56.18160,-0.78538)- ,(-57.73320,-2.23918)- ,(-49.87560,3.09604)- ,(-51.00100,-0.53762)- ,(-59.71530,0.99017)- ,(-65.73280,2.43855)- ,(-73.01270,-0.90664)- ,(-61.81450,-0.53346)- ,(-65.58980,1.51174)- ,(-75.94320,-3.06072)- ,(-65.22210,-1.49937)- ,(-70.79970,-2.96199)- ,(-64.72450,1.78172)- ,(-73.24130,0.26939)- ,(-66.17110,-0.23305)- ,(-61.32910,-3.12592)- ,(-66.98180,0.64700)- ,(-65.23060,-2.94395)- ,(-70.13430,1.29805)- ,(-68.43470,-1.35906)- ,(-71.33000,-2.71582)- ,(-86.90080,2.11646)- ,(-74.97450,2.76118)- ,(-68.02520,0.94979)- ,(-67.32960,3.05994)- ,(-67.32140,-2.79905)- ,(-68.22010,-2.33831)]
@@ -0,0 +1,38 @@+-- voscil-u (rd)++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++-- > Sound.SC3.UGen.Dot.draw (voscil 32)+voscil :: Real a => a -> UGen+voscil b =+ let lfn = lfNoise0 KR+ hb = (constant b - 1) / 2+ rt = 6+ f = 600+ v = vOsc AR (lfn rt * hb + hb) (f * 2) 0+ o = let bf = lfn rt * 40 + 600+ nh = lfn rt * 16 + 24+ in blip AR bf nh * (lfn rt * 0.1 + 0.1)+ p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+ w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+ q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+ in p + q++run :: Transport m => m ()+run = do+ let bn = 8192 * 4+ b = 32+ r_set i =+ do m <- rrand 2 512+ j <- sequence (replicate m (rrand 0 bn))+ k <- sequence (replicate m (rrand (-1) 1))+ _ <- async (b_alloc i bn 1)+ send (b_set i (zip j k))+ mapM_ r_set [0 .. (b - 1)]+ play (out 0 (voscil b))++main :: IO ()+main = withSC3 run
@@ -1,24 +1,23 @@ -- voscil (rd) import Sound.OSC {- hosc -}-import Sound.SC3 {- hsc3 -}+import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Random.IO {- hsc3-lang -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -} -- > Sound.SC3.UGen.Dot.draw (voscil 32) voscil :: Real a => a -> UGen voscil b =- let lfn = lfNoise0 KR+ let lfn z = lfNoise0 z KR hb = (constant b - 1) / 2 rt = 6 f = 600- v = vOsc AR (lfn rt * hb + hb) (f * 2) 0- o = let bf = lfn rt * 40 + 600- nh = lfn rt * 16 + 24- in blip AR bf nh * (lfn rt * 0.1 + 0.1)- p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+ v = vOsc AR (lfn 'α' rt * hb + hb) (f * 2) 0+ o = let bf = lfn 'β' rt * 40 + 600+ nh = lfn 'γ' rt * 16 + 24+ in blip AR bf nh * (lfn 'δ' rt * 0.1 + 0.1)+ p = pan2 (v + o) (lfn 'ε' rt) (lfn 'ζ' rt * 0.5 + 0.5) w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0- q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+ q = pan2 w (lfn 'η' rt) (lfn 'θ' rt * 0.5 + 0.5) in p + q run :: Transport m => m ()
@@ -15,17 +15,14 @@ latency = 0.15 -- | Add t to timestamp.-offset :: Double -> Bundle -> Bundle-offset t b =- case b of- Bundle (UTCr t0) m -> Bundle (UTCr (t + t0)) m- _ -> error "offset:non-UTCr bundle"+offset :: Time -> Bundle -> Bundle+offset t (Bundle t0 m) = Bundle (t + t0) m -- | Play non-empty set of osc bundles. play_set :: Transport m => [Bundle] -> m () play_set [] = error "play_set:empty" play_set (x:xs) = do- let (Bundle (UTCr t) _) = x+ let (Bundle t _) = x pauseThreadUntil (t - latency) mapM_ sendBundle (x:xs) @@ -33,7 +30,7 @@ play_sets :: Transport m => [[Bundle]] -> m () play_sets [] = return () play_sets s = do- t <- utcr+ t <- time mapM_ (play_set . map (offset t)) s -- | Split l into chunks of at most n elements.@@ -114,7 +111,7 @@ mk_score sr repeats w = let durations = zipWith (\(s, e) r -> (e - s) * r / sr) w repeats start_times = scanl (+) 0 durations- mk_elem (s,e) t d = Bundle (UTCr t) [mk_msg 10 s e d]+ mk_elem (s,e) t d = Bundle t [mk_msg 10 s e d] in zipWith3 mk_elem w start_times durations -- | n randomly chosen elements of w.@@ -136,7 +133,7 @@ sr = fromIntegral (F.sampleRate hdr) b = cs !! 0 w = ws (prune 64 0 (fzc 0 b))- pl s = play_score 10 s >> pauseThread 1+ pl s = play_score 10 s >> wait 1 post = liftIO . putStrLn post ("#f: " ++ show (nc, nf, sr)) post ("#w: " ++ show (length w)) -- force w
@@ -0,0 +1,24 @@+-- what was i thinking? (jmcc)++import Sound.SC3.Monad {- hsc3 -}++what_was_i_thinking :: UId m => m UGen+what_was_i_thinking = do+ n0 <- lfNoise1 KR 0.2+ n1 <- lfNoise1 KR 0.157+ let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04+ i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500+ d = decay i 2+ f = max (sinOsc KR 4 0 + 80) d+ z = rlpf p (n0 * 2000 + 2400) 0.2+ c x = do r <- rand 0 0.3+ n <- lfNoise1 KR r+ return (combL x 0.06 (n * 0.025 + 0.035) 1)+ y = z * 0.6+ z0 <- clone 2 (c y)+ z1 <- clone 2 (c y)+ return (z + mce [mix z0,mix z1])++main :: IO ()+main = audition . out 0 =<< what_was_i_thinking+
@@ -1,25 +0,0 @@--- what was i thinking? (jmcc)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< what_was_i_thinking-what_was_i_thinking :: UId m => m UGen-what_was_i_thinking = do- n0 <- lfNoise1 KR 0.2- n1 <- lfNoise1 KR 0.157- let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04- i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500- d = decay i 2- f = max (sinOsc KR 4 0 + 80) d- z = rlpf p (n0 * 2000 + 2400) 0.2- c x = do r <- rand 0 0.3- n <- lfNoise1 KR r- return (combL x 0.06 (n * 0.025 + 0.035) 1)- y = z * 0.6- z0 <- clone 2 (c y)- z1 <- clone 2 (c y)- return (z + mce [mix z0,mix z1])--main :: IO ()-main = audition . out 0 =<< what_was_i_thinking-
@@ -2,18 +2,17 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw why_supercollider why_supercollider :: UGen why_supercollider =- let r = resonz (dust 'α' AR 0.2 * 50) (rand 'α' 200 3200) 0.003- s = mix (uclone 'α' 10 r)+ let r = resonz (dust 'α' AR 0.2 * 50) (rand 'β' 200 3200) 0.003+ s = mix (uclone 'γ' 10 r) z = delayN s 0.048 0.048- c = combL z 0.1 (lfNoise1 'α' KR (rand 'α' 0 0.1) * 0.04 + 0.05) 15- y = mix (uclone 'α' 7 c)- f i = allpassN i 0.050 (randN 2 'α' 0 0.05) 1- x = useq 'α' 4 f y+ c = combL z 0.1 (lfNoise1 'δ' KR (rand 'ε' 0 0.1) * 0.04 + 0.05) 15+ y = mix (uclone 'ζ' 7 c)+ f i = allpassN i 0.050 (randN 2 'η' 0 0.05) 1+ x = useq 'θ' 4 f y in out 0 (s + 0.2 * x) main :: IO ()
@@ -0,0 +1,26 @@+-- wial (rd)++import Sound.SC3.Monad {- hsc3 -}++wial :: (Functor m,UId m) => m UGen+wial = do+ let pls c d f = do let t = pulseDivider c d 0+ e = decay2 t 0.05 0.75+ o = sinOsc AR (toggleFF t * f + f * 2) 0+ n0 <- tIRand 0 1 t+ return (o * e * n0 * 0.5)+ smpl f = [(4,6,f,0.75)+ ,(2,6,f * 2,0.75)+ ,(1,2,f * 16,0.025)+ ,(1,5,f * 64,0.005)+ ,(1,4,f * 128,0.035)+ ,(1,3,f * 256,0.15)+ ,(2,3,f * 512,0.35)]+ plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)+ clk = impulse AR 16 0+ n0 <- dust KR 2+ f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0+ fmap sum (mapM (plss clk) (smpl f))++main :: IO ()+main = audition . out 0 =<< wial
@@ -1,27 +0,0 @@--- wial (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< wial-wial :: (Functor m,UId m) => m UGen-wial = do- let pls c d f = do let t = pulseDivider c d 0- e = decay2 t 0.05 0.75- o = sinOsc AR (toggleFF t * f + f * 2) 0- n0 <- tIRand 0 1 t- return (o * e * n0 * 0.5)- smpl f = [(4,6,f,0.75)- ,(2,6,f * 2,0.75)- ,(1,2,f * 16,0.025)- ,(1,5,f * 64,0.005)- ,(1,4,f * 128,0.035)- ,(1,3,f * 256,0.15)- ,(2,3,f * 512,0.35)]- plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)- clk = impulse AR 16 0- n0 <- dust KR 2- f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0- return.sum =<< mapM (plss clk) (smpl f)--main :: IO ()-main = audition . out 0 =<< wial
@@ -4,7 +4,6 @@ import Sound.SC3.Monad {- hsc3 -} -- > audition . out 0 =<< wind_metals--- > Sound.SC3.UGen.Dot.draw =<< wind_metals wind_metals :: UId m => m UGen wind_metals = do let n = 6
@@ -2,7 +2,6 @@ import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< xy_interference xy_interference :: UId m => m UGen xy_interference = do let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)@@ -11,7 +10,7 @@ let a = sinOsc AR (x + n) 0 b = sinOsc AR y 0 return (a * b)- return.sum =<< sequence (replicate 3 nd)+ fmap sum (sequence (replicate 3 nd)) main :: IO () main = audition . out 0 =<< xy_interference
@@ -7,11 +7,11 @@ xy_interference = let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025) y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)- nd = let n = lfNoise0 'a' KR (mce2 5 9)+ nd = let n = lfNoise0 'α' KR (mce2 5 9) a = sinOsc AR (x + n) 0 b = sinOsc AR y 0 in a * b- in mix (uclone 'a' 3 nd)+ in mix (uclone 'β' 3 nd) main :: IO () main = audition (out 0 xy_interference)
@@ -0,0 +1,13 @@+module L where++import Data.Maybe {- base -}+import Data.List {- base -}++stripSuffix :: Eq a => [a] -> [a] -> Maybe [a]+stripSuffix s l = fmap reverse (stripPrefix (reverse s) (reverse l))++strip_suffix_or_id :: Eq a => [[a]] -> [a] -> [a]+strip_suffix_or_id s l =+ case s of+ [] -> l+ e:s' -> strip_suffix_or_id s' (fromMaybe l (stripSuffix e l))
@@ -0,0 +1,428 @@+import System.Environment {- base -}++import qualified Sound.SC3.Graph.ADC_bit_reduction+import qualified Sound.SC3.Graph.ADC_kabelscahden+import qualified Sound.SC3.Graph.ADC_shepard_tones+import qualified Sound.SC3.Graph.AM_karplus_strong+import qualified Sound.SC3.Graph.AV_rm_octaver+import qualified Sound.SC3.Graph.F0_sinusdeklinationen+import qualified Sound.SC3.Graph.F0_f0_tw0051+import qualified Sound.SC3.Graph.F0_pkt_07+import qualified Sound.SC3.Graph.F0_f0_tw0030+import qualified Sound.SC3.Graph.F0_f0_tw0011+import qualified Sound.SC3.Graph.F0_f0_tw0033+import qualified Sound.SC3.Graph.F0_f0_2012_04_19+import qualified Sound.SC3.Graph.F0_f0_tw0077+import qualified Sound.SC3.Graph.F0_1_4Q6+import qualified Sound.SC3.Graph.F0_red_frik_m+import qualified Sound.SC3.Graph.F0_pkt_26+import qualified Sound.SC3.Graph.F0_f0_tw0020+import qualified Sound.SC3.Graph.F0_pkt_28+import qualified Sound.SC3.Graph.F0_hansm+import qualified Sound.SC3.Graph.F0_pkt_00+import qualified Sound.SC3.Graph.F0_f0_tw0045+import qualified Sound.SC3.Graph.F0_f0_tw0049+import qualified Sound.SC3.Graph.F0_f0_tw0014+import qualified Sound.SC3.Graph.F0_f0_tw0084+import qualified Sound.SC3.Graph.F0_buffer_display+import qualified Sound.SC3.Graph.F0_f0_tw0028+import qualified Sound.SC3.Graph.JAR_1_4Qx+import qualified Sound.SC3.Graph.JJ_bohlen_pierce_140+import qualified Sound.SC3.Graph.JL_dark_sea_horns_hp+import qualified Sound.SC3.Graph.JL_pwm_crossfade+import qualified Sound.SC3.Graph.JL_rain_thunder+import qualified Sound.SC3.Graph.JL_jl_1_Z+import qualified Sound.SC3.Graph.JL_bitwise+import qualified Sound.SC3.Graph.JL_dark_sea_horns+import qualified Sound.SC3.Graph.JMCC_tsort+import qualified Sound.SC3.Graph.JMCC_police_state+import qualified Sound.SC3.Graph.JMCC_wind_metals_m+import qualified Sound.SC3.Graph.JMCC_babbling_brook_m+import qualified Sound.SC3.Graph.JMCC_random_pulsations+import qualified Sound.SC3.Graph.JMCC_moto_rev+import qualified Sound.SC3.Graph.JMCC_sprinkler_m+import qualified Sound.SC3.Graph.JMCC_demanding_studies+import qualified Sound.SC3.Graph.JMCC_why_supercollider+import qualified Sound.SC3.Graph.JMCC_deep_trip+import qualified Sound.SC3.Graph.JMCC_alien_meadow+import qualified Sound.SC3.Graph.JMCC_snare_909+import qualified Sound.SC3.Graph.JMCC_uplink_hp+import qualified Sound.SC3.Graph.JMCC_noise_burst_sweep+import qualified Sound.SC3.Graph.JMCC_random_sine_waves_she+import qualified Sound.SC3.Graph.JMCC_data_space+import qualified Sound.SC3.Graph.JMCC_police_state_m+import qualified Sound.SC3.Graph.JMCC_default+import qualified Sound.SC3.Graph.JMCC_hell_is_busy+import qualified Sound.SC3.Graph.JMCC_noise_modulated_sines+import qualified Sound.SC3.Graph.JMCC_clustered_sines_m+import qualified Sound.SC3.Graph.JMCC_coolant+import qualified Sound.SC3.Graph.JMCC_harmonic_tumbling_m+import qualified Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines+import qualified Sound.SC3.Graph.JMCC_tremulate_hp+import qualified Sound.SC3.Graph.JMCC_resonant_dust+import qualified Sound.SC3.Graph.JMCC_harmonic_swimming_m+import qualified Sound.SC3.Graph.JMCC_synthetic_piano_m+import qualified Sound.SC3.Graph.JMCC_sawed_cymbals+import qualified Sound.SC3.Graph.JMCC_tank_m+import qualified Sound.SC3.Graph.JMCC_clustered_sines+import qualified Sound.SC3.Graph.JMCC_scratchy_m+import qualified Sound.SC3.Graph.JMCC_aleatoric_quartet_m+import qualified Sound.SC3.Graph.JMCC_spe_m+import qualified Sound.SC3.Graph.JMCC_what_was_i_thinking_m+import qualified Sound.SC3.Graph.JMCC_pond_life_hp+import qualified Sound.SC3.Graph.JMCC_slow_beating_sines+import qualified Sound.SC3.Graph.JMCC_spe_p+import qualified Sound.SC3.Graph.JMCC_pulsing_bottles_m+import qualified Sound.SC3.Graph.JMCC_early_space_music_lp_side_two+import qualified Sound.SC3.Graph.JMCC_random_panning_sines_m+import qualified Sound.SC3.Graph.JMCC_bowed_string_m+import qualified Sound.SC3.Graph.JMCC_random_panning_sines+import qualified Sound.SC3.Graph.JMCC_sidereal_time_hp+import qualified Sound.SC3.Graph.JMCC_string_wander_cluster+import qualified Sound.SC3.Graph.JMCC_alien_froggies+import qualified Sound.SC3.Graph.JMCC_pulsing_bottles+import qualified Sound.SC3.Graph.JMCC_strummable_guitar+import qualified Sound.SC3.Graph.JMCC_overlap_add+import qualified Sound.SC3.Graph.JMCC_choip+import qualified Sound.SC3.Graph.JMCC_sprinkler+import qualified Sound.SC3.Graph.JMCC_rails+import qualified Sound.SC3.Graph.JMCC_pond_life+import qualified Sound.SC3.Graph.JMCC_comb_delay_sweeps+import qualified Sound.SC3.Graph.JMCC_tank_hp+import qualified Sound.SC3.Graph.JMCC_harmonic_swimming+import qualified Sound.SC3.Graph.JMCC_random_sine_waves+import qualified Sound.SC3.Graph.JMCC_modal_space+import qualified Sound.SC3.Graph.JMCC_lfo_modulation+import qualified Sound.SC3.Graph.JMCC_cymbalism_accelerando+import qualified Sound.SC3.Graph.JMCC_plucked_strings_m+import qualified Sound.SC3.Graph.JMCC_uplink+import qualified Sound.SC3.Graph.JMCC_sweepy_noise+import qualified Sound.SC3.Graph.JMCC_random_sine_waves_hp+import qualified Sound.SC3.Graph.JMCC_analog_bubbles+import qualified Sound.SC3.Graph.JMCC_resonant_dust_hp+import qualified Sound.SC3.Graph.JMCC_birds_hp+import qualified Sound.SC3.Graph.JMCC_ring_modulated_klank+import qualified Sound.SC3.Graph.JMCC_tremulate_m+import qualified Sound.SC3.Graph.JMCC_tank+import qualified Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp+import qualified Sound.SC3.Graph.JMCC_theremin+import qualified Sound.SC3.Graph.JMCC_data_space_hp+import qualified Sound.SC3.Graph.JMCC_mridangam+import qualified Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m+import qualified Sound.SC3.Graph.JMCC_doppler+import qualified Sound.SC3.Graph.JMCC_scratchy+import qualified Sound.SC3.Graph.JMCC_sidereal_time+import qualified Sound.SC3.Graph.JMCC_birds_m+import qualified Sound.SC3.Graph.JMCC_sample_and_hold_liquidities+import qualified Sound.SC3.Graph.JMCC_tremulate+import qualified Sound.SC3.Graph.JMCC_contamination_zone+import qualified Sound.SC3.Graph.JMCC_saucer_base+import qualified Sound.SC3.Graph.JMCC_cymbalism_m+import qualified Sound.SC3.Graph.JP_record_scratcher+import qualified Sound.SC3.Graph.JRHB_chain_saw_m+import qualified Sound.SC3.Graph.JRHB_black_atlantic_currents+import qualified Sound.SC3.Graph.JRHB_deep_sea+import qualified Sound.SC3.Graph.JRHB_half_life+import qualified Sound.SC3.Graph.JRHB_dial_history_m+import qualified Sound.SC3.Graph.JRHB_sam_i_am+import qualified Sound.SC3.Graph.LJP_one_line+import qualified Sound.SC3.Graph.MN_k2ws+import qualified Sound.SC3.Graph.MN_k2ws_hp+import qualified Sound.SC3.Graph.NC_after_goeyvaerts+import qualified Sound.SC3.Graph.NC_arpeggio+import qualified Sound.SC3.Graph.NC_ellipse_based_synthesis+import qualified Sound.SC3.Graph.NP_pebble_beach+import qualified Sound.SC3.Graph.NV_nv_tw_54+import qualified Sound.SC3.Graph.NV_nv_tw_41+import qualified Sound.SC3.Graph.NV_nv_tw_1+import qualified Sound.SC3.Graph.PC_thx+import qualified Sound.SC3.Graph.PJ_forest_sounds_m+import qualified Sound.SC3.Graph.RB_hh_808+import qualified Sound.SC3.Graph.RD_bs_070705_m+import qualified Sound.SC3.Graph.RD_scritto+import qualified Sound.SC3.Graph.RD_ccomb_m+import qualified Sound.SC3.Graph.RD_adso+import qualified Sound.SC3.Graph.RD_lg_timed_m+import qualified Sound.SC3.Graph.RD_three_cpsw_m+import qualified Sound.SC3.Graph.RD_vlc_distrtn_m+import qualified Sound.SC3.Graph.RD_implosion_m+import qualified Sound.SC3.Graph.RD_discretion_m+import qualified Sound.SC3.Graph.RD_diffraction_m+import qualified Sound.SC3.Graph.RD_e_lamell_p+import qualified Sound.SC3.Graph.RD_tgb_m+import qualified Sound.SC3.Graph.RD_discretion+import qualified Sound.SC3.Graph.RD_s_chirp+import qualified Sound.SC3.Graph.RD_lso_061101_m+import qualified Sound.SC3.Graph.RD_vla_addtn_sharc+import qualified Sound.SC3.Graph.RD_cut_outs_m+import qualified Sound.SC3.Graph.RD_vla_addtn+import qualified Sound.SC3.Graph.RD_chrd_t+import qualified Sound.SC3.Graph.RD_tr_out_m+import qualified Sound.SC3.Graph.RD_crotale_sine+import qualified Sound.SC3.Graph.RD_fm_kltr_p+import qualified Sound.SC3.Graph.RD_fm_kltr_m+import qualified Sound.SC3.Graph.RD_rzblp_hp+import qualified Sound.SC3.Graph.RD_mouse_clatter_m+import qualified Sound.SC3.Graph.RD_xy_interference+import qualified Sound.SC3.Graph.RD_waveset+import qualified Sound.SC3.Graph.RD_cds_070701_m+import qualified Sound.SC3.Graph.RD_fb_090531+import qualified Sound.SC3.Graph.RD_fbl_fbf+import qualified Sound.SC3.Graph.RD_k_ppr+import qualified Sound.SC3.Graph.RD_tipnso+import qualified Sound.SC3.Graph.RD_thb+import qualified Sound.SC3.Graph.RD_nharm_m+import qualified Sound.SC3.Graph.RD_wial_m+import qualified Sound.SC3.Graph.RD_fwalk_m+import qualified Sound.SC3.Graph.RD_trmlo_u+import qualified Sound.SC3.Graph.RD_chrd_m+import qualified Sound.SC3.Graph.RD_h_chatter_m+import qualified Sound.SC3.Graph.RD_sosc_lp_m+import qualified Sound.SC3.Graph.RD_feedr_m+import qualified Sound.SC3.Graph.RD_crotale+import qualified Sound.SC3.Graph.RD_rzblp+import qualified Sound.SC3.Graph.RD_cricket_m+import qualified Sound.SC3.Graph.RD_tgr_rpr_m+import qualified Sound.SC3.Graph.RD_for_ann+import qualified Sound.SC3.Graph.RD_fm_iter+import qualified Sound.SC3.Graph.RD_k_ppr_m+import qualified Sound.SC3.Graph.RD_klink+import qualified Sound.SC3.Graph.RD_f_lets_m+import qualified Sound.SC3.Graph.RD_urandom+import qualified Sound.SC3.Graph.RD_lf_pulses+import qualified Sound.SC3.Graph.RD_trkl_m+import qualified Sound.SC3.Graph.RD_xy_interference_m+import qualified Sound.SC3.Graph.RD_voscil_u+import qualified Sound.SC3.Graph.RD_voscil+import qualified Sound.SC3.Graph.RD_eggcrate_m+import qualified Sound.SC3.Graph.RD_rzblp_u+import qualified Sound.SC3.Graph.RD_shifting_pulses_m+import qualified Sound.SC3.Graph.RD_scritto_m+import qualified Sound.SC3.Graph.RD_rzblp_m+import qualified Sound.SC3.Graph.RD_eggcrate+import qualified Sound.SC3.Graph.RD_tgrn+import qualified Sound.SC3.Graph.RD_seqr+import qualified Sound.SC3.Graph.RD_pattern_buffer_m+import qualified Sound.SC3.Graph.RD_nharm_p+import qualified Sound.SC3.Graph.RD_trmlo+import qualified Sound.SC3.Graph.RD_lin_sosc+import qualified Sound.SC3.Graph.RD_e_lamell+import qualified Sound.SC3.Graph.SC_bottle_m+import qualified Sound.SC3.Graph.SP_insects_m+import qualified Sound.SC3.Graph.TM_drummer++main :: IO ()+main = do+ a <- getArgs+ case a of+ ["bit-reduction"] -> Sound.SC3.Graph.ADC_bit_reduction.main+ ["kabelscahden"] -> Sound.SC3.Graph.ADC_kabelscahden.main+ ["shepard-tones"] -> Sound.SC3.Graph.ADC_shepard_tones.main+ ["karplus-strong"] -> Sound.SC3.Graph.AM_karplus_strong.main+ ["rm-octaver"] -> Sound.SC3.Graph.AV_rm_octaver.main+ ["sinusdeklinationen"] -> Sound.SC3.Graph.F0_sinusdeklinationen.main+ ["f0-tw0051"] -> Sound.SC3.Graph.F0_f0_tw0051.main+ ["pkt-07"] -> Sound.SC3.Graph.F0_pkt_07.main+ ["f0-tw0030"] -> Sound.SC3.Graph.F0_f0_tw0030.main+ ["f0-tw0011"] -> Sound.SC3.Graph.F0_f0_tw0011.main+ ["f0-tw0033"] -> Sound.SC3.Graph.F0_f0_tw0033.main+ ["f0-2012-04-19"] -> Sound.SC3.Graph.F0_f0_2012_04_19.main+ ["f0-tw0077"] -> Sound.SC3.Graph.F0_f0_tw0077.main+ ["1-4Q6"] -> Sound.SC3.Graph.F0_1_4Q6.main+ ["red-frik-m"] -> Sound.SC3.Graph.F0_red_frik_m.main+ ["pkt-26"] -> Sound.SC3.Graph.F0_pkt_26.main+ ["f0-tw0020"] -> Sound.SC3.Graph.F0_f0_tw0020.main+ ["pkt-28"] -> Sound.SC3.Graph.F0_pkt_28.main+ ["hansm"] -> Sound.SC3.Graph.F0_hansm.main+ ["pkt-00"] -> Sound.SC3.Graph.F0_pkt_00.main+ ["f0-tw0045"] -> Sound.SC3.Graph.F0_f0_tw0045.main+ ["f0-tw0049"] -> Sound.SC3.Graph.F0_f0_tw0049.main+ ["f0-tw0014"] -> Sound.SC3.Graph.F0_f0_tw0014.main+ ["f0-tw0084"] -> Sound.SC3.Graph.F0_f0_tw0084.main+ ["buffer-display"] -> Sound.SC3.Graph.F0_buffer_display.main+ ["f0-tw0028"] -> Sound.SC3.Graph.F0_f0_tw0028.main+ ["1-4Qx"] -> Sound.SC3.Graph.JAR_1_4Qx.main+ ["bohlen-pierce-140"] -> Sound.SC3.Graph.JJ_bohlen_pierce_140.main+ ["dark-sea-horns-hp"] -> Sound.SC3.Graph.JL_dark_sea_horns_hp.main+ ["pwm-crossfade"] -> Sound.SC3.Graph.JL_pwm_crossfade.main+ ["rain-thunder"] -> Sound.SC3.Graph.JL_rain_thunder.main+ ["jl-1-Z"] -> Sound.SC3.Graph.JL_jl_1_Z.main+ ["bitwise"] -> Sound.SC3.Graph.JL_bitwise.main+ ["dark-sea-horns"] -> Sound.SC3.Graph.JL_dark_sea_horns.main+ ["tsort"] -> Sound.SC3.Graph.JMCC_tsort.main+ ["police-state"] -> Sound.SC3.Graph.JMCC_police_state.main+ ["wind-metals-m"] -> Sound.SC3.Graph.JMCC_wind_metals_m.main+ ["babbling-brook-m"] -> Sound.SC3.Graph.JMCC_babbling_brook_m.main+ ["random-pulsations"] -> Sound.SC3.Graph.JMCC_random_pulsations.main+ ["moto-rev"] -> Sound.SC3.Graph.JMCC_moto_rev.main+ ["sprinkler-m"] -> Sound.SC3.Graph.JMCC_sprinkler_m.main+ ["demanding-studies"] -> Sound.SC3.Graph.JMCC_demanding_studies.main+ ["why-supercollider"] -> Sound.SC3.Graph.JMCC_why_supercollider.main+ ["deep-trip"] -> Sound.SC3.Graph.JMCC_deep_trip.main+ ["alien-meadow"] -> Sound.SC3.Graph.JMCC_alien_meadow.main+ ["snare-909"] -> Sound.SC3.Graph.JMCC_snare_909.main+ ["uplink-hp"] -> Sound.SC3.Graph.JMCC_uplink_hp.main+ ["noise-burst-sweep"] -> Sound.SC3.Graph.JMCC_noise_burst_sweep.main+ ["random-sine-waves-she"] -> Sound.SC3.Graph.JMCC_random_sine_waves_she.main+ ["data-space"] -> Sound.SC3.Graph.JMCC_data_space.main+ ["police-state-m"] -> Sound.SC3.Graph.JMCC_police_state_m.main+ ["default"] -> Sound.SC3.Graph.JMCC_default.main+ ["hell-is-busy"] -> Sound.SC3.Graph.JMCC_hell_is_busy.main+ ["noise-modulated-sines"] -> Sound.SC3.Graph.JMCC_noise_modulated_sines.main+ ["clustered-sines-m"] -> Sound.SC3.Graph.JMCC_clustered_sines_m.main+ ["coolant"] -> Sound.SC3.Graph.JMCC_coolant.main+ ["harmonic-tumbling-m"] -> Sound.SC3.Graph.JMCC_harmonic_tumbling_m.main+ ["slow-beating-harmonic-sines"] -> Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines.main+ ["tremulate-hp"] -> Sound.SC3.Graph.JMCC_tremulate_hp.main+ ["resonant-dust"] -> Sound.SC3.Graph.JMCC_resonant_dust.main+ ["harmonic-swimming-m"] -> Sound.SC3.Graph.JMCC_harmonic_swimming_m.main+ ["synthetic-piano-m"] -> Sound.SC3.Graph.JMCC_synthetic_piano_m.main+ ["sawed-cymbals"] -> Sound.SC3.Graph.JMCC_sawed_cymbals.main+ ["tank-m"] -> Sound.SC3.Graph.JMCC_tank_m.main+ ["clustered-sines"] -> Sound.SC3.Graph.JMCC_clustered_sines.main+ ["scratchy-m"] -> Sound.SC3.Graph.JMCC_scratchy_m.main+ ["aleatoric-quartet-m"] -> Sound.SC3.Graph.JMCC_aleatoric_quartet_m.main+ ["spe-m"] -> Sound.SC3.Graph.JMCC_spe_m.main+ ["what-was-i-thinking-m"] -> Sound.SC3.Graph.JMCC_what_was_i_thinking_m.main+ ["pond-life-hp"] -> Sound.SC3.Graph.JMCC_pond_life_hp.main+ ["slow-beating-sines"] -> Sound.SC3.Graph.JMCC_slow_beating_sines.main+ ["spe-p"] -> Sound.SC3.Graph.JMCC_spe_p.main+ ["pulsing-bottles-m"] -> Sound.SC3.Graph.JMCC_pulsing_bottles_m.main+ ["early-space-music-lp-side-two"] -> Sound.SC3.Graph.JMCC_early_space_music_lp_side_two.main+ ["random-panning-sines-m"] -> Sound.SC3.Graph.JMCC_random_panning_sines_m.main+ ["bowed-string-m"] -> Sound.SC3.Graph.JMCC_bowed_string_m.main+ ["random-panning-sines"] -> Sound.SC3.Graph.JMCC_random_panning_sines.main+ ["sidereal-time-hp"] -> Sound.SC3.Graph.JMCC_sidereal_time_hp.main+ ["string-wander-cluster"] -> Sound.SC3.Graph.JMCC_string_wander_cluster.main+ ["alien-froggies"] -> Sound.SC3.Graph.JMCC_alien_froggies.main+ ["pulsing-bottles"] -> Sound.SC3.Graph.JMCC_pulsing_bottles.main+ ["strummable-guitar"] -> Sound.SC3.Graph.JMCC_strummable_guitar.main+ ["overlap-add"] -> Sound.SC3.Graph.JMCC_overlap_add.main+ ["choip"] -> Sound.SC3.Graph.JMCC_choip.main+ ["sprinkler"] -> Sound.SC3.Graph.JMCC_sprinkler.main+ ["rails"] -> Sound.SC3.Graph.JMCC_rails.main+ ["pond-life"] -> Sound.SC3.Graph.JMCC_pond_life.main+ ["comb-delay-sweeps"] -> Sound.SC3.Graph.JMCC_comb_delay_sweeps.main+ ["tank-hp"] -> Sound.SC3.Graph.JMCC_tank_hp.main+ ["harmonic-swimming"] -> Sound.SC3.Graph.JMCC_harmonic_swimming.main+ ["random-sine-waves"] -> Sound.SC3.Graph.JMCC_random_sine_waves.main+ ["modal-space"] -> Sound.SC3.Graph.JMCC_modal_space.main+ ["lfo-modulation"] -> Sound.SC3.Graph.JMCC_lfo_modulation.main+ ["cymbalism-accelerando"] -> Sound.SC3.Graph.JMCC_cymbalism_accelerando.main+ ["plucked-strings-m"] -> Sound.SC3.Graph.JMCC_plucked_strings_m.main+ ["uplink"] -> Sound.SC3.Graph.JMCC_uplink.main+ ["sweepy-noise"] -> Sound.SC3.Graph.JMCC_sweepy_noise.main+ ["random-sine-waves-hp"] -> Sound.SC3.Graph.JMCC_random_sine_waves_hp.main+ ["analog-bubbles"] -> Sound.SC3.Graph.JMCC_analog_bubbles.main+ ["resonant-dust-hp"] -> Sound.SC3.Graph.JMCC_resonant_dust_hp.main+ ["birds-hp"] -> Sound.SC3.Graph.JMCC_birds_hp.main+ ["ring-modulated-klank"] -> Sound.SC3.Graph.JMCC_ring_modulated_klank.main+ ["tremulate-m"] -> Sound.SC3.Graph.JMCC_tremulate_m.main+ ["tank"] -> Sound.SC3.Graph.JMCC_tank.main+ ["reverberated-sine-percussion-hp"] -> Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp.main+ ["theremin"] -> Sound.SC3.Graph.JMCC_theremin.main+ ["data-space-hp"] -> Sound.SC3.Graph.JMCC_data_space_hp.main+ ["mridangam"] -> Sound.SC3.Graph.JMCC_mridangam.main+ ["reverberated-sine-percussion-m"] -> Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m.main+ ["doppler"] -> Sound.SC3.Graph.JMCC_doppler.main+ ["scratchy"] -> Sound.SC3.Graph.JMCC_scratchy.main+ ["sidereal-time"] -> Sound.SC3.Graph.JMCC_sidereal_time.main+ ["birds-m"] -> Sound.SC3.Graph.JMCC_birds_m.main+ ["sample-and-hold-liquidities"] -> Sound.SC3.Graph.JMCC_sample_and_hold_liquidities.main+ ["tremulate"] -> Sound.SC3.Graph.JMCC_tremulate.main+ ["contamination-zone"] -> Sound.SC3.Graph.JMCC_contamination_zone.main+ ["saucer-base"] -> Sound.SC3.Graph.JMCC_saucer_base.main+ ["cymbalism-m"] -> Sound.SC3.Graph.JMCC_cymbalism_m.main+ ["record-scratcher"] -> Sound.SC3.Graph.JP_record_scratcher.main+ ["chain-saw-m"] -> Sound.SC3.Graph.JRHB_chain_saw_m.main+ ["black-atlantic-currents"] -> Sound.SC3.Graph.JRHB_black_atlantic_currents.main+ ["deep-sea"] -> Sound.SC3.Graph.JRHB_deep_sea.main+ ["half-life"] -> Sound.SC3.Graph.JRHB_half_life.main+ ["dial-history-m"] -> Sound.SC3.Graph.JRHB_dial_history_m.main+ ["sam-i-am"] -> Sound.SC3.Graph.JRHB_sam_i_am.main+ ["one-line"] -> Sound.SC3.Graph.LJP_one_line.main+ ["k2ws"] -> Sound.SC3.Graph.MN_k2ws.main+ ["k2ws-hp"] -> Sound.SC3.Graph.MN_k2ws_hp.main+ ["after-goeyvaerts"] -> Sound.SC3.Graph.NC_after_goeyvaerts.main+ ["arpeggio"] -> Sound.SC3.Graph.NC_arpeggio.main+ ["ellipse-based-synthesis"] -> Sound.SC3.Graph.NC_ellipse_based_synthesis.main+ ["pebble-beach"] -> Sound.SC3.Graph.NP_pebble_beach.main+ ["nv-tw-54"] -> Sound.SC3.Graph.NV_nv_tw_54.main+ ["nv-tw-41"] -> Sound.SC3.Graph.NV_nv_tw_41.main+ ["nv-tw-1"] -> Sound.SC3.Graph.NV_nv_tw_1.main+ ["thx"] -> Sound.SC3.Graph.PC_thx.main+ ["forest-sounds-m"] -> Sound.SC3.Graph.PJ_forest_sounds_m.main+ ["hh-808"] -> Sound.SC3.Graph.RB_hh_808.main+ ["bs-070705-m"] -> Sound.SC3.Graph.RD_bs_070705_m.main+ ["scritto"] -> Sound.SC3.Graph.RD_scritto.main+ ["ccomb-m"] -> Sound.SC3.Graph.RD_ccomb_m.main+ ["adso"] -> Sound.SC3.Graph.RD_adso.main+ ["lg-timed-m"] -> Sound.SC3.Graph.RD_lg_timed_m.main+ ["three-cpsw-m"] -> Sound.SC3.Graph.RD_three_cpsw_m.main+ ["vlc-distrtn-m"] -> Sound.SC3.Graph.RD_vlc_distrtn_m.main+ ["implosion-m"] -> Sound.SC3.Graph.RD_implosion_m.main+ ["discretion-m"] -> Sound.SC3.Graph.RD_discretion_m.main+ ["diffraction-m"] -> Sound.SC3.Graph.RD_diffraction_m.main+ ["e-lamell-p"] -> Sound.SC3.Graph.RD_e_lamell_p.main+ ["tgb-m"] -> Sound.SC3.Graph.RD_tgb_m.main+ ["discretion"] -> Sound.SC3.Graph.RD_discretion.main+ ["s-chirp"] -> Sound.SC3.Graph.RD_s_chirp.main+ ["lso-061101-m"] -> Sound.SC3.Graph.RD_lso_061101_m.main+ ["vla-addtn-sharc"] -> Sound.SC3.Graph.RD_vla_addtn_sharc.main+ ["cut-outs-m"] -> Sound.SC3.Graph.RD_cut_outs_m.main+ ["vla-addtn"] -> Sound.SC3.Graph.RD_vla_addtn.main+ ["chrd-t"] -> Sound.SC3.Graph.RD_chrd_t.main+ ["tr-out-m"] -> Sound.SC3.Graph.RD_tr_out_m.main+ ["crotale-sine"] -> Sound.SC3.Graph.RD_crotale_sine.main+ ["fm-kltr-p"] -> Sound.SC3.Graph.RD_fm_kltr_p.main+ ["fm-kltr-m"] -> Sound.SC3.Graph.RD_fm_kltr_m.main+ ["rzblp-hp"] -> Sound.SC3.Graph.RD_rzblp_hp.main+ ["mouse-clatter-m"] -> Sound.SC3.Graph.RD_mouse_clatter_m.main+ ["xy-interference"] -> Sound.SC3.Graph.RD_xy_interference.main+ ["waveset"] -> Sound.SC3.Graph.RD_waveset.main+ ["cds-070701-m"] -> Sound.SC3.Graph.RD_cds_070701_m.main+ ["fb-090531"] -> Sound.SC3.Graph.RD_fb_090531.main+ ["fbl-fbf"] -> Sound.SC3.Graph.RD_fbl_fbf.main+ ["k-ppr"] -> Sound.SC3.Graph.RD_k_ppr.main+ ["tipnso"] -> Sound.SC3.Graph.RD_tipnso.main+ ["thb"] -> Sound.SC3.Graph.RD_thb.main+ ["nharm-m"] -> Sound.SC3.Graph.RD_nharm_m.main+ ["wial-m"] -> Sound.SC3.Graph.RD_wial_m.main+ ["fwalk-m"] -> Sound.SC3.Graph.RD_fwalk_m.main+ ["trmlo-u"] -> Sound.SC3.Graph.RD_trmlo_u.main+ ["chrd-m"] -> Sound.SC3.Graph.RD_chrd_m.main+ ["h-chatter-m"] -> Sound.SC3.Graph.RD_h_chatter_m.main+ ["sosc-lp-m"] -> Sound.SC3.Graph.RD_sosc_lp_m.main+ ["feedr-m"] -> Sound.SC3.Graph.RD_feedr_m.main+ ["crotale"] -> Sound.SC3.Graph.RD_crotale.main+ ["rzblp"] -> Sound.SC3.Graph.RD_rzblp.main+ ["cricket-m"] -> Sound.SC3.Graph.RD_cricket_m.main+ ["tgr-rpr-m"] -> Sound.SC3.Graph.RD_tgr_rpr_m.main+ ["for-ann"] -> Sound.SC3.Graph.RD_for_ann.main+ ["fm-iter"] -> Sound.SC3.Graph.RD_fm_iter.main+ ["k-ppr-m"] -> Sound.SC3.Graph.RD_k_ppr_m.main+ ["klink"] -> Sound.SC3.Graph.RD_klink.main+ ["f-lets-m"] -> Sound.SC3.Graph.RD_f_lets_m.main+ ["urandom"] -> Sound.SC3.Graph.RD_urandom.main+ ["lf-pulses"] -> Sound.SC3.Graph.RD_lf_pulses.main+ ["trkl-m"] -> Sound.SC3.Graph.RD_trkl_m.main+ ["xy-interference-m"] -> Sound.SC3.Graph.RD_xy_interference_m.main+ ["voscil-u"] -> Sound.SC3.Graph.RD_voscil_u.main+ ["voscil"] -> Sound.SC3.Graph.RD_voscil.main+ ["eggcrate-m"] -> Sound.SC3.Graph.RD_eggcrate_m.main+ ["rzblp-u"] -> Sound.SC3.Graph.RD_rzblp_u.main+ ["shifting-pulses-m"] -> Sound.SC3.Graph.RD_shifting_pulses_m.main+ ["scritto-m"] -> Sound.SC3.Graph.RD_scritto_m.main+ ["rzblp-m"] -> Sound.SC3.Graph.RD_rzblp_m.main+ ["eggcrate"] -> Sound.SC3.Graph.RD_eggcrate.main+ ["tgrn"] -> Sound.SC3.Graph.RD_tgrn.main+ ["seqr"] -> Sound.SC3.Graph.RD_seqr.main+ ["pattern-buffer-m"] -> Sound.SC3.Graph.RD_pattern_buffer_m.main+ ["nharm-p"] -> Sound.SC3.Graph.RD_nharm_p.main+ ["trmlo"] -> Sound.SC3.Graph.RD_trmlo.main+ ["lin-sosc"] -> Sound.SC3.Graph.RD_lin_sosc.main+ ["e-lamell"] -> Sound.SC3.Graph.RD_e_lamell.main+ ["bottle-m"] -> Sound.SC3.Graph.SC_bottle_m.main+ ["insects-m"] -> Sound.SC3.Graph.SP_insects_m.main+ ["drummer"] -> Sound.SC3.Graph.TM_drummer.main+ _ -> putStrLn "hsc3-graphs graph\n1-4Q6, 1-4Qx, adso, after-goeyvaerts, aleatoric-quartet-m, alien-froggies, alien-meadow, analog-bubbles, arpeggio, babbling-brook-m, birds-hp, birds-m, bit-reduction, bitwise, black-atlantic-currents, bohlen-pierce-140, bottle-m, bowed-string-m, bs-070705-m, buffer-display, ccomb-m, cds-070701-m, chain-saw-m, choip, chrd-m, chrd-t, clustered-sines, clustered-sines-m, comb-delay-sweeps, contamination-zone, coolant, cricket-m, crotale, crotale-sine, cut-outs-m, cymbalism-accelerando, cymbalism-m, dark-sea-horns, dark-sea-horns-hp, data-space, data-space-hp, deep-sea, deep-trip, default, demanding-studies, dial-history-m, diffraction-m, discretion, discretion-m, doppler, drummer, e-lamell, e-lamell-p, early-space-music-lp-side-two, eggcrate, eggcrate-m, ellipse-based-synthesis, f-lets-m, f0-2012-04-19, f0-tw0011, f0-tw0014, f0-tw0020, f0-tw0028, f0-tw0030, f0-tw0033, f0-tw0045, f0-tw0049, f0-tw0051, f0-tw0077, f0-tw0084, fb-090531, fbl-fbf, feedr-m, fm-iter, fm-kltr-m, fm-kltr-p, for-ann, forest-sounds-m, fwalk-m, h-chatter-m, half-life, hansm, harmonic-swimming, harmonic-swimming-m, harmonic-tumbling-m, hell-is-busy, hh-808, implosion-m, insects-m, jl-1-Z, k-ppr, k-ppr-m, k2ws, k2ws-hp, kabelscahden, karplus-strong, klink, lf-pulses, lfo-modulation, lg-timed-m, lin-sosc, lso-061101-m, modal-space, moto-rev, mouse-clatter-m, mridangam, nharm-m, nharm-p, noise-burst-sweep, noise-modulated-sines, nv-tw-1, nv-tw-41, nv-tw-54, one-line, overlap-add, pattern-buffer-m, pebble-beach, pkt-00, pkt-07, pkt-26, pkt-28, plucked-strings-m, police-state, police-state-m, pond-life, pond-life-hp, pulsing-bottles, pulsing-bottles-m, pwm-crossfade, rails, rain-thunder, random-panning-sines, random-panning-sines-m, random-pulsations, random-sine-waves, random-sine-waves-hp, random-sine-waves-she, record-scratcher, red-frik-m, resonant-dust, resonant-dust-hp, reverberated-sine-percussion-hp, reverberated-sine-percussion-m, ring-modulated-klank, rm-octaver, rzblp, rzblp-hp, rzblp-m, rzblp-u, s-chirp, sam-i-am, sample-and-hold-liquidities, saucer-base, sawed-cymbals, scratchy, scratchy-m, scritto, scritto-m, seqr, shepard-tones, shifting-pulses-m, sidereal-time, sidereal-time-hp, sinusdeklinationen, slow-beating-harmonic-sines, slow-beating-sines, snare-909, sosc-lp-m, spe-m, spe-p, sprinkler, sprinkler-m, string-wander-cluster, strummable-guitar, sweepy-noise, synthetic-piano-m, tank, tank-hp, tank-m, tgb-m, tgr-rpr-m, tgrn, thb, theremin, three-cpsw-m, thx, tipnso, tr-out-m, tremulate, tremulate-hp, tremulate-m, trkl-m, trmlo, trmlo-u, tsort, uplink, uplink-hp, urandom, vla-addtn, vla-addtn-sharc, vlc-distrtn-m, voscil, voscil-u, waveset, what-was-i-thinking-m, why-supercollider, wial-m, wind-metals-m, xy-interference, xy-interference-m"
@@ -0,0 +1,75 @@+import Data.List {- base -}+import Data.Maybe {- base -}+import System.Directory {- directory -}+import System.Environment {- base -}+import System.FilePath {- filepath -}+import Text.Printf {- base -}++import L++-- (home,hs-project,use-html?,use-scm?)+type State = (FilePath,FilePath,Bool,Bool)++link :: FilePath -> FilePath -> String -> IO (Maybe String)+link h p c = do+ e <- doesFileExist (h </> p)+ let r = if e then Just (printf "[%s](%s)" c p) else Nothing+ return r++type M_Str = Maybe String+type HS_LN = [M_Str]++alternates :: [String]+alternates = ["m","u","hp","she","p"]++alternates' :: [String]+alternates' = map ('-':) alternates++hs_plain :: State -> FilePath -> IO HS_LN+hs_plain (hm,pr,_,_) nm = do+ let gr = pr </> "gr"+ alt k = link hm (gr </> nm ++ "-" ++ k <.> "hs") (k </> "hs")+ hs <- link hm (gr </> nm <.> "hs") "hs"+ a <- mapM alt alternates+ return (hs : a)++hs_html :: State -> FilePath -> IO HS_LN+hs_html (hm,pr,_,_) nm = do+ let ht = pr </> "html"+ alt k = link hm (ht </> nm ++ "-" ++ k <.> "hs.html") (k </> "hs")+ hs <- link hm (ht </> nm <.> "hs.html") "hs"+ a <- mapM alt alternates+ return (hs : a)++entry :: State -> String -> IO String+entry st nm = do+ let (hm,pr,use_html,use_scm) = st+ hs <- if use_html+ then hs_html st nm+ else hs_plain st nm+ scd <- link hm (pr </> "gr" </> nm <.> "scd") "scd"+ scm <- if use_scm+ then link hm ("sw/rsc3/help/graph" </> nm <.> "scm") "scm"+ else return Nothing+ dot <- link hm (pr </> "dot" </> nm <.> "dot") "dot"+ pdf <- link hm (pr </> "pdf" </> nm <.> "pdf") "pdf"+ svg <- link hm (pr </> "svg" </> nm <.> "svg") "svg"+ let ln = intercalate "," (catMaybes (hs ++ [scd,scm,dot,pdf,svg]))+ return (printf "- %s [%s]" nm ln)++-- > mk_ix ("/home/rohan","sw/hsc3-graphs",True,True)+mk_ix :: State -> IO ()+mk_ix st = do+ let (hm,pr,_,_) = st+ d <- getDirectoryContents (hm </> pr </> "gr")+ let hs = mapMaybe (stripSuffix ".hs") (filter (".hs" `isSuffixOf`) d)+ nm = map (strip_suffix_or_id alternates') hs+ e <- mapM (entry st)(nub (sort nm))+ writeFile (hm </> pr </> "md/ix.md") (unlines e)++main :: IO ()+main = do+ [pr] <- getArgs+ hm <- getHomeDirectory+ let st = (hm,pr,True,True)+ mk_ix st
@@ -0,0 +1,89 @@+import Data.Char {- base -}+import Data.Function {- base -}+import Data.List {- base -}+import Data.Maybe {- base -}+import System.Directory {- directory -}+import System.FilePath {- filepath -}+import System.IO {- base -}+import Text.Printf {- base -}+import Text.Regex {- regex-compat -}++import L++dir :: FilePath+dir = "sw/hsc3-graphs"++-- (Name,Author)+type GR = (String,String)++gr_name :: FilePath -> FilePath -> FilePath+gr_name h nm = h </> dir </> "gr" </> nm <.> "hs"++author :: FilePath -> String -> IO (Maybe GR)+author h nm = do+ let nm' = fromMaybe (error "not hs") (stripSuffix ".hs" nm)+ fd <- openFile (gr_name h nm') ReadMode+ ln <- hGetLine fd+ hClose fd+ let r = mkRegex "[^(]*\\(([^)]*)"+ case matchRegex r ln of+ Just [au] -> return (Just (nm',au))+ _ -> return Nothing++to_underscore :: Char -> Char+to_underscore c =+ case c of+ '-' -> '_'+ _ -> c++fix_gr :: GR -> GR+fix_gr (nm,au) =+ let au' = map toUpper au+ nm' = map to_underscore nm+ in (nm',au')++mod_name :: GR -> String+mod_name gr =+ let (nm,au) = fix_gr gr+ in printf "Sound.SC3.Graph.%s_%s" au nm++gen_mod :: FilePath -> GR -> IO ()+gen_mod h gr = do+ let m_nm = mod_name gr+ (nm,_) = gr+ (nm',au') = fix_gr gr+ m = au' ++ "_" ++ nm'+ putStrLn (" " ++ m_nm ++ ",")+ c <- readFile (gr_name h nm)+ let (p,q) = span (not . null) (lines c)+ c' = unlines (p ++ [printf "module %s where" m_nm] ++ q)+ writeFile (h </> dir </> "Sound/SC3/Graph" </> m <.> "hs") c'++gen_hsc3_graphs :: [GR] -> String+gen_hsc3_graphs gr_seq =+ let mk_import gr = "import qualified " ++ mod_name gr+ mk_case_stmt gr = let (nm,_) = gr+ m_nm = mod_name gr+ in printf " [\"%s\"] -> %s.main" nm m_nm+ usage = "hsc3-graphs graph\\n" +++ intercalate ", " (sort (map fst gr_seq))+ in unlines (["import System.Environment {- base -}"+ ,""] +++ map mk_import gr_seq +++ [""+ ,"main :: IO ()"+ ,"main = do"+ ," a <- getArgs"+ ," case a of"] +++ map mk_case_stmt gr_seq +++ [printf " _ -> putStrLn \"%s\"" usage])++main :: IO ()+main = do+ h <- getHomeDirectory+ d <- getDirectoryContents (h </> dir </> "gr")+ let hs = filter (".hs" `isSuffixOf`) d+ au <- mapM (author h) hs+ let au' = sortBy (compare `on` snd) (catMaybes au)+ mapM_ (gen_mod h) au'+ writeFile (h </> dir </> "hs/hsc3-graphs.hs") (gen_hsc3_graphs au')
@@ -1,648 +1,1405 @@ Name: hsc3-graphs-Version: 0.12-Synopsis: Haskell SuperCollider Graphs-Description: hsc3-graphs provides a collection of illustrative- unit generator graphs for hsc3.-License: GPL-Category: Sound-Copyright: (c) Rohan Drape and others, 2006-2012-Author: Rohan Drape-Maintainer: rd@slavepianos.org-Stability: Experimental-Homepage: http://rd.slavepianos.org/?t=hsc3-graphs-Tested-With: GHC == 7.6.1-Build-Type: Simple-Cabal-Version: >= 1.8--Data-files: README- gr/*.scd--Source-Repository head- Type: darcs- Location: http://rd.slavepianos.org/sw/hsc3-graphs/---- Auto-generated: Tue Aug 21 14:50:33 EST 2012-Executable hsc3-1-1Ni- main-is: gr/1-1Ni.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-1-4Q6- main-is: gr/1-4Q6.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-1-4QM- main-is: gr/1-4QM.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang,sc3-rdu-Executable hsc3-1-4QN- main-is: gr/1-4QN.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-1-4Qx- main-is: gr/1-4Qx.hs- build-depends: base==4.*,hsc3-Executable hsc3-1-Td- main-is: gr/1-Td.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang,sc3-rdu-Executable hsc3-acid-otophilia- main-is: gr/acid-otophilia.hs- build-depends: base==4.*,hosc,hsc3,random-Executable hsc3-adso- main-is: gr/adso.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-after-goeyvaerts- main-is: gr/after-goeyvaerts.hs- build-depends: base==4.*,split,containers,hosc,hsc3,hsc3-lang,random-Executable hsc3-aleatoric-quartet-m- main-is: gr/aleatoric-quartet-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-alien-froggies- main-is: gr/alien-froggies.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-alien-meadow- main-is: gr/alien-meadow.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-ambient1- main-is: gr/ambient1.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-analog-bubbles- main-is: gr/analog-bubbles.hs- build-depends: base==4.*,hsc3-Executable hsc3-arpeggio- main-is: gr/arpeggio.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-babbling-brook-m- main-is: gr/babbling-brook-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-birds-m- main-is: gr/birds-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-bit-reduction- main-is: gr/bit-reduction.hs- build-depends: base==4.*,hsc3-Executable hsc3-bitwise- main-is: gr/bitwise.hs- build-depends: base==4.*,hsc3-Executable hsc3-black-atlantic-currents- main-is: gr/black-atlantic-currents.hs- build-depends: base==4.*,primes,hsc3,random,random-shuffle-Executable hsc3-bohlen-pierce-140- main-is: gr/bohlen-pierce-140.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-bottle-m- main-is: gr/bottle-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-bowed-string-m- main-is: gr/bowed-string-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-bs-070705- main-is: gr/bs-070705.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-buffer-display- main-is: gr/buffer-display.hs- build-depends: base==4.*,hcg-minus,cmath,cairo,hsc3,hsc3-cairo-Executable hsc3-ccomb- main-is: gr/ccomb.hs- build-depends: base==4.*,hsc3-Executable hsc3-cds-070701- main-is: gr/cds-070701.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-chain-saw- main-is: gr/chain-saw.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-choip- main-is: gr/choip.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-chrd-m- main-is: gr/chrd-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-chrd-t- main-is: gr/chrd-t.hs- build-depends: base==4.*,MonadRandom,hsc3,hsc3-lang-Executable hsc3-clustered-sines- main-is: gr/clustered-sines.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-comb-delay-sweeps- main-is: gr/comb-delay-sweeps.hs- build-depends: base==4.*,hsc3,hsc3-lang,random-Executable hsc3-contamination-zone- main-is: gr/contamination-zone.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-coolant- main-is: gr/coolant.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-cricket-m- main-is: gr/cricket-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-crotale- main-is: gr/crotale.hs- build-depends: base==4.*,hsc3-Executable hsc3-crotale-sine- main-is: gr/crotale-sine.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-cut-outs- main-is: gr/cut-outs.hs- build-depends: base==4.*,hsc3-Executable hsc3-cymbalism-accelerando- main-is: gr/cymbalism-accelerando.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-cymbalism-m- main-is: gr/cymbalism-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-dark-sea-horns- main-is: gr/dark-sea-horns.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-data-space- main-is: gr/data-space.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-deep-sea- main-is: gr/deep-sea.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-deep-trip- main-is: gr/deep-trip.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-default- main-is: gr/default.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-demanding-studies- main-is: gr/demanding-studies.hs- build-depends: base==4.*,hsc3-Executable hsc3-dial-history- main-is: gr/dial-history.hs- build-depends: base==4.*,hsc3-Executable hsc3-diffraction- main-is: gr/diffraction.hs- build-depends: base==4.*,hsc3-Executable hsc3-discretion- main-is: gr/discretion.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-discretion-m- main-is: gr/discretion-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-doppler- main-is: gr/doppler.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-drummer- main-is: gr/drummer.hs- build-depends: base==4.*,hsc3-Executable hsc3-early-space-music-lp-side-two- main-is: gr/early-space-music-lp-side-two.hs- build-depends: base==4.*,hsc3,hsc3-lang,sc3-rdu,random-Executable hsc3-eggcrate- main-is: gr/eggcrate.hs- build-depends: base==4.*,hsc3-Executable hsc3-eggcrate-m- main-is: gr/eggcrate-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-e-lamell- main-is: gr/e-lamell.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-e-lamell-p- main-is: gr/e-lamell-p.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-ellipse-based-synthesis- main-is: gr/ellipse-based-synthesis.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-2012-04-19- main-is: gr/f0-2012-04-19.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0011- main-is: gr/f0-tw0011.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0014- main-is: gr/f0-tw0014.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0020- main-is: gr/f0-tw0020.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0028- main-is: gr/f0-tw0028.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0030- main-is: gr/f0-tw0030.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0033- main-is: gr/f0-tw0033.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0045- main-is: gr/f0-tw0045.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0049- main-is: gr/f0-tw0049.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0051- main-is: gr/f0-tw0051.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0077- main-is: gr/f0-tw0077.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0084- main-is: gr/f0-tw0084.hs- build-depends: base==4.*,hsc3-Executable hsc3-fb-090531- main-is: gr/fb-090531.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-fbl-fbf- main-is: gr/fbl-fbf.hs- build-depends: base==4.*,hsc3-Executable hsc3-feedr- main-is: gr/feedr.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-f-lets- main-is: gr/f-lets.hs- build-depends: base==4.*,hsc3-Executable hsc3-fm-iter- main-is: gr/fm-iter.hs- build-depends: base==4.*,hsc3-Executable hsc3-fm-kltr- main-is: gr/fm-kltr.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-fm-kltr-p- main-is: gr/fm-kltr-p.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-for-ann- main-is: gr/for-ann.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-forest-sounds- main-is: gr/forest-sounds.hs- build-depends: base==4.*,hsc3-Executable hsc3-fwalk- main-is: gr/fwalk.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-half-life- main-is: gr/half-life.hs- build-depends: base==4.*,hsc3-Executable hsc3-hansm- main-is: gr/hansm.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-harmonic-swimming- main-is: gr/harmonic-swimming.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-harmonic-swimming-m- main-is: gr/harmonic-swimming-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-harmonic-tumbling- main-is: gr/harmonic-tumbling.hs- build-depends: base==4.*,hsc3-Executable hsc3-h-chatter- main-is: gr/h-chatter.hs- build-depends: base==4.*,hsc3-Executable hsc3-hell-is-busy- main-is: gr/hell-is-busy.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-hh-808- main-is: gr/hh-808.hs- build-depends: base==4.*,hsc3-Executable hsc3-implosion- main-is: gr/implosion.hs- build-depends: base==4.*,hsc3-Executable hsc3-insects- main-is: gr/insects.hs- build-depends: base==4.*,hsc3-Executable hsc3-jl-1-Z- main-is: gr/jl-1-Z.hs- build-depends: base==4.*,hsc3-Executable hsc3-k2ws- main-is: gr/k2ws.hs- build-depends: base==4.*,hsc3-Executable hsc3-kabelscahden- main-is: gr/kabelscahden.hs- build-depends: base==4.*,hsc3-Executable hsc3-karplus-strong- main-is: gr/karplus-strong.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-klink- main-is: gr/klink.hs- build-depends: base==4.*,hsc3-Executable hsc3-k-ppr- main-is: gr/k-ppr.hs- build-depends: base==4.*,hsc3-Executable hsc3-k-ppr-m- main-is: gr/k-ppr-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-laser-bubble- main-is: gr/laser-bubble.hs- build-depends: base==4.*,hsc3-Executable hsc3-lfo-modulation- main-is: gr/lfo-modulation.hs- build-depends: base==4.*,hsc3-Executable hsc3-lf-pulses- main-is: gr/lf-pulses.hs- build-depends: base==4.*,hsc3-Executable hsc3-lg-timed- main-is: gr/lg-timed.hs- build-depends: base==4.*,hsc3-Executable hsc3-lin-sosc- main-is: gr/lin-sosc.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-lso-061101- main-is: gr/lso-061101.hs- build-depends: base==4.*,hps,hls,hsc3-sf,hsc3,hsc3-lang,directory,filepath-Executable hsc3-lucier- main-is: gr/lucier.hs- build-depends: base==4.*,hsc3-Executable hsc3-m21360- main-is: gr/m21360.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-microhelix- main-is: gr/microhelix.hs- build-depends: base==4.*,hsc3-Executable hsc3-modal-space- main-is: gr/modal-space.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-moto-rev- main-is: gr/moto-rev.hs- build-depends: base==4.*,hsc3-Executable hsc3-mouse-clatter-m- main-is: gr/mouse-clatter-m.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-mridangam- main-is: gr/mridangam.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-music-box- main-is: gr/music-box.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-nharm- main-is: gr/nharm.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-nharm-p- main-is: gr/nharm-p.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-noise-burst-sweep- main-is: gr/noise-burst-sweep.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-noise-modulated-sines- main-is: gr/noise-modulated-sines.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-nokia- main-is: gr/nokia.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-non-real-time- main-is: gr/non-real-time.hs- build-depends: base==4.*,hosc,hsc3,process-Executable hsc3-nv-tw-1- main-is: gr/nv-tw-1.hs- build-depends: base==4.*,hsc3-Executable hsc3-nv-tw-41- main-is: gr/nv-tw-41.hs- build-depends: base==4.*,hsc3-Executable hsc3-nv-tw-54- main-is: gr/nv-tw-54.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-nx102- main-is: gr/nx102.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-one-line- main-is: gr/one-line.hs- build-depends: base==4.*,hsc3-Executable hsc3-oscillator-cluster- main-is: gr/oscillator-cluster.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-overlap-add- main-is: gr/overlap-add.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pattern-buffer- main-is: gr/pattern-buffer.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-pebble-beach- main-is: gr/pebble-beach.hs- build-depends: base==4.*,hsc3-Executable hsc3-pkt-26- main-is: gr/pkt-26.hs- build-depends: base==4.*,hsc3-Executable hsc3-pkt-28- main-is: gr/pkt-28.hs- build-depends: base==4.*,hsc3-Executable hsc3-plucked-strings- main-is: gr/plucked-strings.hs- build-depends: base==4.*,hsc3-Executable hsc3-police-state- main-is: gr/police-state.hs- build-depends: base==4.*,hsc3-Executable hsc3-pond-life- main-is: gr/pond-life.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-proxy-mixer- main-is: gr/proxy-mixer.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-proxy-mixer-m- main-is: gr/proxy-mixer-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pulsing-bottles- main-is: gr/pulsing-bottles.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pulsing-bottles-m- main-is: gr/pulsing-bottles-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pwm-crossfade- main-is: gr/pwm-crossfade.hs- build-depends: base==4.*,hsc3-Executable hsc3-rails- main-is: gr/rails.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-rain-thunder- main-is: gr/rain-thunder.hs- build-depends: base==4.*,hsc3-Executable hsc3-random-panning-sines- main-is: gr/random-panning-sines.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-random-panning-sines-m- main-is: gr/random-panning-sines-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-random-pulsations- main-is: gr/random-pulsations.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-random-sine-waves- main-is: gr/random-sine-waves.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-record-scratcher- main-is: gr/record-scratcher.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-red-frik- main-is: gr/red-frik.hs- build-depends: base==4.*,hsc3-Executable hsc3-reset- main-is: gr/reset.hs- build-depends: base==4.*,hsc3-Executable hsc3-resonant-dust- main-is: gr/resonant-dust.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-reverberated-sine-percussion- main-is: gr/reverberated-sine-percussion.hs- build-depends: base==4.*,hsc3-Executable hsc3-ring-modulated-klank- main-is: gr/ring-modulated-klank.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-rm-octaver- main-is: gr/rm-octaver.hs- build-depends: base==4.*,hsc3-Executable hsc3-rzblp- main-is: gr/rzblp.hs- build-depends: base==4.*,hsc3-Executable hsc3-rzblp-u- main-is: gr/rzblp-u.hs- build-depends: base==4.*,hsc3,hsc3-unsafe-Executable hsc3-sam-i-am- main-is: gr/sam-i-am.hs- build-depends: base==4.*,MonadRandom,base==4.*,hsc3,hsc3-lang-Executable hsc3-sample-and-hold-liquidities- main-is: gr/sample-and-hold-liquidities.hs- build-depends: base==4.*,hsc3-Executable hsc3-saucer-base- main-is: gr/saucer-base.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-sawed-cymbals- main-is: gr/sawed-cymbals.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-s-chirp- main-is: gr/s-chirp.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-scratchy- main-is: gr/scratchy.hs- build-depends: base==4.*,hsc3-Executable hsc3-scratchy-m- main-is: gr/scratchy-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-scritto- main-is: gr/scritto.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-scritto-m- main-is: gr/scritto-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-seqr- main-is: gr/seqr.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-shepard-tones- main-is: gr/shepard-tones.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-shifting-pulses- main-is: gr/shifting-pulses.hs- build-depends: base==4.*,hsc3-Executable hsc3-sidereal-time- main-is: gr/sidereal-time.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-sinusdeklinationen- main-is: gr/sinusdeklinationen.hs- build-depends: base==4.*,split,hsc3,hsc3-lang-Executable hsc3-slow-beating-harmonic-sines- main-is: gr/slow-beating-harmonic-sines.hs- build-depends: base==4.*,MonadRandom,hsc3,hsc3-lang-Executable hsc3-slow-beating-sines- main-is: gr/slow-beating-sines.hs- build-depends: base==4.*,MonadRandom,hsc3,hsc3-lang-Executable hsc3-snare-909- main-is: gr/snare-909.hs- build-depends: base==4.*,hsc3-Executable hsc3-sosc-lp- main-is: gr/sosc-lp.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-spe-m- main-is: gr/spe-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-spe-p- main-is: gr/spe-p.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-sprinkler- main-is: gr/sprinkler.hs- build-depends: base==4.*,hsc3-Executable hsc3-sprinkler-m- main-is: gr/sprinkler-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-string-wander-cluster- main-is: gr/string-wander-cluster.hs- build-depends: base==4.*,hsc3,hsc3-lang,random-Executable hsc3-strummable-guitar- main-is: gr/strummable-guitar.hs- build-depends: base==4.*,hsc3-Executable hsc3-sweepy-noise- main-is: gr/sweepy-noise.hs- build-depends: base==4.*,hsc3-Executable hsc3-synthetic-piano-m- main-is: gr/synthetic-piano-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-tank- main-is: gr/tank.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-tank-m- main-is: gr/tank-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-tgb- main-is: gr/tgb.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-tgrn- main-is: gr/tgrn.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-tgr-rpr- main-is: gr/tgr-rpr.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-thb- main-is: gr/thb.hs- build-depends: base==4.*,hmt,hsc3,hsc3-lang,hosc-Executable hsc3-theremin- main-is: gr/theremin.hs- build-depends: base==4.*,hsc3-Executable hsc3-three-cpsw- main-is: gr/three-cpsw.hs- build-depends: base==4.*,hsc3-Executable hsc3-thx- main-is: gr/thx.hs- build-depends: base==4.*,hsc3,random-Executable hsc3-tipnso- main-is: gr/tipnso.hs- build-depends: base==4.*,hsc3-Executable hsc3-train- main-is: gr/train.hs- build-depends: base==4.*,hsc3-Executable hsc3-tremulate- main-is: gr/tremulate.hs- build-depends: base==4.*,hsc3,hsc3-lang,sc3-rdu-Executable hsc3-tremulate-m- main-is: gr/tremulate-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-trkl- main-is: gr/trkl.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-trmlo- main-is: gr/trmlo.hs- build-depends: base==4.*,hsc3,hsc3-unsafe,hsc3-lang-Executable hsc3-tr-out- main-is: gr/tr-out.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-tsort- main-is: gr/tsort.hs- build-depends: base==4.*,hsc3-Executable hsc3-uplink- main-is: gr/uplink.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-urandom- main-is: gr/urandom.hs- build-depends: base==4.*,bytestring,hosc,hsc3,hsc3-lang,base-Executable hsc3-vla-addtn- main-is: gr/vla-addtn.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-vla-addtn-sharc- main-is: gr/vla-addtn-sharc.hs- build-depends: base==4.*,hsharc,hosc,hsc3,hsc3-lang-Executable hsc3-vlc-distrtn- main-is: gr/vlc-distrtn.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-voscil- main-is: gr/voscil.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang,hsc3-unsafe-Executable hsc3-waveset- main-is: gr/waveset.hs- build-depends: base==4.*,array,base==4.*,hsc3-sf,hosc,hsc3,random-Executable hsc3-what-was-i-thinking- main-is: gr/what-was-i-thinking.hs- build-depends: base==4.*,hsc3-Executable hsc3-why-supercollider- main-is: gr/why-supercollider.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-wial- main-is: gr/wial.hs- build-depends: base==4.*,hsc3-Executable hsc3-wind-metals-m- main-is: gr/wind-metals-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-xy-interference- main-is: gr/xy-interference.hs- build-depends: base==4.*,hsc3-Executable hsc3-xy-interference-m- main-is: gr/xy-interference-m.hs- build-depends: base==4.*,hsc3+Version: 0.14+Synopsis: Haskell SuperCollider Graphs+Description: hsc3-graphs provides a collection of illustrative+ unit generator graphs for hsc3.+License: GPL+Category: Sound+Copyright: (c) Rohan Drape and others, 2006-2013+Author: Rohan Drape+Maintainer: rd@slavepianos.org+Stability: Experimental+Homepage: http://rd.slavepianos.org/?t=hsc3-graphs+Tested-With: GHC == 7.6.1+Build-Type: Simple+Cabal-Version: >= 1.8++Data-Files: README+ Makefile+ css/*.css+ gr/*.scd+ hs/*.hs+ sh/*.sh++Library+ Build-Depends: array,+ base == 4.*,+ bytestring,+ cairo,+ containers,+ data-default,+ directory,+ filepath,+ hls == 0.14.*,+ hmt == 0.14.*,+ hosc == 0.14.*,+ hps == 0.14.*,+ hsc3 == 0.14.*,+ hsc3-cairo == 0.14.*,+ hsc3-lang == 0.14.*,+ hsc3-sf == 0.14.*,+ hsc3-unsafe == 0.14.*,+ hsharc == 0.14.*,+ MonadRandom,+ primes,+ random,+ random-shuffle,+ sc3-rdu == 0.14.*,+ split+ GHC-Options: -Wall -fwarn-tabs+ -- Auto-generated: Fri Apr 5 14:49:03 EST 2013+ Exposed-Modules: Sound.SC3.Graph.ADC_bit_reduction,+ Sound.SC3.Graph.ADC_kabelscahden,+ Sound.SC3.Graph.ADC_shepard_tones,+ Sound.SC3.Graph.AM_karplus_strong,+ Sound.SC3.Graph.AV_rm_octaver,+ Sound.SC3.Graph.F0_sinusdeklinationen,+ Sound.SC3.Graph.F0_f0_tw0051,+ Sound.SC3.Graph.F0_f0_tw0030,+ Sound.SC3.Graph.F0_f0_tw0011,+ Sound.SC3.Graph.F0_f0_tw0033,+ Sound.SC3.Graph.F0_f0_2012_04_19,+ Sound.SC3.Graph.F0_f0_tw0077,+ Sound.SC3.Graph.F0_1_4Q6,+ Sound.SC3.Graph.F0_red_frik_m,+ Sound.SC3.Graph.F0_pkt_26,+ Sound.SC3.Graph.F0_f0_tw0020,+ Sound.SC3.Graph.F0_pkt_28,+ Sound.SC3.Graph.F0_hansm,+ Sound.SC3.Graph.F0_f0_tw0045,+ Sound.SC3.Graph.F0_f0_tw0049,+ Sound.SC3.Graph.F0_f0_tw0014,+ Sound.SC3.Graph.F0_f0_tw0084,+ Sound.SC3.Graph.F0_buffer_display,+ Sound.SC3.Graph.F0_f0_tw0028,+ Sound.SC3.Graph.JJ_bohlen_pierce_140,+ Sound.SC3.Graph.JL_dark_sea_horns_hp,+ Sound.SC3.Graph.JL_pwm_crossfade,+ Sound.SC3.Graph.JL_rain_thunder,+ Sound.SC3.Graph.JL_jl_1_Z,+ Sound.SC3.Graph.JL_bitwise,+ Sound.SC3.Graph.JL_dark_sea_horns,+ Sound.SC3.Graph.JMCC_tsort,+ Sound.SC3.Graph.JMCC_police_state,+ Sound.SC3.Graph.JMCC_wind_metals_m,+ Sound.SC3.Graph.JMCC_babbling_brook_m,+ Sound.SC3.Graph.JMCC_random_pulsations,+ Sound.SC3.Graph.JMCC_moto_rev,+ Sound.SC3.Graph.JMCC_sprinkler_m,+ Sound.SC3.Graph.JMCC_demanding_studies,+ Sound.SC3.Graph.JMCC_why_supercollider,+ Sound.SC3.Graph.JMCC_deep_trip,+ Sound.SC3.Graph.JMCC_alien_meadow,+ Sound.SC3.Graph.JMCC_snare_909,+ Sound.SC3.Graph.JMCC_uplink_hp,+ Sound.SC3.Graph.JMCC_noise_burst_sweep,+ Sound.SC3.Graph.JMCC_random_sine_waves_she,+ Sound.SC3.Graph.JMCC_data_space,+ Sound.SC3.Graph.JMCC_police_state_m,+ Sound.SC3.Graph.JMCC_default,+ Sound.SC3.Graph.JMCC_hell_is_busy,+ Sound.SC3.Graph.JMCC_noise_modulated_sines,+ Sound.SC3.Graph.JMCC_clustered_sines_m,+ Sound.SC3.Graph.JMCC_coolant,+ Sound.SC3.Graph.JMCC_harmonic_tumbling_m,+ Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines,+ Sound.SC3.Graph.JMCC_tremulate_hp,+ Sound.SC3.Graph.JMCC_resonant_dust,+ Sound.SC3.Graph.JMCC_harmonic_swimming_m,+ Sound.SC3.Graph.JMCC_synthetic_piano_m,+ Sound.SC3.Graph.JMCC_sawed_cymbals,+ Sound.SC3.Graph.JMCC_tank_m,+ Sound.SC3.Graph.JMCC_clustered_sines,+ Sound.SC3.Graph.JMCC_scratchy_m,+ Sound.SC3.Graph.JMCC_aleatoric_quartet_m,+ Sound.SC3.Graph.JMCC_spe_m,+ Sound.SC3.Graph.JMCC_what_was_i_thinking_m,+ Sound.SC3.Graph.JMCC_pond_life_hp,+ Sound.SC3.Graph.JMCC_slow_beating_sines,+ Sound.SC3.Graph.JMCC_spe_p,+ Sound.SC3.Graph.JMCC_pulsing_bottles_m,+ Sound.SC3.Graph.JMCC_early_space_music_lp_side_two,+ Sound.SC3.Graph.JMCC_random_panning_sines_m,+ Sound.SC3.Graph.JMCC_bowed_string_m,+ Sound.SC3.Graph.JMCC_random_panning_sines,+ Sound.SC3.Graph.JMCC_sidereal_time_hp,+ Sound.SC3.Graph.JMCC_string_wander_cluster,+ Sound.SC3.Graph.JMCC_alien_froggies,+ Sound.SC3.Graph.JMCC_pulsing_bottles,+ Sound.SC3.Graph.JMCC_strummable_guitar,+ Sound.SC3.Graph.JMCC_choip,+ Sound.SC3.Graph.JMCC_sprinkler,+ Sound.SC3.Graph.JMCC_rails,+ Sound.SC3.Graph.JMCC_pond_life,+ Sound.SC3.Graph.JMCC_comb_delay_sweeps,+ Sound.SC3.Graph.JMCC_tank_hp,+ Sound.SC3.Graph.JMCC_harmonic_swimming,+ Sound.SC3.Graph.JMCC_random_sine_waves,+ Sound.SC3.Graph.JMCC_modal_space,+ Sound.SC3.Graph.JMCC_lfo_modulation,+ Sound.SC3.Graph.JMCC_cymbalism_accelerando,+ Sound.SC3.Graph.JMCC_plucked_strings_m,+ Sound.SC3.Graph.JMCC_uplink,+ Sound.SC3.Graph.JMCC_sweepy_noise,+ Sound.SC3.Graph.JMCC_random_sine_waves_hp,+ Sound.SC3.Graph.JMCC_analog_bubbles,+ Sound.SC3.Graph.JMCC_resonant_dust_hp,+ Sound.SC3.Graph.JMCC_birds_hp,+ Sound.SC3.Graph.JMCC_ring_modulated_klank,+ Sound.SC3.Graph.JMCC_tremulate_m,+ Sound.SC3.Graph.JMCC_tank,+ Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp,+ Sound.SC3.Graph.JMCC_theremin,+ Sound.SC3.Graph.JMCC_data_space_hp,+ Sound.SC3.Graph.JMCC_mridangam,+ Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m,+ Sound.SC3.Graph.JMCC_doppler,+ Sound.SC3.Graph.JMCC_scratchy,+ Sound.SC3.Graph.JMCC_sidereal_time,+ Sound.SC3.Graph.JMCC_birds_m,+ Sound.SC3.Graph.JMCC_sample_and_hold_liquidities,+ Sound.SC3.Graph.JMCC_tremulate,+ Sound.SC3.Graph.JMCC_contamination_zone,+ Sound.SC3.Graph.JMCC_saucer_base,+ Sound.SC3.Graph.JMCC_cymbalism_m,+ Sound.SC3.Graph.JMCC_overlap_add,+ Sound.SC3.Graph.JP_record_scratcher,+ Sound.SC3.Graph.JRHB_chain_saw_m,+ Sound.SC3.Graph.JRHB_black_atlantic_currents,+ Sound.SC3.Graph.JRHB_deep_sea,+ Sound.SC3.Graph.JRHB_half_life,+ Sound.SC3.Graph.JRHB_dial_history_m,+ Sound.SC3.Graph.JRHB_sam_i_am,+ Sound.SC3.Graph.LJP_one_line,+ Sound.SC3.Graph.MN_k2ws,+ Sound.SC3.Graph.MN_k2ws_hp,+ Sound.SC3.Graph.NC_after_goeyvaerts,+ Sound.SC3.Graph.NC_arpeggio,+ Sound.SC3.Graph.NC_ellipse_based_synthesis,+ Sound.SC3.Graph.NP_pebble_beach,+ Sound.SC3.Graph.NV_nv_tw_54,+ Sound.SC3.Graph.NV_nv_tw_41,+ Sound.SC3.Graph.NV_nv_tw_1,+ Sound.SC3.Graph.PC_thx,+ Sound.SC3.Graph.PJ_forest_sounds_m,+ Sound.SC3.Graph.RB_hh_808,+ Sound.SC3.Graph.RD_bs_070705_m,+ Sound.SC3.Graph.RD_scritto,+ Sound.SC3.Graph.RD_ccomb_m,+ Sound.SC3.Graph.RD_adso,+ Sound.SC3.Graph.RD_lg_timed_m,+ Sound.SC3.Graph.RD_three_cpsw_m,+ Sound.SC3.Graph.RD_vlc_distrtn_m,+ Sound.SC3.Graph.RD_implosion_m,+ Sound.SC3.Graph.RD_discretion_m,+ Sound.SC3.Graph.RD_diffraction_m,+ Sound.SC3.Graph.RD_e_lamell_p,+ Sound.SC3.Graph.RD_tgb_m,+ Sound.SC3.Graph.RD_discretion,+ Sound.SC3.Graph.RD_s_chirp,+ Sound.SC3.Graph.RD_vla_addtn_sharc,+ Sound.SC3.Graph.RD_cut_outs_m,+ Sound.SC3.Graph.RD_vla_addtn,+ Sound.SC3.Graph.RD_chrd_t,+ Sound.SC3.Graph.RD_tr_out_m,+ Sound.SC3.Graph.RD_crotale_sine,+ Sound.SC3.Graph.RD_fm_kltr_p,+ Sound.SC3.Graph.RD_fm_kltr_m,+ Sound.SC3.Graph.RD_rzblp_hp,+ Sound.SC3.Graph.RD_mouse_clatter_m,+ Sound.SC3.Graph.RD_xy_interference,+ Sound.SC3.Graph.RD_waveset,+ Sound.SC3.Graph.RD_cds_070701_m,+ Sound.SC3.Graph.RD_fb_090531,+ Sound.SC3.Graph.RD_fbl_fbf,+ Sound.SC3.Graph.RD_k_ppr,+ Sound.SC3.Graph.RD_tipnso,+ Sound.SC3.Graph.RD_thb,+ Sound.SC3.Graph.RD_nharm_m,+ Sound.SC3.Graph.RD_wial_m,+ Sound.SC3.Graph.RD_fwalk_m,+ Sound.SC3.Graph.RD_trmlo_u,+ Sound.SC3.Graph.RD_chrd_m,+ Sound.SC3.Graph.RD_h_chatter_m,+ Sound.SC3.Graph.RD_sosc_lp_m,+ Sound.SC3.Graph.RD_feedr_m,+ Sound.SC3.Graph.RD_crotale,+ Sound.SC3.Graph.RD_rzblp,+ Sound.SC3.Graph.RD_cricket_m,+ Sound.SC3.Graph.RD_tgr_rpr_m,+ Sound.SC3.Graph.RD_fm_iter,+ Sound.SC3.Graph.RD_k_ppr_m,+ Sound.SC3.Graph.RD_klink,+ Sound.SC3.Graph.RD_f_lets_m,+ Sound.SC3.Graph.RD_urandom,+ Sound.SC3.Graph.RD_lf_pulses,+ Sound.SC3.Graph.RD_trkl_m,+ Sound.SC3.Graph.RD_xy_interference_m,+ Sound.SC3.Graph.RD_voscil_u,+ Sound.SC3.Graph.RD_voscil,+ Sound.SC3.Graph.RD_eggcrate_m,+ Sound.SC3.Graph.RD_rzblp_u,+ Sound.SC3.Graph.RD_shifting_pulses_m,+ Sound.SC3.Graph.RD_scritto_m,+ Sound.SC3.Graph.RD_rzblp_m,+ Sound.SC3.Graph.RD_eggcrate,+ Sound.SC3.Graph.RD_tgrn,+ Sound.SC3.Graph.RD_seqr,+ Sound.SC3.Graph.RD_pattern_buffer_m,+ Sound.SC3.Graph.RD_nharm_p,+ Sound.SC3.Graph.RD_trmlo,+ Sound.SC3.Graph.RD_lin_sosc,+ Sound.SC3.Graph.RD_e_lamell,+ Sound.SC3.Graph.RD_lso_061101_m,+ Sound.SC3.Graph.SC_bottle_m,+ Sound.SC3.Graph.SP_insects_m,+ Sound.SC3.Graph.TM_drummer++Source-Repository head+ Type: darcs+ Location: http://rd.slavepianos.org/sw/hsc3-graphs/++Executable hsc3-graphs+ hs-source-dirs: hs+ main-is: hsc3-graphs.hs+ build-depends: base,hsc3-graphs++Flag build-exec+ default: False++-- Auto-generated: Fri Apr 5 14:49:03 EST 2013+Executable hsc3-1-1Ni+ If !flag(build-exec)+ buildable: False+ main-is: gr/1-1Ni.hs+ build-depends: base,hosc,hsc3+Executable hsc3-1-4Q6+ If !flag(build-exec)+ buildable: False+ main-is: gr/1-4Q6.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-1-4QM+ If !flag(build-exec)+ buildable: False+ main-is: gr/1-4QM.hs+ build-depends: base,hosc,hsc3,hsc3-lang,sc3-rdu+Executable hsc3-1-4QN+ If !flag(build-exec)+ buildable: False+ main-is: gr/1-4QN.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-1-4Qx+ If !flag(build-exec)+ buildable: False+ main-is: gr/1-4Qx.hs+ build-depends: hsc3+Executable hsc3-1-Td+ If !flag(build-exec)+ buildable: False+ main-is: gr/1-Td.hs+ build-depends: hosc,hsc3,hsc3-lang,sc3-rdu+Executable hsc3-acid-otophilia+ If !flag(build-exec)+ buildable: False+ main-is: gr/acid-otophilia.hs+ build-depends: base,hosc,hsc3,random+Executable hsc3-adso+ If !flag(build-exec)+ buildable: False+ main-is: gr/adso.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-after-goeyvaerts+ If !flag(build-exec)+ buildable: False+ main-is: gr/after-goeyvaerts.hs+ build-depends: base,containers,hosc,hsc3,hsc3-lang,random,split+Executable hsc3-aleatoric-quartet-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/aleatoric-quartet-m.hs+ build-depends: hsc3+Executable hsc3-alien-froggies+ If !flag(build-exec)+ buildable: False+ main-is: gr/alien-froggies.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-alien-meadow+ If !flag(build-exec)+ buildable: False+ main-is: gr/alien-meadow.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-ambient1+ If !flag(build-exec)+ buildable: False+ main-is: gr/ambient1.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-analog-bubbles+ If !flag(build-exec)+ buildable: False+ main-is: gr/analog-bubbles.hs+ build-depends: hsc3+Executable hsc3-arpeggio+ If !flag(build-exec)+ buildable: False+ main-is: gr/arpeggio.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-babbling-brook-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/babbling-brook-m.hs+ build-depends: hsc3+Executable hsc3-birds-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/birds-hp.hs+ build-depends: hsc3+Executable hsc3-birds-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/birds-m.hs+ build-depends: hsc3+Executable hsc3-bit-reduction+ If !flag(build-exec)+ buildable: False+ main-is: gr/bit-reduction.hs+ build-depends: hsc3+Executable hsc3-bitwise+ If !flag(build-exec)+ buildable: False+ main-is: gr/bitwise.hs+ build-depends: hsc3+Executable hsc3-black-atlantic-currents+ If !flag(build-exec)+ buildable: False+ main-is: gr/black-atlantic-currents.hs+ build-depends: hsc3,primes,random,random-shuffle+Executable hsc3-bohlen-pierce-140+ If !flag(build-exec)+ buildable: False+ main-is: gr/bohlen-pierce-140.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-bottle-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/bottle-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-bowed-string-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/bowed-string-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-bs-070705-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/bs-070705-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-buffer-display+ If !flag(build-exec)+ buildable: False+ main-is: gr/buffer-display.hs+ build-depends: base,cairo,cmath,hsc3,hsc3-cairo+Executable hsc3-ccomb-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/ccomb-m.hs+ build-depends: hsc3+Executable hsc3-cds-070701-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/cds-070701-m.hs+ build-depends: hosc,hsc3+Executable hsc3-chain-saw-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/chain-saw-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-choip+ If !flag(build-exec)+ buildable: False+ main-is: gr/choip.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-chrd-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/chrd-m.hs+ build-depends: hsc3+Executable hsc3-chrd-t+ If !flag(build-exec)+ buildable: False+ main-is: gr/chrd-t.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-clustered-sines+ If !flag(build-exec)+ buildable: False+ main-is: gr/clustered-sines.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-clustered-sines-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/clustered-sines-m.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-comb-delay-sweeps+ If !flag(build-exec)+ buildable: False+ main-is: gr/comb-delay-sweeps.hs+ build-depends: hsc3,hsc3-lang,random+Executable hsc3-contamination-zone+ If !flag(build-exec)+ buildable: False+ main-is: gr/contamination-zone.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-coolant+ If !flag(build-exec)+ buildable: False+ main-is: gr/coolant.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-cricket-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/cricket-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-crotale+ If !flag(build-exec)+ buildable: False+ main-is: gr/crotale.hs+ build-depends: hsc3+Executable hsc3-crotale-sine+ If !flag(build-exec)+ buildable: False+ main-is: gr/crotale-sine.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-cut-outs-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/cut-outs-m.hs+ build-depends: hsc3+Executable hsc3-cymbalism-accelerando+ If !flag(build-exec)+ buildable: False+ main-is: gr/cymbalism-accelerando.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-cymbalism-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/cymbalism-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-dark-sea-horns+ If !flag(build-exec)+ buildable: False+ main-is: gr/dark-sea-horns.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-dark-sea-horns-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/dark-sea-horns-hp.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-data-space+ If !flag(build-exec)+ buildable: False+ main-is: gr/data-space.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-data-space-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/data-space-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-deep-sea+ If !flag(build-exec)+ buildable: False+ main-is: gr/deep-sea.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-deep-trip+ If !flag(build-exec)+ buildable: False+ main-is: gr/deep-trip.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-default+ If !flag(build-exec)+ buildable: False+ main-is: gr/default.hs+ build-depends: data-default,hsc3,hsc3-lang+Executable hsc3-demanding-studies+ If !flag(build-exec)+ buildable: False+ main-is: gr/demanding-studies.hs+ build-depends: hsc3+Executable hsc3-dial-history-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/dial-history-m.hs+ build-depends: base,hsc3+Executable hsc3-diffraction-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/diffraction-m.hs+ build-depends: base,hsc3+Executable hsc3-discretion+ If !flag(build-exec)+ buildable: False+ main-is: gr/discretion.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-discretion-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/discretion-m.hs+ build-depends: hsc3+Executable hsc3-doppler+ If !flag(build-exec)+ buildable: False+ main-is: gr/doppler.hs+ build-depends: hosc,hsc3+Executable hsc3-drummer+ If !flag(build-exec)+ buildable: False+ main-is: gr/drummer.hs+ build-depends: hsc3+Executable hsc3-early-space-music-lp-side-two+ If !flag(build-exec)+ buildable: False+ main-is: gr/early-space-music-lp-side-two.hs+ build-depends: hsc3,hsc3-lang,random,sc3-rdu+Executable hsc3-eggcrate+ If !flag(build-exec)+ buildable: False+ main-is: gr/eggcrate.hs+ build-depends: hsc3+Executable hsc3-eggcrate-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/eggcrate-m.hs+ build-depends: hsc3+Executable hsc3-e-lamell+ If !flag(build-exec)+ buildable: False+ main-is: gr/e-lamell.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-e-lamell-p+ If !flag(build-exec)+ buildable: False+ main-is: gr/e-lamell-p.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-ellipse-based-synthesis+ If !flag(build-exec)+ buildable: False+ main-is: gr/ellipse-based-synthesis.hs+ build-depends: hsc3+Executable hsc3-f0-2012-04-19+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-2012-04-19.hs+ build-depends: hsc3+Executable hsc3-f0-tw0011+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0011.hs+ build-depends: hsc3+Executable hsc3-f0-tw0014+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0014.hs+ build-depends: hsc3+Executable hsc3-f0-tw0020+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0020.hs+ build-depends: hsc3+Executable hsc3-f0-tw0028+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0028.hs+ build-depends: hsc3+Executable hsc3-f0-tw0030+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0030.hs+ build-depends: hsc3+Executable hsc3-f0-tw0033+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0033.hs+ build-depends: hsc3+Executable hsc3-f0-tw0045+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0045.hs+ build-depends: hsc3+Executable hsc3-f0-tw0049+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0049.hs+ build-depends: base,hsc3+Executable hsc3-f0-tw0051+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0051.hs+ build-depends: hsc3+Executable hsc3-f0-tw0077+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0077.hs+ build-depends: hsc3+Executable hsc3-f0-tw0084+ If !flag(build-exec)+ buildable: False+ main-is: gr/f0-tw0084.hs+ build-depends: hsc3+Executable hsc3-fb-090531+ If !flag(build-exec)+ buildable: False+ main-is: gr/fb-090531.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-fbl-fbf+ If !flag(build-exec)+ buildable: False+ main-is: gr/fbl-fbf.hs+ build-depends: hsc3+Executable hsc3-feedr-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/feedr-m.hs+ build-depends: hosc,hsc3+Executable hsc3-f-lets-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/f-lets-m.hs+ build-depends: hsc3+Executable hsc3-fm-iter+ If !flag(build-exec)+ buildable: False+ main-is: gr/fm-iter.hs+ build-depends: hsc3+Executable hsc3-fm-kltr-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/fm-kltr-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-fm-kltr-p+ If !flag(build-exec)+ buildable: False+ main-is: gr/fm-kltr-p.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-for-ann+ If !flag(build-exec)+ buildable: False+ main-is: gr/for-ann.hs+ build-depends: hosc,hsc3+Executable hsc3-forest-sounds-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/forest-sounds-m.hs+ build-depends: hsc3+Executable hsc3-fwalk-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/fwalk-m.hs+ build-depends: hosc,hsc3+Executable hsc3-half-life+ If !flag(build-exec)+ buildable: False+ main-is: gr/half-life.hs+ build-depends: hsc3+Executable hsc3-hansm+ If !flag(build-exec)+ buildable: False+ main-is: gr/hansm.hs+ build-depends: hosc,hsc3+Executable hsc3-harmonic-swimming+ If !flag(build-exec)+ buildable: False+ main-is: gr/harmonic-swimming.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-harmonic-swimming-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/harmonic-swimming-m.hs+ build-depends: hsc3+Executable hsc3-harmonic-tumbling-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/harmonic-tumbling-m.hs+ build-depends: hsc3+Executable hsc3-h-chatter-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/h-chatter-m.hs+ build-depends: hsc3+Executable hsc3-hell-is-busy+ If !flag(build-exec)+ buildable: False+ main-is: gr/hell-is-busy.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-hh-808+ If !flag(build-exec)+ buildable: False+ main-is: gr/hh-808.hs+ build-depends: hsc3+Executable hsc3-implosion-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/implosion-m.hs+ build-depends: hsc3+Executable hsc3-insects-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/insects-m.hs+ build-depends: hsc3+Executable hsc3-jl-1-Z+ If !flag(build-exec)+ buildable: False+ main-is: gr/jl-1-Z.hs+ build-depends: hsc3+Executable hsc3-k2ws+ If !flag(build-exec)+ buildable: False+ main-is: gr/k2ws.hs+ build-depends: hsc3+Executable hsc3-k2ws-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/k2ws-hp.hs+ build-depends: hsc3+Executable hsc3-kabelscahden+ If !flag(build-exec)+ buildable: False+ main-is: gr/kabelscahden.hs+ build-depends: hsc3+Executable hsc3-karplus-strong+ If !flag(build-exec)+ buildable: False+ main-is: gr/karplus-strong.hs+ build-depends: hosc,hsc3+Executable hsc3-klink+ If !flag(build-exec)+ buildable: False+ main-is: gr/klink.hs+ build-depends: hsc3+Executable hsc3-k-ppr+ If !flag(build-exec)+ buildable: False+ main-is: gr/k-ppr.hs+ build-depends: hsc3+Executable hsc3-k-ppr-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/k-ppr-m.hs+ build-depends: hsc3+Executable hsc3-laser-bubble+ If !flag(build-exec)+ buildable: False+ main-is: gr/laser-bubble.hs+ build-depends: hsc3+Executable hsc3-lfo-modulation+ If !flag(build-exec)+ buildable: False+ main-is: gr/lfo-modulation.hs+ build-depends: hsc3+Executable hsc3-lf-pulses+ If !flag(build-exec)+ buildable: False+ main-is: gr/lf-pulses.hs+ build-depends: hsc3+Executable hsc3-lg-timed-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/lg-timed-m.hs+ build-depends: hsc3+Executable hsc3-lin-sosc+ If !flag(build-exec)+ buildable: False+ main-is: gr/lin-sosc.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-lso-061101-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/lso-061101-m.hs+ build-depends: base,directory,filepath,hls,hps,hsc3,hsc3-lang,hsc3-sf+Executable hsc3-lucier+ If !flag(build-exec)+ buildable: False+ main-is: gr/lucier.hs+ build-depends: hsc3+Executable hsc3-m21360+ If !flag(build-exec)+ buildable: False+ main-is: gr/m21360.hs+ build-depends: hosc,hsc3+Executable hsc3-microhelix+ If !flag(build-exec)+ buildable: False+ main-is: gr/microhelix.hs+ build-depends: hsc3+Executable hsc3-modal-space+ If !flag(build-exec)+ buildable: False+ main-is: gr/modal-space.hs+ build-depends: hosc,hsc3+Executable hsc3-moto-rev+ If !flag(build-exec)+ buildable: False+ main-is: gr/moto-rev.hs+ build-depends: hsc3+Executable hsc3-mouse-clatter-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/mouse-clatter-m.hs+ build-depends: hosc,hsc3+Executable hsc3-mridangam+ If !flag(build-exec)+ buildable: False+ main-is: gr/mridangam.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-music-box+ If !flag(build-exec)+ buildable: False+ main-is: gr/music-box.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-nharm-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/nharm-m.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-nharm-p+ If !flag(build-exec)+ buildable: False+ main-is: gr/nharm-p.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-noise-burst-sweep+ If !flag(build-exec)+ buildable: False+ main-is: gr/noise-burst-sweep.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-noise-modulated-sines+ If !flag(build-exec)+ buildable: False+ main-is: gr/noise-modulated-sines.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-nokia+ If !flag(build-exec)+ buildable: False+ main-is: gr/nokia.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-non-real-time+ If !flag(build-exec)+ buildable: False+ main-is: gr/non-real-time.hs+ build-depends: hosc,hsc3,process+Executable hsc3-nv-tw-1+ If !flag(build-exec)+ buildable: False+ main-is: gr/nv-tw-1.hs+ build-depends: hsc3+Executable hsc3-nv-tw-41+ If !flag(build-exec)+ buildable: False+ main-is: gr/nv-tw-41.hs+ build-depends: hsc3+Executable hsc3-nv-tw-54+ If !flag(build-exec)+ buildable: False+ main-is: gr/nv-tw-54.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-nx102+ If !flag(build-exec)+ buildable: False+ main-is: gr/nx102.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-one-line+ If !flag(build-exec)+ buildable: False+ main-is: gr/one-line.hs+ build-depends: hsc3+Executable hsc3-oscillator-cluster-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/oscillator-cluster-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-overlap-add+ If !flag(build-exec)+ buildable: False+ main-is: gr/overlap-add.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-pattern-buffer-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/pattern-buffer-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-pebble-beach+ If !flag(build-exec)+ buildable: False+ main-is: gr/pebble-beach.hs+ build-depends: hsc3+Executable hsc3-pkt-26+ If !flag(build-exec)+ buildable: False+ main-is: gr/pkt-26.hs+ build-depends: hsc3+Executable hsc3-pkt-28+ If !flag(build-exec)+ buildable: False+ main-is: gr/pkt-28.hs+ build-depends: hsc3+Executable hsc3-plucked-strings-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/plucked-strings-m.hs+ build-depends: hsc3+Executable hsc3-police-state+ If !flag(build-exec)+ buildable: False+ main-is: gr/police-state.hs+ build-depends: hsc3+Executable hsc3-police-state-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/police-state-m.hs+ build-depends: hsc3+Executable hsc3-pond-life+ If !flag(build-exec)+ buildable: False+ main-is: gr/pond-life.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-pond-life-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/pond-life-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-proxy-mixer+ If !flag(build-exec)+ buildable: False+ main-is: gr/proxy-mixer.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-proxy-mixer-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/proxy-mixer-m.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-pulsing-bottles+ If !flag(build-exec)+ buildable: False+ main-is: gr/pulsing-bottles.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-pulsing-bottles-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/pulsing-bottles-m.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-pwm-crossfade+ If !flag(build-exec)+ buildable: False+ main-is: gr/pwm-crossfade.hs+ build-depends: hsc3+Executable hsc3-rails+ If !flag(build-exec)+ buildable: False+ main-is: gr/rails.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-rain-thunder+ If !flag(build-exec)+ buildable: False+ main-is: gr/rain-thunder.hs+ build-depends: hsc3+Executable hsc3-random-panning-sines+ If !flag(build-exec)+ buildable: False+ main-is: gr/random-panning-sines.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-panning-sines-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/random-panning-sines-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-pulsations+ If !flag(build-exec)+ buildable: False+ main-is: gr/random-pulsations.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-sine-waves+ If !flag(build-exec)+ buildable: False+ main-is: gr/random-sine-waves.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-sine-waves-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/random-sine-waves-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-sine-waves-she+ If !flag(build-exec)+ buildable: False+ main-is: gr/random-sine-waves-she.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-record-scratcher+ If !flag(build-exec)+ buildable: False+ main-is: gr/record-scratcher.hs+ build-depends: hosc,hsc3+Executable hsc3-red-frik-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/red-frik-m.hs+ build-depends: hsc3+Executable hsc3-reset+ If !flag(build-exec)+ buildable: False+ main-is: gr/reset.hs+ build-depends: hsc3+Executable hsc3-resonant-dust+ If !flag(build-exec)+ buildable: False+ main-is: gr/resonant-dust.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-resonant-dust-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/resonant-dust-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-reverberated-sine-percussion-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/reverberated-sine-percussion-hp.hs+ build-depends: hsc3+Executable hsc3-reverberated-sine-percussion-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/reverberated-sine-percussion-m.hs+ build-depends: hsc3+Executable hsc3-ring-modulated-klank+ If !flag(build-exec)+ buildable: False+ main-is: gr/ring-modulated-klank.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-rm-octaver+ If !flag(build-exec)+ buildable: False+ main-is: gr/rm-octaver.hs+ build-depends: hsc3+Executable hsc3-rzblp+ If !flag(build-exec)+ buildable: False+ main-is: gr/rzblp.hs+ build-depends: hsc3+Executable hsc3-rzblp-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/rzblp-hp.hs+ build-depends: hsc3+Executable hsc3-rzblp-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/rzblp-m.hs+ build-depends: hsc3+Executable hsc3-rzblp-u+ If !flag(build-exec)+ buildable: False+ main-is: gr/rzblp-u.hs+ build-depends: hsc3,hsc3-unsafe+Executable hsc3-sam-i-am+ If !flag(build-exec)+ buildable: False+ main-is: gr/sam-i-am.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-sample-and-hold-liquidities+ If !flag(build-exec)+ buildable: False+ main-is: gr/sample-and-hold-liquidities.hs+ build-depends: hsc3+Executable hsc3-saucer-base+ If !flag(build-exec)+ buildable: False+ main-is: gr/saucer-base.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-sawed-cymbals+ If !flag(build-exec)+ buildable: False+ main-is: gr/sawed-cymbals.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-s-chirp+ If !flag(build-exec)+ buildable: False+ main-is: gr/s-chirp.hs+ build-depends: hosc,hsc3+Executable hsc3-scratchy+ If !flag(build-exec)+ buildable: False+ main-is: gr/scratchy.hs+ build-depends: hsc3+Executable hsc3-scratchy-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/scratchy-m.hs+ build-depends: hsc3+Executable hsc3-scritto+ If !flag(build-exec)+ buildable: False+ main-is: gr/scritto.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-scritto-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/scritto-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-seqr+ If !flag(build-exec)+ buildable: False+ main-is: gr/seqr.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-shepard-tones+ If !flag(build-exec)+ buildable: False+ main-is: gr/shepard-tones.hs+ build-depends: hosc,hsc3+Executable hsc3-shifting-pulses-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/shifting-pulses-m.hs+ build-depends: hsc3+Executable hsc3-sidereal-time+ If !flag(build-exec)+ buildable: False+ main-is: gr/sidereal-time.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-sidereal-time-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/sidereal-time-hp.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-sinusdeklinationen+ If !flag(build-exec)+ buildable: False+ main-is: gr/sinusdeklinationen.hs+ build-depends: hsc3,hsc3-lang,split+Executable hsc3-slow-beating-harmonic-sines+ If !flag(build-exec)+ buildable: False+ main-is: gr/slow-beating-harmonic-sines.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-slow-beating-sines+ If !flag(build-exec)+ buildable: False+ main-is: gr/slow-beating-sines.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-snare-909+ If !flag(build-exec)+ buildable: False+ main-is: gr/snare-909.hs+ build-depends: hsc3+Executable hsc3-sosc-lp-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/sosc-lp-m.hs+ build-depends: hosc,hsc3+Executable hsc3-spe-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/spe-m.hs+ build-depends: hsc3+Executable hsc3-spe-p+ If !flag(build-exec)+ buildable: False+ main-is: gr/spe-p.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-sprinkler+ If !flag(build-exec)+ buildable: False+ main-is: gr/sprinkler.hs+ build-depends: hsc3+Executable hsc3-sprinkler-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/sprinkler-m.hs+ build-depends: hsc3+Executable hsc3-string-wander-cluster+ If !flag(build-exec)+ buildable: False+ main-is: gr/string-wander-cluster.hs+ build-depends: hsc3,hsc3-lang,random+Executable hsc3-strummable-guitar+ If !flag(build-exec)+ buildable: False+ main-is: gr/strummable-guitar.hs+ build-depends: hsc3+Executable hsc3-sweepy-noise+ If !flag(build-exec)+ buildable: False+ main-is: gr/sweepy-noise.hs+ build-depends: hsc3+Executable hsc3-synthetic-piano-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/synthetic-piano-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-tank+ If !flag(build-exec)+ buildable: False+ main-is: gr/tank.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-tank-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/tank-hp.hs+ build-depends: hsc3+Executable hsc3-tank-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/tank-m.hs+ build-depends: hsc3+Executable hsc3-tgb-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/tgb-m.hs+ build-depends: hosc,hsc3+Executable hsc3-tgrn+ If !flag(build-exec)+ buildable: False+ main-is: gr/tgrn.hs+ build-depends: hosc,hsc3+Executable hsc3-tgr-rpr-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/tgr-rpr-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-thb+ If !flag(build-exec)+ buildable: False+ main-is: gr/thb.hs+ build-depends: hmt,hosc,hsc3,hsc3-lang+Executable hsc3-theremin+ If !flag(build-exec)+ buildable: False+ main-is: gr/theremin.hs+ build-depends: hsc3+Executable hsc3-three-cpsw-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/three-cpsw-m.hs+ build-depends: hsc3+Executable hsc3-thx+ If !flag(build-exec)+ buildable: False+ main-is: gr/thx.hs+ build-depends: hsc3,random+Executable hsc3-tipnso+ If !flag(build-exec)+ buildable: False+ main-is: gr/tipnso.hs+ build-depends: hsc3+Executable hsc3-train+ If !flag(build-exec)+ buildable: False+ main-is: gr/train.hs+ build-depends: hsc3+Executable hsc3-tremulate+ If !flag(build-exec)+ buildable: False+ main-is: gr/tremulate.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-tremulate-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/tremulate-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-tremulate-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/tremulate-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-trkl-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/trkl-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-trmlo+ If !flag(build-exec)+ buildable: False+ main-is: gr/trmlo.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-trmlo-u+ If !flag(build-exec)+ buildable: False+ main-is: gr/trmlo-u.hs+ build-depends: hsc3,hsc3-lang,hsc3-unsafe+Executable hsc3-tr-out-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/tr-out-m.hs+ build-depends: hosc,hsc3+Executable hsc3-tsort+ If !flag(build-exec)+ buildable: False+ main-is: gr/tsort.hs+ build-depends: hsc3+Executable hsc3-uplink+ If !flag(build-exec)+ buildable: False+ main-is: gr/uplink.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-uplink-hp+ If !flag(build-exec)+ buildable: False+ main-is: gr/uplink-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-urandom+ If !flag(build-exec)+ buildable: False+ main-is: gr/urandom.hs+ build-depends: base,bytestring,hosc,hsc3,hsc3-lang+Executable hsc3-vla-addtn+ If !flag(build-exec)+ buildable: False+ main-is: gr/vla-addtn.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-vla-addtn-sharc+ If !flag(build-exec)+ buildable: False+ main-is: gr/vla-addtn-sharc.hs+ build-depends: base,hosc,hsc3,hsc3-lang,hsharc+Executable hsc3-vlc-distrtn-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/vlc-distrtn-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-voscil+ If !flag(build-exec)+ buildable: False+ main-is: gr/voscil.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-voscil-u+ If !flag(build-exec)+ buildable: False+ main-is: gr/voscil-u.hs+ build-depends: hosc,hsc3,hsc3-lang,hsc3-unsafe+Executable hsc3-waveset+ If !flag(build-exec)+ buildable: False+ main-is: gr/waveset.hs+ build-depends: array,base,hosc,hsc3,hsc3-sf,random+Executable hsc3-what-was-i-thinking-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/what-was-i-thinking-m.hs+ build-depends: hsc3+Executable hsc3-why-supercollider+ If !flag(build-exec)+ buildable: False+ main-is: gr/why-supercollider.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-wial-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/wial-m.hs+ build-depends: hsc3+Executable hsc3-wind-metals-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/wind-metals-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-xy-interference+ If !flag(build-exec)+ buildable: False+ main-is: gr/xy-interference.hs+ build-depends: hsc3+Executable hsc3-xy-interference-m+ If !flag(build-exec)+ buildable: False+ main-is: gr/xy-interference-m.hs+ build-depends: hsc3
@@ -0,0 +1,5 @@+#!/bin/bash++o="Makefile.graphs"+echo -n "GRAPHS=" > $o+ls *.hs | sed -r -e 's/(.*)\.hs/ \1\\/g' >> $o
@@ -0,0 +1,5 @@+#!/bin/bash+for i in *.hs+do+ HsColour -css $i -o../html/$i.html+done
@@ -0,0 +1,32 @@+#!/bin/bash++function mk_packages+{+ i=$1.hs+ o=$1.packages+ grep '{- .* -}' $i | \+ sed -e 's/.*{- //g' | \+ sed -e 's/ -}//g' | \+ sort -u | \+ xargs echo | \+ sed -e 's/ /,/g' > $o+}++function mk_cabal+{+ o=$1.cabal+ read < $1.packages p+ echo "Executable hsc3-"$1 > $o+ echo " If !flag(build-exec)" >> $o+ echo " buildable: False" >> $o+ echo " main-is: gr/"$1".hs" >> $o+ echo " build-depends: "$p >> $o+}++for i in *.hs ; do mk_packages $(basename $i .hs) ; done+for i in *.hs ; do mk_cabal $(basename $i .hs) ; done++c="../hsc3-graphs.cabal"+d=$(date)+echo "-- Auto-generated: "$d >> $c+cat *.cabal >> $c
@@ -0,0 +1,5 @@+#!/bin/bash+for i in *.dot.gz+do+ zcat $i | dot -Tpdf -o ../pdf/$(basename $i .dot.gz).pdf+done
@@ -0,0 +1,17 @@+#!/bin/bash+if [ -d dot ]+then+ for i in dot/*.dot+ do+ dot $i -Tsvg -o svg/$(basename $i .dot).svg+ done+fi++if [ -d dot.gz ]+then+ for i in dot.gz/*.dot.gz+ do+ zcat $i | dot -Tsvg -o svg/$(basename $i .dot.gz).svg+ done+fi+
@@ -0,0 +1,8 @@+grep \(adc\) */*.hs+grep \(am\) */*.hs+grep \(f0\) */*.hs | wc -l+grep \(jl\) */*.hs+grep \(jmcc\) */*.hs | wc -l+grep \(jrhb\) */*.hs+grep \(nc\) */*.hs+grep \(nv\) */*.hs