MidiJoy - der ATARI als Chiptune-Instrument
Moderatoren: skriegel, Sleepy, Wolfgang, cas
Re: MidiJoy - der ATARI als Chiptune-Instrument
Ja, ein paar sind noch da, schick mir mal Deine E-Mail per PN...
- freetz
- Multi Poster
- Beiträge: 368
- Registriert: Fr 30. Jul 2010, 12:50
Re: MidiJoy - der ATARI als Chiptune-Instrument
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
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?
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

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?
-
pmetzen - Star Poster
- Beiträge: 542
- Registriert: Do 1. Jan 1970, 02:00
- Wohnort: Essen
Re: MidiJoy - der ATARI als Chiptune-Instrument
ich vermute mal da fehlt ein
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);
so wie in dem Link angegeben
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);
so wie in dem Link angegeben
RUN $E477
--
--
-
FlorianD - Night&Day Poster
- Beiträge: 1784
- Registriert: Do 1. Jan 1970, 02:00
- Wohnort: Frankfurt am Main
Re: MidiJoy - der ATARI als Chiptune-Instrument
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.
Arduino Version 181 und Teensydurino V135 melden da keinen Compilerfehler. Nur die neue Arduino Version 185 und Teensydurino V141 melden diesen Compilerfehler.

-
pmetzen - Star Poster
- Beiträge: 542
- Registriert: Do 1. Jan 1970, 02:00
- Wohnort: Essen
Re: MidiJoy - der ATARI als Chiptune-Instrument
in dem von Dir gezeigten Sourcecode ist ein Link
folgt man dem, findet man weitere Informationen, u.a. Sourcecodebeispiele. Und da habe ich das
gesehen. Ich bin kein Experte in Arduino etc Programmierung, aber so wie das aussieht muss man den Befehl geben, um das System zu initialisieren.
- 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.
RUN $E477
--
--
-
FlorianD - Night&Day Poster
- Beiträge: 1784
- Registriert: Do 1. Jan 1970, 02:00
- Wohnort: Frankfurt am Main
Re: MidiJoy - der ATARI als Chiptune-Instrument
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.
Denn bei Teensydurino V135 funktionierts. Ich habe daher die Software deinstalliert und wieder die ältere Version aufgespielt. Vielen Dank.
-
pmetzen - Star Poster
- Beiträge: 542
- Registriert: Do 1. Jan 1970, 02:00
- Wohnort: Essen
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste