Jump to content
IGNORED

MIDI Input - HowTo?


freetz

Recommended Posts

I've now added the possibility to alter AUDCTL, will look into different distortions, but that would probably require a different table(s) than the one I now use for $Ex/$Ax distortion. 16 bit does not seem to make much sense to me given that MIDI only offers 127 different note values?

 

127 notes = about 10 octaves, which is covered very well in 16-bit mode, on all distortions.

 

I posted a link to a note table I did, a few posts up, maybe that will prove helpful?

Link to comment
Share on other sites

Ok, I've worked quite a bit on the software, new versions are up now.

You are now able to:

- Set the individual AUDCTL bits with keys 1-8 (which would technically also enable 16 bit voices, but more to that later)

- Set the individual AUDC1-4 noise bits (Q-Y. A-H)

- Note table is chosen based on distortion (for 2,10,12; 12a and 12b are toggled via space bar, other distortions use note table for distortion 10)

- When Midi channel 1 is used, chors will automatically split over the ATARI's four voices (makes sense only when using the same distortion on all voices)

- When Midi channel > 1 is used, that channel will be assigned to that specific ATARI voice (i.e. Midi channel 3 goes to voice 3, chords will be played by one note only, first come, first served ;) )

 

The problem with 16-bit is that the software in the Teensy does not communicate with the MidiJoy software in the ATARI. Thus, the Teensy does not know whether it should send an 8-bit note range (revolving after 49 notes according to note table) or a 16-bit note range (127 notes). Since one could even set one double channel as 16-bit and two single channels as 8-bit, things would get even more complicated. Given these difficulties, I have chosen to stick with an 8-bit range because it also seems to me that four voices at the same time are more useful than just two, albeit those two having a 16-bit range. Plus, the interface will remain hardware-compatible to the one little-scale has produced. For 16-bit, another wire would have to be soldered (of course in the end no big deal). If someone comes up with a feasible solution for the problem of how the Teensy would know whether to send 8-bit or 16-bit note range, I might consider looking into it, but other than that, I'd leave the software as it is now.

 

But apart from that one would now be able to use the full variety of POKEY through as a Midi destination - enjoy :)...

Edited by freetz
Link to comment
Share on other sites

Hello,

 

Is it possible to get a Pokey somewhere? The idea is simple: It's easier to build a little hardware with a midi input, an Arduino connected to a pokey and an output jack... Than trying to play music from midi with this hardware, which embbed a kind of processor too and blocks the joystick inputs... A real C program to drive them all, with program change from midi, velocity, saving sounds in exclusive messages and so on... I guess it should already exist for the Yamaha AY3 sound processor of MSX, Gameboy ... If the goal is really to run it on a real A8, I think it could be cool to design a real Atari midi interface. If somebody is interested, I like (and it's my job) to work in a team. But at the moment I'm just a software developper. :)

Edited by pfeuh
Link to comment
Share on other sites

@Van: Thanks, will look into setting up a new video, but off to holidays today :)...

 

@pfeuh: Single POKEYs are sure hard to come by, maybe at Best Electronics in the US. Thus, you would always have to destroy a working Atari (bad karma) or get a broken one and hope that the POKEY still works and then get into the hardware specs and set up an independent device - doable, but what for? Just to eliminate the 6502 involved? "Real" Atari sound is never just the work of POKEY alone, so for me this would miss the point. But still it would be a nice project, so good luck ;). As for the Midi-Interface: It does exist in many forms already. There are trackers available that can record Midi and then one can play these recordings afterwards on the Atari (I assume). But that's not what I wanted - I wanted the ATARI to be a "live instrument" which (as this thread has explained) would not be possible via a SIO-based Midi-interface (like MidiMate, which I have alreay), at least not when more than two (8-bit) or one (16-bit) channels are in use.

 

@all: sorry, small bug-fix (tuning was off by a half-note), new versions up.

Edited by freetz
Link to comment
Share on other sites

Hello,

 

