# Midi Ausgabe über IO Pins

**URL:** <https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406>\
**Category:** Fragen zu MakeCode/PXT\
**Created:** [25. Februar 2018 um 20:22 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406 "2018-02-25T20:22:10Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [25. Februar 2018 um 20:22 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/1 "2018-02-25T20:22:10Z")

</div>

Ich würde gerne mit dem Calliope einen Midi-Ausgang steuern um so ein E-Piano anschliessen zu können (ähnlich [dieser Lösung](http://www.multiwingspan.co.uk/micro.php?page=midi)  
Mit dem Microbit und dem in dem Link gezeigten Python Code funktioniert das auch mit den Anschlüssen 3V,GND & P0 , allerdings würde ich lieber den Calliope und PXT Editor verwenden. Mit der Library wird aber anscheinend der Port P0 nicht seriell angesprochen, ist das irgendwie konfigurierbar ?

---

<div class="post-metadata">

**Author:** ![klmi](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.calliope.cc/klmi/32/763_2.png) [@klmi](https://forum.calliope.cc/u/klmi)\
**Post date:** [25. Februar 2018 um 22:00 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/2 "2018-02-25T22:00:49Z")

</div>

Ich habe zwar keine Ahnung aber hast Du schon mal hier geschaut?  
[https://www.hackster.io/42232/der-calliope-mini-als-midi-player-343f92](https://www.hackster.io/42232/der-calliope-mini-als-midi-player-343f92)

---

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [27. Februar 2018 um 20:04 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/3 "2018-02-27T20:04:52Z")

</div>

Dies ist leider nicht was ich suche, da ich nicht den Calliope als Player eines externen Midi-Instruments nutzen möchte sondern umgekehrt, der Calliope Midi-Sounds erzeugt die auf einem externen Synthesizer oder einem Computer gespielt werden sollen. Zudem möchte ich nicht die USB-Schnittstelle des Calliope zur Kommunikation sondern einen IO-Port verwenden.

Einfacher gesagt, würde mich interessieren ob das Midi-Package für den PXT Editor eine Konfiguration der seriellen Kommunikation erlaubt, als beispielsweise die Wahl des IO-Ports und der Baudrate.

---

<div class="post-metadata">

**Author:** ![klmi](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.calliope.cc/klmi/32/763_2.png) [@klmi](https://forum.calliope.cc/u/klmi)\
**Post date:** [27. Februar 2018 um 21:54 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/4 "2018-02-27T21:54:00Z")

</div>

> **[calliope-mini/pxt-calliope-modem](https://github.com/calliope-mini/pxt-calliope-modem)**
>
> Modem AT functionality. Contribute to calliope-mini/pxt-calliope-modem development by creating an account on GitHub.

  
müsste doch passen. Nur wie Du mit Deinem Midigerät kommunizierst musst Du wissen. Da fällt mir ein dass das Stagepione meiner Tochter auch einen Midieingang hat.  
Verwende aber den Makecode zum installieren der Pakete.  

> **[Calliope mini - Blocks / Javascript editor](https://makecode.calliope.cc/)**
>
> A Blocks / JavaScript code editor for the calliope mini.

---

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [28. Februar 2018 um 20:59 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/5 "2018-02-28T20:59:05Z")

</div>

![Program](https://canada1.discourse-cdn.com/flex027/uploads/calliope/original/1X/63e5190a1d53b11fe73711134a58df6a18d8c14b.JPG)  
Mittlerweile habe ich herausgefunden, dass ich einfach nur die Konfiguration aus dem Serial Block nehmen kann, im Midi Block wird ja definiert, dass Midi auf Serial umgeleitet wird.  
Leider kann man nicht die Baudrate 31250 auswählen, das gezeigte Beispiel stammt aus einer Beta-Umgebung ([LINK](https://github.com/Microsoft/pxt/issues/1902)) Es wäre schön, wenn die Auswahlmöglichkeit auch für die PXT-Umgebung des Calliope angepasst würde.

---

<div class="post-metadata">

**Author:** ![klmi](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.calliope.cc/klmi/32/763_2.png) [@klmi](https://forum.calliope.cc/u/klmi)\
**Post date:** [28. Februar 2018 um 21:31 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/6 "2018-02-28T21:31:48Z")

</div>

Nimm den Umweg über Javascript  
 ![1](https://canada1.discourse-cdn.com/flex027/uploads/calliope/original/1X/6e0b4d8e9975a6e50ea0b6eb297d55bed5fdda93.png)  
Wenn Du dann auf Block umschaltest ist der Block zwar blau, aber es müsste gehen.  
 ![2](https://canada1.discourse-cdn.com/flex027/uploads/calliope/original/1X/24c7cb04a32c5adbef2fa342bb7b7e8e1d6d04f3.png)  
Wobei der pxt gerade (22.30 Uhr ) den Server nicht mehr findet.

---

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [28. Februar 2018 um 22:11 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/7 "2018-02-28T22:11:33Z")

</div>

Der Trick mit dem Javascript Umweg scheint zu funktionieren, zumindest meldet mein angeschlossenes Keyboard nun keinen Midi-Fehler mehr an. Allerdings bekomme ich immer noch keinen Ton heraus. Ich habe nun mal die Midi-Signale die per Python generiert wurden (und funktionieren) mit denen die per PXT generiert wurden verglichen, sie sehen sehr unterschiedlich aus. Die Midi-Signale des PXT erscheinen wesentlich länger zu sein.

 ![noTone](https://canada1.discourse-cdn.com/flex027/uploads/calliope/original/1X/0081d50797f42044e5edb0b98203a02f7cef7ec1.JPG) ![ToneOK](https://canada1.discourse-cdn.com/flex027/uploads/calliope/original/1X/3d42542bd3124abc29d63f866f87b8bdcfaef40f.JPG) Also irgendwie scheint die Konfiguration des Serialports immer noch nicht richtig zu sein.

---

<div class="post-metadata">

**Author:** ![klmi](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.calliope.cc/klmi/32/763_2.png) [@klmi](https://forum.calliope.cc/u/klmi)\
**Post date:** [1. März 2018 um 21:04 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/8 "2018-03-01T21:04:07Z")

</div>

Bitte einfach mal ein Screenshot deines Programms einstellen, dann können mal ein paar Leute drüberschauen.

---

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [2. März 2018 um 17:02 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/9 "2018-03-02T17:02:56Z")

</div>

Der Code enstspricht eigentlich genau dem Bild oben, anbei der Java-Script Code.

 ![DemoCode](https://canada1.discourse-cdn.com/flex027/uploads/calliope/original/1X/bd5e5edf4d2c3bb55e766b4c0531b427b288d5e3.jpg)

---

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [20. Mai 2018 um 18:32 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/10 "2018-05-20T18:32:57Z")

</div>

Zwischenzeitlich wurde das Problem gelöst. Es gibt einen neuen Block “midi use raw serial” der die Midi-Daten genau so auf die Schnittstelle gibt wie sie von Midi-Eingängen benötigt werden.

(s.a. [LINK](https://github.com/Microsoft/pxt-midi/issues/4))

---

<div class="post-metadata">

**Author:** ![Tonitwn](https://avatars.discourse-cdn.com/v4/letter/t/858c86/32.png) [@Tonitwn](https://forum.calliope.cc/u/Tonitwn)\
**Post date:** [27. Mai 2018 um 08:35 UTC](https://forum.calliope.cc/t/midi-ausgabe-ueber-io-pins/406/11 "2018-05-27T08:35:16Z")

</div>

Auf dem Microbit läuft jetzt das Programm, allerdings bekomme ich den gleichen Code auf dem Calliope noch nicht zum Laufen…hat jemand eine Idee weshalb ?  
( **Error code:** pxt\_modules/midi/midi.ts(82,20): error TS2339: Property ‘writeBuffer’ does not exist on type ‘typeof serial’.)

```
let Guitar: midi.MidiController = null
input.onButtonPressed(Button.A, () => {
    basic.showIcon(IconNames.EigthNote)
    Guitar.note(midi.frequencyToKey(262), music.beat(BeatFraction.Whole))
    basic.pause(300)
    Guitar.note(midi.frequencyToKey(330), music.beat(BeatFraction.Whole))
    basic.pause(300)
    Guitar.note(midi.frequencyToKey(440), music.beat(BeatFraction.Whole))
    basic.pause(300)
    basic.showIcon(IconNames.Yes)
})
serial.redirect(
SerialPin.P0,
SerialPin.P1,
31250
)
midi.useRawSerial()
basic.showIcon(IconNames.Yes)
Guitar = midi.channel(1)
Guitar.setInstrument(MidiInstrument.AcousticGuitarNylon)
```
