Inhoudsopgave:

Retro Sound Chip met een Arduino - de SAA1099 - Ajarnpa
Retro Sound Chip met een Arduino - de SAA1099 - Ajarnpa

Video: Retro Sound Chip met een Arduino - de SAA1099 - Ajarnpa

Video: Retro Sound Chip met een Arduino - de SAA1099 - Ajarnpa
Video: YM2413 op Arduino Uno 2024, November
Anonim
Image
Image
Bedrading - SAA1099
Bedrading - SAA1099

In deze instructable laat ik je zien hoe je een Arduino Uno met een vintage geluidssynthese-chip gebruikt om midi-bestanden in vierkante golvende goedheid af te spelen!

Als je gewoon een snel overzicht wilt van wat dit project doet, bekijk dan de bovenstaande video. Ga anders verder!

Stap 1: Video

Image
Image

Als je de voorkeur geeft aan al je instructies in duidelijke, beknopte video's, dan hebben we je gedekt!

Voor de rest van ons kunt u verder gaan, voor een beetje meer detail, en schriftelijke instructies.

Stap 2: Onderdelen en materialen

Hiervoor heb je deze dingen nodig:

(De links zijn voor eBay-items)

  • Een Arduino (Uno, Nano, Leonardo, ze zouden allemaal moeten werken)
  • Minimaal een middelgrote breadboard
  • De SAA1099 Stereo Sound Generator-chip
  • Breadboard jumperdraden (Als alternatief gebruik ik graag dupont vrouwelijke naar vrouwelijke jumpers, met 20 mm header-pinnen in beide uiteinden - veel steviger)
  • 8Mhz TTL-oscillator (AliExpress-link zoals geleverd door zweigelt)
  • Stereo (of mono) audio-aansluiting
  • 2 x 1K weerstanden (partij van 100)
  • 1 x 10K weerstand (partij van 50)
  • 2 x 100pF condensatoren
  • (Optioneel) Sommige LED's, minstens 1 (elke kleur, hier zijn 100 verschillende kleuren voor een dollar!)

Met behulp van de verstrekte links bedragen de totale kosten $ 23,25, inclusief verzendkosten. Het meeste komt natuurlijk van halverwege de wereld, dus verzending duurt meestal ongeveer een maand. Als je snellere verzending wilt, zul je waarschijnlijk iets meer moeten betalen.

Stap 3: Bedrading - SAA1099

Bedrading - SAA1099
Bedrading - SAA1099
Bedrading - SAA1099
Bedrading - SAA1099

Als schema's jouw ding zijn, hier ga je! De rest van ons kan de stap voor stap doorlopen of de video bekijken.

  • Plaats de SAA1099 aan het uiteinde van het breadboard, met de inkeping op de chip naar het uiteinde gericht.
  • Nu, macht. VDD (pin 18) op de SAA1099 gaat naar de voeding, dan pin VSS (pin 9) naar aarde.
  • Plaats vervolgens een draad tussen CS (pin 2) en aarde, om deze laag te houden

Ik zou ook aanraden om de datasheet te bekijken, die ik heb bijgevoegd.

Stap 4: Bedrading - TTL-oscillator

Bedrading - TTL-oscillator
Bedrading - TTL-oscillator
Bedrading - TTL-oscillator
Bedrading - TTL-oscillator
  • We plaatsen de TTL-oscillator op het breadboard naast het breadboard, zodat de klokuitgangspin het dichtst bij de klokingang op de SAA1099 (Pin 8) zit
  • U kunt doorgaan en stroom en aarde aansluiten op de TTL-oscillator. (Ik wachtte tot later in mijn video, dus ik heb geen foto). De bovenstaande afbeelding laat zien welke pinnen welke zijn.

Stap 5: Bedrading - Iref en Chip Interface

Bedrading - Iref- en chipinterface
Bedrading - Iref- en chipinterface
Bedrading - Iref- en chipinterface
Bedrading - Iref- en chipinterface
  • Sluit de 10K weerstand aan tussen Iref (pin 6) en 5V.
  • Sluit digitale pin 8 aan op WR (pin 1) op de SAA1099.
  • Sluit digitale pin 9 aan op A0 (pin 3) op de SAA1099.

Stap 6: Bedrading - Geluidscomponenten

Bedrading - Geluidscomponenten
Bedrading - Geluidscomponenten
Bedrading - Geluidscomponenten
Bedrading - Geluidscomponenten
Bedrading - Geluidscomponenten
Bedrading - Geluidscomponenten
  • Sluit een 100pF condensator aan tussen OUTR (pin 4) en GND
  • Sluit een weerstand van 1K aan tussen OUTR (pin 4) en 5V
  • We doen hetzelfde voor OUTL (pin 5)
  • Sluit een 100pF condensator aan tussen OUTL (pin 5) en GND
  • Sluit een weerstand van 1K aan tussen OUTL (pin 5) en 5V

Opmerking! Zorg ervoor dat geen van de draden van de weerstanden/condensatoren elkaar raken, anders werkt het spul niet en kan (voorlopig) mogelijk in je gezicht ontploffen.

