DIY SH-101 Arpeggiator/Sequencer mit Arduino nachbauen?

Hallo liebe Freunde der elektronischen Musik,

bin neu hier und wollte mal fragen, ob sich jemand schonmal mit der Realisierung eines Nachbaus des Roland SH-101 Sequencers befasst hat.

Ich bin grad dabei den SH-101 mit meinem Nord Micro Modular "nachzuäffen" :D
Dazu möchte ich auch ein passendes Midiinterface basteln, welches alle benötigten Regler und eine Klaviatur beinhaltet.

Das größte Problem bereitet mir allerdings die Realisierung des internen SH-101-Sequencers.. :|
Ich will aber auch keinen externen sequencer dazwischen stecken, da ich 'on the fly' wie halt beim SH-101 arbeiten möchte.
Tasten drücken -> HOLD-Taste = Arp läuft (hoch-runter; runter-hoch; hoch-runter-hoch)
LOAD drücken -> melodie klimpern = fertsch: sequencer läuft
..nicht mehr und nicht weniger - das würde mir völlig ausreichen :floet:

Der Midicontroller mit den ganzen Reglern wird von einem Arduino Uno betrieben werden. Somit wäre eine passende Einheit, welche den Arp/Sequencer antreibt schon vorhanden - nur tuh ich mich mit der programiererei ein wenig schwer.

Vielleicht hat ja jemand ein solches kleines rudimentäres Programm schon vorliegen und könnte mir ein paar Tips geben.

Danke schon im voraus
-otto
 
Den SH-101-Sequenzer hat Olivier von Mutable Instruments in seinem Midipal als OpenSource veröffentlicht.
Einige Menschen haben ihn dann zum JX-3P-Sequenzer(anstatt monophoner Steps, polyphone Steps) weiterentwickelt.

Den Midipal gibts zwar nicht mehr, aber eine andere Firma hat ihn als Midibuddy(o.ä.) wiederveröffentlicht.

Es gibt hier im Forum einige Mitglieder die sich mit der Programmierung(u.a. "Mr.Robotto") beschäftigt haben.

Für den JX-3P-Sequenzer als triggerbare Box(ohne Klaviatur, mit Speicher usw.) würden sich hier bestimmt viele Forumsmitglieder(ich eingeschlossen) interessieren, da es nichts vergleichbares auf dem Markt gibt was das könnte(ausser dem Sequential Prophet-6 und JX-3P).


PS: Soweit ich weiß ist das System zwar nicht Arduino-basiert, aber der Code ist in C++ und läßt sich bestimmt in großen Teilen nutzen.
 
Moogulator schrieb:
Zumindest gibt es ein Controllerset für SH101 und den hier : http://www.gearnews.de/soundforce-contr ... nthesizer/
auch auf Aduinobasis. Aber ich glaub du willst den SH nachstellen, richtig? Da gibt es auch was..
MIDIPal konnte sowas, nichtwahr?
Ja, der SFC-101 (soundforgecontroller-101?) ist mir im Netz auch schon über den Weg gelaufen.
Hab mir dann mal vom Vorgänger das „Betriebssystem“ angeschaut (arduino-code) hab aber nix sequencer-mäßiges drin gefunden.
Nachdem ich mir dann den zu steuernden Synth (TAL Baseline-101 oder so ähnlich) näher angeschaut hatte, hab ich festgestellt, dass der sequencer Bestandteil der Software (TAL) selber ist und nicht zur Controllersoftware dazu gehört :|
Und ja, ich möchte am Ende hier ein gerät/konstrukt stehen haben, welches sich -unabhängig vom PC- wie ein SH-101 anhört und möglichst auch anfühlt (Fader werden aber höchstwarscheinlich durch Potis ersetzt - Preis und konstruktionsbedingt)


Xpander-Kumpel schrieb:
Den SH-101-Sequenzer hat Olivier von Mutable Instruments in seinem Midipal als OpenSource veröffentlicht.
Einige Menschen haben ihn dann zum JX-3P-Sequenzer(anstatt monophoner Steps, polyphone Steps) weiterentwickelt.

Den Midipal gibts zwar nicht mehr, aber eine andere Firma hat ihn als Midibuddy(o.ä.) wiederveröffentlicht.

