Jingle Bells am Calliope


#1

Hallo zusammen,
ich wollte Schleifen am Calliope mit Jingle Bells üben lassen.
Noten eingegeben passt. BPM geprüft. Ist 120. Passt.
Trotzdem rauschen die ersten 11 Noten m.E. viel, viel zu schnell durch. Beim Mitsingen bin ich nichtmal mit “Jingle” fertig.

Das das kein Synfoniekonzert wird ist klar. Aber irgendwas stimmt nicht. Hat jemand Erfahrungen mit dem Modul Musik?


#2

Hallo,
gleiches Problem. Habe eine Lösung bei Micro:bit gefunden: https://www.youtube.com/watch?v=Y32FhgOVZnM. Es müssen Pausen eingebaut werden. Leider habe ich die Logik noch nicht verstanden, ich kenne mich aber mit Noten auch nicht aus :angry:
Derzeit sieht es so aus:
input.onButtonPressed(Button.A, () => { music.playTone(330, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Half)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Sixteenth)) music.playTone(330, music.beat(BeatFraction.Half)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Quarter)) music.playTone(392, music.beat(BeatFraction.Quarter)) music.playTone(262, music.beat(BeatFraction.Quarter)) music.playTone(294, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Eighth)) music.playTone(330, music.beat(BeatFraction.Whole)) music.playTone(349, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Sixteenth)) music.playTone(349, music.beat(BeatFraction.Quarter)) music.rest(music.beat(BeatFraction.Sixteenth)) music.playTone(349, music.beat(BeatFraction.Half)) music.rest(music.beat(BeatFraction.Eighth)) }) music.setTempo(75)

Toni.


#3

Da bin ich jetzt ein wenig froh, dass ich nicht der einzige mit den Fehler bin.

Ich habe mir eine Musiklehrerin mit ins Boot geholt. Theoretisch dürften Pause nicht notwendig sein. In der Notennotation werden nur Noten und keine Pausen angegeben für Jingle Bells. Auch die Beets per Minute sind so eingestellt, dass sie das Lied mit Ihrem Instrument deutlich langsamer Spielen würde.

Ich denke hier ist ein Bug entweder im Calliope oder im PXT-Editor. Vielleicht kann sich ja mal ein Moderator zu diesem Thema äußern.


#4

Wenn ich den OpenRoberta NEPO-Editor verwende, klappt es ohne Pausen. Verwende ich meinen Microbit mit PXT, geht es ebenfalls nicht. Ich vermute in der Tat den PXT-Editor oder die Schnittstelle zum Microbit/Calliope.

Leider tut sich beim Editor für Calliope nichts sichtbares, während der Editor für den Microbit ja mittlerweile deutlich mehr und sinnvolle Funktionen und auch vieles bereits in der Simulation bietet. Bleibt zu hoffen, dass sich seitens des Calliope-Teams nun mehr auf den Editor incl. echter Offline-Funktion fokussiert wird.

Toni.


#5

Das Problem liegt am Editor und wir sind dran! Die Idee ist, dass beide Editoren gut funktionieren und auf dem aktuellen Stand sind und dann auch bleiben.
Es wird aber in jedem Fall dauern, vermutlich auch länger als bis Weihnachten… :wink:


#6

Hallo Jörn,

vielen Dank für die Rückmeldung und den Ausblick. Können wir helfen und vielleicht irgendwie/irgendwo Anregungen oder Probleme sammeln, ohne dass es eine Meckerecke wird?

Toni


#7

Hallo Toni,

ich denke, dass hier Anmerkungen und Probleme genau richtig sind. So können wir, aber auch andere, helfen, Tipps geben und Anregungen aufnehmen.
Es hilft sicherlich aber auch den Entwicklern der Editoren Hinweise zu geben oder Fragen zu stellen.

Grüße
Jörn


#8

Hallo Jörn,

OK, dann beginne ich mal ein neues Thema mit Problemen und Wünschen. Das passt ja zur Weihnachtszeit.

Toni


#9

Mittlerweile habe ich eine Version, die korrekt läuft und ohne die ominösen Pausen auskommt. Start mit Knopf A. Vielleicht lag das Problem in der Nebenläufigkeit der Prozesse.

let knopf = 0
basic.forever(() => {
if (knopf == 1) {
    music.setTempo(50)
    basic.pause(1000)
    for (let index = 0; index <= 1; index++) {
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Half))
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Half))
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(392, music.beat(BeatFraction.Quarter))
        music.playTone(262, music.beat(BeatFraction.Quarter))
        music.playTone(262, music.beat(BeatFraction.Eighth))
        music.playTone(294, music.beat(BeatFraction.Eighth))
        music.playTone(330, music.beat(BeatFraction.Whole))
        music.playTone(349, music.beat(BeatFraction.Quarter))
        music.playTone(349, music.beat(BeatFraction.Quarter))
        music.playTone(349, music.beat(BeatFraction.Quarter))
        music.playTone(349, music.beat(BeatFraction.Eighth))
        music.playTone(349, music.beat(BeatFraction.Eighth))
        music.playTone(349, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Quarter))
        music.playTone(330, music.beat(BeatFraction.Eighth))
        music.playTone(330, music.beat(BeatFraction.Eighth))
        if (index == 0) {
            music.playTone(330, music.beat(BeatFraction.Quarter))
            music.playTone(294, music.beat(BeatFraction.Quarter))
            music.playTone(294, music.beat(BeatFraction.Quarter))
            music.playTone(330, music.beat(BeatFraction.Quarter))
            music.playTone(294, music.beat(BeatFraction.Half))
            music.playTone(392, music.beat(BeatFraction.Half))
        } else {
            music.playTone(392, music.beat(BeatFraction.Quarter))
            music.playTone(392, music.beat(BeatFraction.Quarter))
            music.playTone(349, music.beat(BeatFraction.Quarter))
            music.playTone(294, music.beat(BeatFraction.Quarter))
            music.playTone(262, music.beat(BeatFraction.Whole))
        }
    }
    basic.pause(1000)
    knopf = 0
  }
})
  input.onButtonPressed(Button.A, () => {
  if (knopf == 0) {
    knopf = 1
  }
})

#10

Sehr cool!

Aber werden die 50BPM nicht trotzdem zu schnell abgespielt? Mit deinen 50BPM müsste es doch eher so klingen?


#11

Stimmt. Also auf jeden Fall ein Fehler.