From: owner-sc-users-digest@lists.io.com (sc-users-digest) To: sc-users-digest@lists.io.com Subject: sc-users-digest V1 #67 Reply-To: sc-users Sender: owner-sc-users-digest@lists.io.com Errors-To: owner-sc-users-digest@lists.io.com Precedence: bulk sc-users-digest Wednesday, October 6 1999 Volume 01 : Number 067 ---------------------------------------------------------------------- Date: Thu, 30 Sep 1999 00:08:15 -0600 From: James McCartney <---@---.---> Subject: Re: Linux and Supercollider? At 5:50 PM -0600 9/29/99, Jim Coker wrote: >James, what's your take on the Linux latency discussion >on the music-dsp list? I myself wouldn't mind seeing >Supercollider on G4 Linux PPC box. LinuxPPC does not yet run on Sawtooth, only the Yosemite board. It is also not clear to me that the latencies reported for Linux on intel translate to Linux on PPC. Once MacOSX is here we'll have a real unix on the Mac, so there may be less reason to use LinuxPPC. What form MacOSX takes exactly remains to be seen. I have a developer's release copy, but I've not had a look at it yet. Don't count on SC on LinuxPPC anytime soon. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Thu, 30 Sep 1999 10:32:10 -0700 From: Geoff Spradley <---@---.---> Subject: Re: Linux and Supercollider? Wouldn't a SuperCollider port to Linux for *Intel* be a more desirable goal than one for LinuxPPC? Linux/Intel is much more robust/supported than LinuxPPC, and the opportunity to use a whole new world of cheap (and multi-processor) hardware would certainly be welcome. - --Geoff >At 5:50 PM -0600 9/29/99, Jim Coker wrote: >>James, what's your take on the Linux latency discussion >>on the music-dsp list? I myself wouldn't mind seeing >>Supercollider on G4 Linux PPC box. > >LinuxPPC does not yet run on Sawtooth, only the Yosemite board. >It is also not clear to me that the latencies reported for Linux >on intel translate to Linux on PPC. >Once MacOSX is here we'll have a real unix on the Mac, so there >may be less reason to use LinuxPPC. What form MacOSX takes exactly >remains to be seen. I have a developer's release copy, but I've not >had a look at it yet. > >Don't count on SC on LinuxPPC anytime soon. ------------------------------ Date: Thu, 30 Sep 1999 10:33:24 -0600 From: "David Cottle" <---@---.---> Subject: Conceptual question about random sequences Tell me if I'm straight about random number theory. While working on the Webern variations I decided to calculate the number of possible variations. (For example, there are 4 versions of the row, 12 transpositions = 48 possibilities, a new row chosen 5 times = 48 to the power of 5, etc.) I got about 500 million. I decided to print out the random seed as "variation number n", and then I got to thinking that with a random number generator each new random value is chosen from a series so that there are not millions of variations, but only as many variations as are contained in the random number series. Even if I seeded the random number each time a new value is chosen, wouldn't that be timed so perfectly that each time program ran the seeds would be from the clock values a similar distance apart? With this in mind, how many variations are there? (4 billion, according to Moore.) What is the period of a Mac random number generator? Or do you use your own? How do I make it a truly random sequence so that I can say there are millions of possibilities? Would seeding a random value each time slow the program down much? ------------------------------ Date: Thu, 30 Sep 1999 15:33:24 -0600 From: James McCartney <---@---.---> Subject: Re: Conceptual question about random sequences At 10:33 AM -0600 9/30/99, David Cottle wrote: >Tell me if I'm straight about random number theory. > >While working on the Webern variations I decided to calculate the number of >possible variations. (For example, there are 4 versions of the row, 12 >transpositions = 48 possibilities, a new row chosen 5 times = 48 to the >power of 5, etc.) I got about 500 million. > >I decided to print out the random seed as "variation number n", and then I >got to thinking that with a random number generator each new random value is >chosen from a series so that there are not millions of variations, but only >as many variations as are contained in the random number series. > >Even if I seeded the random number each time a new value is chosen, wouldn't >that be timed so perfectly that each time program ran the seeds would be >from the clock values a similar distance apart? If you seed it yourself the clock has nothing to do with it. If you allow it to seed itself, then it uses the clock (1/60ths of second) plus a thread count, so that even two threads seeding at the same time get a different seed. > >With this in mind, how many variations are there? (4 billion, according to >Moore.) What is the period of a Mac random number generator? Or do you use >your own? I don't use the Mac Random(). What I use has a period of 2^32 or approx 4 billion. >How do I make it a truly random sequence so that I can say there are >millions of possibilities? There are no truly random sequences generated by a computer. >Would seeding a random value each time slow the program down much? What do you mean seeding with a random value? It randomly seeds itself by default probably better than you could do by seeding it. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Thu, 30 Sep 1999 15:16:52 -0600 From: "David Cottle" <---@---.---> Subject: Re: Conceptual question about random sequences Hi, > There are no truly random sequences generated by a computer. Agreed. I just told my class that randomness is a human perception. I guess what I was saying is how many combinations are possible. I guess the whole point of my question is that there are not random variations, but a finite number of variations, as determined by the random function. We perceive them as random. >>Would seeding a random value each time slow the program down much? > > What do you mean seeding with a random value? It randomly seeds itself > by default probably better than you could do by seeding it. I think you answered my question. There are only ~4 billion combinations of random walks if I never choose another seed during that walk. If I choose a seed during a random walk, then that doubles the possibilities because that particular random walk will be a combination of two choices out of 4 billion. I realize in practice it probably doesn't matter. I'm thinking of applying for a commission and I just want to get my facts straight. ------------------------------ Date: Thu, 30 Sep 1999 16:45:42 -0600 From: James McCartney <---@---.---> Subject: Re: Conceptual question about random sequences At 3:16 PM -0600 9/30/99, David Cottle wrote: >I realize in practice it probably doesn't matter. Don't go nuts over theoretical purity here. If your score generated 100 events per second then it would take over 16 months to reach the end of a cycle. So however you divide that up into pieces, that is way more than anyone could care about. Physicists and astronomers sometimes use a random number generator called R250 which has a cycle time of 2^250. I don't think that is necessary for music. The seed is 250 words long.. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Thu, 30 Sep 1999 16:54:40 -0600 From: Jim Coker <---@---.---> Subject: Re: Linux and Supercollider? James McCartney wrote: > LinuxPPC does not yet run on Sawtooth, only the Yosemite board. > It is also not clear to me that the latencies reported for Linux > on intel translate to Linux on PPC. > Once MacOSX is here we'll have a real unix on the Mac, so there > may be less reason to use LinuxPPC. What form MacOSX takes exactly > remains to be seen. I have a developer's release copy, but I've not > had a look at it yet. I've seen OSX Server briefly, it's looks a lot like NextStep w/ some MacOS GUI stuff added. I haven't heard anything about how it may be better or worse for audio apps. Jim ------------------------------ Date: Thu, 30 Sep 1999 17:37:59 -0600 From: James McCartney <---@---.---> Subject: Re: Linux and Supercollider? At 4:54 PM -0600 9/30/99, Jim Coker wrote: >I've seen OSX Server briefly, it's looks a lot like NextStep w/ some >MacOS GUI stuff added. I haven't heard anything about how it may >be better or worse for audio apps. I was talking about OSX not OSX Server. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Sun, 3 Oct 1999 18:38:21 -0700 From: Tim Perkis <---@---.---> Subject: GUI code generation? I can't get GUI code generation to work. Whenever I build a screen in the editor and try to generate code by using the "Generate code to clipboard" item under the GUI menu, I get this error message: ERROR: Message 'on' not understood. RECEIVER: nil ARGS: Instance of Array { (06CF0174, gc=00, fmt=01, flg=00, set=00) indexed slots [1] 0 : "" } CALL STACK: Object::doesNotUnderstand arg this = nil arg selector = 'on' arg args = [*1] Meta_SequenceableCollection::streamContents arg this = class String arg function = < var stream = nil GUIWindow::generateCode arg this = < Any ideas what's going on? - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- T I M P E R K I S home: (tel) +01 510 528 7241 (fax) +01 661 752 8081 perkis@artifact.com http://www.artifact.com/perkis "Techno music is like Detroit: a complete mistake." -- Derrick May - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ------------------------------ Date: Sun, 3 Oct 1999 20:58:20 -0600 From: James McCartney <---@---.---> Subject: Re: GUI code generation? At 7:38 PM -0600 10/3/99, Tim Perkis wrote: >>>> I can't get GUI code generation to work. Whenever I build a screen in the editor and try to generate code by using the "Generate code to clipboard" item under the GUI menu, I get this error message: ERROR: Message 'on' not understood. RECEIVER: nil ARGS: Instance of Array { (06CF0174, gc=00, fmt=01, flg=00, set=00) indexed slots [1] 0 : "" } CALL STACK: Object::doesNotUnderstand arg this = nil arg selector = 'on' arg args = [*1] Meta_SequenceableCollection::streamContents arg this = class String arg function = < var stream = nil GUIWindow::generateCode arg this = < Any ideas what's going on? What version of SC are you using ? 2.2.1 is the latest. There was a bug in gui code generation that was fixed. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Mon, 4 Oct 1999 10:23:27 +0100 From: finer@easynet.co.uk Subject: crash time hello, I tried to write a bit of code that would write to a File every now and again, the idea being that if the program crashed when I wasn't around I could read the file and find out the approximate time this had occurred. This didn't work because of trying to write to a file at interrupt level. Is there some little corner of Mac OS that records at what time the computer was last shut down/crashed or some cunning trick in SC I have not thought of ? Thanks, Jem ------------------------------ Date: Mon, 4 Oct 1999 09:23:48 -0600 From: James McCartney <---@---.---> Subject: Re: crash time At 3:23 AM -0600 10/4/99, finer@easynet.co.uk wrote: >hello, > >I tried to write a bit of code that would write to a File every now and >again, the idea being that if the program crashed when I wasn't around I >could read the file and find out the approximate time this had occurred. > >This didn't work because of trying to write to a file at interrupt level. I'm working on Threads right now, so that writing a file from interrupt level should work in the next version. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 4 Oct 1999 21:18:00 +0100 From: finer@easynet.co.uk Subject: Re: crash time >At 3:23 AM -0600 10/4/99, finer@easynet.co.uk wrote: >>hello, >> >>I tried to write a bit of code that would write to a File every now and >>again, the idea being that if the program crashed when I wasn't around I >>could read the file and find out the approximate time this had occurred. >> >>This didn't work because of trying to write to a file at interrupt level. > >I'm working on Threads right now, so that writing a file from >interrupt level should work in the next version. > > Cool ! - not that I'm sure quite what threads are. Jem ------------------------------ Date: Mon, 4 Oct 1999 15:41:02 -0600 From: James McCartney <---@---.---> Subject: Re: crash time At 2:18 PM -0600 10/4/99, finer@easynet.co.uk wrote: >>At 3:23 AM -0600 10/4/99, finer@easynet.co.uk wrote: >>I'm working on Threads right now, so that writing a file from >>interrupt level should work in the next version. >> >> > >Cool ! - not that I'm sure quite what threads are. A thread is an independant flow of control with its own call stack. The reason that you can't write a file right now is that in order to, for example, get the length of a file you have to send a message from interrupt level to MacOS to say "get the length". (MacOS calls are illegal at interrupt level so there are fifos going both directions between interrupt level and the OS. This is how all drawing of GUI stuff gets done now, for instance.) Getting the file length requires a round trip message from interrupt level to the OS and then back to interrupt level. If you did this from the main thread, the virtual machine would be blocked waiting until the function got the length from the OS, which would result in spawning, scheduled tasks and triggered functions like Sequencer not being able to run. If you have multiple threads then one thread can be blocked waiting on the file length function to finish while the main thread can go ahead and spawn new events, run scheduling tasks, etc. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Mon, 04 Oct 1999 22:22:30 +0100 From: "@=?ISO-8859-1?B?hg==?=*" <---@---.---> Subject: That fuckin guitar chord or the m1 chord is history:> There is a program to disable the startup sound on BItheadz if anyone is interested,Hooray!! richard. http://www.bitheadz.com/ ------------------------------ Date: Tue, 5 Oct 1999 07:26:40 +1000 From: Garth Paine <---@---.---> Subject: Digi001 Hi James, Has there been a response re supporting the DigiDesign 001 interface? I note it doesn't support TDM plugins, so does that mean it doesn't use DAE, or Direct I/O, and does that mean it could be some time before it is supported by SC? Cheers, Garth Check out some of the tracks off my CD "Escape Velocity" http://www.activatedspace.com.au ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. Activated Space . Composer, Sound Designer, Installation Artist .. Interactives Designer, Exhibition Consultant ........ph. 61 3 95720133 garth@activatedspace.com.au .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. ------------------------------ Date: Mon, 4 Oct 1999 18:34:05 -0700 From: Tim Perkis <---@---.---> Subject: Distinguishing 2 USB MIDI Ports SC doesn't seem to be able to distinguish between input on the two ports of my Midiman "Midisport" USB MIDI interface; that is, input on either port causes the same action. They are set up as two distinct ports connected through the same physical device in OMS. The ports, called "port 1" and "port 2", appear and act properly in OMS menus in apps such as MAX, so I'm fairly sure it's not a problem with the usual suspect, OMS. Is there a way I can setup MidiControl objects or Midimapped Views to be able to distinguish between the two inputs?=20 Below is a clip from the SC startup screen with this OMS setup. (I also don't understand why there are six separate "ports" defined here instead of just two.) thanks T SuperCollider 2.2.1, copyright (c) 1998 James McCartney ... OMS Ports: port 0 'MIDISport' port 1 'MIDISport' port 2 'Port 1' port 3 'Port 1' port 4 'Port 2' port 5 'Port 2' port 6 'QuickTime Music' port 7 'Studio Patches pgm chg' port 8 '=83 IAC Bus #1' port 9 '=83 IAC Bus #1' OMS init =2E... - -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= - -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- T I M P E R K I S =20 home: (tel) +01 510 528 7241 (fax) +01 661 752 8081 perkis@artifact.com =20 http://www.artifact.com/perkis =20 "Techno music is like Detroit: a complete mistake." =20 -- Derrick May - -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= - -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- ------------------------------ Date: Mon, 4 Oct 1999 23:56:04 -0600 From: James McCartney <---@---.---> Subject: Re: Distinguishing 2 USB MIDI Ports At 7:34 PM -0600 10/4/99, Tim Perkis wrote: >>>> SC doesn't seem to be able to distinguish between input on the two ports of my Midiman "Midisport" USB MIDI interface; that is, input on either port causes the same action. They are set up as two distinct ports connected through the same physical device in OMS. The ports, called "port 1" and "port 2", appear and act properly in OMS menus in apps such as MAX, so I'm fairly sure it's not a problem with the usual suspect, OMS. Is there a way I can setup MidiControl objects or Midimapped Views to be able to distinguish between the two inputs? Below is a clip from the SC startup screen with this OMS setup. (I also don't understand why there are six separate "ports" defined here instead of just two.) thanks Because some are input ports and some are output ports and some may be sync ports. The next version distinguishes them. I'm not sure why OMS creates multiple ports.. You are right that SC currently responds to all midi input. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: < ------------------------------ Date: Mon, 4 Oct 1999 23:57:58 -0600 From: James McCartney <---@---.---> Subject: [bounce] Re: That fuckin guitar chord or the m1 chord is history:> You are subscribed under a different name than that from which you are posting. >Date: Mon, 04 Oct 1999 18:10:32 -0400 >From: bizarro <---@---.---> > >"@?*" wrote: > >> There is a program to disable the startup sound on BItheadz if anyone is >> interested,Hooray!! > >I'll chime in (no pun intended). > >I've been using the startup sound disabler on a PB G3 for about a month now > >and it does what it says w/ no problems. > >AFAIK it will only work w/ newer G3s. There must be some info on the site. > >Michael > >-- >http://www.metalbox.com ------------------------------ Date: Tue, 5 Oct 1999 00:04:20 -0600 From: James McCartney <---@---.---> Subject: Re: Digi001 At 3:26 PM -0600 10/4/99, Garth Paine wrote: >Hi James, > >Has there been a response re supporting the DigiDesign 001 interface? >I note it doesn't support TDM plugins, so does that mean it doesn't >use DAE, or Direct I/O, and does that mean it could be some time >before it is supported by SC? >Cheers, unaware of it... got a URL ?? Didn't see it at Digi's site. Why should I support it? --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 5 Oct 1999 19:18:13 +1000 From: Garth Paine <---@---.---> Subject: Re: Digi001 Hi James >unaware of it... got a URL ?? Didn't see it at Digi's site. >Why should I support it? http://www.digi001.com/001.html I think you should support it because it provides 8 analog I/O, 2 SPDIF and an ADAT I/O and MIDI. Seems like a good package for a lot of sound work, and is aimed at the budget user (most of us!!!). I haven't seen one yet, but expect to get my hands on one in the next 2 days. AS I said in my last posting, I( am not sure if it supports DAE/ Direct I/O. I note it does not use TDM plugins, so maybe there are other things under the bonnet that are not too good - we shall see, but I was about to buy a Korg 1212, and was told to wait for the 001. So obviously I would like to have SC support to use PanAz etc etc Cheers, Garth Check out some of the tracks off my CD "Escape Velocity" http://www.activatedspace.com.au ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. Activated Space . Composer, Sound Designer, Installation Artist .. Interactives Designer, Exhibition Consultant ........ph. 61 3 95720133 garth@activatedspace.com.au .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. ------------------------------ Date: Tue, 05 Oct 1999 04:25:31 -0700 From: Jim Coker <---@---.---> Subject: Re: Distinguishing 2 USB MIDI Ports Did you try using ports numbered 2-5? I did some midi programming w/ OMS and the Midiman recently, and remembered that OMS listed a port for the Midiman itself, and then ports for each of the two midiman ports. Comparing what SC prints out w/ the OMS Studio setup doc might clear things up. I think SC may be printing 2 MidiSport ports (in and out) and then four more ports for the actual midi connectors (2 in, 2 out); these being the installed ports that OMS reports to SC. Jim Tim Perkis wrote: > > SC doesn't seem to be able to distinguish between input on the two ports of my Midiman "Midisport" USB MIDI interface; that is, input on either port causes the same action. > > They are set up as two distinct ports connected through the same physical device in OMS. The ports, called "port 1" and "port 2", appear and act properly in OMS menus in apps such as MAX, so I'm fairly sure it's not a problem with the usual suspect, OMS. > > Is there a way I can setup MidiControl objects or Midimapped Views to be able to distinguish between the two inputs? > > Below is a clip from the SC startup screen with this OMS setup. (I also don't understand why there are six separate "ports" defined here instead of just two.) > > thanks > > T > > SuperCollider 2.2.1, copyright (c) 1998 James McCartney > ... > OMS Ports: > port 0 'MIDISport' > port 1 'MIDISport' > port 2 'Port 1' > port 3 'Port 1' > port 4 'Port 2' > port 5 'Port 2' > port 6 'QuickTime Music' > port 7 'Studio Patches pgm chg' > port 8 'f IAC Bus #1' > port 9 'f IAC Bus #1' > OMS init > > .... > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- > > T I M P E R K I S > > home: (tel) +01 510 528 7241 (fax) +01 661 752 8081 > perkis@artifact.com > http://www.artifact.com/perkis > > "Techno music is like Detroit: a complete mistake." > -- Derrick May > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ------------------------------ Date: Tue, 5 Oct 1999 15:29:20 -0600 From: James McCartney <---@---.---> Subject: Re: Digi001 I asked Digi and the 001 does use DirectIO so SC should work with it without any specific support. Unfortunately due to a problem that they are aware of, you cannot use the 001's MIDI ports and DirectIO at the same time. Thus you can use SC with the 001 but you can't use its MIDI ports. They say that this will be fixed at some point. Minimum buffer size is 256 samples, the same as ProTools24. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 6 Oct 1999 07:25:48 +1000 From: Garth Paine <---@---.---> Subject: Re: Digi001 Hi James >I asked Digi and the 001 does use DirectIO so SC should work with it >without any specific support. >Unfortunately due to a problem that they are aware of, >you cannot use the 001's MIDI ports and DirectIO at the same time. >Thus you can use SC with the 001 but you can't use its MIDI ports. >They say that this will be fixed at some point. >Minimum buffer size is 256 samples, the same as ProTools24. Thanks for the response. >Minimum buffer size is 256 samples What does this actually mean - major latency problems?? I am not so keen to use its MIDI ports as I need too many of the usually, and I am really looking forward to OSC being implemented in SC to transfer all the VNS info to SC that way rather than doing all the processing in MAX, and still needing to send rather too much MIDI data each frame to SC. I guess for some installations it would be cool though to have all the I/O in one box. Cheers, Garth Check out some of the tracks off my CD "Escape Velocity" http://www.activatedspace.com.au ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. Activated Space . Composer, Sound Designer, Installation Artist .. Interactives Designer, Exhibition Consultant ........ph. 61 3 95720133 garth@activatedspace.com.au .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. ------------------------------ Date: Tue, 5 Oct 1999 14:54:56 -0700 From: Tim Perkis <---@---.---> Subject: Re: Distinguishing 2 USB MIDI Ports Jim Coker wrote: Did you try using ports numbered 2-5? I did some midi programming w/ OMS and the Midiman recently, and remembered that OMS listed a port for the Midiman itself, and then ports for each of the two midiman ports. Comparing what SC prints out w/ the OMS Studio setup doc might clear things up. I think SC may be printing 2 MidiSport ports (in and out) and then four more ports for the actual midi connectors (2 in, 2 out); these being the installed ports that OMS reports to SC. Jim - ------ Yes, I did -- I found that sending out on ports 3 and 5 worked: For example, this worked to send out on Out-A m = MIDIOut.new(3); m.noteOn(1,60,127); But input seemed to be indiscriminate: I could find no way to distinguish input on one input from the other; action on either caused the same effect, in MidiControls or MidiMapped Views. Not that big a deal I suppose, but I wanted to run a totally different app (Nord Modular Editor) on one port and SC on the other. T - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- T I M P E R K I S home: (tel) +01 510 528 7241 (fax) +01 661 752 8081 perkis@artifact.com http://www.artifact.com/perkis "Techno music is like Detroit: a complete mistake." -- Derrick May - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ------------------------------ Date: Tue, 5 Oct 1999 19:59:34 -0600 From: James McCartney <---@---.---> Subject: Re: Digi001 At 3:25 PM -0600 10/5/99, Garth Paine wrote: >>Minimum buffer size is 256 samples > >What does this actually mean - major latency problems?? Not major. The Audiomedia 3, Korg and Sonorus have 512 sample buffers, so this is actually better than those. They say that there is a possibility of providing 128 sample buffers, but they may or may not make that available.. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Tue, 5 Oct 1999 19:53:55 -0700 From: Tim Perkis <---@---.---> Subject: midi-mapped fader, action proc bug? It appears that a slider action proc is not triggered when a slider is moved by a midimapped action. Is that expected behavior? I include the full example below. The observed behavior is that midi in will move the fader on the screen, but it doesn't trigger the action; dragging the fader with the mouse does trigger the action. Is this a bug or a feature? If it's a feature, what's the right way to trigger action on midi input? Monaco( // a demonstration of envelope blending var a, b, sa, sb, v1, v2, v3, s1, w, z; // make some envelopes a = Env.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4], [3, 2, -2, -4]); b = Env.new([0, 0.2, 1, 0.4, 0], [1, 1, 1, 2], [-2, -2, 1, 0]); // generate signals to plot sa = Synth.collect({ EnvGen.ar(a, 1, 0, 1, 0, 0.01 / a.times.sum) }, 0.01); sb = Synth.collect({ EnvGen.ar(b, 1, 0, 1, 0, 0.01 / a.times.sum) }, 0.01); // create a window w = GUIWindow.new("Env blending", Rect.new( 128, 64, 528, 400 )); v1 = SignalView.new( w, Rect.new( 21, 23, 177, 123 ), sa, -1, 1); v2 = SignalView.new( w, Rect.new( 183, 23, 339, 123 ), sb, -1, 1); v3 = SignalView.new( w, Rect.new( 21, 186, 177, 286 ), nil,-1, 1); s1 = SliderView.new( w, Rect.new( 184, 138, 339, 158 ), " ", 0.5, 0, 1, 0.01, 'linear'); StringView.new( w, Rect.new( 48, 136, 176, 156 ), "Blend Fraction :"); // calculate an appropriate zoom z = ceil(sa.size / v1.bounds.width); v1.zoom = z; v2.zoom = z; v3.zoom = z; // make a slider action proc that blends the envelopes and plots the result s1.prSetMIDIMapping(16rB0, 1,7); s1.action = { v3.signal = Synth.collect({ var c, ec; c = blend(a, b, s1.value); ec = EnvGen.ar(c, 1, 0, 1, 0, 0.01 / a.times.sum); }, 0.01); v3.refresh; }; s1.action.value; ) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- T I M P E R K I S home: (tel) +01 510 528 7241 (fax) +01 661 752 8081 perkis@artifact.com http://www.artifact.com/perkis - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ------------------------------ Date: Tue, 05 Oct 1999 22:11:35 -0600 From: "David Cottle" <---@---.---> Subject: Pseries Hi, I'm looking more into your suggestion of using Pseries instead of Pfunc. The point you make for Pseries is that you can have separate processes. I see in your examples how to do this with a stereo instrument such as: Synth.play({ SinOsc.ar( Sequencer.kr([pattern.asStream, pattern.asStream], etc. But how would you get two patterns working with Pbind? (Don't look too closely at the code, I'm trimming it for simplicity.) I've gotten this far: blipInst = { arg midinote, amp, dur, pan; Mix.ar([ Blip.ar( //Blip instrument midinote.midicps, //One pattern 4 ), Blip.ar( //Blip instrument midinote.midicps, //Same pattern but independant 4 ) ])*0.2 }; and Pbind( \dur, nextFunc, \midinote, noteFunc, \veloc, velocFunc*127, \ugenFunc, blipInst, \sustain, durFunc, \pan, panFunc ).play; If I understand Pbind correctly it gets its value from, e.g. the noteFunc, then passes it to blipInst via the argument midinote. How do I get independent versions of midinote going? Two versions of Pbind? ------------------------------ Date: Wed, 6 Oct 1999 00:09:35 -0600 From: James McCartney <---@---.---> Subject: Re: Pseries At 10:11 PM -0600 10/5/99, David Cottle wrote: >Hi, > >I'm looking more into your suggestion of using Pseries instead of Pfunc. The >point you make for Pseries is that you can have separate processes. I see in >your examples how to do this with a stereo instrument such as: > >Synth.play({ > SinOsc.ar( > Sequencer.kr([pattern.asStream, pattern.asStream], etc. You can't give sequencer a list of streams. You give it a list or you give it a stream, or a function. > >But how would you get two patterns working with Pbind? (Don't look too >closely at the code, I'm trimming it for simplicity.) I've gotten this far: > >blipInst = { arg midinote, amp, dur, pan; > Mix.ar([ > Blip.ar( //Blip instrument > midinote.midicps, //One pattern > 4 > ), > Blip.ar( //Blip instrument > midinote.midicps, //Same pattern but independant > 4 > ) > ])*0.2 >}; > >and > >Pbind( > \dur, nextFunc, > \midinote, noteFunc, > \veloc, velocFunc*127, > \ugenFunc, blipInst, > \sustain, durFunc, > \pan, panFunc >).play; > >If I understand Pbind correctly it gets its value from, e.g. the noteFunc, >then passes it to blipInst via the argument midinote. How do I get >independent versions of midinote going? Two versions of Pbind? p = Pbind( \dur, nextFunc, \midinote, noteFunc, \veloc, velocFunc*127, \ugenFunc, blipInst, \sustain, durFunc, \pan, panFunc ); Ppar([p, p]).play; --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 6 Oct 1999 00:10:51 -0600 From: James McCartney <---@---.---> Subject: Re: Pseries At 10:11 PM -0600 10/5/99, David Cottle wrote: >Synth.play({ > SinOsc.ar( > Sequencer.kr([pattern.asStream, pattern.asStream], etc. > Oh sorry, forget what I said about list of streams. I see you are doing multi-channel expansion. The Ppar thing was correct though.. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 6 Oct 1999 11:47:31 +0100 From: finer@easynet.co.uk Subject: loop wrap Hello, I was wondering why this following simple patch, which plays back "floating floating floating . . . ." if loopstart is 0 and loopend is the length of the soundfile, does not play "ingfl ingfl ingfl . . . . " the way it's set up in the patch. ie why does the loop not wrap around ? Is it possible to make it do so ? (// why does this not say "ingfl" var filename, sound, signal,loopstart, loopend; filename = ":Sounds:floating_1"; sound = SoundFile.new; sound.read(filename); signal = sound.data.at(0); l = signal.size; w = GUIWindow.new("panel", Rect.newBy(189, 497, 398, 121)); SliderView.new( w, Rect.newBy(12, 15, 368, 20), "SliderView", 33476, 0, l, 0); SliderView.new( w, Rect.newBy(12, 39, 368, 20), "SliderView", 6855, 0, l, 0); Synth.scope({loopstart = w.at(0).kr; loopend = w.at(1).kr; PlayBuf.ar(signal, sound.sampleRate, 1, 0,loopstart, loopend)} ,1); w.close ) Thanks, Jem ------------------------------ Date: Wed, 6 Oct 1999 07:59:29 -0600 From: James McCartney <---@---.---> Subject: Re: loop wrap At 4:47 AM -0600 10/6/99, finer@easynet.co.uk wrote: >Hello, > >I was wondering why this following simple patch, which plays back "floating >floating floating . . . ." if loopstart is 0 and loopend is the length of >the soundfile, does not play "ingfl ingfl ingfl . . . . " the way it's set >up in the patch. > >ie why does the loop not wrap around ? > >Is it possible to make it do so ? No. Samples are linear not cyclic. When you play a sample it runs from the start offset to the loopend and then returns to the loopstart. If the loopstart is greater than the loopend then they are swapped. --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 06 Oct 1999 07:25:28 -0600 From: "David Cottle" <---@---.---> Subject: Re: Pseries Hi, >>But how would you get two patterns working with Pbind? (Don't look too >>closely at the code, I'm trimming it for simplicity.) I've gotten this far: >> >>blipInst = { arg midinote, amp, dur, pan; >> Mix.ar([ >> Blip.ar( //Blip instrument >> midinote.midicps, //One pattern >> 4 >> ), >> Blip.ar( //Blip instrument >> midinote.midicps, //Same pattern but independant >> 4 >> ) >> ])*0.2 >>}; So then I don't really need two blip instruments, correct? The expansion happens at Ppar. > p = Pbind( > \dur, nextFunc, > \midinote, noteFunc, > \veloc, velocFunc*127, > \ugenFunc, blipInst, > \sustain, durFunc, > \pan, panFunc > ); > > Ppar([p, p]).play; And if I wanted a separate series of notes, but everything else the same I would do this: p1 = Pbind( \dur, nextFunc, \midinote, noteFunc1, etc. p2 = Pbind( \dur, nextFunc, \midinote, noteFunc2, etc. Ppar(p, p).play; ------------------------------ Date: Wed, 6 Oct 1999 09:41:25 -0600 From: James McCartney <---@---.---> Subject: Re: Pseries At 7:25 AM -0600 10/6/99, David Cottle wrote: >>>blipInst = { arg midinote, amp, dur, pan; >>> Mix.ar([ > >So then I don't really need two blip instruments, correct? The expansion >happens at Ppar. Correct. You should eliminate the Mix above. Also you'll need an envelope, btw. > >> p = Pbind( >> \dur, nextFunc, >> \midinote, noteFunc, >> \veloc, velocFunc*127, >> \ugenFunc, blipInst, >> \sustain, durFunc, >> \pan, panFunc >> ); >> >> Ppar([p, p]).play; > >And if I wanted a separate series of notes, but everything else the same I >would do this: > >p1 = Pbind( > \dur, nextFunc, > \midinote, noteFunc1, > etc. > >p2 = Pbind( > \dur, nextFunc, > \midinote, noteFunc2, > etc. > If noteFunc1 and noteFunc2 are different. noteFunc1 is really a Pfunc, right? So it is a Pattern not a Function, it just uses a FunctionStream for its stream. A more accurate name for the variable would be notePat1. >Ppar(p, p).play;' Should be: Ppar([p1, p2]).play; --- james mccartney james@audiosynth.com http://www.audiosynth.com If you have a PowerMac check out SuperCollider2, a real time synth program: ------------------------------ Date: Wed, 06 Oct 1999 10:02:21 -0600 From: "David Cottle" <---@---.---> Subject: Re: Pseries Hi, >>So then I don't really need two blip instruments, correct? The expansion >>happens at Ppar. > > Correct. You should eliminate the Mix above. > Also you'll need an envelope, btw. I took it out just to pare down email exchange. > If noteFunc1 and noteFunc2 are different. > noteFunc1 is really a Pfunc, right? So it is a Pattern not a Function, > it just uses a FunctionStream for its stream. A more accurate name > for the variable would be notePat1. Yes. And I think I get it now. If I had two Pfuncs that described completely different sets of notes I would use to Pbinds, but if I had a Pseries that had built into the code multiple possibilities such as Pseries({ midinote = 60 + 12.rand; etc. Then I could use a single Pbind and do p = Pbind({ etc. Ppar(p, p).play; because each "p" would be executed separately. I think I understand the point of Pseries now. >>Ppar(p, p).play;' > > Should be: > Ppar([p1, p2]).play; Right, typo. ------------------------------ End of sc-users-digest V1 #67 *****************************