MidiJoy - der ATARI als Chiptune-Instrument

1 ... 3, 4, 5, 6, 7

Re: MidiJoy - der ATARI als Chiptune-Instrument

von freetz » Fr 13. Mär 2015, 13:19
Ja, ein paar sind noch da, schick mir mal Deine E-Mail per PN...

Re: MidiJoy - der ATARI als Chiptune-Instrument

von pmetzen » Sa 27. Jan 2018, 02:54
Hallo

Folgendes Problem habe ich mit dem Sketch von MidiJoy. Hier die Quellcode,


// A8MidiJoy
// Atari 8-Bit Music Interface Teensy / Teensyduino Code
// based on A8F for 2600 by Sebastian Tomczak (little-scale)
// adapted for Atari 8-bit by Frederik Holst (2014)
// http://www.phobotron.de/midijoy_en.html

/* Atari 8-Bit and Teensy Hardware Setup:

Atari Player 1 Pin 1 ---> Teensy Port B0 (digital pin 0)
Atari Player 1 Pin 2 ---> Teensy Port B1 (digital pin 1)
Atari Player 1 Pin 3 ---> Teensy Port B2 (digital pin 2)
Atari Player 1 Pin 4 ---> Teensy Port B3 (digital pin 3)
Atari Player 1 Pin 6 ---> Teensy Port B7 (digital pin 4)
Atari Player 1 Pin 8 ---> Teensy Ground

Atari Player 2 Pin 1 ---> Teensy Port F4 (digital pin 19)
Atari Player 2 Pin 2 ---> Teensy Port F5 (digital pin 18)
Atari Player 2 Pin 3 ---> Teensy Port F6 (digital pin 17)
Atari Player 2 Pin 4 ---> Teensy Port F7 (digital pin 16)
Atari Player 2 Pin 6 ---> Teensy Port B6 (digital pin 15)
For future use: Atari Player 2 Pin 9 ---> Teensy Port D0 (digital pin 5)

OPTIONAL:

Connect a "classic" serial MIDI I/O-board to Teensy Port D2 (RXD, digital pin 7)
and D3 (TXD, digital pin 8) respectively in order to connect older MIDI devices.
Schematics can be found here:
https://www.pjrc.com/teensy/td_libs_MIDI.html

*/

#include <MIDI.h>

byte data; // general working byte for serially-received data

byte channel;
byte pitch;
byte velocity;

int dT = 3000; // delay time for write cycles in microseconds

int voice[] = {255,255,255,255};
int vcount = 0;
int maxvoice = 4; // maximum number of simultaneous voices on the 8-Bit (Atari: 4, C64: 3)
int startchannel = 1; // first MIDI channel to be used - increase this by [maxvoice] if you use more than one interface

// Setup
void setup() {

Serial.begin(38400);

PORTB = B00000000;
PORTF = B00000000;

MIDI.begin(MIDI_CHANNEL_OMNI); wird als undeklariert angezeigt
MIDI.setHandleNoteOn(doNote); wird als undeklariert angezeigt
MIDI.setHandleNoteOff(doNoteOff); wird als undeklariert angezeigt

usbMIDI.setHandleNoteOn(doNote);
usbMIDI.setHandleNoteOff(doNoteOff);

}


// Main Program
void loop() {
MIDI.read(); wird als undeklariert angezeigt
usbMIDI.read(); wird als undeklariert angezeigt

}


// Functions
void doNote(byte channel, byte pitch, byte velocity) {

if (channel > startchannel) {
vcount = channel-startchannel;
voice[vcount] = pitch;
} else {
for (int x=0;x<=(maxvoice-1);x++) {
if (voice[x] == 255) {
vcount = x;
voice[vcount] = pitch;
break;
}
}
}

writeatari(B00000000 | pitch, vcount);
writeatari(B10000000 | velocity / 8, vcount);

}

void doNoteOff(byte channel, byte pitch, byte velocity) {

if (channel > startchannel) {
vcount = channel-startchannel;
voice[vcount] = 255;
} else {
for (int x=(maxvoice-1);x>=0;x--) {
if (voice[x] == pitch) {
vcount = x;
voice[vcount] = 255;
break;
}
}
}

writeatari(B10000000, vcount);

}

// WRITING DATA TO THE ATARI

void writeatari(int data, int voice) {

DDRB = ~((data & 15) | (voice << 6));
DDRF = ~(data);

delayMicroseconds(dT);

}

Bei der Version Arduino 1.8.1 und der Teensydurino Version 135 lief alles noch perfekt und der Quellcode ließ sich compilieren.

Jetzt bei der Arduino Version 1.8.5 und der Teensydurino Version 141 lässt sich der Quellcode nicht mehr compilieren, da diese auf einmal einen Fehler im Quellcode angeblich entdeckt hat. Und zwar die Fehlermeldung wurde in diesen Bereich nicht deklariert was not deklared in this scope.

Siehe Quellcode die stellen an dessen die Bereiche als undeklariert gemeldet sind.

Kommentiere ich diese alle aus, funktioniert das compilieren jedoch auf einmal. Aber dann fehlt da ja was, oder nicht? Auskommentieren hilft da wohl ja nicht so. Was hat es mit diesen Fehler auf sich? Wie kann ich das ohne es auskommentieren zu müssen lösen?

Re: MidiJoy - der ATARI als Chiptune-Instrument

von FlorianD » Sa 27. Jan 2018, 12:39
ich vermute mal da fehlt ein
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);

so wie in dem Link angegeben

Re: MidiJoy - der ATARI als Chiptune-Instrument

von pmetzen » Sa 27. Jan 2018, 14:29
Verstehe ich jetzt nicht. Bin Anfänger. Wo soll es Fehlen? In welchen Link? Ich habe doch kein Link angegeben. Der Quellcode ist jungfräulich, also unverändert. Von der Projektseite heruntergeladen.

Arduino Version 181 und Teensydurino V135 melden da keinen Compilerfehler. Nur die neue Arduino Version 185 und Teensydurino V141 melden diesen Compilerfehler. :?

Re: MidiJoy - der ATARI als Chiptune-Instrument

von FlorianD » Sa 27. Jan 2018, 15:22
in dem von Dir gezeigten Sourcecode ist ein Link

Code: Alles auswählen
Connect a "classic" serial MIDI I/O-board to Teensy Port D2 (RXD, digital pin 7)
and D3 (TXD, digital pin 8) respectively in order to connect older MIDI devices.
Schematics can be found here:
https://www.pjrc.com/teensy/td_libs_MIDI.html


folgt man dem, findet man weitere Informationen, u.a. Sourcecodebeispiele. Und da habe ich das
Code: Alles auswählen
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);

gesehen. Ich bin kein Experte in Arduino etc Programmierung, aber so wie das aussieht muss man den Befehl geben, um das System zu initialisieren.

Re: MidiJoy - der ATARI als Chiptune-Instrument

von pmetzen » Mo 29. Jan 2018, 22:26
Ja das vermute ich mal auch. Doch dann ist die Software Teensydurino V141 Fehlerhaft. Dort würde dann die MIDI create INSTANCE Hardwareserial fehlen.

Denn bei Teensydurino V135 funktionierts. Ich habe daher die Software deinstalliert und wieder die ältere Version aufgespielt. Vielen Dank.
1 ... 3, 4, 5, 6, 7