Use the Sam2695 Dream MIDI chip: Difference between revisions

From F256 Foenix
Jump to navigationJump to search
(fleshed out a first draft of the sam2695 midi out page, midi in has to be filled in when more will be known)
 
 
(3 intermediate revisions by the same user not shown)
Line 5: Line 5:
There are many tutorials and overview of useful MIDI commands, here is one of them: https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html<br>
There are many tutorials and overview of useful MIDI commands, here is one of them: https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html<br>


Here's a reference list of General MIDI instrument by number: https://www.ccarh.org/courses/253/handout/gminstruments/<br>
Here's a reference list of General MIDI instruments by number: https://www.ccarh.org/courses/253/handout/gminstruments/<br>
{| class="wikitable"
|+
!Register Name
!Address
!Description
|-
|MIDI_STATUS
|0xDDA0
|Read: Bit[1] = Rx_empty, Bit[2] = Tx_empty
|-
|MIDI_FIFO_DATA_PORT
|0xDDA1
|read and write Data Port
|-
|MIDI_RXD_COUNT_LOW 
|0xDDA2
|Rx FIFO Data Count LOW
|-
|MIDI_RXD_COUNT_HI 
|0xDDA3
|Rx FIFO Data Count Hi - Only the 4 first bit are valid
|-
|MIDI_TXD_COUNT_LOW 
|0xDDA4
|Tx FIFO Data Count LOW
|-
|MIDI_TXD_COUNT_HI 
|0xDDA5
|Tx FIFO Data Count Hi - Only the 4 first bit are valid
|}


=== Steps in order to use MIDI OUT ===
=== Steps in order to use MIDI OUT ===
Line 12: Line 42:


Send a MIDI command through 0xDDA1 in rapid sequence.
Send a MIDI command through 0xDDA1 in rapid sequence.
For example, a middle C sent to MIDI channel 0 at moderate speed would be the bytes:<br>
<br>


Moderately heavy middle C to channel 0: 0x90, 0x40, 0x40<br>
Moderately heavy middle C to channel 0: 0x90, 0x40, 0x40<br>
Changing the instrument of channel 0 to a Slap Bass 1: 0xC0, 0x24<br>
Changing the instrument of channel 0 to a Slap Bass 1: 0xC0, 0x24<br>
=== Steps in order to use MIDI IN ===
to do: revise this with an accurate procedure.<br>
0xDDA0 is a control register - full usage is unknown<br>
0xDDA1 is the serial data register - unknown how to use it in a MIDI in context<br>
0xDDA2 and 0xDDA3 are the low and high bytes representing the count of buffered midi bytes in the FIFO buffer<br>

Latest revision as of 17:10, 10 November 2024

Sam2695 Dream IC is in the F256K2 and F256Jr2 only[edit | edit source]

The MIDI specification from MIDI.org can be found in the organization's website https://midi.org/specs

There are many tutorials and overview of useful MIDI commands, here is one of them: https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html

Here's a reference list of General MIDI instruments by number: https://www.ccarh.org/courses/253/handout/gminstruments/

Register Name Address Description
MIDI_STATUS 0xDDA0 Read: Bit[1] = Rx_empty, Bit[2] = Tx_empty
MIDI_FIFO_DATA_PORT 0xDDA1 read and write Data Port
MIDI_RXD_COUNT_LOW 0xDDA2 Rx FIFO Data Count LOW
MIDI_RXD_COUNT_HI 0xDDA3 Rx FIFO Data Count Hi - Only the 4 first bit are valid
MIDI_TXD_COUNT_LOW 0xDDA4 Tx FIFO Data Count LOW
MIDI_TXD_COUNT_HI 0xDDA5 Tx FIFO Data Count Hi - Only the 4 first bit are valid

Steps in order to use MIDI OUT[edit | edit source]

MIDI OUT picks data from your program and sends it out to the SAM2695 chip as well as the MIDI Out port to an external device.

Send a MIDI command through 0xDDA1 in rapid sequence.

Moderately heavy middle C to channel 0: 0x90, 0x40, 0x40
Changing the instrument of channel 0 to a Slap Bass 1: 0xC0, 0x24