Interest in music production software?
Pages: 1 2
Paolo Fabio Zaino (28) 1882 posts |
@ Terje
This is what I meant when I mentioned I should write a series of articles on how to program MIDI… anyway let’s see if we can find the issue. If you are using a Keyboard
What does the above do is simple, first it initialise the MIDI (buffers etc…), then it runs a loop waiting for data on channel 0 (the omni channel, so it doesn’t matter on which channel your keyboard is transmitting you’ll receive the byte) If a byte of data is received then it’ll print it on the screen. To make the test above work you must ensure that your keyboard is connected to the USB MIDI Interface MIDI In using the keyboard MIDI Out. Run the program and start to play with your keyboard and see what happens on the screen :) If the device you’re using is a Synth module Ok now let’s make some noice, let’s send notes to the synth
Save it and run it to see which channel you’re using by default and then set the Rx channel of your synth the same OR set your synth to receive on channel 0 which (again) means receive on every channel. So what the code above does? Simple, again first Init, then read the channel you’re using to transmit, then transmit a C note IMMEDIATELY. If you want to set a channel then use:
Hope this helps! :) P.S. as I said, if I manage to find the time, I’ll write a series of articles on my blog with lots of details included how to configure professional MIDI interfaces to get the most out of RISC OS and how to create MIDI Apps that can keep the tempo steady on both reading and playing, but for now you should be good to go with experiments of all sorts, have fun! :) |
Rick Murray (539) 13850 posts |
That’s strange. It ought to play a note on the default channel (usually “piano”). But, as Paolo suggests, check you are receiving data. Two other things to consider?
|
Terje Slettebø (285) 275 posts |
@Paulo Thanks a lot for your detailed reply, much appreciated. Quick summery: Using a variety of synths and controllers, I’ve been able to at least once play a sound on a synth, and in the case of a controller, getting data back from the controller. First of all, I’ve tested three different devices on Windows, using Midi Quest, and have confirmed that they send and receive MIDI just fine (in the case of the controller, just sending): - Yamaha DX7 Running your test program to play a sound on the DX7 plays a sound. Success! :) However, reading data from the synth when playing it only produces a stream of 0 bytes. The same happens with the Trinity, but at least once, I was able to get a stream of data from the M-Audio controller. When connecting the controller and pressing a few keys, it produced a lot of numbers. However, even after having stopped playing on the controller, the stream of data kept being printed on the screen. Is this normal? If that’s normal, then it seems at least with some devices, I’m able to both send and receive MIDI, and that’s a good start. :) As an aside, the USB-to-MIDI cable I’m using reports two “MIDI devices” in Windows, and only one of them was able to send data from Midi Quest to the Trinity. Might this be an issue on RISC OS as well, and is there a way to select MIDI device in the case where there’s more than one? Once again, thanks a lot for great help, and what’s important for me at this stage is just to have a working MIDI connection. Now what is needed is for me to study the MIDI standard itself. :)
That would have been much appreciated, and just a simple article on how to get started and doing an end-to-end test, like your previous mail, would help a lot for beginners like me. @Rick Thanks for your help, and for all the work you and Dave have put into this module. I’ve read the earlier threads where you started your experiments, and I understand it wasn’t easy, especially as a lot of data needed to be filtered out, in the way the USB transmission mode had been set up.
It’s a little hit and miss for me now. I used to be able to play a sound on the DX7 with Paulo’s example program, but now I hear nothing, so something has been changed. I’ll check up the things you mentioned. @all I think for now I’ll confine my exploration and experiments to Windows, to reduce the number of variables while I learn about MIDI. Once I feel confident about that, I’ll move back to the RISC OS platform. Thanks all of you for helping make my dream a reality: Playing with synths and music on RISC OS. :) |
Rick Murray (539) 13850 posts |
Hmm, I wonder if Dave changed something? I added some code to detect runs of zero bytes and toss them away, as I was seeing the same thing. The MIDI might well be there, but you’re looking for three bytes in a spew of several tens of thousands of zeros. Give my original version a try: https://www.heyrick.co.uk/random/usbmidi_005_alpha10.zip If it behaves in a similar way (or worse), then use Dave’s one, it’s the more recent of the two.
What was being sent? Some devices start up Active Sense. The idea with that is that it is a heartbeat sent something like every 30cs, and if these signals should stop, then all instruments should be silenced. It’s basically software detection for if the cable gets unplugged. MIDI on Windows will be better – they know what they are doing and all the information on how to use the controllers. Me? I basically did a lot of guesswork. |
Paolo Fabio Zaino (28) 1882 posts |
@ Terje Sorry for the late reply, last night I finished to work late so today hard to recover some sleep and then got busy building a book shelve for my books, because they are way too many loool (still building it, just stopped by while having a coffee)
So when you say the synth I assume you’re talking about the DX7, now for the DX7 to receive notes you have to configure it for external MIDI LIVE and make sure the channel is properly set (aka same channel you are transmitting from your RISC OS) To read bytes should always be ok, if you get zeros then make sure the MIDI channels you are using are NOT higher than 16, I would use channel 1 on both RISC OS and the DX7, this is because AFAIK the USBMIDI driver only supports the first 16 channels at the moment (maybe Rick and Dave can add more details here).
The RxByte will receive everything, so also other type of messages (not just note messages), over the years companies have extended the original 1983 MIDI standard message with more stuff like:
And obviously what Rick is mentioning Active Sense messages, so now that you have it working you gotta get into the MIDI Protocol and that will keep you busy for a while :) Don’t forget it can also be one of those MIDI bugs/custom behaviours on the keyboard side, the DX7 for example with certain revision of the firmware, is famous for sending a NOTEOff with 0 velocity after you play a note. On Windows you may not observe the same behaviour simply because the software you’re using is using a filter, while on RISC OS you have to code all of that.
It’s normal depending on the device you connect to your MIDI interface. You can obviously configure your DX7 to be less chatty if that’s what you need. I have my Axiom Pro 61 configured to send notes only and CC and that is because I use it to record performances on MIDI multi-trackers. However the extended messages can help to improve the performance information and so help PCs (mostly Windows that is notoriously slow at recording performances unless you use special drivers) to compensate and understand better what the musician intended.
Yes this is another typical thing that companies do they tray to extend the way MIDI works for example including two controllers on the same PCB, this doesn’t means you have two devices, you just have two controllers on the same device and that requires a special driver to use it correctly. I use the Roland UM-ONE USB-to-MIDI interface for debugging stuff and this is for two reasons: First it comes with an hardware switch to switch between TAP and COMP and you want it on TAP for RISC OS and second because it has a couple of LED one for input messages activity and one for output so whenever I run commands on RISC OS I can check the LEDs on the UM-ONE to be sure things are ok RISC OS side.
Yes definitely, as I said above to control all the special features of a MIDI interface you need proprietary drivers and this because they add extra registers to sync between multiple controllers and/or re-organise the channels etc… If you are very much motivated on coding MIDI apps on RISC OS I strongly suggest you start using a Roland UM-ONE and configure it as I mentioned above, also start with simpler devices than the DX7 or the Korg Trinity, for example you can start with an old Roland canvas (which is also small and can easily stay on your desk while you’re coding/debugging) |
Paolo Fabio Zaino (28) 1882 posts |
@ Rick
You and Dave have done a great job guys. In my spare time I am modifying the driver to support more features, but I haven’t shared anything nor this is an official announcement because honestly my spare time is very very very (very!) little at the moment, so I really can’t make any promise. In the case of Terje is most likely that the devices he is using are all trying to compensate for performance information (aka MIDI extensions), these things should be handled at the MIDI Application layer more than the USBMIDI driver layer, plus he has not shared the actual value of the bytes he is receiving after the byte that represent the note, so we ware completely in guessland :) |
Dave Higton (1515) 3534 posts |
Not the sort of thing I’d have changed. When I was developing the firmware for a commercial MIDI product, I got mightily confused by big blocks of 0 appearing to come from the MIDI interface. It was because someone, years ago in RISC OS history, decided that the default would be to pad USB bulk transfers with 0. They weren’t actually coming from the MIDI device after all. And the information was not widely known. That’s not something I will ever forget, nor would I knowingly inflict it on anybody. |
Terje Slettebø (285) 275 posts |
Hi guys. Once again, I’m overwhelmed by your helpful advice, much appreciated. :) I’m delighted that there are indeed people who are interested in doing music on RISC OS. I’ll get back with more specific replies, I just wanted to mention first that I’ve now installed BBC BASIC for Windows, and it turns out you may play with MIDI there: http://www.bbcbasic.co.uk/bbcwin/examples/miditest.html Thus, anything made here, as long as it’s not GUI-related, should be relatively easy to port back to RISC OS. @Rick P.S. I just realised that I had missed Rick Murray’s most excellent manual for the USBMIDI module, and while I realise it was written for an earlier version of the module, I’d guess that the API is largely the same or backwards compatible. |
Terje Slettebø (285) 275 posts |
@Rick
First of all, to try to eliminate any issues having to do with multiple MIDI devices (my USB-to-MIDI cable reports two of them), I’ve been testing using the M-Audio 61 MIDI controller, which has a USB-based MIDI interface. The M-Audio controller only reports a single interface, and when I try playing it, interestingly, your older version of the module reports what appears to be valid MIDI data. :) There’s a burst of a few lines of data, which fits well with NoteOn and NoteOff. However, the latest version by Dave only reports zeroes, and I’ve tested several times, switching between the modules. Therefore, for now, I’ll be working on testing using the old one. @Dave If you do any changes and you’d like me to test a new version, just give me a link. One again, thanks a lot for all your great support, guys, you’re the best. :) Addendum: I’ve now tested with the Yamaha DX7, and that, too, reports proper MIDI data when played, using the old version of the module, but not the new one. Also, keep in mind that with the DX7, I need to use a USB-to-MIDI adapter cable, which indicates that the difference between the modules are independent of the type of MIDI device. Moreover, I’m able to play sounds on the DX7, using either version of the module, which means that finally, I’m able to both send and receive MIDI data. :) |
Jay Davis (12058) 7 posts |
I’m using Cubase for my stuff, and it’s pretty awesome. The sequencer in it is user-friendly and does a great job with both MIDI and audio tracks. It’s also remarkable how it works with various hardware without any hiccups. There’s a bunch of other software out there, so if you want to find something new, check out https://audiotipz.com/best-music-production-software-beginners/. They have a bunch of excellent articles and recommendations for all music topics. |
Jay Davis (12058) 7 posts |
. |
Paul Sprangers (346) 525 posts |
It looks like ChatGPT has found our community… |
Sveinung Wittington Tengelsen (9758) 237 posts |
Hi Terje, there’s a MIDI podule suitable for old Acorn gear (Archie/RiscPC) if you still use those fine machines. Don’t know about composition/editing software though, nothing like Cubase for RISC OS, and Sibelius 7 is musical notation/printing. Maybe some old Tracker software speak MIDI.. |
Sveinung Wittington Tengelsen (9758) 237 posts |
Hi Terje, there’s a MIDI podule suitable for old Acorn gear (Archie/RiscPC) if you still use those fine machines. Don’t know about composition/editing software though, nothing like Cubase for RISC OS, and Sibelius 7 is musical notation/printing. Maybe some old Tracker software speak MIDI.. |
Rick Murray (539) 13850 posts |
If you’re looking for something simple 1 and you have either 1280×720 or 1280×1024 (so not pre-RiscPC), you could take a look at https://heyrick.eu/simpleseq/ ? 1 Emphasis on the simple. It’s designed to be that way. If you need all the bells and whistles, you’ll probably not be using RISC OS… |
Herbert Doerfler (8783) 5 posts |
I totally get your interest in synthesizers and trying to link them up with RISC OS computers. I’m not much of a tech whiz myself, but a buddy of mine loves mixing old and new tech in his music setup. He’s always fiddling around, trying to get his vintage synths to play nice with the latest software. It’s not always straightforward, but he seems to enjoy the challenge. He once told me about a project where he was trying to connect an old keyboard to a modern sequencer. Took a bit of trial and error, but he found some tips and inspiration on https://faqaudio.com/ and figured it out eventually. |
Pages: 1 2