Raspberry Pi 8 Step CV/Gate Sequencer

medowl

Nieuwkomer
Lid sinds
24 juni 2013
Berichten
5
ha, even laten zien wat ik gemaakt heb de laatste 2 weken :mega:

Ik heb een simpele 8 step sequencer CV/Gate ge-breadboard aangestuurd door een Raspberry Pi.

ik heb een MCP3008 (8 chan ADC) chip gebruikt om de 8 pots voor de pitch uit te lezen, een MCP23017 (16 chan digital IO) om alle ledjes aan te kunnen sturen en een PCF5891 (4 chan ADC + 1 chan DAC) om nog 2 extra pots te lezen en de om CV eruit te sturen. code is in python geschreven..
de druk knopjes zijn om de standaard IO pinnetjes van de Raspberry Pi zelf aangesloten.

het stuurt hier 2 Monotrons aan (zelfde input..)

het is een beetje pielen met een schroevendraaiertje om de pots aan te passen :D

kort en beetje donker filmpje :dj: :

8stepRPI1.jpg

8stepRPI2.jpg
 
zeker omslachtig :) maar is ook alleen maar een test opstelling.
de timing is ook helemaal niet strak. de raspberry pi draait linux, die is dus op de achtergrond allemaal andere dingen aan het doen voor zichzelf en dat merk je, vooral op hoog tempo..
misschien dat als ik er iets groters van maak dat ik het met een arduino probeer.
 
heb je al wel eens naar de real-time opties van de raspberry's kernel gekeken?
misschien dat dat nog een verschil kan maken.
 
code is in python geschreven

Mogelijk is dat gelijk al de belangrijkste factor wat betreft timing. Python is een taal die aan garbagecollection doet, wat betekent dat je code zomaar onderbroken kan worden door de GC.

Je kunt in ieder geval kijken of het helpt als je hem met een hogere prioriteit draait (nice -10 ofzo).
 
ik zou het waarschijnlijk wel in C kunnen programmeren , maar zou me een stuk langer kosten ..
ik zal eens proberen of een hoge prio al genoeg helpt.

@barno : thnx , heb er net even snel over gelezen, zal ik ook eens wat dieper induiken.
 
Mogelijk is dat gelijk al de belangrijkste factor wat betreft timing. Python is een taal die aan garbagecollection doet, wat betekent dat je code zomaar onderbroken kan worden door de GC.

Je kunt in ieder geval kijken of het helpt als je hem met een hogere prioriteit draait (nice -10 ofzo).

bij een draaiend proccess:

renice -10 PID gebruiken .


mvg
L
 
(re-)nice gaat je niet altijd helpen toch? Dit duwt alleen andere programma's op de achtergrond maar
als het programma zelf het probleem is (bv door de lange garbage collecting van python), heeft rescheduling niet zoveel nut. met en real-time kernel kan je het proces dat te lang duurt afkappen en doorgaan met het volgende. dat is wat je wilt met een sequencer volgens mij. liever een noot missen en de volgende noot strak in de maat dan eindeloos blijven proberen die ene noot eruit te persen.
ik snap sowieso niet zo goed waarom een dedicated video/audio ding als de raspberry pi niet vanaf dag 1 een realtime kernel heeft...

in python kan je trouwens de garbage collecting uitzetten met de gc module (import gc).
zal niet zo heel veel geheugenproblemen met zich mee brengen voor een sequencer toch?

maar ja, in C los je al die problemen op inderdaad en als je aan de arduino gaat zal je dat toch moeten doen...
 
Back
Top