Stap 7: Bedrading - Audio-aansluiting

Bedrading - Audio-aansluiting
Bedrading - Audio-aansluiting
Bedrading - Audio-aansluiting
Bedrading - Audio-aansluiting
Bedrading - Audio-aansluiting
Bedrading - Audio-aansluiting
  • Sluit een kleine jumperdraad aan tussen 5V en een lege rij op het breadboard.
  • Plaats uw audio-aansluiting, zodat de jumper van 5V wordt aangesloten op de "Sleeve"-pin op de audio-aansluiting
  • Sluit de L en R (of audio-pin, als je een mono-aansluiting hebt) respectievelijk aan op de OUTL (pin 5) en OUTR (pin 4) pinnen op de SAA1099.

Opmerking! Op Mono-audio-aansluitingen maakt het echt niet uit wat er gaat, zolang één pin verbinding maakt met 5V en één met OUTL of OUTR. Het zal prima klinken. Tenzij dit niet het geval is, in welk geval u uw bedrading misschien opnieuw wilt controleren.

Stap 8: Bedrading - Stroom naar breadboard

Bedrading - Stroom naar breadboard
Bedrading - Stroom naar breadboard
Bedrading - Stroom naar breadboard
Bedrading - Stroom naar breadboard
  • Verbind beide zijden van de Breadboard-voedingsbus met elkaar door middel van jumperdraden.
  • Sluit een kant aan op de 5V- en GND-pinnen op de Arduino, zorg ervoor dat je de draden nergens hebt verwisseld. Als je dat deed, kan de magische rook ontsnappen.

Stap 9: Bedrading - Datalijnen

Bedrading - datalijnen
Bedrading - datalijnen

Verbind D0 tot en met D7 op de Arduino met D0 (pin 10) tot D7 (pin 17) op de SAA1099, in volgorde

Ik vind dat DuPont vrouwelijk-vrouwelijke jumperdraden, met 15-20MM header-pinnen aan beide uiteinden, veel beter werken dan de mannelijk-mannelijke dupont-draden. Bovendien kun je ze ook als vrouw-vrouw of man-vrouw gebruiken. Beide zijn gemakkelijk te vinden op eBay in grote hoeveelheden, voor kleine hoeveelheden kleingeld. Een goed kerstcadeau voor de aspirant Arduino-junkie!

