Csound Csound-dev Csound-tekno Search About

[Csnd] monophonic synths

Date2025-05-31 07:24
FromJosh Moore
Subject[Csnd] monophonic synths
does anyone have any tricks to make these that are controllable via midi?
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2025-05-31 08:12
FromVictor Lazzarini <000010b17ddd988e-dmarc-request@LISTSERV.HEANET.IE>
SubjectRe: [Csnd] [EXTERNAL] [Csnd] monophonic synths
I would say have a dispatcher instrument receiving MIDI and a player instrument that uses the tied note mechanism (p3 = -1 and matching p1). That should be a good start.

One time, I also did one using a single instance player instrument and channels to pass data from the dispatcher.

The essential thing is to have a single instance playing. 

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 May 2025, at 07:25, Josh Moore <kh405.7h30ry@gmail.com> wrote:


does anyone have any tricks to make these that are controllable via midi?
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2025-05-31 09:18
FromIain McCurdy
SubjectRe: [Csnd] monophonic synths
massign 0, 1 ; all MIDI to instr 1

instr 1 ; triggered by MIDI notes 
 iNote             notnum                              ; MIDI note number played
 gkNote            =                   iNote           ; gkNote will always adopt the value of the most recently played note

 iNumNotes         active              1               ; outputs the number of notes currently being played by instr 1. i.e. if this is the first note, iNumNotes = 1
 if iNumNotes==1 then                                  ; if this is the first note of a sequence
                   event_i             "i", 2, 0, -1   ; event_i creates a score event at i-time. p3 = -1 means a 'held' note.
 endif
endin

instr 2 ; synthesises audio (monophonic)
 kNumNotes         active              1               ; outputs the number of notes currently being played by instr 1. Notice that this time it is k-rate.
 if kNumNotes==0 then
                   turnoff                             ; 'turnoff' turns off this note. It will allow release envelopes to complete, thereby preventing clicks.
 endif
 
 kRelease          release                             ; this creates a release flag indicator as to whether this note is in it release stage or not. 0 = sustain, 1 = release
 
 ; maybe add some portamento to the note value
 kPortTime         linseg              0, 0.01, 0.03
 if kRelease==0 then                                   ; only update note while in the sustain portion of the note
  kNote            portk               gkNote, kPortTime
 endif
 
 kEnv              linsegr             0, 0.01, 1, 0.2, 0
 aSig              vco2                0.1 * kEnv, cpsmidinn(kNote), 4, 0.5  
                   outs                aSig, aSig
endin

From: A discussion list for users of Csound <CSOUND@LISTSERV.HEANET.IE> on behalf of Josh Moore <kh405.7h30ry@GMAIL.COM>
Sent: 31 May 2025 06:24
To: CSOUND@LISTSERV.HEANET.IE <CSOUND@LISTSERV.HEANET.IE>
Subject: [Csnd] monophonic synths
 
does anyone have any tricks to make these that are controllable via midi?
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2025-05-31 09:30
FromJosh Moore
SubjectRe: [Csnd] monophonic synths
this will suit tb-303 and sh-101 configurations nicely thanks iain

On Sat, May 31, 2025 at 1:18 AM Iain McCurdy <i_mccurdy@hotmail.com> wrote:
massign 0, 1 ; all MIDI to instr 1

instr 1 ; triggered by MIDI notes 
 iNote             notnum                              ; MIDI note number played
 gkNote            =                   iNote           ; gkNote will always adopt the value of the most recently played note

 iNumNotes         active              1               ; outputs the number of notes currently being played by instr 1. i.e. if this is the first note, iNumNotes = 1
 if iNumNotes==1 then                                  ; if this is the first note of a sequence
                   event_i             "i", 2, 0, -1   ; event_i creates a score event at i-time. p3 = -1 means a 'held' note.
 endif
endin

instr 2 ; synthesises audio (monophonic)
 kNumNotes         active              1               ; outputs the number of notes currently being played by instr 1. Notice that this time it is k-rate.
 if kNumNotes==0 then
                   turnoff                             ; 'turnoff' turns off this note. It will allow release envelopes to complete, thereby preventing clicks.
 endif
 
 kRelease          release                             ; this creates a release flag indicator as to whether this note is in it release stage or not. 0 = sustain, 1 = release
 
 ; maybe add some portamento to the note value
 kPortTime         linseg              0, 0.01, 0.03
 if kRelease==0 then                                   ; only update note while in the sustain portion of the note
  kNote            portk               gkNote, kPortTime
 endif
 
 kEnv              linsegr             0, 0.01, 1, 0.2, 0
 aSig              vco2                0.1 * kEnv, cpsmidinn(kNote), 4, 0.5  
                   outs                aSig, aSig
endin

From: A discussion list for users of Csound <CSOUND@LISTSERV.HEANET.IE> on behalf of Josh Moore <kh405.7h30ry@GMAIL.COM>
Sent: 31 May 2025 06:24
To: CSOUND@LISTSERV.HEANET.IE <CSOUND@LISTSERV.HEANET.IE>
Subject: [Csnd] monophonic synths
 
does anyone have any tricks to make these that are controllable via midi?
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2025-06-02 17:17
FromAaron Krister Johnson
SubjectRe: [Csnd] monophonic synths
Leave it to Iain McCurdy, of course, to have just the thing! ;)

Yes, every example I've seen of this, the key is an instrument devoted to handling the MIDI signals, 'filtering things" out, or rather, handling something ain to voice-stealing, so that after that process, you have one signal that gets transmitted by score mechanisms to another instrument that does the actual sounding.



On Sat, May 31, 2025 at 1:30 AM Josh Moore <kh405.7h30ry@gmail.com> wrote:
this will suit tb-303 and sh-101 configurations nicely thanks iain

On Sat, May 31, 2025 at 1:18 AM Iain McCurdy <i_mccurdy@hotmail.com> wrote:
massign 0, 1 ; all MIDI to instr 1

instr 1 ; triggered by MIDI notes 
 iNote             notnum                              ; MIDI note number played
 gkNote            =                   iNote           ; gkNote will always adopt the value of the most recently played note

 iNumNotes         active              1               ; outputs the number of notes currently being played by instr 1. i.e. if this is the first note, iNumNotes = 1
 if iNumNotes==1 then                                  ; if this is the first note of a sequence
                   event_i             "i", 2, 0, -1   ; event_i creates a score event at i-time. p3 = -1 means a 'held' note.
 endif
endin

instr 2 ; synthesises audio (monophonic)
 kNumNotes         active              1               ; outputs the number of notes currently being played by instr 1. Notice that this time it is k-rate.
 if kNumNotes==0 then
                   turnoff                             ; 'turnoff' turns off this note. It will allow release envelopes to complete, thereby preventing clicks.
 endif
 
 kRelease          release                             ; this creates a release flag indicator as to whether this note is in it release stage or not. 0 = sustain, 1 = release
 
 ; maybe add some portamento to the note value
 kPortTime         linseg              0, 0.01, 0.03
 if kRelease==0 then                                   ; only update note while in the sustain portion of the note
  kNote            portk               gkNote, kPortTime
 endif
 
 kEnv              linsegr             0, 0.01, 1, 0.2, 0
 aSig              vco2                0.1 * kEnv, cpsmidinn(kNote), 4, 0.5  
                   outs                aSig, aSig
endin

From: A discussion list for users of Csound <CSOUND@LISTSERV.HEANET.IE> on behalf of Josh Moore <kh405.7h30ry@GMAIL.COM>
Sent: 31 May 2025 06:24
To: CSOUND@LISTSERV.HEANET.IE <CSOUND@LISTSERV.HEANET.IE>
Subject: [Csnd] monophonic synths
 
does anyone have any tricks to make these that are controllable via midi?
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here