Es gibt hier im Forum einige Mitglieder die sich mit der Programmierung(u.a. "Mr.Robotto") beschäftigt haben.

Für den JX-3P-Sequenzer als triggerbare Box(ohne Klaviatur, mit Speicher usw.) würden sich hier bestimmt viele Forumsmitglieder(ich eingeschlossen) interessieren, da es nichts vergleichbares auf dem Markt gibt was das könnte(ausser dem Sequential Prophet-6 und JX-3P).


PS: Soweit ich weiß ist das System zwar nicht Arduino-basiert, aber der Code ist in C++ und läßt sich bestimmt in großen Teilen nutzen.
Danke für den Tip.
Hab gleich mal gesucht und den MidiREX gefunden.
4-Spur Midisequencer mit allem was ich benötige und nicht groß viel mehr
werd mich da mal weiter reinlesen.. ;-)


mink99 schrieb:
Sind die Schwierigkeiten, die du hast, in dem c++ oder im Algorithmus ?
Eigendlich die Arduinosprache selbst (von c++ ganz zu schweigen)..
Ein bestehendes Program zu modifizieren ist weniger das Problem, aber eines zu entwerfen... :floet:
Mir steht nicht gerade viel Zeit zur Verfügung um da 1A-konform zu werden

Aber ich schau mir erstmal den MidiREX an und vielleicht gibts eine Möglichkeit meinen Arduino Uno als Programmer für die REX-Software zu nutzen (ist scheinbar c++)

Danke erstmal an Alle :)
-otto
 
Tobias von Tubbutec hat gerade einen kompletten OS-Rewrite für den SH-101 gemacht (ich bin da Betatester); basiert allerdings. Ich hab ihm auch schon vorgeschlagen, das ganze als Standalone-Hardware zu machen.
https://tubbutec.de/sh-1oh1/
 
fanwander schrieb:
Tobias von Tubbutec hat gerade einen kompletten OS-Rewrite für den SH-101 gemacht (ich bin da Betatester); basiert allerdings. Ich hab ihm auch schon vorgeschlagen, das ganze als Standalone-Hardware zu machen.
https://tubbutec.de/sh-1oh1/

Kannst Du ihm vielleicht noch vorschlagen das ganze polyphon zu machen(Standalone Hardware)?

Der Mehraufwand ist gering, der Mehrnutzen aber enorm!
 
hallo schau mal in das snazzy fx ardcore repository. das ist ein arduino basiertes eurorack modul in das man flexibel verschiedene programme hochladen kann. da ist auch ein sh 101 ähnlicher sequenzer bei.
 
dislo schrieb:
hallo schau mal in das snazzy fx ardcore repository. das ist ein arduino basiertes eurorack modul in das man flexibel verschiedene programme hochladen kann. da ist auch ein sh 101 ähnlicher sequenzer bei.

der hier? AC27_101SEQ.ino

danke für deinen Hinweis, dislo :)

sind bestimmt ein paar gute sachen fürs programmieren drin :idea:
----------------

favorisiert hab ich erstmal den MidiGAL mit der Firmware MidiSeq.
Bin grad am brainstormen wie ich meine Arduino Uno dazu bekomme, als AVR-ISP einen weiteren Atmega328p mit .hex zu füttern.. :roll:
Die .hex-files kann ich ja nicht einfach so als sketch im Arduino-Editor laden..
XLoader soll das aber scheinbar ganz einfach realisieren können.. nur weis ich noch nicht, wie ich die Fuses auf dem "Opfer" setzen kann
Code:
@echo off
 set path=%path%;C:\Program Files (x86)\Atmel\AVR Tools\STK500 (<-STK500(.exe?) starten und folgendes darauf ausführen:)
 stk500 -cUSB -dATmega328p -I125Khz -e -fD4FF -FD4FF -EFD -GFD (<- Fuses)
 stk500 -cUSB -dATmega328p -I4Mhz -ifmuboot.hex -pf -vf (<- bootloader?)
 stk500 -cUSB -dATmega328p -I4Mhz -ifmidiseq.hex -pf -vf (<- das eigendliche programm)
:stk500 -cUSB -dATmega328p -I4Mhz -iemidiseq_eprom.hex -pe -ve (<- scheinbar ausgeklammert? oder was soll der doppelpunkt am anfang bedeuten?)
Dies ist als batchdatei in der firmware.zip des MidiSeq mit drin gewesen.
Allerdings macht es mir den Anschein, als würde da direkt ein stk500-'ChipBurner' angesprochen werden - den ich natürlich nicht hab :?
Aber der Arduino kann ja anscheinend als AVR-ISP fungieren und somit dann das gleiche wie der STK500 machen - nur WIE GENAU das geht hab ich noch nicht herausgefunden..

:kaffee:

für weitere hints wär ich sehr dankbar :idea: :D
 
sooo...

nachdem ich das netz durchforstet hab, bin ich zu folgender lösung gekommen:

Arduino Uno als ISP und das "Opfer" auf nem externen Breadbord (angeschlossen ohne externen Cristal, wie hier beschrieben (ganz unten links))
Using an Arduino board to burn the bootloader onto an ATmega on a breadboard (w/o an external clock).

und hier die "Übersetzung" von AVR Tools nach avrdude:
Code:
@echo off
 set path=%path%;C:\Program Files (x86)\Atmel\AVR Tools\STK500
 stk500 -cUSB -dATmega328p -I125Khz -e -fD4FF -FD4FF -EFD -GFD
 stk500 -cUSB -dATmega328p -I4Mhz -ifmuboot.hex -pf -vf
 stk500 -cUSB -dATmega328p -I4Mhz -ifmidiseq.hex -pf -vf
:stk500 -cUSB -dATmega328p -I4Mhz -iemidiseq_eprom.hex -pe -ve

-c Select communication port; “com1” to “com8”. If this parameter is omitted the program will scan the comm. ports for the STK500
-d Device name. Must be applied when programming the device. See list below.
-l Set lock byte. “value' is an 8-bit hex. value
-e Erase device. If applied with another programming parameter, the device will be erased before any other programming takes place
-f  Set fuse bytes. “value” is a 16-bit hex. value describing the settings for the upper and lower fuse
-F Verify fuse bytes. “value” is a 16-bit hex. value to verify against
-E Set extended fuse byte. “value” is an 8-bit hex. value describing the extend fuse settings
-G Verify extended fuse byte. “value” is an 8-bit hex. value describing the extend fuse settings
Fuses syntax: fLLHHEE (Low Low; High High; Extendet Extendet)

-if Name of FLASH input file. Required for programming or verification of the FLASH memory. The file format is Intel Extended HEX
-pf or pe or pb Program device; FLASH (f), EEPROM (e) or both (b). Corresponding input files are required
-vf or ve or vb Verify device; FLASH (f), EEPROM (e) or both (b). Can be used with -p or stand alone. Corresponding input files are required
-ie Name of EEPROM input file. Required for programming or verification of the EEPROM memory. The file format is Intel Extended HEX.
-pe see above (Program device; EEPROM (e) Corresponding input files are required)
-ve see above (Verify device; EEPROM (e) Can be used with -p or stand alone. Corresponding input files are required)

