<br />
<b>Warning</b>:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/json/FormatJson.php</b> on line <b>297</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $ellipsis declared before required parameter $getSubstring is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/Language.php</b> on line <b>3560</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $adjustLength declared before required parameter $getSubstring is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/Language.php</b> on line <b>0</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $prefix declared before required parameter $code is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/Language.php</b> on line <b>4478</b><br />
<br />
<b>Warning</b>:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in <b>/www/htdocs/w0069e04/sonic-potions/wiki/languages/LanguageConverter.php</b> on line <b>773</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::open($save_path, $session_name) should either be compatible with SessionHandlerInterface::open(string $path, string $name): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>199</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::close() should either be compatible with SessionHandlerInterface::close(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>214</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::read($id) should either be compatible with SessionHandlerInterface::read(string $id): string|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>228</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::write($id, $dataStr) should either be compatible with SessionHandlerInterface::write(string $id, string $data): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>256</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::destroy($id) should either be compatible with SessionHandlerInterface::destroy(string $id): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>362</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\PHPSessionHandler::gc($maxlifetime) should either be compatible with SessionHandlerInterface::gc(int $max_lifetime): int|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/PHPSessionHandler.php</b> on line <b>383</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\IResultWrapper::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php</b> on line <b>70</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\IResultWrapper::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php</b> on line <b>80</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\IResultWrapper::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php</b> on line <b>75</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\ResultWrapper::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php</b> on line <b>117</b><br />
<br />
<b>Deprecated</b>:  Return type of Wikimedia\Rdbms\ResultWrapper::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php</b> on line <b>90</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>625</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>631</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>643</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>637</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>655</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>649</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>665</b><br />
<br />
<b>Deprecated</b>:  Return type of & MediaWiki\Session\Session::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>678</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>688</b><br />
<br />
<b>Deprecated</b>:  Return type of MediaWiki\Session\Session::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/session/Session.php</b> on line <b>693</b><br />
<br />
<b>Deprecated</b>:  Optional parameter $style declared before required parameter $ts is implicitly treated as a required parameter in <b>/www/htdocs/w0069e04/sonic-potions/wiki/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php</b> on line <b>176</b><br />
<br />
<b>Deprecated</b>:  Creation of dynamic property ApiMain::$mCommit is deprecated in <b>/www/htdocs/w0069e04/sonic-potions/wiki/includes/api/ApiMain.php</b> on line <b>296</b><br />
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.sonic-potions.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Niklasni1</id>
	<title>Sonic Potions Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.sonic-potions.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Niklasni1"/>
	<link rel="alternate" type="text/html" href="http://wiki.sonic-potions.com/index.php?title=Special:Contributions/Niklasni1"/>
	<updated>2026-04-08T03:37:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;diff=58</id>
		<title>Firmware spelunking</title>
		<link rel="alternate" type="text/html" href="http://wiki.sonic-potions.com/index.php?title=Firmware_spelunking&amp;diff=58"/>
		<updated>2014-02-26T12:34:44Z</updated>

		<summary type="html">&lt;p&gt;Niklasni1: Created page with &amp;quot;This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.  == Overview ==  The drumsynth firmware (ie., ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The drumsynth firmware (ie., not the interface board) is divided into a few logical parts: the hardware handling, the communications interfaces (MIDI via UART and USB, SD over SPI), the sound generation and the sequencer.&lt;br /&gt;
&lt;br /&gt;
=== Files and folders ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
  ├── AudioCodecManager&lt;br /&gt;
  │   ├── AudioCodecManager.c&lt;br /&gt;
  │   └── AudioCodecManager.h&lt;br /&gt;
  ├── config.h&lt;br /&gt;
  ├── datatypes.h&lt;br /&gt;
  ├── DSPAudio &lt;br /&gt;
  │   ├── 1PoleLp.c &lt;br /&gt;
  │   ├── 1PoleLp.h&lt;br /&gt;
  │   ├── automationNode.c&lt;br /&gt;
  │   ├── automationNode.h&lt;br /&gt;
  │   ├── BufferTools.c&lt;br /&gt;
  │   ├── BufferTools.h &lt;br /&gt;
  │   ├── CymbalVoice.c &lt;br /&gt;
  │   ├── CymbalVoice.h&lt;br /&gt;
  │   ├── Decay.c&lt;br /&gt;
  │   ├── Decay.h&lt;br /&gt;
  │   ├── distortion.c&lt;br /&gt;
  │   ├── distortion.h&lt;br /&gt;
  │   ├── dither.c&lt;br /&gt;
  │   ├── dither.h&lt;br /&gt;
  │   ├── DrumVoice.c&lt;br /&gt;
  │   ├── DrumVoice.h&lt;br /&gt;
  │   ├── HiHat.c&lt;br /&gt;
  │   ├── HiHat.h&lt;br /&gt;
  │   ├── lfo.c&lt;br /&gt;
  │   ├── lfo.h&lt;br /&gt;
  │   ├── mixer.c&lt;br /&gt;
  │   ├── mixer.h&lt;br /&gt;
  │   ├── modulationNode.c&lt;br /&gt;
  │   ├── modulationNode.h&lt;br /&gt;
  │   ├── Oscillator.c&lt;br /&gt;
  │   ├── Oscillator.h&lt;br /&gt;
  │   ├── random.c&lt;br /&gt;
  │   ├── random.h&lt;br /&gt;
  │   ├── ResonantFilter.c&lt;br /&gt;
  │   ├── ResonantFilter.h&lt;br /&gt;
  │   ├── Samples.c&lt;br /&gt;
  │   ├── Samples.h&lt;br /&gt;
  │   ├── SlopeEg2.c&lt;br /&gt;
  │   ├── SlopeEg2.h&lt;br /&gt;
  │   ├── snapEg.c&lt;br /&gt;
  │   ├── snapEg.h&lt;br /&gt;
  │   ├── Snare.c&lt;br /&gt;
  │   ├── Snare.h&lt;br /&gt;
  │   ├── squareRootLut.c&lt;br /&gt;
  │   ├── squareRootLut.h&lt;br /&gt;
  │   ├── transientGenerator.c&lt;br /&gt;
  │   ├── transientGenerator.h&lt;br /&gt;
  │   ├── transientTables.c&lt;br /&gt;
  │   ├── transientTables.h&lt;br /&gt;
  │   ├── wavetable.c&lt;br /&gt;
  │   └── wavetable.h&lt;br /&gt;
  ├── globals.h&lt;br /&gt;
  ├── hardfaultHandler.c&lt;br /&gt;
  ├── hardfault.S&lt;br /&gt;
  ├── Hardware&lt;br /&gt;
  │   ├── cs4344_cs5343.c&lt;br /&gt;
  │   ├── cs4344_cs5343.h&lt;br /&gt;
  │   ├── FIFO.c&lt;br /&gt;
  │   ├── FIFO.h&lt;br /&gt;
  │   ├── SD_FAT&lt;br /&gt;
  │   │   ├── diskIo.c&lt;br /&gt;
  │   │   ├── diskio.h&lt;br /&gt;
  │   │   ├── ff.c&lt;br /&gt;
  │   │   ├── ffconf.h&lt;br /&gt;
  │   │   ├── ff.h&lt;br /&gt;
  │   │   ├── integer.h&lt;br /&gt;
  │   │   ├── SD_Manager.c&lt;br /&gt;
  │   │   ├── SD_Manager.h&lt;br /&gt;
  │   │   ├── SD_routines.c&lt;br /&gt;
  │   │   ├── sd_routines.h&lt;br /&gt;
  │   │   ├── SPI_routines.c&lt;br /&gt;
  │   │   └── SPI_routines.h&lt;br /&gt;
  │   ├── TriggerOut.c&lt;br /&gt;
  │   ├── TriggerOut.h&lt;br /&gt;
  │   └── USB&lt;br /&gt;
  │       ├── usb_bsp.c&lt;br /&gt;
  │       ├── usbd_desc.c&lt;br /&gt;
  │       ├── usbd_desc.h&lt;br /&gt;
  │       ├── usbd_usr.c&lt;br /&gt;
  │       ├── usb_manager.c&lt;br /&gt;
  │       ├── usb_manager.h&lt;br /&gt;
  │       ├── usb_midi_core.c&lt;br /&gt;
  │       └── usb_midi_core.h&lt;br /&gt;
  ├── main.c&lt;br /&gt;
  ├── MIDI&lt;br /&gt;
  │   ├── frontPanelParser.c&lt;br /&gt;
  │   ├── frontPanelParser.h&lt;br /&gt;
  │   ├── MidiMessages.h&lt;br /&gt;
  │   ├── MidiNoteNumbers.h&lt;br /&gt;
  │   ├── MidiParser.c&lt;br /&gt;
  │   ├── MidiParser.h&lt;br /&gt;
  │   ├── MidiVoiceControl.c&lt;br /&gt;
  │   ├── MidiVoiceControl.h&lt;br /&gt;
  │   ├── ParameterArray.c&lt;br /&gt;
  │   ├── ParameterArray.h&lt;br /&gt;
  │   ├── Uart.c&lt;br /&gt;
  │   ├── Uart.h&lt;br /&gt;
  │   └── valueShaper.h&lt;br /&gt;
  ├── SampleRom&lt;br /&gt;
  │   ├── flash_if.c&lt;br /&gt;
  │   ├── flash_if.h&lt;br /&gt;
  │   ├── SampleMemory.c&lt;br /&gt;
  │   └── SampleMemory.h&lt;br /&gt;
  ├── Sequencer&lt;br /&gt;
  │   ├── clockSync.c&lt;br /&gt;
  │   ├── clockSync.h&lt;br /&gt;
  │   ├── EuklidGenerator.c&lt;br /&gt;
  │   ├── EuklidGenerator.h&lt;br /&gt;
  │   ├── sequencer.c&lt;br /&gt;
  │   ├── sequencer.h&lt;br /&gt;
  │   ├── SomData.c&lt;br /&gt;
  │   ├── SomData.h&lt;br /&gt;
  │   ├── SomGenerator.c&lt;br /&gt;
  │   └── SomGenerator.h&lt;br /&gt;
  ├── startup_stm32f4xx.S&lt;br /&gt;
  ├── stm32f4xx_conf.h&lt;br /&gt;
  ├── stm32f4xx_it.c&lt;br /&gt;
  ├── stm32f4xx_it.h&lt;br /&gt;
  └── system_stm32f4xx.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware handling ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Communications ==&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
== Sequencer ==&lt;/div&gt;</summary>
		<author><name>Niklasni1</name></author>
		
	</entry>
</feed>