Is it possible to get a Pokey somewhere? The idea is simple: It's easier to build a little hardware with a midi input, an Arduino connected to a pokey and an output jack... Than trying to play music from midi with this hardware, which embbed a kind of processor too and blocks the joystick inputs... A real C program to drive them all, with program change from midi, velocity, saving sounds in exclusive messages and so on... I guess it should already exist for the Yamaha AY3 sound processor of MSX, Gameboy ... If the goal is really to run it on a real A8, I think it could be cool to design a real Atari midi interface. If somebody is interested, I like (and it's my job) to work in a team. But at the moment I'm just a software developper. :)

Try Mike's Arcade Chips, got some there a few years ago. There is also a project @ Midibox.org you may want to look at

http://midibox.org/forums/topic/9321-a-full-blown-newb-on-the-way-to-a-pokey-synth/?hl=pokey

yogi

 

 

EDIT: Here you go

http://www.arcadecomponents.com/customroms.html

Pokeys @ $5.99

Edited by Van
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Just to give you guys an update:

I worked quite a bit over the last couple of days/weeks on MidiJoy and it now supports not only 16-bit voices, it also records the input in RAM (channel, distortion, volume pitch, length) which can then later be saved (via exiting to DOS and using the K-Save File option) and re-used in your own programs. I have also adjusted the note scales that Synthpopalooza provided in order to pitch-match with "ordinary" Midi-Instruments (here: Ableton's piano samples). This setup requires an additional wire to be soldered compared to the ones in little-scale's setup.

 

However... I plan to submit this stuff for the ABBUC hardware contest (not yet sure if a software adaptation of an already existing hardware interface qualifies, the rules are a bit ambiguous there). The rules state that the submission must not be published before the contest. Thus, while the previous (limited) version will remain out in the open as a "proof-of-concept", the new version with the added features will only be available after the contest. If the submissions wins any prize whatsoever, I'll release the program for free, otherwise I plan to ask for a buy-on-donation basis or so...

 

I'll let y'all now when there's news in any way,

 

F.

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

OK, a question/feature request ...

 

This interface is designed for a USB plug on a PC or Mac ... is there anyway to graft a MIDI IN female port on this thing? I have an Alesis MMT-8 hardware sequencer, and I'd like to use it to record sequences using this device and my Atari 1200XL.

Will only answer in broad terms, Yes adding a serial Midi in is fairly easy on the Teensy. In fact it could be implemented in parallel with the USB; the on chip USB is independent from the on chip UART and both can be used at runtime. I haven't started looking at freetz's Arduino code yet but I too would like a real Midi in. In fact there are a couple projects that I would like to add serial Midi to, so at some point will take a stab at it.

Yogi

Link to comment
Share on other sites

Yes, it would be possible, and the Teensy part of the software is kept really simple. However, this could only be done by relying on the fact that the whole Midi handling is done by the onboard (USB-based) chip. Adding a serial-based Midi port would mean to not only add serial Midi libraries - which are available on pjrc.com - but also to change the pin setup as pins 7 and 8 are now used to connect to the Atari. I could look into changing that to other pins, but adding serial Midi (while probably not too difficult) would require a testing environment for classical Midi connections which I don't have. On the Atari side, MidiJoy will work no matter where the data comes from as long as the small routines in the Teensy set up the Midi data the way they do now. As I said, the routines on the Teensy are really simple, so if someone finds time to work on the code for serial Midi implementation, it should not be a problem.

Edited by freetz
  • Like 1
Link to comment
Share on other sites

Yes, it would be possible, and the Teensy part of the software is kept really simple. However, this could only be done by relying on the fact that the whole Midi handling is done by the onboard (USB-based) chip. Adding a serial-based Midi port would mean to not only add serial Midi libraries - which are available on pjrc.com - but also to change the pin setup as pins 7 and 8 are now used to connect to the Atari. I could look into changing that to other pins, but adding serial Midi (while probably not too difficult) would require a testing environment for classical Midi connections which I don't have. On the Atari side, MidiJoy will work no matter where the data comes from as long as the small routines in the Teensy set up the Midi data the way they do now. As I said, the routines on the Teensy are really simple, so if someone finds time to work on the code for serial Midi implementation, it should not be a problem.

Hi Freetz,

You have really done a great job! Good luck with ABBUC and can't wait to see the code ;) Like the new video.

I'm too busy with other projects atm to take another one on, but I do intend to look into building (and expanding what I can) this project.

While USB Midi has become the new standard, serial Midi still has a major roll for my setup. And as mentioned it would be awesome to sequence with an ST :)

Yogi

Link to comment
Share on other sites

Nice job, on the hardware, software, and the video explaining everything. Would it be possible to post up a couple example binary music files here or on your website for testing out? Or maybe doing a longer demonstration of a song playing, from a midi file on the PC?

Link to comment
Share on other sites

This would be awesome. I do have a MIDI program on my PC, but it would also be cool to be able to string my Atari into my hardware MIDI instrument chain just like my other synths and instruments.

 

The other thing I was thinking, and this may be down the road a bit ... is support for dual POKEY, or for the SlightSID cartridge. I've actually been thinking of getting both for my 1200XL.

Link to comment
Share on other sites

Thanks for all the great feedback everyone!

 

I didn't realize that many of you still use serial Midi, but of course in a setup where you use an Atari ST that is probably the only option. And the idea of both Ataris working together as a team in such a setup is kind of motivating :), so since all our time is limited, how about we do it like that:

If someone assebles a serial Midi board (as can be seen here: https://www.pjrc.com/teensy/td_libs_MIDI.html ) that I can use, I will try to do the necessary code adjustments to support both USB-Midi and serial Midi(-In). The board should be fairly easy to assemble, but I lack the equipment for that. By the way, the source code for the Teensy part is already available on my website (maybe a bit too hidden in the text, right below the video), so you can all have a look already:

http://www.phobotron.de/A8MidiJoy.ino

 

As for a Dual Pokey setup, I don't think this is possible with an XL/XE computer as it only has two joystick ports. For each joystick port, I can use the fire button as well as the four directions (up, down, left, right) to which the incoming bits are mapped. So on an XL/XE computer I have two fire buttons and eight direction pins, i.e. 10 bits. I use the fire buttons to address the voice (two buttons = four different combinations = four voices), one direction pin for differentiating between note value or pitch value and the remaining seven pins to map the 127 Midi note values.

A Dual Pokey would mean eight instead of four voices and thus I would need two extra pins on the Atari. With an Atari 400/800 this would work as they have four joystick ports, but not with an XL/XE computer. And of course I would need an Atari 400/800 with a Dual Pokey for testing etc. The latter also goes for SlightSID which I think is not available at the moment...

 

@MrFish: Yes, sure I can put up some binary music examples, do you have a Midi file in mind that you would like to be played on the Atari?

Edited by freetz
Link to comment
Share on other sites

Thanks for all the great feedback everyone!

 

I didn't realize that many of you still use serial Midi, but of course in a setup where you use an Atari ST that is probably the only option. And the idea of both Ataris working together as a team in such a setup is kind of motivating :), so since all our time is limited, how about we do it like that:

If someone assebles a serial Midi board (as can be seen here: https://www.pjrc.com/teensy/td_libs_MIDI.html ) that I can use, I will try to do the necessary code adjustments to support both USB-Midi and serial Midi(-In). The board should be fairly easy to assemble, but I lack the equipment for that. By the way, the source code for the Teensy part is already available on my website (maybe a bit too hidden in the text, right below the video), so you can all have a look already:

http://www.phobotron.de/A8MidiJoy.ino

 

As for a Dual Pokey setup, I don't think this is possible with an XL/XE computer as it only has two joystick ports. For each joystick port, I can use the fire button as well as the four directions (up, down, left, right) to which the incoming bits are mapped. So on an XL/XE computer I have two fire buttons and eight direction pins, i.e. 10 bits. I use the fire buttons to address the voice (two buttons = four different combinations = four voices), one direction pin for differentiating between note value or pitch value and the remaining seven pins to map the 127 Midi note values.

A Dual Pokey would mean eight instead of four voices and thus I would need two extra pins on the Atari. With an Atari 400/800 this would work as they have four joystick ports, but not with an XL/XE computer. And of course I would need an Atari 400/800 with a Dual Pokey for testing etc. The latter also goes for SlightSID which I think is not available at the moment...

 

@MrFish: Yes, sure I can put up some binary music examples, do you have a Midi file in mind that you would like to be played on the Atari?

I will build up a Midi I/O board for you, should be done in a day or two (have to pick up some 1n4148s). I''ll PM you for shipping info :)

Yogi

Link to comment
Share on other sites

Awesome :)!

I already made the adjustments to the Teensy code and "freed" the necessary serial input/output pins. The new code is updated on my website and it still works with the USB-Midi, so all I need would be the Midi I/O board to see if serial Midi is working as well. Thanks a lot for your offer, Yogi!

My Akai has serial Midi out, would that work as input for the Teensy serial Midi board as well or would the note data have to come from a sequencer? If the latter is the case then I probably would not have the means to test it, if it's the former, then it should hopefully work :).

 

@MrFish: Nice tracks, especially because the demonstrate the feature of MidiJoy which is able to handle both Midi files where all chords are coming from one Midi channel and those where the chords are already split up to individual Midi channels. The French Suite sometimes has more than four notes at the same time, so this is where the newest incoming note overwrites the second newest note, as long as there are more than four voices. But it still sounds quite allright, I think :). You can download a demo in atr format which also runs on an emulator. Boot with or without BASIC, jump into DOS and load either FSUITE.EXE or FUGUE.EXE - and enjoy :)...

http://www.phobotron.de/MidiJoyDemo.atr

Edited by freetz
  • Like 1
Link to comment
Share on other sites

Awesome :)!

I already made the adjustments to the Teensy code and "freed" the necessary serial input/output pins. The new code is updated on my website and it still works with the USB-Midi, so all I need would be the Midi I/O board to see if serial Midi is working as well. Thanks a lot for your offer, Yogi!

My Akai has serial Midi out, would that work as input for the Teensy serial Midi board as well or would the note data have to come from a sequencer? If the latter is the case then I probably would not have the means to test it, if it's the former, then it should hopefully work :).

 

@MrFish: Nice tracks, especially because the demonstrate the feature of MidiJoy which is able to handle both Midi files where all chords are coming from one Midi channel and those where the chords are already split up to individual Midi channels. The French Suite sometimes has more than four notes at the same time, so this is where the newest incoming note overwrites the second newest note, as long as there are more than four voices. But it still sounds quite allright, I think :). You can download a demo in atr format which also runs on an emulator. Boot with or without BASIC, jump into DOS and load either FSUITE.EXE or FUGUE.EXE - and enjoy :)...

http://www.phobotron.de/MidiJoyDemo.atr

 

Your welcome, anything I can do to help! Got the board wired but need to dig up a diode :( Was going to run to RS this afternoon but a friend dropped by with a carpentry project he needed help with, :)

Your Akai should be fine for playing; not familiar, does is allow you to select the midi out channel? You just have to match the channel(s) that the Arduino is listening on, as I'm sure you know.

I've also got a (cheap HongKong ebay) USB-to-midi cable that you can have. I've got others and this one works fine for Note/Realtime/ect Messages but is unreliable for large SysEx dumps; which is a problem with my MidiBox projects. So I'll send it along also. This will help with your serial Midi testing, redundant with the Teensy's USB, but you can test sequences over the serial from your DAW.

Yogi

Link to comment
Share on other sites

 

As for a Dual Pokey setup, I don't think this is possible with an XL/XE computer as it only has two joystick ports. For each joystick port, I can use the fire button as well as the four directions (up, down, left, right) to which the incoming bits are mapped. So on an XL/XE computer I have two fire buttons and eight direction pins, i.e. 10 bits. I use the fire buttons to address the voice (two buttons = four different combinations = four voices), one direction pin for differentiating between note value or pitch value and the remaining seven pins to map the 127 Midi note values.

A Dual Pokey would mean eight instead of four voices and thus I would need two extra pins on the Atari. With an Atari 400/800 this would work as they have four joystick ports, but not with an XL/XE computer. And of course I would need an Atari 400/800 with a Dual Pokey for testing etc. The latter also goes for SlightSID which I think is not available at the moment...

 

I have heard that there is an interface called Multijoy (?) which expands normal two-port Ataris into 4-port? Not sure exactly how it works.

 

Good news on the serial MIDI IN. This is going to be invaluable in my studio!

Link to comment
Share on other sites

Thanks, Bill! Just e-mailed you my address, let's just hope the customs will have mercy on us ;)...

My Akai does allow me to set the Midi output channel, so that should be fine, but thanks also for the USB-to-Midi interface as then I can also test its functionality with Ableton etc.

 

F.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...