AVRDUDE translation of the code above: link here (http://www.nongnu.org/avrdude/user-manual/avrdude_4.html#Option-Descriptions)
at first read the fuses to see the states!!! (A fresh m328p have the following readout: lfuse 62 hfuse D9 and efuse 7)
avrdude -P COM3 -b 19200 -c avrisp -p m328p -v

stk500 -c USB -d ATmega328p -I 125Khz -e -f D4FF -F D4FF -E FD -G FD (Fuse settings: low=FF, high=D4, extended=FD.)
avrdude -P COM3 -p m328p -b 19200 -c avrisp -p m328p -e -U lfuse:w:0xFF:m -U hfuse:w:0xD4:m -U efuse:w:0xFD:m

stk500 -cUSB -dATmega328p -I4Mhz -ifmuboot.hex -pf -vf
avrdude -P COM3 -p m328p -b 19200 -c avrisp -p m328p -U flash:w:muboot.hex -U flash:v:muboot.hex

stk500 -cUSB -dATmega328p -I4Mhz -ifmidiseq.hex -pf -vf
avrdude -P COM3 -p m328p -b 19200 -c avrisp -p m328p -U flash:w:midiseq.hex -U flash:v:midiseq.hex -D

stk500 -cUSB -dATmega328p -I4Mhz -iemidiseq_eprom.hex -pe -ve
avrdude -P COM3 -p m328p -b 19200 -c avrisp -p m328p -U eeprom:w:midiseq_eprom.hex -U eeprom:v:midiseq_eprom.hex
(existiert leider nicht)

leider konnte ich die Extendet Fuse nicht auf den gewünschten Wert 0xFD bringen - wurde immer wieder automatisch auf 0x05 umgeschrieben
(möglich, dass es am "Savemode" liegt, aber da bin ich mir nicht ganz sicher - habs nicht ohne savemode getestet)

jetzt fehlt nurnoch die komplette schaltung, in die ich den IC einsetzen kann..


wäre prima, falls jemand einen Hinweis darauf geben kann, warum ich die Extendet Fuse nicht auf FD setzen konnte :idea:

thx (fürs lesen) :mrgreen:
-otto
 
Ich hab dann mal direkt Pete von MidiGal gefragt bezüglich der efuse.

Scheinbar liegt es tatsächlich am Quarz - den ich nicht angeschlossen hatte.. da ich einen solchen grad nicht zur Hand hab :floet:

Werde erstmal alle nötigen teile für die Schaltung besorgen (incl. des 20MHz Xtal) und dann sehen wir weiter...
bis dahin erstmal :kaffee:
-otto
 
Zwischenbericht:

building:


checking:


flashing:


testing:


:mrgreen:


müssen nurnoch die Midiports und der Encoder dran, dann das Gehäuse und die Klaviatur, danach noch ca. 26 Potis und die Midicontroller-Schaltung reingebastelt, alles aufgehübscht und fertig :floet: :mrgreen:

Danke an alle Helfer und Tipsgeber! :supi:

LG
-otto :kaffee:
 

Anhänge

  • 1 building.jpg
    1 building.jpg
    176,6 KB · Aufrufe: 251
  • 2 checking.jpg
    2 checking.jpg
    128,2 KB · Aufrufe: 250
  • 3 avrdude flashing.png
    3 avrdude flashing.png
    33,1 KB · Aufrufe: 253
  • 5 bootseqence.jpg
    5 bootseqence.jpg
    158,4 KB · Aufrufe: 252
303otto schrieb:
Zwischenbericht:

building:


checking:


flashing:


testing:


:mrgreen:


müssen nurnoch die Midiports und der Encoder dran, dann das Gehäuse und die Klaviatur, danach noch ca. 26 Potis und die Midicontroller-Schaltung reingebastelt, alles aufgehübscht und fertig :floet: :mrgreen:

Danke an alle Helfer und Tipsgeber! :supi:

LG
-otto :kaffee:

weils so schön ausschaut :respekt:
 
nur mal nen kleines Bild vom Projekt :mrgreen:


und noch eins vom Sequencer


erstmal noch aus Papier aber es geht voran :floet:


ein altes Casio MA-100 muss übrigens herhalten :mrgreen:

:kaffee:
 

Anhänge

  • IMAG1227.jpg
    IMAG1227.jpg
    1,2 MB · Aufrufe: 203
  • IMAG1230.jpg
    IMAG1230.jpg
    1 MB · Aufrufe: 202
  • IMAG1231.jpg
    IMAG1231.jpg
    1.023 KB · Aufrufe: 204
klangsulfat schrieb:
:supi:

Hast du an der Sequenzer-Software was geändert? Weil der Midigal ja eigentlich nur einen Encoder und einen Taster hat.
Richtig - und das ist etwas wenig :|
(da die Firmware ein .hex-file ist, kann man darin leider nix mehr ändern - ohne sourcefile wird da nix draus)
Aber zum glück hat der MidiGal-Entwickler die wichtigen Parameter mit controllmöglichkeiten versehen. :idea:
Wie man in der Anleitung lesen kann, gibts die Möglichkeit, einen ganzen haufen sinnvoller Funktionen per MidiCC# auszuführen.

ganz runter scrollen und ihr findet das hier:
Code:
Controller # pages

These pages specify the MIDI Control Change Numbers used for various sequencer actions. These come useful when you want to control the sequencer from your controller keyboard.

    [Stop] – stops the sequencer (CC#114)
    [Playback] — starts the sequencer if it’s stopped or re-starts the running sequence (CC#115)
    [Record] – toggle the sequence recording mode (CC#116)
    [Add Rest] – adds a rest after the current step (CC#117)<-- versteckt sich in der Zeile [Record] (das ENTER wurde scheinbar vergessen)
    [Add Tie] – toggles the “tie” modifier on the current step (CC#112)
    [Add Half] – toggle the “half” modifier on the current step (CC#110)
    [Add Strum] – toggle the “strum” modifier on the current step (CC#113)
    [Add Accnt] – toggle the “accent” modifier on the current step (CC#111)
    [Del Step] – deletes the current step (CC#118)
    [Clr Step] – clears the current step notes and modifiers (CC#109)
    [Clear Seq] – clears the sequence removing all steps (CC#119)

Note that “Add …” CCs act both during recording and playback. When received during playback they temporarily modify the next played step without affecting the stored sequence. Good for live playing! Click and turn the encoder to select Control Change Number. Click the encoder again when done. Press the switch to set the default Control Change Number. Press the switch again to restore the original value.

Und da ich ja sowieso einen Midicontroller baue (in dem der Sequenzer drin sitzt) schalte ich einfach Miditechnisch den Sequenzer hinter den Controller, kann dann gleich meine Noten damit aufzeichnen UND mittels speziell zugewiesener Taster, die gewünschten "Shortcuts" (CC#) des Sequenzers ansprechen.
Die CC# sind natürlich über den Sequenzer frei wähl,- und speicherbar - da hat jemand mitgedacht :supi: 8)

Max schrieb:
Danke :mrgreen:

hier noch nen schmankerl: meine aktuelle finale version der Oberfläche

x und + sind Bohrungspunkte
rosa wird komplett ausgeschnitten
hellgrau sind unter der Frontplatte liegende Elemente, deren Größe beachtet werden sollte
dunkelgrau sind Flächen, welche durch Elemente auf der Oberfläche verdeckt werden

das ganze als invertiertem Aufkleber zu haben wäre himmlisch (komplett schwarz mit weißem Text)
die Buttons werden nachgegossene TB-303 Taster sein - transparent natürlich - und mit orangenen SMD-LED's von hinten beleuchtet sein
die 3 LED's (LFO, HOLD und REC) werden orangene 3mm LED's sein - alles passend zum Amberfarbenen Display
sieht dann ähnlich dem SUB37 von Moog aus, nur sind da die LED's eher gelblich

..achja.. neben das Keyboard-Feld kommt noch ein kleiner Playstationcontroller-Joystick für Pitch und Modulation

LG
-otto :kaffee:
 

Anhänge

  • SH-101e v0.4.png
    SH-101e v0.4.png
    352,3 KB · Aufrufe: 197
klangsulfat schrieb:
Es heißt OSCILLATOR :D
ja, ich hatte schon rumgerätselt :mrgreen:
schei*e.. doch nen räschtchreipveller drin :lollo:

thx für den Hinweis :supi:

hatte die ganze zeit nur den Roland SH-101 vor der Nase und da hamm'ses sich ganz einfach gemacht und das Teil einfach nur VCO genannt 8)

:kaffee:
 
wie wärs hiermit?


hier eine vorherige Version: :mrgreen:


LG
-otto :kaffee:
 

Anhänge

  • 1.png
    1.png
    197,3 KB · Aufrufe: 155
  • IMAG1248.jpg
    IMAG1248.jpg
    1,2 MB · Aufrufe: 157
kleines Update zwischendurch (wärend ich auf diverse IC's warte):




LG
-otto :kaffee:
 

Anhänge

  • SH-101e v0.8a knobs Laser.pdf
    160,4 KB · Aufrufe: 16
Ich find's ja immer wieder klasse zu sehen, was manche Leute für einen Aufwand betreiben um sich Ihren persönlichen Traum vom Wunschgerät zu erfüllen. Vor allem, wenn sie dann nicht einfach mittendrin aufhören.
Super!
 
Mr. Roboto schrieb:
Ich find's ja immer wieder klasse zu sehen, was manche Leute für einen Aufwand betreiben um sich Ihren persönlichen Traum vom Wunschgerät zu erfüllen. Vor allem, wenn sie dann nicht einfach mittendrin aufhören.
Super!

Das empfinde ich auch als Kunst :supi:
 
Meine Frau sagt immer: "Wenn ich was wirklich will, bekomme ich es auch!"
Mein Vater sagte immer: "'Geht nicht', gibts nicht!"

das muss abgefärbt haben :mrgreen:

Für mich ist der Antrieb bei diesem Projekt, dass ich am ende ein weiteres Musikinstrument haben werde, welches genau das kann, was mir in meinem Setup noch fehlt: einen einfach zu bedienenten BassSynth, dessen Sound nach 'ACID' schmeckt :lollo:
Manchmal braucht es etwas mehr als nur eine 303 dafür (nein, keine 2. - das hab ich ausprobiert ;-) ).

Letztes Wochenende hab ich über einen Kumpel erfahren, dass er jemanden kennt, der mir eine schwarz eloxierte Alu-Platte Lasern kann :idea:
Da mein Kumpel Tischler ist, steht einer Holz-Aufwertung des Controllers auch nix im Wege... kurz gesagt: "Es ist zu spät, um aufzuhören!" bzw. "Es wäre töricht, damit aufzuhören!" :floet:

...ich freu mich so :mrgreen:

LG
-otto :kaffee:
 
UpdateTime:
Da die IC's immernoch unterwegs sind, hab ich schonmal die Schaltung für die Poties und Buttons entworfen..


und hier die Platinenansicht


ist noch nicht ganz fertig.. die sockets für die Poties fehlen noch, aber das ist nurnoch "fleißarbeit" :mrgreen:

Ich hab 2 Platinen gewählt, da ich soche in dieser Größe grad massig da hab und weil sich die IC's so besser verdrahten lassen - sonst hätte ich ohne Ende Jumper auf der Platine.

Als nächstes werde ich die Keyboardmatrix-Platine entwerfen.. dazu hätte ich aber schon sehr gern meine bestellten 74HC595-IC's da, um das vorher mal aufm Breadboard zu testen :roll:


achja... die Multiplexerbelegung (falls es jmd interessiert)

die Play und Stop-Buttons mussten leider weichen, da ich keine freien Eingänge am MCU mehr habe..
hab auch alles mögliche durchgespielt aber am ende gab es immer nur eine Lösung um alles unterbringen zu können: Ein größerer Microcontroller
Arduino Mega oder Teensy 2.0++

Der Mega wäre ja noch erschwinglich (aber braucht dann wieder 30 Tage um hier einzutrudeln) aber der Teensy war mir dann doch zu teuer. :|

Dann halt 2 Atmega328p. Erstens liegen die hier bei mir grad rum und 2.: die sind schon bezahlt :mrgreen:
Auch müsste ich sonst den Code für den Controller (Poties+Buttons) und den Keyboardmatrix-code irgendwie zusammenfrickeln.. und dazu hab ich grad nicht die Lust.. und ob das überhaupt so klappt?.. meh.. so gehts doch auch ;-)

Am Ende kommunizieren eh alle Schaltungen über Midi miteinander und dadurch brauch ich mir keine Gedanken über Auslastung der MCU oder solch Gedöhns machen :mrgreen:

Die Reihenfolge der einzelnen Platinen wäre dann folgende: (alles über MidiIN/Out miteinander verbunden)
MidiIN -> KeyboardMatrixPlatine -> Potie/ButtonsPlatine -> MidiSeqPlatine -> MidiOut -> MidiIN Nord Micro Modular :idea:
Alles natürlich auf dem selben Midikanal. Da ich in meinem Setup über Midi nur Start/Stop und Clock übertrage, dürfte das auch nicht weiter behindern.

so... genug geschwafelt :mrgreen:
LG
-otto :kaffee:
 

Anhänge

  • schematic Pots+Buttons.png
    schematic Pots+Buttons.png
    232,8 KB · Aufrufe: 145
  • Pots+Buttons-circuit.png
    Pots+Buttons-circuit.png
    197,4 KB · Aufrufe: 143
  • Mux-Belegung.png
    Mux-Belegung.png
    11,5 KB · Aufrufe: 143

Similar threads

B
Antworten
19
Aufrufe
2K
Anonymous
A


Neueste Beiträge

News

Zurück
Oben