pythonAPI: passing midi
| Date | 2006-03-18 16:26 |
| From | Atte André Jensen |
| Subject | pythonAPI: passing midi |
Hi
I looked at the .py files in examples and it mostly makes sense. But
supposed I have recieved (or generated) a midi message in python, how do
I send it to csound?
I understand Iain is doing something like what is in wxController.py:
self.csound.InputMessage("i 1 0 8 %i 70" % self.pitch)
However I'd like to use the dynamic voice allocation facility of csound,
so I would rather pass on the midi messages...
--
peace, love & harmony
Atte
http://www.atte.dk |
| Date | 2006-03-18 17:15 |
| From | Istvan Varga |
| Subject | Re: pythonAPI: passing midi |
| Attachments | None |
| Date | 2006-03-18 18:07 |
| From | Atte André Jensen |
| Subject | Re: pythonAPI: passing midi |
Istvan Varga wrote:
> or send MIDI messages using some sort of MIDI
> loopback device.
Do you mean alsa -> python -> alsa -> csound?
I can create a midi device from pyton that's seen by csound:
The available MIDI in devices are:
0: Midi Through Port-0 (ALSA)
1: MCS Out (ALSA) <- Mine
So simply starting csound from within python with "-M 1", is that what
you mean?
--
peace, love & harmony
Atte
http://www.atte.dk |
| Date | 2006-03-19 02:47 |
| From | Iain Duncan |
| Subject | Re: pythonAPI: passing midi |
> I looked at the .py files in examples and it mostly makes sense. But
> supposed I have recieved (or generated) a midi message in python, how do
> I send it to csound?
>
> I understand Iain is doing something like what is in wxController.py:
>
> self.csound.InputMessage("i 1 0 8 %i 70" % self.pitch)
>
> However I'd like to use the dynamic voice allocation facility of csound,
> so I would rather pass on the midi messages...
If you want to handle midi input from your host, as I do, I personally
suggest C++, but maybe things are better since I last looked. When I
hunted around about six months ago none of python real time midi
libraries looked ready, that may have changed. I found it not too
difficult to get real time midi input working with portmidi and C++.
Iain |
| Date | 2006-03-20 03:47 |
| From | Iain Duncan |
| Subject | Re: pythonAPI: passing midi |
> Currently, you can only send MIDI messages to, and receive from Csound with > a C or C++ host, as these require using callback functions for which Python > and Java wrappers are not implemented yet. > So, you can either use real time score events with Csound::InputMessage() or > Csound::ScoreEvent() (note also the software bus interfaces for sending and > receiving control signals), or send MIDI messages using some sort of MIDI > loopback device. Is there much of a performance difference on the csound end between the two? Seems like input message would require more parsing, but I don't know the internal well enough to know if that matters. Thanks Iain |
| Date | 2006-03-20 03:52 |
| From | Iain Duncan |
| Subject | Re: pythonAPI: passing midi |
Atte, what kind of voice allocation are you wanting? That is always one
of the problems of real time control, even with hardware. ( droped midi
notes yay! hung midi notes, yay! ) In order to always *know* that we are
within our cpu use goals we need some sort of hard polyphony top out,
but how that is handled is pretty open.
I was thinking I could implement one for an api example using midi
input. If you are a pianist, I guess the most pianistic is:
- only one instance of an active note per pitch
- subsequent notes of a pitch cut off previous ones
- notes release after finger release ( imagine pedalling )
- potentially all playable notes could be releasing at the same time
( sweep keyboard with pedal down )
You also said you want to be able to switch sounds of a split correct?
Iain
Atte André Jensen wrote:
> Hi
>
> I looked at the .py files in examples and it mostly makes sense. But
> supposed I have recieved (or generated) a midi message in python, how do
> I send it to csound?
>
> I understand Iain is doing something like what is in wxController.py:
>
> self.csound.InputMessage("i 1 0 8 %i 70" % self.pitch)
>
> However I'd like to use the dynamic voice allocation facility of csound,
> so I would rather pass on the midi messages...
> |
| Date | 2006-03-22 18:11 |
| From | Istvan Varga |
| Subject | Re: pythonAPI: passing midi |
| Attachments | None pymidi.py pymidi.csd |
| Date | 2006-03-23 08:19 |
| From | Atte André Jensen |
| Subject | Re: pythonAPI: passing midi |
Istvan Varga wrote:
> Some new code has just been added to the CVS sources that makes it possible
> to send MIDI messages to, and receive from Csound using the Python wrappers.
> The attached simple example shows sending MIDI input from Python.
That looks very nice, thanks! I'll look into it asap. I tried to run the
attached example like this:
[atte@aarhus ace]$ python pymidi.py -o devaudio pymidi.csd
Localisation of messages is disabled, using default language.
time resolution is 0.417 ns
Exception in thread Thread-1:Traceback (most recent call last):
File "/usr/lib/python2.3/threading.py", line 442, in __bootstrap
self.run()
File "/usr/lib/python2.3/threading.py", line 422, in run
self.__target(*self.__args, **self.__kwargs)
File "pymidi.py", line 60, in guiThread
w.mainloop()
File "/usr/lib/python2.3/lib-tk/Tkinter.py", line 965, in mainloop
self.tk.mainloop(n)
RuntimeError: Calling Tcl from different appartment
This plays 4 C's in accending octaves, so I guess the midi part of the
example is working. Should I just forget about the tkinter stuff? I'm
using wxpython, so unless there's a point that I should understand
besides tkinter, I might forget about the errors, or...?
--
peace, love & harmony
Atte
http://www.atte.dk |
| Date | 2006-03-23 09:51 |
| From | Istvan Varga |
| Subject | Re: pythonAPI: passing midi |
| Attachments | None |
| Date | 2006-03-23 10:04 |
| From | Atte André Jensen |
| Subject | Re: pythonAPI: passing midi |
Istvan Varga wrote: > Probably yes. The GUI was added only to show using a separate audio > thread with CsoundPerformanceThread and redirecting the Csound message > output. Ok. Thanks again! -- peace, love & harmony Atte http://www.atte.dk |
| Date | 2006-03-23 18:27 |
| From | Istvan Varga |
| Subject | Re: pythonAPI: passing midi |
| Attachments | None |