Stap 10: Optionele LED('s)

Optionele LED('s)
Optionele LED('s)
Optionele LED('s)
Optionele LED('s)

Ik zal niet stap voor stap bespreken hoe je alles hier moet bouwen, maar er zijn verschillende goede plekken om LED's toe te voegen. Allereerst heb ik een rode LED van 3 mm aangesloten tussen WR (pin 1) en GND, om elke keer te laten zien dat de Arduino een commando naar de SAA1099 stuurt.

Ik heb eerder ook LED's op de datalijnen aangesloten, waardoor je de daadwerkelijke binaire gegevens op elke lijn kunt zien. Ik heb deze opstelling gebruikt in mijn video "Arduino en SAA1099 - Fireflies", evenals nog 6 LED's en wat extra code om elke LED op te lichten voor elk kanaal dat actief was.

Hoe meer LED's, hoe cooler het eruit ziet!

Stap 11: Codeer

Code!
Code!
Code!
Code!

Nu je het circuit hebt gebouwd, ga je de verbindingen dubbel controleren! Je wilt je dure arduino en Soundchip niet opblazen! (Als je dat doet, nou. Dat zijn mijn zaken niet)

Ervan uitgaande dat je gezond bent en alles hebt gecontroleerd, kunnen we beginnen met programmeren.

  • De bibliotheek is op
  • Je wilt het SAATunes.zip-bestand, dus ga je gang en download dat.
  • Open nu de Arduino IDE.
  • Klik onder "Schets", "Bibliotheek opnemen" op "Zip-bibliotheek toevoegen"
  • Navigeer naar waar u de SAATunes-bibliotheek hebt gedownload. (Het kan me niet schelen of het je bureaublad, downloads of (voeg iets gênants) map was - vind het gewoon)
  • Selecteer het en klik op "Openen"
  • Het zou u moeten vertellen dat het aan uw bibliotheken is toegevoegd.

Stap 12: Test het

Test het!
Test het!
Test het!
Test het!
  • Open het voorbeeld-SAATunes-programma, onder "Bestand", "Voorbeelden", "SAATunes", "SAATunes-Uno".
  • Sluit je Arduino aan op de computer en op een soort luidspreker.
  • Upload het programma naar de Arduino.

Je zou een akkoord moeten horen, dan Beethoven's Woede over een verloren cent. Als Klassiek niet jouw ding is, wees dan niet bang, want we zullen binnenkort leren hoe we MIDI-bestanden van onze eigen keuze ermee kunnen gebruiken.

Als je niets hoort, controleer dan een paar dingen: Ten eerste, staat je speaker aan? Draai het helemaal naar boven. Staat de Arduino dan echt aan? Is het programma correct geüpload? Controleer alle bedrading met het schema en de datasheet en probeer het opnieuw.

Stap 13: Uw eigen MIDI-bestanden gebruiken - conversieprogramma

Uw eigen MIDI-bestanden gebruiken - conversieprogramma
Uw eigen MIDI-bestanden gebruiken - conversieprogramma

Klaar om iets anders dan Beethoven te proberen? Heel goed, hier ga je.

Om MIDI-bestanden naar C++ Bytestreams te converteren, hebben we een programma van Len Shustek nodig. Hij is de maker van de bibliotheek waarop ik mijn code heb gebaseerd, en mijn bibliotheek gebruikt hetzelfde bytestream-formaat als hij.

  • Je kunt het programma vinden op
  • Het gewenste programma is "miditones.exe". Ga je gang en download dat.

Stap 14: MIDI-bestanden converteren

MIDI-bestanden converteren
MIDI-bestanden converteren
MIDI-bestanden converteren
MIDI-bestanden converteren
MIDI-bestanden converteren
MIDI-bestanden converteren

Waarschuwing! Hier zijn er ascii-draken! Misschien vind je het makkelijker om de video te bekijken, waar je precies kunt zien waar ik het over heb. Als je naar binnen durft, ga dan verder!

Om het MIDI-naar-bytestream-conversieprogramma te gebruiken, moet u een opdrachtpromptvenster openen. Sorry Mac- en Linux-gebruikers, misschien moet u een oplossing vinden.

  • Open het startmenu en typ "CMD" en druk vervolgens op enter.
  • We gaan nu een beetje MS-DOS-magie leren. Navigeer met de opdracht "CD" naar de plaats waar u het bestand "miditones.exe" hebt gedownload. In de meeste gevallen zullen de commando's "cd downloads" zijn.
  • Voer het programma "miditones.exe" uit door "miditones" te typen. Het zou u een helplijst moeten tonen met de meest voorkomende opdrachten.

Nu hebben we een MIDI-bestand nodig om te converteren. Zoek er een ergens op de interwebs, liefst zonder percussie of speciale effecten naast insturments/velocity. (Als je niet weet wat dat zijn, maak je geen zorgen, het komt wel goed)

  • Download je MIDI-bestand naar dezelfde plaats waar je het "miditones"-programma hebt.
  • Gebruik nu het opdrachtpromptvenster en typ "miditones -d -v [bestandsnaam]" (Vervang [bestandsnaam] door wat de naam van uw MIDI-bestand ook is).
  • miditones zal een. C-bestand genereren met de C++ bytestream in dezelfde map, met dezelfde naam als het MIDI-bestand.

Stap 15: Uw geconverteerde MIDI-bestand gebruiken

Uw geconverteerde MIDI-bestand gebruiken
Uw geconverteerde MIDI-bestand gebruiken
Uw geconverteerde MIDI-bestand gebruiken
Uw geconverteerde MIDI-bestand gebruiken
Uw geconverteerde MIDI-bestand gebruiken
Uw geconverteerde MIDI-bestand gebruiken

Nu je je MIDI-bestand hebt geconverteerd, laten we het in kleine bytes naar de Arduino sturen!

  • Ervan uitgaande dat je het SAATunes-Uno-voorbeeld al hebt geopend, laten we doorgaan en "opslaan als" iets anders, zodat we het kunnen bewerken.
  • Als je het eenmaal hebt opgeslagen, klik je op het kleine "pijltje naar beneden" in de rechterbovenhoek.
  • Klik op "nieuw tabblad" en noem het "[naam].h" (Vervang [naam] door de naam van je MIDI-song, of wat je maar wilt)
  • Open nu het. C-bestand dat miditones eerder hebben gemaakt. U kunt Kladblok gebruiken om het te openen.
  • Gebruik CNTRL/A om alles te selecteren en kopieer het dan.
  • Plak het in je nieuwe "[name].h"-tabblad in de arduino-editor.

Alles is hier goed, dus laten we teruggaan naar het programma.

  • Zoek waar het staat "#include "RagePenny.h"", en kopieer/plak het op een nieuwe regel hieronder.
  • Verander de "RagePenny.h" in hoe je je nieuwe bestand ook hebt genoemd.
  • Geef nu commentaar op de "#include "RagePenny.h"", door er twee schuine strepen (//) voor toe te voegen.
  • Upload het programma!

Als alles goed is gegaan, zou het je eigen MIDI-bestand moeten spelen. Als dit niet het geval is, controleert u opnieuw of de namen van het nieuwe tabblad en de naam die u hebt gewijzigd in de "#include "RagePenny.h"" hetzelfde zijn. Controleer de andere stappen en zorg ervoor dat je alles goed hebt gedaan. Sommige MIDI-bestanden werken gewoon niet, maar die zijn zeldzaam.

Stap 16: Fin

Vin!
Vin!

Hopelijk is alles goed met je gegaan en zit je te jammen op MIDI-bestanden op een oud stukje technologie dat nieuw leven is ingeblazen!

Maar als je dat niet bent, geef dan niet op! Stuur een reactie op mijn manier, en ik help je graag verder. Natuurlijk, voel je vrij om me suggesties te geven in de comments.

Veel plezier met chiptunen!

Aanbevolen: