ArSid - Arduino Sid Synthesizer

Fri 18-Oct-19
21:14:13




Ontwerp Ideeën.

Datum: Fri 01 January 2016
Samenvatting: Hardware ontwerp-ideeën en korte uitwerkingen voor de ArSid.
 Soort Artikel: Theorie
Status: Afgerond



[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]
ontwerp_1-blokschema.jpg
1/6: ontwerp_1-blokschema.jpg.
ontwerp_2-mega.jpg
2/6: ontwerp_2-mega.jpg.
ontwerp_3-sidbasis.jpg
3/6: ontwerp_3-sidbasis.jpg.
ontwerp_4-sid_registers.jpg
4/6: ontwerp_4-sid_registers.jpg.
ontwerp_5-lcd.jpg
5/6: ontwerp_5-lcd.jpg.
ontwerp_6-bovenplan.jpg
6/6: ontwerp_6-bovenplan.jpg.
Meer
[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]

Hieronder volgen de ideeën en hardware ontwerp-eisen voor de ArSid. Sommige ideeën dateren al uit begin 2014 en anderen zijn het afgelopen voorjaar pas tot idee geworden.

Na een opsomming van de Sid-registers is bedacht dat (van 1 voice) elke ADSR-instelling zijn eigen potmeter moet krijgen en elk register-bitje zijn schakelaar. Om mooie aantallen te krijgen is besloten om totaal 16 potmeters en 16 schakelaars te gebruiken voor de registers. De potmeters en schakelaars die geen register kunnen vullen, hebben een eigen funktie gekregen.

Voor meer functionaliteit lijkt het leuk om er ook een accoorden-systeem in te bouwen. Je speelt 1 toets en de ArSid komt met een heel accoord. Ook polyfoon-spelen moet mogelijk worden, tenslotte zijn er voor 2 Sid's 6 voices (stemmen) beschikbaar. Daar moet wat leuks van te maken zijn.

Ook is er over een display nagedacht. Een Lcd-display met RGB-achtergrond verlichting lijkt mij leuk. Over de indeling van de tekst op het display is ook nagedacht ... althans over het hoofdscherm. Er moeten meer schermen komen, dus er gaat een software mechanisme (cursor-toetsen idee (?)) komen om de data op de juiste plaats op het display te tonen. Met eigen tekens wordt de uitlezing zo functioneel en zo vriendelijk mogelijk gemaakt.

En er moet een Midi aansluiting komen. En wellicht een rij Leds bovenaan om een ritme weer te geven, zoals een TR8 of TB3 (Roland-Aira serie) dat ook doet.

1. Registers Sid.

Alle instellingen van de Sid:

  1. Frequency Low
  2. Frequency High
  3. PulseWidth Low
  4. PulseWitdh High
  5. Control
    1. Noise
    2. Square/Pulse
    3. Saw
    4. Triangle
    5. Test (= WaveReset)
    6. RingModulation
    7. Sync
    8. Gate (= Start ADSR)
  6. Attach
  7. Decay
  8. Sustain
  9. Release
  10. FilterFreq Low
  11. FilterFreq High
  12. Filter Resonance
  13. Filter On/Off (each Voice a bit)
  14. FilterType
    1. HighPass
    2. BandPass
    3. LowPass
  15. MasterVolume

2. Potmeter/ Schakelaar Verdeling.

Een eerste gedachte over de potmeters en schakelaars. Het boorplan heeft andere funktie omschrijvingen gekregen.

ADSR Square Filter
Pots Attack Decay Sustain Release DutyCycleFrequencyResonance-
WaveForm - Filter
SchaksNoise Square Saw Triangle - HighPass BandPass LowPass
   
Pots Accoord TransposeTransOct - Sweep 1 Sweep 2 Time -
   
Schaks- - - - - - - -

Er moeten extra schakelaars komen om te kiezen naar welke Sid de instellingen toe moeten. En er moeten keuze-schakelaars komen om door de display-pagina's te kunnen "bladeren" en om gegevens getallen in diverse notaties weer te geven (decimaal, hexadecimaal, midi-waarde, noot-naam, etc).

Achterop moet iets komen om het Midi-kanaal (live) in te kunnen stellen. En met het idee om de Sid's te "verdelen" tussen een bas-lijn en een melody-lijn is het handig om de kanaal-keuze dubbel uit te voeren. En misschien een derde voor Midi-Out boodschappen.

3 LCD-Display: 20*4.

Het basis-ontwerp van het hoofdscherm.

+--------------------+
|O:vv f:.....    C:..|  Oscilator
|F:/~ f:.....    R:..|  Filter
|W:/\ d:.....        |  Waveform
|A:.. D:.. S:.. R:.. |  ADSR
+--------------------+
Ook dit is een begin idee. Hierbij is meegenomen dat het display eigen tekens kan tonen (maximaal 8 eigen tekens).

3a. Eigen Tekens.

De volgende funkties moet eigen tekens krijgen. 2 tekens per funktie:

  1. Filter
  2. Filter
  3. WaveForm
  4. WaveForm

3b. Idee over eigen tekens.

Er moeten eigen tekens komen die het volgende laten zien:

  1. Blok-Up/Down
  2. Zaag-1/2
  3. Driehoek-Up/Down
  4. Ruis-1/2
  5. Lowpass-1/2
  6. Bandpass-1/2
  7. Highpass-1/2

4 Bovenrij met RGB-Led's: 16+3.

Bovenaan moet een rij van 16 Led's komen. Deze moet meelopen met de Midi-Clock. Wat deze Midi-Clock nog meer moet doen, is nu nog niet bepaald. Maar de routines om deze Clock te kunnen gebruiken, moeten er alvast komen.

Daarnaast moeten 3 Led's komen voor [Play][Stop][Pause] (of zoiets).

Eerst was het idee om er standaard rode of groene Led's voor te gebruiken. Nu moeten het RGB-Led's komen, zodat de maten van 4 ermee gemerkt kan worden met een ander kleurtje.

En dan is er nog de RGB-Backlight van het LCD-Display.

5. Aansluitingen Arduino Mega.

Een idee over wat de aansluitingen van de Arduino Mega voor funkties moeten krijgen. Een soort adres-bus, databus en control-bus om de Sid's, Lcd's en Led's aan te sturen en om de schakelaars uit te lezen.

Analog Pins Digital Pins Extended Pins
F0 va0 Pot 0 E0 xd0 rx0- J1 xd14 tx3 - C7 vd30Adr A7L7 vd42 Adr En
F1 va1 Pot 1 E1 xd1 tx0- J0 xd15 rx3 - C6 vd31Adr A6L6 vd43 -
F2 va2 Pot 2 E4 xd2 pwm- H1 xd16 tx2 - C5 vd32Adr A5L5 vd44 pwm -
F3 va3 Pot 3 E5 xd3 pwm- H0 xd17 rx2 - C4 vd33Adr A4L4 vd45 pwm -
F4 va4 Pot 4 G5 xd4 pwm- D3 xd18 tx1Mid OuC3 vd34Adr A3L3 vd46 pwm -
F5 va5 Pot 5 E3 xd5 pwm- D2 xd19 rx1Mid InC2 vd35Adr A2L2 vd47 -
F6 va6 Pot 6 H3 xd6 pwm- D1 xd20 sda - C1 vd36Adr A1L1 vd48 -
F7 va7 Pot 7 H4 xd7 pwm- D0 xd21 scl - C0 vd37Adr A0L0 vd49 Adr A8
K0 va8 Pot 8 H5 xd8 pwm- A0 vd22 Dat D7D7 xd38 ResetB3 xd50 miso -
K1 va9 Pot 9 H6 xd9 pwm- A1 vd23 Dat D6G2 xd39 LcdB2 xd51 mosi -
K2 va10Pot 10 B4 xd10 pwm- A2 vd24 Dat D5G1 xd40 R/WB1 xd52 sck -
K3 va11Pot 11 B5 xd11 pwmLcd BA3 vd25 Dat D4G0 xd41 p2B0 xd53 ss -
K4 va12Pot 12 B6 xd12 pwmLcd GA4 vd26 Dat D3
K5 va13Pot 13 B7 xd13 pwmLcd RA5 vd27 Dat D2
K6 va14Pot 14 A6 vd28 Dat D1
K7 va15Pot 15 A7 vd29 Dat D0

6. Adres-bus

Een Sid heeft 32 adres-posities. Om er 8 aan te sturen, zijn er 256 posities nodig.

Leds bovenaan de bovenkant (de LedRij) moeten een ritme en een status van Play/Stop weergeven. Zij gaan in een matrix aangesloten worden.

Alle schakelaars moeten de mogelijkheden op eenvoudige wijze bedienen, met zo min mogelijk verstopte (menu)-opties. Ook zij gaan in een matrix worden aangesloten.

Het Lcd-Display heeft 2 adres-posities nodig. De RGB-Background verlichting kan in deze posities worden opgenomen. Maar wanneer deze rechtstreeks op de Mega wordt aangesloten, kan de Mega nog rechtstreeks "nood"signalen sturen, als de rest van de besturing uitgevallen is.

De regel-potmeters zijn recht-toe recht-aan. Elke regel-potmeter gaat rechtstreeks naar een analoge ingang van de Arduino.

Een adresbus van 8-bits geeft 256 verschillende posities. Elke bit meer in deze adresbus geeft een verdubbeling van dit aantal. Met deze 8 bits kunnen 8 Sids worden aangestuurd (8 Sids vermenigvuldigd met 32 Sidadressen geeft 256 adres-posities).

Middels een 9de adreslijn (dit geeft totaal 512 posities) kan gekozen worden of de Sids, of dat de In/Out (het Display (2 registers), de Leds en de schakelaars) wordt aangestuurd door de Mega.

Dit geeft de volgende verdeling voor de adressen per Sid en voor de In/Out.

Adres $0xx - Sids$1xx - In/Out
$y00 .. $y1FSid 0 LedRij Kleur/Kleur
$y20 .. $y3FSid 1 LedRij Kleur/Nummer
$y40 .. $y5FSid 2 Lcd Data
$y60 .. $y7FSid 3 Lcd Register Select
$y80 .. $y9FSid 4 Schakelaars Out
$yA0 .. $yBFSid 5 Schakelaars In
$yC0 .. $yDFSid 6 *not used*
$yE0 .. $yFFSid 7 *not used*

Midi-aansluitingen erbij, maken de ArSid compleet. Echter deze worden rechtstreeks op een seriële port (Tx/Rx2, net als het Mega Ledpaneel) op de Mega aangesloten.

Dit alles resulteert in een aantal printen die met elkaar worden verbonden. Een blokschema geeft dit op eenvoudige wijze weer en zal als leidraad dienen bij de verdere opbouw. Ook al is het blokschema (ruim anderhalf jaar) later getekend dan de eerte ArSid ideeën zijn ontstaan.

7. Audio regel potmeters.

De audio-signalen van (en naar) de Sid's moeten rechtstreeks gaan naar (en van) een audio versterking print met opamps. Deze worden ook rechtstreeks aangesloten op de audio-regel potmeters, zodat er gedacht moet worden over afscherming. Een later idee is om de versterkers te voorzien van VCA's (Voltage Controlled Amplifiers), zodat de verbindingen met de audio-potmeters EN geen afscherming nodig hebben (ze gaan een gelijkspanning voeren) EN steviger uitgevoerd kunnen worden (afgeschermd audio-kabel is altijd zwakker dan gewoon draad).

Er moet wel rekening worden gehouden met eventuele extra afscherming tussen het digitale en het analoge gedeelte. Digitaal en analoog gaan immers niet goed samen, vooral wanneer de adertjes van de aansluitdraden naast elkaar liggen.

8. Een behuizing.

De verzameling printen moet natuurlijk in een mooie (en nuttige) behuizing komen. Het is mogelijk om hiervoor een kant-en-klaar (kunststof) kast voor te nemen, maar zelfbouwen (van hout of metaal) is ook een optie.


Lijstje met internet linken.

Hieronder een kort lijstje met de datasheet van de Arduino Mega en met 2 video's over de Sid.

  1. Datasheet van de AT Mega. - Hier
  2. Video 1: "Exploring the Commodore MOS Technology 8580R5 Sound Interface Device" (lengte: 47min 12sec) - YouTube

    In deze video onderzoekt Richard Atkinson de mogelijkheden van de SID-Chip (de opvolger van de 6581) (met gebruik van een Behringer BCR2000 Controller).

    Vanaf 4:25 ergens zijn de diverse geluidsgolven te horen EN te zien op een osciloscoop. Driehoek - Zaagtand - Blokgolf (Square) met varierende pulse breedte - ruis (vanaf 5:10). Verder zijn te horen gecombineerde wave-forms (driehoek met puls) en ring-mudulatie.

    Vanaf 22:20 gaat het over de ADSR-envelope. Op een osciloscoop is dit echter niet zo spectaculair.

    Vanaf 26:05 komt de tweede oscilator erbij. Heel mooi zijn de fase-verschuivingen te zien, omdat beide frequenties niet exact hetzelfde zijn.

    Vanaf 29:20 komt de derde oscilator erbij. Ook hier zijn duidelijk de drie afzonderlijke fase verschuivingen te zien wanneer de frequenties bijna gelijk zijn.

    Vanaf 31:30 komt het filter aan bod.

  3. Video 2: "Exploring the Commodore MOS Technology 6581 Sound Interface Device" (lengte 27min 58sec) - YouTube

    Video van dezelfde Richard Atkinson over de originele SID-chip.



[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]

Afbeeldingen

ontwerp_1-blokschema.jpg
1/6: ontwerp_1-blokschema.jpg.
ontwerp_2-mega.jpg
2/6: ontwerp_2-mega.jpg.
ontwerp_3-sidbasis.jpg
3/6: ontwerp_3-sidbasis.jpg.
ontwerp_4-sid_registers.jpg
4/6: ontwerp_4-sid_registers.jpg.
ontwerp_5-lcd.jpg
5/6: ontwerp_5-lcd.jpg.
ontwerp_6-bovenplan.jpg
6/6: ontwerp_6-bovenplan.jpg.

[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]