353

(32 replies, posted in Nintendo Consoles)

uXe wrote:
yogi wrote:

This is too awesome! With uXe's AVR hardware and your sync code it's like the 'Perfect Storm', rolling in your Atari Seq Kit mod and my head is swimming smile What a New Years
Yogi

Yogi, when / if you do end up building an interface based on that code we finally settled on in the FamiiDI thread, all you'd need to add to generate Nanoloop clock (12 pulses per quarter note) from MIDI clock (24 ppqn) is:

if (MIDI.getType() == Clock)
  DDRB ^= bitMask[0]; // Toggle 'Start Button' Bit

big_smile

Edit: Oh, and get rid of the 'MIDI.getType() < B11110000' condition! (I added that in to filter out System messages because I was only interested in Note / Pitch Bend messages)

Thanks for the heads up. Yes, I'm building but waiting on the 'Arduinos' from HK (think  they'r here but waiting on my postman to re-deliver. left a re-deliver slip on Sat. Didn't even try to knock on the door!!).
Yogi

sandneil wrote:
yogi wrote:

Cool. Which Ver of Windows? Sounds like the process with Win98, the VxD drvier, If you are using XP please advise me on the driver ver you'r using.
@ herr_prof, the web site has a whole page of shots. Never posted an image to this board, so I'm 'riding the short bus' ATM. It looks very nice, just about every pram of the OPL has a control, which are midi mappable.

OK, we got posting pixs figured out wink
Yogi

only win9x sorry

Oh OK. XP is a pain with access to hardware. Porttalk or GiveIO helps but M$ didn't do any favors.

Lowtoy wrote:

Hi all!

Was this discussed before?

http://www.banson.fr/wiki/doku.php?id=sidaster

It just looks AWESOME and pretty simple ^_^
Researching this idea I found an amazing document (in spanish, sorry) with all needed information to make this work (also software version)

http://oa.upm.es/21937/1/PFC_JAIME_CABA … RRIAGA.pdf

Anyone has tried it?

Does look very interesting. Thanks for posting it! Will be taking a closer look at the Midi Implementation.
Yogi

dj.tuBIG./MaliceX wrote:

Yes, that's MIDI.  the recording is software though but so far I've only got one 4op patch in my test bank (2x2optest, #33 finger bass).  That will be changing over time as I make bugfixes and stuff.

Here are some MIDI files.  They should work with hardware just as well (tested with YMF724F-V and CMI8738)
https://dl.dropboxusercontent.com/u/128 … ptests.zip

I know it's early on, but do you plan any instrument editing? Some what like Soundfonts?
Yogi

357

(32 replies, posted in Nintendo Consoles)

This is too awesome! With uXe's AVR hardware and your sync code it's like the 'Perfect Storm', rolling in your Atari Seq Kit mod and my head is swimming smile What a New Years
Yogi

WOW !!! That sounds GREAT! The sound file is midi playback? Was that HW or emu? This is too cool! I'll load this up in the next few days Thank you so much!
Yogi

Limitbreak wrote:

I just got my shipping confirmation and tracking number emailed to me. I was kinda starting to worry a little bit because I hadn't heard anything for a about two weeks since I ordered...but based on the email conversations I had with them today they seem like pretty reliable, nice people over at INL. Can't wait to get this damn cart.

Glad to hear!! You'll be jamming soon. smile
Yea, only know INL through convos on threads, he seems to be a stand up guy! I have dealt with other homebrew/Kickstarter projects that take FOREVER. Not to say that they are ripping people off; just that putting out orders can be a huge task that can be under estimated.  From all I can see, INL has a very good handle on the business side of things.
Yogi

Welcome mannenmedhatten smile
Like it allot. I see what you mean with the ending, but it's pretty good. Maybe after about 3:00 you could work in variations of the riffs at 0:30 to lead out with. Might give it more of a game loop feel?
Very catchy
Yogi

Sorry for the multi posts, weirdness with the server

EDIT-Multi post

Adil Soubki wrote:

If I am reading this correctly you can just buy an SNROM Flash Cart from him and he  will even pre-solder the eproms onto it then you buy his usb cart programmer and you can flash from usb say.... ntrq and just start making tunes right on the the NES? Is it really that easy?

Edit: Will the SNROM board work for pulsar as well?
Edit2: Im a dingus SXROM was listed at the needed board on the thread starting post. This is awesome there is no need for an EPROM burner anymore!

They are dedicated mapper carts, meaning you choose the mapper type when you order. This is unlike the universal flash carts like PowerPak and N8, but IMO this is a good thing. I like having a separate cart for each title (good memories swapping carts). If you want a large ROM collection playable on a NES the SD or CF based carts would be a better choice.
As INL has mentioned in other threads, the fully assembled carts are easier for him, he can fully test the cart before shipping.
The biggest PLUS for me is the Kazzo/Dumper, not so much for flashing the title ROM but for managing the saves/WRAM. It's very nice knowing if I get a nice tune going I can back it up and work on it on the PC. Sooner or later batteries die. For a long time I was reluctant to  try some of the  cart mods at Hack.It.Up.com, only because of the lack of a way to back-up the song.
For some titles like GlitchNES, Litewall or VegaPLAY, it's not about Saves but custom ROMs. Again the cart edge flashing is very nice for playing with different ROM edits. No opening and closing the cart case or pulling the EEPROM; just plug the cart in, erase and upload the new ROM. smile
Just got my second SXROM board for PR8, So Yea I'm very happy!
Yogi

EDIT-Multi post

Oh very nice, like the first, reminds me of Tron a little. But both are cool.
Thanks!
As to printing, don't really know the best way. But you could try color laser printing on self-stick label stock; like the mailing labels but a uncut sheet. Also might think about a laminating film over it, if you can find a thin film.
Yogi

stargazer wrote:

Just updating to say that mine shipped this morning, so I'm expecting it this weekend.

Ditto! My second is on it's way smile
Yogi

All the Arduino is doing is providing a GND path, for current flowing from the pull-up. If you press a button at the same time, all you will get is another path to GND-no change. It's like a wired NOR circuit, like you have with a I2C bus, The low signal overrides the Hi signal, and two lows is still a low.
Yogi

uXe wrote:

Which makes the code:

#include <MIDI.h>

int unmappedBend;
byte mappedBend;
static byte bitMask[] = {1, 2, 4, 8, 16, 32, 64, 128};

void setup()
{  
  pinMode(0, INPUT); // MIDI IN

  pinMode(11, INPUT); // 4021 D7 (A Button)
  pinMode(10, INPUT); // 4021 D6 (B Button)
  pinMode(9, INPUT); // 4021 D5 (Select)
  pinMode(8, INPUT); // 4021 D4 (Start)

  pinMode(A3, INPUT); // 4021 D3 (Up)
  pinMode(A2, INPUT); // 4021 D2 (Down)
  pinMode(A1, INPUT); // 4021 D1 (Left)
  pinMode(A0, INPUT); // 4021 D0 (Right)

  PORTB &= ~B00001111; // pins 8, 9, 10 and 11
  PORTC &= ~B00001111; // pins A0, A1, A2 and A3
  
  MIDI.begin(MIDI_CHANNEL_OMNI);
}

void loop()
{
  if (MIDI.read() && (MIDI.getType() < B11110000))
  {
    if (MIDI.getType() == NoteOn && MIDI.getData2() > 0)
    {
      if (MIDI.getData1() == 60) // C4
        DDRB |= bitMask[3]; // A
      else if (MIDI.getData1() == 62) // D4
        DDRB |= bitMask[2]; // B
      else if (MIDI.getData1() == 64) // E4
        DDRB |= bitMask[1]; // Select
      else if (MIDI.getData1() == 65) // F4
        DDRB |= bitMask[0]; // Start
      else if (MIDI.getData1() == 67) // G4
        DDRC |= bitMask[3]; // Up
      else if (MIDI.getData1() == 69) // A4
        DDRC |= bitMask[2]; // Down
      else if (MIDI.getData1() == 71) // B4
        DDRC |= bitMask[1]; // Left
      else if (MIDI.getData1() == 72) // C5
        DDRC |= bitMask[0]; // Right
    }

    else if (MIDI.getType() == NoteOff || (MIDI.getType() == NoteOn && MIDI.getData2() == 0))
    {
      if (MIDI.getData1() == 60) // C4
        DDRB &= ~bitMask[3]; // A
      else if (MIDI.getData1() == 62) // D4
        DDRB &= ~bitMask[2]; // B
      else if (MIDI.getData1() == 64) // E4
        DDRB &= ~bitMask[1]; // Select
      else if (MIDI.getData1() == 65) // F4
        DDRB &= ~bitMask[0]; // Start
      else if (MIDI.getData1() == 67) // G4
        DDRC &= ~bitMask[3]; // Up
      else if (MIDI.getData1() == 69) // A4
        DDRC &= ~bitMask[2]; // Down
      else if (MIDI.getData1() == 71) // B4
        DDRC &= ~bitMask[1]; // Left
      else if (MIDI.getData1() == 72) // C5
        DDRC &= ~bitMask[0]; // Right
    }

    else if (MIDI.getType() == PitchBend)
    {
      unmappedBend = (int)((MIDI.getData1() & B01111111) | ((MIDI.getData2() & B01111111) << 7));
      mappedBend = map(unmappedBend, 0, 16383, 165, 5); // Arkanoid Paddle range, centered at 170 (+/-80)

      // Paddle Position
      if (mappedBend & bitMask[7]) // A
        DDRB |= bitMask[3];
      else
        DDRB &= ~bitMask[3];
      if (mappedBend & bitMask[6]) // B
        DDRB |= bitMask[2];
      else
        DDRB &= ~bitMask[2];
      if (mappedBend & bitMask[5]) // Select
        DDRB |= bitMask[1];
      else
        DDRB &= ~bitMask[1];
      if (mappedBend & bitMask[4]) // Start
        DDRB |= bitMask[0];
      else
        DDRB &= ~bitMask[0];
      if (mappedBend & bitMask[3]) // Up
        DDRC |= bitMask[3];
      else
        DDRC &= ~bitMask[3];
      if (mappedBend & bitMask[2]) // Down
        DDRC |= bitMask[2];
      else
        DDRC &= ~bitMask[2];
      if (mappedBend & bitMask[1]) // Left
        DDRC |= bitMask[1];
      else
        DDRC &= ~bitMask[1];
      if (mappedBend & bitMask[0]) // Right
        DDRC |= bitMask[0];
      else
        DDRC &= ~bitMask[0];
    }      
  }
}

You'r quick! Too cool! I'll get a pad wired up ASAP, in between Xmas stuff, can't waiit.
Yogi