Rust-for-Arduboy/docs/doc/arduboy_rust/arduboy_tones/struct.ArduboyTones.html

99 lines
No EOL
22 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="This is the struct to interact in a save way with the ArduboyTones C++ library."><title>ArduboyTones in arduboy_rust::arduboy_tones - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-cb6f1f67f1bcd037.css" id="mainThemeStyle"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="arduboy_rust" data-themes="" data-resource-suffix="" data-rustdoc-version="1.73.0-nightly (8131b9774 2023-08-02)" data-channel="nightly" data-search-js="search-6dfdfced5eff6596.js" data-settings-js="settings-de11bff964e9d4e5.js" data-settings-css="settings-8c76f75bfb6bd192.css" data-theme-light-css="light-6d2c9675f3d09c26.css" data-theme-dark-css="dark-45ceb8f2e522f4d1.css" data-theme-ayu-css="ayu-fd19013d6ce078bf.css" ><script src="../../static.files/storage-db41da1a38ea3cb8.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-0795b7d26be81095.js"></script><noscript><link rel="stylesheet" media="(prefers-color-scheme:light)" href="../../static.files/light-6d2c9675f3d09c26.css"><link rel="stylesheet" media="(prefers-color-scheme:dark)" href="../../static.files/dark-45ceb8f2e522f4d1.css"><link rel="stylesheet" href="../../static.files/noscript-cffde32267a19fd6.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../arduboy_rust/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../arduboy_rust/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">ArduboyTones</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li><li><a href="#method.no_tone">no_tone</a></li><li><a href="#method.playing">playing</a></li><li><a href="#method.tone">tone</a></li><li><a href="#method.tone2">tone2</a></li><li><a href="#method.tone3">tone3</a></li><li><a href="#method.tones">tones</a></li><li><a href="#method.tones_in_ram">tones_in_ram</a></li><li><a href="#method.volume_mode">volume_mode</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ArduboyTones">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ArduboyTones">Send</a></li><li><a href="#impl-Sync-for-ArduboyTones">Sync</a></li><li><a href="#impl-Unpin-for-ArduboyTones">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ArduboyTones">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ArduboyTones">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ArduboyTones">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ArduboyTones">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-ArduboyTones">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-ArduboyTones">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ArduboyTones">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-ArduboyTones">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In arduboy_rust::arduboy_tones</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">arduboy_rust</a>::<wbr><a href="index.html">arduboy_tones</a>::<wbr><a class="struct" href="#">ArduboyTones</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#11">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ArduboyTones {}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>This is the struct to interact in a save way with the ArduboyTones C++ library.</p>
<p>You will need to uncomment the ArduboyTones_Library in the import_config.h file.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ArduboyTones" class="impl"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#12-132">source</a><a href="#impl-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#19-21">source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fn">new</a>() -&gt; <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h4></section></summary><div class="docblock"><p>Get a new instance of <a href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></p>
<h6 id="example"><a href="#example">Example</a></h6>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>arduboy_rust::prelude::<span class="kw-2">*</span>;
<span class="kw">const </span>sound: ArduboyTones = ArduboyTones::new();</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.tone" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#29-31">source</a><h4 class="code-header">pub fn <a href="#method.tone" class="fn">tone</a>(&amp;self, frequency: u16, duration: u32)</h4></section></summary><div class="docblock"><p>Play a single tone.</p>
<ul>
<li>freq The frequency of the tone, in hertz.</li>
<li>dur The duration to play the tone for, in 1024ths of a
second (very close to milliseconds). A duration of 0, or if not provided,
means play forever, or until <code>noTone()</code> is called or a new tone or
sequence is started.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.tone2" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#37-39">source</a><h4 class="code-header">pub fn <a href="#method.tone2" class="fn">tone2</a>(
&amp;self,
frequency1: u16,
duration1: u32,
frequency2: u16,
duration2: u32
)</h4></section></summary><div class="docblock"><p>Play two tones in sequence.</p>
<ul>
<li>freq1,freq2 The frequency of the tone in hertz.</li>
<li>dur1,dur2 The duration to play the tone for, in 1024ths of a
second (very close to milliseconds).</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.tone3" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#45-59">source</a><h4 class="code-header">pub fn <a href="#method.tone3" class="fn">tone3</a>(
&amp;self,
frequency1: u16,
duration1: u32,
frequency2: u16,
duration2: u32,
frequency3: u16,
duration3: u32
)</h4></section></summary><div class="docblock"><p>Play three tones in sequence.</p>
<ul>
<li>freq1,freq2,freq3 The frequency of the tone, in hertz.</li>
<li>dur1,dur2,dur3 The duration to play the tone for, in 1024ths of a
second (very close to milliseconds).</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.tones" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#81-83">source</a><h4 class="code-header">pub fn <a href="#method.tones" class="fn">tones</a>(&amp;self, tones: *const u16)</h4></section></summary><div class="docblock"><p>Play a tone sequence from frequency/duration pairs in a PROGMEM array.</p>
<ul>
<li>tones A pointer to an array of frequency/duration pairs.</li>
</ul>
<p>The array must be placed in code space using <code>PROGMEM</code>.</p>
<p>See the <code>tone()</code> function for details on the frequency and duration values.
A frequency of 0 for any tone means silence (a musical rest).</p>
<p>The last element of the array must be <code>TONES_END</code> or <code>TONES_REPEAT</code>.</p>
<p>Example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>arduboy_rust::prelude::<span class="kw-2">*</span>;
<span class="kw">const </span>sound:ArduboyTones=ArduboyTones::new();
<span class="macro">progmem!</span>(
<span class="kw">static </span>sound1:[u8;<span class="kw">_</span>]=[<span class="number">220</span>,<span class="number">1000</span>, <span class="number">0</span>,<span class="number">250</span>, <span class="number">440</span>,<span class="number">500</span>, <span class="number">880</span>,<span class="number">2000</span>,TONES_END];
);
sound.tones(<span class="macro">get_tones_addr!</span>(sound1));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.no_tone" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#88-90">source</a><h4 class="code-header">pub fn <a href="#method.no_tone" class="fn">no_tone</a>(&amp;self)</h4></section></summary><div class="docblock"><p>Stop playing the tone or sequence.</p>
<p>If a tone or sequence is playing, it will stop. If nothing
is playing, this function will do nothing.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.playing" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#94-96">source</a><h4 class="code-header">pub fn <a href="#method.playing" class="fn">playing</a>(&amp;self) -&gt; bool</h4></section></summary><div class="docblock"><p>Check if a tone or tone sequence is playing.</p>
<ul>
<li>return boolean <code>true</code> if playing (even if sound is muted).</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.tones_in_ram" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#118-120">source</a><h4 class="code-header">pub fn <a href="#method.tones_in_ram" class="fn">tones_in_ram</a>(&amp;self, tones: *mut u32)</h4></section></summary><div class="docblock"><p>Play a tone sequence from frequency/duration pairs in an array in RAM.</p>
<ul>
<li>tones A pointer to an array of frequency/duration pairs.</li>
</ul>
<p>The array must be located in RAM.</p>
<p>See the <code>tone()</code> function for details on the frequency and duration values.
A frequency of 0 for any tone means silence (a musical rest).</p>
<p>The last element of the array must be <code>TONES_END</code> or <code>TONES_REPEAT</code>.</p>
<p>Example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>arduboy_rust::prelude::<span class="kw-2">*</span>;
<span class="kw">use </span>arduboy_tones::tones_pitch::<span class="kw-2">*</span>;
<span class="kw">let </span>sound2: [u16; <span class="number">9</span>] = [<span class="number">220</span>, <span class="number">1000</span>, <span class="number">0</span>, <span class="number">250</span>, <span class="number">440</span>, <span class="number">500</span>, <span class="number">880</span>, <span class="number">2000</span>, TONES_END];</code></pre></div>
<p>Using <code>tones()</code>, with the data in PROGMEM, is normally a better
choice. The only reason to use tonesInRAM() would be if dynamically
altering the contents of the array is required.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.volume_mode" class="method"><a class="src rightside" href="../../src/arduboy_rust/library/arduboy_tones.rs.html#129-131">source</a><h4 class="code-header">pub fn <a href="#method.volume_mode" class="fn">volume_mode</a>(&amp;self, mode: u8)</h4></section></summary><div class="docblock"><p>Set the volume to always normal, always high, or tone controlled.</p>
<p>One of the following values should be used:</p>
<ul>
<li><code>VOLUME_IN_TONE</code> The volume of each tone will be specified in the tone
itself.</li>
<li><code>VOLUME_ALWAYS_NORMAL</code> All tones will play at the normal volume level.</li>
<li><code>VOLUME_ALWAYS_HIGH</code> All tones will play at the high volume level.</li>
</ul>
</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ArduboyTones" class="impl"><a href="#impl-RefUnwindSafe-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl RefUnwindSafe for <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h3></section><section id="impl-Send-for-ArduboyTones" class="impl"><a href="#impl-Send-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl Send for <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h3></section><section id="impl-Sync-for-ArduboyTones" class="impl"><a href="#impl-Sync-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl Sync for <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h3></section><section id="impl-Unpin-for-ArduboyTones" class="impl"><a href="#impl-Unpin-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl Unpin for <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h3></section><section id="impl-UnwindSafe-for-ArduboyTones" class="impl"><a href="#impl-UnwindSafe-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl UnwindSafe for <a class="struct" href="../prelude/arduboy_tones/struct.ArduboyTones.html" title="struct arduboy_rust::prelude::arduboy_tones::ArduboyTones">ArduboyTones</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-ArduboyTones" class="impl"><a href="#impl-Any-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Any for T<span class="where fmt-newline">where
T: 'static + ?Sized,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a class="fn">type_id</a>(&amp;self) -&gt; TypeId</h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ArduboyTones" class="impl"><a href="#impl-Borrow%3CT%3E-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Borrow&lt;T&gt; for T<span class="where fmt-newline">where
T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a class="fn">borrow</a>(&amp;self) -&gt; &amp;T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ArduboyTones" class="impl"><a href="#impl-BorrowMut%3CT%3E-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; BorrowMut&lt;T&gt; for T<span class="where fmt-newline">where
T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ArduboyTones" class="impl"><a href="#impl-From%3CT%3E-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; From&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ArduboyTones" class="impl"><a href="#impl-Into%3CU%3E-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; Into&lt;U&gt; for T<span class="where fmt-newline">where
U: From&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code>[From]&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ArduboyTones" class="impl"><a href="#impl-TryFrom%3CU%3E-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; TryFrom&lt;U&gt; for T<span class="where fmt-newline">where
U: Into&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Error</a> = Infallible</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_from</a>(value: U) -&gt; Result&lt;T, &lt;T as TryFrom&lt;U&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ArduboyTones" class="impl"><a href="#impl-TryInto%3CU%3E-for-ArduboyTones" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; TryInto&lt;U&gt; for T<span class="where fmt-newline">where
U: TryFrom&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Error</a> = &lt;U as TryFrom&lt;T&gt;&gt;::Error</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_into</a>(self) -&gt; Result&lt;U, &lt;U as TryFrom&lt;T&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>